TCP
| TCP | |
|---|---|
| Nazvanie | Transmission Control Protocol |
| Uroven' (po modeli OSI) | Transportnyi |
| Semeistvo | TCP/IP |
| Spetsifikatsiia | RFC 793 (sentiabr' 1981 goda) / STD 7 |
| Osnovnye realizatsii | UNIX, Linux, BSD, Windows |
| Rasshiriaemost' | Optsii |
| Mediafaily na Vikisklade | |
TCP (angl. Transmission Control Protocol -- protokol upravleniia peredachei) -- odin iz osnovnykh protokolov peredachi dannykh interneta. Pakety v TCP nazyvaiutsia segmentami.
V steke protokolov TCP/IP vypolniaet funktsii transportnogo urovnia modeli OSI.
Mekhanizm TCP predostavliaet potok dannykh s predvaritel'noi ustanovkoi soedineniia, osushchestvliaet povtornyi zapros dannykh v sluchae poteri dannykh i ustraniaet dublirovanie pri poluchenii dvukh kopii odnogo paketa, garantiruia tem samym (v otlichie ot UDP) tselostnost' peredavaemykh dannykh i uvedomlenie otpravitelia o rezul'tatakh peredachi.
Realizatsii TCP obychno vstroeny v iadra OS. Sushchestvuiut realizatsii TCP, rabotaiushchie v prostranstve pol'zovatelia.
Zagolovok segmenta TCP
[pravit' | pravit' kod]| Bit | 0 -- 3 | 4 -- 6 | 7 -- 15 | 16 -- 31 | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Port istochnika, Source Port | Port naznacheniia, Destination Port | ||||||||||||||||||||||||||||||
| 32 | Poriadkovyi nomer, Sequence Number (SN) | |||||||||||||||||||||||||||||||
| 64 | Nomer podtverzhdeniia, Acknowledgment Number (ACK SN) | |||||||||||||||||||||||||||||||
| 96 | Dlina zagolovka, (Data offset) | Zarezervirovano | Flagi | Razmer Okna, Window size | ||||||||||||||||||||||||||||
| 128 | Kontrol'naia summa, Checksum | Ukazatel' vazhnosti, Urgent Pointer | ||||||||||||||||||||||||||||||
| 160 | Optsii (neobiazatel'noe, no ispol'zuetsia prakticheski vsegda) | |||||||||||||||||||||||||||||||
| 160/192+ | Dannye | |||||||||||||||||||||||||||||||
Port istochnika, Port naznacheniia
[pravit' | pravit' kod]Eti 16-bitnye polia soderzhat nomera portov -- chisla, kotorye opredeliaiutsia po spetsial'nomu spisku.
Port istochnika identifitsiruet prilozhenie klienta, s kotorogo otpravleny pakety. Otvetnye dannye peredaiutsia klientu na osnovanii etogo nomera.
Port naznacheniia identifitsiruet port, na kotoryi otpravlen paket.
Poriadkovyi nomer
[pravit' | pravit' kod]Sequence number (32 bita) -- izmeriaetsia v baitakh, i kazhdyi peredannyi bait poleznykh dannykh (payload) uvelichivaet eto znachenie na 1.
Esli ustanovlen flag SYN (idiot ustanovlenie sessii), to pole soderzhit iznachal'nyi poriadkovyi nomer -- ISN (Initial Sequence Number). V tseliakh bezopasnosti eto znachenie generiruetsia sluchainym obrazom i mozhet byt' ravno ot 0 do 232-1 (4294967295). Pervyi bait poleznykh dannykh v ustanavlivaiushcheisia sessii budet imet' nomer ISN+1.
V protivnom sluchae, esli SYN ne ustanovlen, pervyi bait dannykh, peredavaemyi v dannom pakete, imeet etot poriadkovyi nomer.
Poskol'ku potok TCP v obshchem sluchae mozhet byt' dlinnee, chem chislo razlichnykh sostoianii etogo polia, to vse operatsii s poriadkovym nomerom dolzhny vypolniat'sia po moduliu 232. Eto nakladyvaet prakticheskoe ogranichenie na ispol'zovanie TCP. Esli skorost' peredachi kommunikatsionnoi sistemy takova, chtoby v techenie MSL (maksimal'nogo vremeni zhizni segmenta) proizoshlo perepolnenie poriadkovogo nomera, to v seti mozhet poiavit'sia dva segmenta s odinakovym nomerom, otnosiashchikhsia k raznym chastiam potoka, i priiomnik poluchit nekorrektnye dannye.
Nomer podtverzhdeniia
[pravit' | pravit' kod]Acknowledgment Number (ACK SN) (32 bita) -- esli ustanovlen flag ACK, to eto pole soderzhit poriadkovyi nomer okteta, kotoryi otpravitel' dannogo segmenta zhelaet poluchit'. Eto oznachaet, chto vse predydushchie oktety (s nomerami ot ISN+1 do ACK-1 vkliuchitel'no) byli uspeshno polucheny.
Kazhdaia storona podschityvaet svoi Sequence number dlia peredannykh dannykh i otdel'no Acknowledgement number dlia poluchennykh dannykh. Sequence number kazhdoi iz storon sootvetstvuet Acknowledgement number drugoi storony.
Dlina zagolovka (smeshchenie dannykh)
[pravit' | pravit' kod]Dlina zagolovka (Data offset) zanimaet 4 bita i ukazyvaet znachenie dliny zagolovka, izmerennoe v 32-bitovykh slovakh. Minimal'nyi razmer sostavliaet 20 bait (piat' 32-bitovykh slov), a maksimal'nyi -- 60 bait (piatnadtsat' 32-bitovykh slov). Dlina zagolovka opredeliaet smeshchenie poleznykh dannykh otnositel'no nachala segmenta. Naprimer, Data offset ravnoe 11112 govorit o tom, chto zagolovok zanimaet piatnadtsat' 32-bitnykh slova (15 strok*32 bita v kazhdoi stroke/8 bit = 60 bait).
Zarezervirovano
[pravit' | pravit' kod]Zarezervirovano (3 bita) dlia budushchego ispol'zovaniia i dolzhno ustanavlivat'sia v nol'.
Flagi (upravliaiushchie bity)
[pravit' | pravit' kod]Eto pole soderzhit 9 bitovykh flagov:
- NS (ECN-nonce) -- Ustoichivyi mekhanizm signalizatsii nasyshcheniia s pomoshch'iu ECN-nonce (RFC 3540)
- CWR (Congestion Window Reduced) -- Pole <
> -- flag ustanovlen otpravitelem, chtoby ukazat', chto poluchen paket s ustanovlennym flagom ECE (RFC 3168) - ECE (ECN-Echo) -- Pole <
> -- ukazyvaet, chto dannyi uzel sposoben na ECN (iavnoe uvedomlenie peregruzki) i dlia ukazaniia otpraviteliu o peregruzkakh v seti (RFC 3168)
- URG -- pole <
> zadeistvovano (angl. Urgent pointer field is significant). Kogda uzel otpravliaet segment s URG flagom, to uzel-poluchatel' prinimaet ego na otdel'nom kanale.
- ACK -- pole <
> zadeistvovano (angl. Acknowledgement field is significant) - PSH -- (angl. Push function) instruktiruet poluchatelia protolknut' dannye, nakopivshiesia v priiomnom bufere, v prilozhenie pol'zovatelia. API dlia ustanovki PSH flaga net. Obychno on ustanavlivaetsia iadrom, kogda ono ochishchaet bufer. Delo v tom, chto kogda uzel otpravliaet informatsiiu, TCP sokhraniaet eio v bufere i ne peredaet eio srazu drugomu uzlu, ozhidaia, zakhochet li uzel-otpravitel' peredat' eshchio. Takaia zhe skhema rabotaet i u uzla-poluchatelia. Kogda on poluchaet informatsiiu, TCP sokhraniaet eio v bufere, chtoby ne trevozhit' prilozhenie iz-za kazhdogo baita poluchennoi informatsii. Esli uzel otpravliaet segment s PSH flagom, eto znachit, chto on otpravil vse, chto bylo nuzhno.
- RST -- oborvat' soedineniia, sbrosit' bufer (ochistka bufera) (angl. Reset the connection)
- SYN -- sinkhronizatsiia nomerov posledovatel'nosti (angl. Synchronize sequence numbers)
- FIN (angl. final, bit) -- flag, buduchi ustanovlen, ukazyvaet na zavershenie soedineniia (angl. FIN bit used for connection termination).
Razmer okna
[pravit' | pravit' kod]Window Size samostoiatel'no opredeliaet kolichestvo bait dannykh (payload), posle peredachi kotorykh otpravitel' ozhidaet podtverzhdeniia ot poluchatelia, chto dannye polucheny. Inache govoria, poluchatel' paketa raspolagaet dlia priioma dannykh buferom dlinoi <
Po umolchaniiu razmer okna izmeriaetsia v baitakh, poetomu ogranichen 216 (65535) baitami. Odnako blagodaria TCP optsii Window scale option etot razmer mozhet byt' uvelichen do 1 Gbaita. Chtoby zadeistvovat' etu optsiiu, obe storony dolzhny soglasovat' eto v svoikh SYN segmentakh.
Kontrol'naia summa (Checksum)
[pravit' | pravit' kod]Pole kontrol'noi summy -- eto 16-bitnoe dopolnenie k summe vsekh 16-bitnykh slov zagolovka (vkliuchaia psevdozagolovok) i dannykh. Esli segment, po kotoromu vychisliaetsia kontrol'naia summa, imeet dlinu ne kratnuiu 16-bitam, to dlina segmenta uvelichivaetsia do kratnoi 16-ti za schiot dobavleniia k nemu sprava nulevykh bitov zapolneniia. Bity zapolneniia (0) ne peredaiutsia v soobshchenii i sluzhat tol'ko dlia raschiota kontrol'noi summy. Pri raschiote kontrol'noi summy znachenie samogo polia kontrol'noi summy prinimaetsia ravnym 0.
Ukazatel' vazhnosti (Urgent pointer)
[pravit' | pravit' kod]16-bitovoe znachenie polozhitel'nogo smeshcheniia ot poriadkovogo nomera v dannom segmente. Eto pole ukazyvaet poriadkovyi nomer okteta, kotorym zakanchivaiutsia vazhnye (urgent) dannye. Pole prinimaetsia vo vnimanie tol'ko dlia paketov s ustanovlennym flagom URG. Ispol'zuetsia dlia vnepolosnykh dannykh.
Optsii
[pravit' | pravit' kod]Mogut primeniat'sia v nekotorykh sluchaiakh dlia rasshireniia protokola. Inogda ispol'zuiutsia dlia testirovaniia. Na dannyi moment v optsii prakticheski vsegda vkliuchaiut 2 baita NOP (v dannom sluchae 0x01) i 10 bait, zadaiushchikh timestamps. Vychislit' dlinu polia optsii mozhno cherez znachenie polia smeshcheniia.
Mekhanizm deistviia protokola
[pravit' | pravit' kod]V otlichie ot traditsionnoi al'ternativy -- UDP, kotoryi mozhet srazu zhe nachat' peredachu paketov, TCP ustanavlivaet soedineniia, kotorye dolzhny byt' sozdany pered peredachei dannykh. TCP-soedinenie mozhno razdelit' na 3 stadii:
- Ustanovka soedineniia.
- Peredacha dannykh.
- Zavershenie soedineniia.
Sostoianiia seansa TCP
[pravit' | pravit' kod]| Sostoianiia seansa TCP | |
|---|---|
| CLOSED | Nachal'noe sostoianie uzla. Fakticheski fiktivnoe |
| LISTEN | Server ozhidaet zaprosov ustanovleniia soedineniia ot klienta |
| SYN-SENT | Klient otpravil zapros serveru na ustanovlenie soedineniia i ozhidaet otveta |
| SYN-RECEIVED | Server poluchil zapros na soedinenie, otpravil otvetnyi zapros i ozhidaet podtverzhdeniia |
| ESTABLISHED | Soedinenie ustanovleno, idiot peredacha dannykh |
| FIN-WAIT-1 | Odna iz storon (nazoviom eio uzel-1) zavershaet soedinenie, otpraviv segment s flagom FIN |
| CLOSE-WAIT | Drugaia storona (uzel-2) perekhodit v eto sostoianie, otpraviv, v svoiu ochered' segment ACK i prodolzhaet odnostoronniuiu peredachu |
| FIN-WAIT-2 | Uzel-1 poluchaet ACK, prodolzhaet chtenie i zhdiot polucheniia segmenta s flagom FIN |
| LAST-ACK | Uzel-2 zakanchivaet peredachu i otpravliaet segment s flagom FIN |
| TIME-WAIT | Uzel-1 poluchil segment s flagom FIN, otpravil segment s flagom ACK i zhdiot 2*MSL sekund, pered okonchatel'nym zakrytiem soedineniia |
| CLOSING | Obe storony initsiirovali zakrytie soedineniia odnovremenno: posle otpravki segmenta s flagom FIN uzel-1 takzhe poluchaet segment FIN, otpravliaet ACK i nakhoditsia v ozhidanii segmenta ACK (podtverzhdeniia na svoi zapros o raz'edinenii) |
Ustanovka soedineniia
[pravit' | pravit' kod]Protsess nachala seansa TCP (takzhe nazyvaemyi <
1. Klient, kotoryi namerevaetsia ustanovit' soedinenie, posylaet serveru segment s nomerom posledovatel'nosti i flagom SYN.
- Server poluchaet segment, zapominaet nomer posledovatel'nosti i pytaetsia sozdat' soket (bufera i upravliaiushchie struktury pamiati) dlia obsluzhivaniia novogo klienta.
- V sluchae uspekha server posylaet klientu segment s nomerom posledovatel'nosti i flagami SYN i ACK, i perekhodit v sostoianie SYN-RECEIVED.
- V sluchae neudachi server posylaet klientu segment s flagom RST.
2. Esli klient poluchaet segment s flagom SYN, to on zapominaet nomer posledovatel'nosti i posylaet segment s flagom ACK.
- Esli klient odnovremenno poluchaet i flag ACK (chto obychno i proiskhodit), to on perekhodit v sostoianie ESTABLISHED.
- Esli klient poluchaet segment s flagom RST, to on prekrashchaet popytki soedinit'sia.
- Esli klient ne poluchaet otveta v techenie 10 sekund, to on povtoriaet protsess soedineniia zanovo.
3. Esli server v sostoianii SYN-RECEIVED poluchaet segment s flagom ACK, to on perekhodit v sostoianie ESTABLISHED.
- V protivnom sluchae posle taim-auta on zakryvaet soket i perekhodit v sostoianie CLOSED.
Protsess nazyvaetsia <
Primer bazovogo 3-etapnogo soglasovaniia:
TCP A TCP B1. CLOSED LISTEN
2. SYN-SENT -->
3. ESTABLISHED <--
4. ESTABLISHED -->
5. ESTABLISHED <--
V stroke 2 TCP A nachinaet peredachu segmenta SYN, govoriashchego ob ispol'zovanii nomerov posledovatel'nosti, nachinaia so 100;
V stroke 3 TCP B peredaiot SYN i podtverzhdenie dlia priniatogo SYN v adres TCP A. Pole podtverzhdeniia pokazyvaet ozhidanie TCP B priioma nomera posledovatel'nosti 101, podtverzhdaiushchego SYN s nomerom 100;
V stroke 4 TCP A otvechaet pustym segmentom s podtverzhdeniem ACK dlia segmenta SYN ot TCP B;
V stroke 5 TCP B peredaiot nekotorye dannye. Otmetim, chto nomer podtverzhdeniia segmenta v stroke 5 (ACK=101) sovpadaet s nomerom posledovatel'nosti v stroke 4 (SEQ=101), poskol'ku ACK ne zanimaet prostranstva nomerov posledovatel'nosti (esli eto sdelat', pridiotsia podtverzhdat' podtverzhdeniia -- ACK dlia ACK).
Sushchestvuiut eksperimental'nye rasshireniia protokola TCP, sokrashchaiushchie kolichestvo paketov pri ustanovlenii soedineniia, naprimer TCP Fast Open[angl.]. Ranee takzhe sushchestvovalo rasshirenie T/TCP. Dlia prozrachnogo shifrovaniia dannykh predlagaetsia ispol'zovat' rasshirenie tcpcrypt.
Peredacha dannykh
[pravit' | pravit' kod]Pri obmene dannymi priiomnik ispol'zuet nomer posledovatel'nosti, soderzhashchiisia v poluchaemykh segmentakh, dlia vosstanovleniia ikh iskhodnogo poriadka. Priiomnik uvedomliaet peredaiushchuiu storonu o nomere posledovatel'nosti, do kotoroi on uspeshno poluchil dannye, vkliuchaia ego v pole <
Dlia togo, chtoby peredaiushchaia storona ne otpravliala dannye intensivnee, chem ikh mozhet obrabotat' priiomnik, TCP soderzhit sredstva upravleniia potokom. Dlia etogo ispol'zuetsia pole <
V nekotorykh sluchaiakh peredaiushchee prilozhenie mozhet iavno zatrebovat' peredat' dannye do nekotoroi posledovatel'nosti prinimaiushchemu prilozheniiu, ne buferiziruia ikh. Dlia etogo ispol'zuetsia flag PSH. Esli v poluchennom segmente obnaruzhivaetsia flag PSH, to realizatsiia TCP otdaiot vse buferizirovannye na tekushchii moment dannye prinimaiushchemu prilozheniiu. <
Zavershenie soedineniia
[pravit' | pravit' kod]Zavershenie soedineniia mozhno rassmotret' v tri etapa:
- Posylka serveru ot klienta flaga FIN na zavershenie soedineniia.
- Server posylaet klientu flagi otveta ACK , FIN, chto soedinenie zakryto.
- Posle polucheniia etikh flagov klient zakryvaet soedinenie i v podtverzhdenie otpravliaet serveru ACK , chto soedinenie zakryto.
Izvestnye problemy
[pravit' | pravit' kod]Maksimal'nyi razmer segmenta
[pravit' | pravit' kod]TCP trebuet iavnogo ukazaniia maksimal'nogo razmera segmenta (MSS) v sluchae, esli virtual'noe soedinenie osushchestvliaetsia cherez segment seti, gde maksimal'nyi razmer bloka (MTU) menee, chem standartnyi MTU Ethernet (1500 bait).
V protokolakh tunnelirovaniia, takikh kak GRE, IPIP, a takzhe PPPoE MTU tunnel' men'she, chem standartnyi, poetomu segment TCP maksimal'nogo razmera imeet dlinu paketa bol'she, chem MTU. Eto privodit k fragmentatsii i umen'sheniiu skorosti peredachi poleznykh dannykh.
Esli na kakom-libo uzle fragmentatsiia zapreshchena, to so storony pol'zovatelia eto vygliadit kak <
MSS mozhet takzhe upravliat'sia parametrami operatsionnoi sistemy.
Obnaruzhenie oshibok pri peredache dannykh
[pravit' | pravit' kod]Khotia protokol osushchestvliaet proverku kontrol'noi summy po kazhdomu segmentu, ispol'zuemyi algoritm schitaetsia slabym [1].
V obshchem sluchae raspredelennym setevym prilozheniiam rekomenduetsia ispol'zovat' dopolnitel'nye programmnye sredstva dlia garantirovaniia tselostnosti peredavaemoi informatsii[2].
Ataki na protokol
[pravit' | pravit' kod]Nedostatki protokola proiavliaiutsia v uspeshnykh teoreticheskikh i prakticheskikh atakakh, pri kotorykh zloumyshlennik mozhet poluchit' dostup k peredavaemym dannym, vydat' sebia za druguiu storonu ili privesti sistemu v nerabochee sostoianie.
Realizatsiia
[pravit' | pravit' kod]Psevdozagolovok
[pravit' | pravit' kod]TCP-zagolovok ne soderzhit informatsii ob adrese otpravitelia i poluchatelia, poetomu dazhe pri sovpadenii porta poluchatelia nel'zia s tochnost'iu skazat', chto soobshchenie prishlo v nuzhnoe mesto. Poskol'ku naznacheniem protokola TCP iavliaetsia nadiozhnaia dostavka soobshchenii, to etot moment imeet printsipial'noe znachenie. Etu zadachu mozhno bylo reshit' raznymi sposobami. Samyi ochevidnyi -- dobavit' informatsiiu ob adrese naznacheniia v zagolovok TCP, odnako eto, vo-pervykh, privodit k dublirovaniiu informatsii, chto snizhaet doliu poleznoi informatsii, perenosimoi TCP-segmentom, a vo-vtorykh, narushaet printsip inkapsuliatsii modeli OSI. Poetomu razrabotchiki protokola poshli drugim putiom i ispol'zovali dopolnitel'nyi psevdozagolovok:
TCP-psevdozagolovok IPv4
| Bity | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0-31 | IP-adres otpravitelia (Source address) | |||||||||||||||||||||||||||||||
| 32-63 | IP-adres poluchatelia (Destination address) | |||||||||||||||||||||||||||||||
| 64-95 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Protokol (Protocol) | Dlina TCP-segmenta (TCP length) | ||||||||||||||||||||||
TCP-psevdozagolovok IPv6
| Bity | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0-127 | IP-adres otpravitelia (Source address) | |||||||||||||||||||||||||||||||
| 128-223 | IP-adres poluchatelia (Destination address) | |||||||||||||||||||||||||||||||
| 224-255 | Dlina TCP-segmenta (TCP length) | |||||||||||||||||||||||||||||||
| 256-287 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Protokol verkhnego urovnia (Next header) | |||||||
- Protokol (Protocol)/Protokol verkhnego urovnia (Next header) -- soderzhit v sebe znachenie 6 (00000110 v dvoichnom vide, 0x6 -- v shestnadtsaterichnom) -- identifikator TCP-protokola.
- Dlina TCP-segmenta (TCP length) -- soderzhit v sebe dlinu TCP-segmenta v baitakh (TCP-zagolovok + dannye; dlina psevdozagolovka ne uchityvaetsia).
Psevdozagolovok ne vkliuchaetsia v TCP-segment. On ispol'zuetsia dlia raschiota kontrol'noi summy pered otpravleniem soobshcheniia i pri ego poluchenii (poluchatel' sostavliaet svoi psevdozagolovok, ispol'zuia adres khosta, s kotorogo prishlo soobshchenie, i sobstvennyi adres, a zatem schitaet kontrol'nuiu summu).
Osvobozhdenie ot raschiota kontrol'noi summy
[pravit' | pravit' kod]Mnogie realizatsii steka TCP/IP predostavliaiut vozmozhnosti ispol'zovaniia apparatnoi podderzhki dlia avtomaticheskogo raschiota kontrol'noi summy v setevom adaptere do peredachi v set' ili posle priioma iz seti dlia verifikatsii. Eto mozhet osvobozhdat' operatsionnuiu sistemu ot ispol'zovaniia tsennykh taktov protsessora pri vychislenii kontrol'noi summy.
Eta funktsiia mozhet privodit' k tomu, chto analizatory trafika, perekhvatyvaiushchie iskhodiashchie pakety do ikh peredachi v setevoi adapter i ne znaiushchie o delegirovanii raschiota kontrol'noi summy setevomu adapteru, mogut soobshchat' ob oshibke kontrol'noi summy v iskhodiashchikh paketakh.
Sm. takzhe
[pravit' | pravit' kod]Literatura
[pravit' | pravit' kod]- Terri Ogltri. Modernizatsiia i remont setei = Upgrading and Repairing Networks. -- 4-e izd. -- M.: <<Vil'iams>>, 2005. -- S. 1328. -- ISBN 0-7897-2817-6.
- Duglas Kamer. Seti TCP/IP, tom 1. Printsipy, protokoly i struktura = Internetworking with TCP/IP, Vol. 1: Principles, Protocols and Architecture. -- M.: <<Vil'iams>>, 2003. -- S. 880. -- ISBN 0-13-018380-6.
- Andrei Robachevskii, Sergei Nemniugin, Ol'ga Stesik. Operatsionnaia sistema UNIX. -- 2-e izd. -- <<BKhV-Peterburg>>, 2007. -- S. 656. -- ISBN 5-94157-538-6.
Ssylki
[pravit' | pravit' kod]- RFC 793 (angl.) -- Transmission Control Protocol
- RFC 793 na russkom
- Spetsifikatsiia protokola TCP
- Pravila chteniia tablits, opisyvaiushchikh strukturu zagolovkov setevykh protokolov