Трансмисиони контролни протокол
TCP/IP |
---|
Слој апликације |
DHCP • DHCPv6 • DNS • FTP • HTTP • IMAP • IRC • LDAP • MGCP • NNTP • BGP • NTP • POP • RPC • RTP • RTSP • RIP • SIP • SMTP • SNMP • SOCKS • SSH • Telnet • TLS/SSL • XMPP • (више) |
Транспортни слој |
TCP • UDP • DCCP • SCTP • RSVP • (више) |
Слој мреже |
IP (IPv4 • IPv6) • ICMP • ICMPv6 • ECN • IGMP • IPsec • (више) |
Слој везе |
ARP/InARP • NDP • OSPF • Tunnels (L2TP) • PPP • Media access control (Ethernet • DSL • ISDN • FDDI) • (више) |
Трансмисиони контролни протокол (енгл. Transmision control protocol, скраћено TCP) је протокол који припада слоју 4 ОСИ референтног модела, има за улогу да обезбеди поуздан трансфер података у IP окружењу. Између осталих сервиса које нуди, неки су: поузданост, ефикасна контрола тока података, оперисање у фул-дуплексу (истовремено слање и примање података) и мултиплексирање које омогућава истовремен рад низа процеса са виших слојева путем једне конекције. TCP врши трансфер података као неструктурисан низ бајтова који се идентификују секвенцом. Овај протокол групише бајтове у сегменте додели им број секвенце, апликацијама додели број порта и проследи их IP протоколу.[1][2]
TCP обезбеђује поузданост покретањем алгоритама који пре размене података прво успоставе конекцију између корисника, а потом обезбеђује и низ механизама као што је слање ACK броја. Страна која прима податке шаље број секвенце бајта које је примио, у случају да дестинација не пошаље ACK да је примио одређену секвенцу бајтова у одређеном временском интервалу она бива накнадно поново послата. Механизми поузданости код TCP-а омогућују уређајима да се носе са губицима, кашњењима, дуплицирањем или погрешним ишчитавањем пакета. Time-out механизам омогућује уређају да детектује изгубљене пакете и да захтева њихову поновну трансмисију.
Историјско порекло
[уреди | уреди извор]У мају 1974, Винтон Серф и Боб Кан су описали мрежни протокол за дељење ресурса користећи пренос пакета између мрежних чворова.[1] Аутори су сарађивали са Жераром ле Ланом на инкорпорацији концепата из француског CYCLADES пројекта у нову мрежу.[2] Спецификацију резултирајућег протокола, RFC 675 (Specification of Internet Transmission Control Program), написали су Винт Церф, Јоген Далал и Карл Суншајн, а она је објављена у децембру 1974. Тај документ садржи прву потврђену употребу термина Интернет, као скраћенице за међуумрежавање.[3]
Централна контролна компонента овог модела био је Трансмисиони контролни програм који је обухвато конекционо оријентисане везе и датаграмске услуге између рачунара. Монолитни Трансмисиони контролни програм касније је подељен на модуларну архитектуру која се састоји од Трансмисионог контролног протокола и Интернет протокола. То је резултирало мрежним моделом који је неформално постао познат као TCP/IP, мада се формално варијабилно називан моделом Департмана одбране (DOD) и ARPANET моделом, а на крају и као група интернет протокола.
Године 2004, Винтон Серф и Боб Кан су добили Тјурингову награду за њихови фондацијски рад на TCP/IP.[4][5]
Мрежна функција
[уреди | уреди извор]Трансмисиони контролни протокол омогућава комуникационе услуге на средњем нивоу између апликационог програма и Интернет протокола. Он омогућава повезивање рачунара са рачунаром на транспортном нивоу интернетског модела. Апликација не мора да познаје посебне механизме за слање података путем везе до другог рачунара, као што је неопходна ИП фрагментација да би се прилагодило максималној трансмисионој јединици преносног медија. На транспортном слоју, TCP обрађује све детаље о руковању и преносу, и представља апстракцију мрежне везе са апликацијом, обично путем интерфејса мрежне утичнице.
На нижим нивоима стека протокола, због загушења мреже, балансирања оптерећења у промету или непредвидивог понашања мреже, ИП пакети се могу изгубити, дуплирати или испоручити ван редоследа. ТЦП открива ове проблеме, захтева поновни пренос изгубљених података, преуређује податке који нису по редоследу и чак помаже да се смањи загушење мреже како би се смањила појава осталих проблема. Ако подаци и даље остају неиспоручени, извор се обавештава о овом квару. Након што TCP пријемник поново састави низ првобитно пренесених октета, прослеђује их прималачкој апликацији. Тако TCP апстрактује комуникацију апликације од основних детаља мрежног преноса.
TCP се широко користи у многим апликацијама, укључујући World Wide Web (WWW), email, протокол за пренос датотека, SSH, размену фајлова, и стриминг медија.
TCP је оптимизован за прецизну испоруку, а не правовремену испоруку и може имати релативно дуге застоје (реда величине више секунди) док се чека на поруке изван редоследа или поновни пренос изгубљених порука. Због тога он није нарочито погодан за апликације у реалном времену, као што је интернетска телефонија. За такве апликације обично се препоручују протоколи попут протокола за транспорт у стварном времену (RTP) који раде преко протокола корисничког датаграма (UDP).[6]
TCP заглавље
[уреди | уреди извор]бит 0-3 | 4-10 | 16-31 | |||||||||||||||||||||||||||||
Изворишни порт | Одредишни порт | ||||||||||||||||||||||||||||||
Број сегмента (SEQ) | |||||||||||||||||||||||||||||||
Број следећег бајта (ACK) | |||||||||||||||||||||||||||||||
Дужина | Резервисано |
U R G |
A C K |
P S H |
R S T |
S Y N |
F I N | Величина динамичког прозора | |||||||||||||||||||||||
Чексума (Провера битских грешака) | Показивач приоритета (URG) | ||||||||||||||||||||||||||||||
Опције | |||||||||||||||||||||||||||||||
Податак |
Поља:
- Изворишни порт - додељен број (16 бита), идентификује апликацију која је иницијатор комуникације
- Одредишни порт - порт који идентификује серверску апликацију (16 бита)
- Број сегмента (SEQ) - редни број сегмента у односу на почетни (број бајта у односу на иницијални)(32 бита)
- Број следећег бајта (ACK) - редни број бајта послат предајној страни који очекује да прими (32 бита)
- Дужина - Дужина заглавља
- Резервисана поља
- URG, ACK, PSH, RST, SYN, FIN представљају контролне бите
- Величина динамичког прозора - број октета које је могуће слати без потврде о њиховом пријему
- Чексума - Провера битских грешака, комплемент суме TCP заглавља
- Показивач приоритета (URG) - показује важност поруке која се шаље
- Опције - Опциона информација
- Податак - ако постоји опциона информација битови почевши са 192 представљају податак, иначе од 160. бита
Успостављање конекције
[уреди | уреди извор]Комуникација између апликација уз помоћ TCP протокола се одвија тако што се прво између клијента и сервера успостави веза (услуга са конекцијом), за разлику од комуникације UDP протоколом који је не захтева. Конекција се успоставља тако што се између пријемне и предајне стране из три пута размене поруке са подешеним одговарајућим контролним битима.
- Предајна страна A шаље поруку са подешеним контролним битом SYN=1 (енгл. SYNchronize Sequence Number), остали су подешени на 0, при чему насумично изабере редни број сегмента (SEQA).
- Пријемна страна B одговара поруком са контролним битима SYN и ACK=1, свој број сегмента бира такође насумично (SEQB), а за ACK број узима ACK=(SEQA)+1, овим је успостављена веза на линији од предајне ка пријемној страни.
- Слањем поруке са подешеним контролним битом SYN=1 од пријемне стране, она захтева да предајна страна потврди успостављање везе од пријемне ка предајној страни. Што она и чини тако што одговара поруком са подешеним контролним битом ACK=1 (енгл. ACKnowledgment number), док уз то узима вредност ACK броја ACK=(SEQB)+1. Овим је успостављена обострана конекција између клијента и сервера.
Прекидање конекције
[уреди | уреди извор]При завршетку слања података, сервер шаље поруку са подешеним контролним битом FIN=1 (енгл. FINish). Веза од сервера ка клијенту се прекида тиме што клијент на слање овакве поруке одговара са поруком са подешеним контролним битом ACK=1 (потврда о пријему). Уколико и клијент жели затворити конекцију он исто тако шаље поруку са подешеним битом FIN=1. Коначно обострано прекидање везе се потврђује од стране сервера који одговара са поруком у чијем је заглављу подешен бит ACK=1.
Види још
[уреди | уреди извор]Референце
[уреди | уреди извор]- ^ а б Vinton G. Cerf; Robert E. Kahn (мај 1974). „A Protocol for Packet Network Intercommunication” (PDF). IEEE Transactions on Communications. 22 (5): 637—648. doi:10.1109/tcom.1974.1092259. Архивирано из оригинала (PDF) 4. 3. 2016. г.
- ^ а б Bennett, Richard (септембар 2009). „Designed for Change: End-to-End Arguments, Internet Innovation, and the Net Neutrality Debate” (PDF). Information Technology and Innovation Foundation. стр. 11. Архивирано из оригинала (PDF) 29. 08. 2019. г. Приступљено 11. 9. 2017.
- ^ Cerf, Vinton; Dalal, Yogen; Sunshine, Carl (December 1974), RFC 675, Specification of Internet Transmission Control Protocol
- ^ „Robert E Kahn - A.M. Turing Award Laureate”. amturing.acm.org.
- ^ „Vinton Cerf - A.M. Turing Award Laureate”. amturing.acm.org.
- ^ Comer, Douglas E. (2006). Internetworking with TCP/IP: Principles, Protocols, and Architecture. 1 (5th изд.). Prentice Hall. ISBN 978-0-13-187671-2.
Литература
[уреди | уреди извор]- Stevens, W. Richard (1994). TCP/IP Illustrated, Volume 1: The Protocols. ISBN 978-0-201-63346-7.
- Stevens, W. Richard; Wright, Gary R. TCP/IP Illustrated, Volume 2: The Implementation. ISBN 978-0-201-63354-2.
- Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP, and the UNIX Domain Protocols. ISBN 978-0-201-63495-2.**
- Muhammad Adeel & Ahmad Ali Iqbal (2004). TCP Congestion Window Optimization for CDMA2000 Packet Data Networks. International Conference on Information Technology (ITNG'07). стр. 31—35. ISBN 978-0-7695-2776-5. doi:10.1109/ITNG.2007.190.
- Raiciu; Barre; Pluntke; Greenhalgh; Wischik; Handley (2011). „Improving datacenter performance and robustness with multipath TCP”. ACM SIGCOMM Computer Communication Review. 41 (4): 266. CiteSeerX 10.1.1.306.3863
. doi:10.1145/2043164.2018467. Архивирано из оригинала 4. 4. 2020. г. Приступљено 7. 6. 2020.
- Raiciu; Paasch; Barre; Ford; Honda; Duchene; Bonaventure; Handley (2012). „How Hard Can It Be? Designing and Implementing a Deployable Multipath TCP”. Usenix Nsdi: 399—412.
- Bonaventure; Seo (2016). „Multipath TCP Deployments”. IETF Journal.
RFC
[уреди | уреди извор]- RFC 675 – Specification of Internet Transmission Control Program, December 1974 Version
- RFC 793 – TCP v4
- STD 7 – Transmission Control Protocol, Protocol specification
- RFC 1122 – includes some error corrections for TCP
- RFC 1323 – TCP Extensions for High Performance [Obsoleted by RFC 7323]
- RFC 1379 – Extending TCP for Transactions—Concepts [Obsoleted by RFC 6247]}-
- RFC 1948 – Defending Against Sequence Number Attacks
- RFC 2018 – TCP Selective Acknowledgment Options
- RFC 5681 – TCP Congestion Control
- RFC 6247 – -{Moving the Undeployed TCP Extensions RFC 1072, RFC 1106, RFC 1110, RFC 1145, RFC 1146, RFC 1379, RFC 1644, and RFC 1693 to Historic Status
- RFC 6298 – Computing TCP's Retransmission Timer
- RFC 6824 – TCP Extensions for Multipath Operation with Multiple Addresses
- RFC 7323 – TCP Extensions for High Performance
- RFC 7414 – A Roadmap for TCP Specification Documents
Спољашње везе
[уреди | уреди извор]![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/WiktionarySr_-_DP_Derivative.svg/33px-WiktionarySr_-_DP_Derivative.svg.png)
- Oral history interview with Robert E. Kahn, Charles Babbage Institute, University of Minnesota, Minneapolis.
- IANA Port Assignments
- IANA TCP Parameters
- John Kristoff's Overview of TCP (Fundamental concepts behind TCP and how it is used to transport data between two endpoints)
- TCP, Transmission Control Protocol Архивирано на сајту Wayback Machine (14. новембар 2015)
- Checksum example
- Engineer Francesco Buffa's page about Transmission Control Protocol
- TCP tutorial
- Linktionary on TCP segments Архивирано на сајту Wayback Machine (6. новембар 2018)
- Multipath TCP
- „Wireshark: Offloading”.
- „Wireshark: Checksums”.