Поддерживать
www.wikidata.ru-ru.nina.az
TCP angl Transmission Control Protocol protokol upravleniya peredachej odin iz osnovnyh protokolov peredachi dannyh interneta Prednaznachen dlya upravleniya peredachej dannyh interneta Pakety v TCP nazyvayutsya segmentami TCPNazvanie Transmission Control ProtocolUroven po modeli OSI TransportnyjSemejstvo TCP IPSpecifikaciya RFC 793 sentyabr 1981 goda STD 7Osnovnye realizacii UNIX Linux BSD WindowsRasshiryaemost Opcii Mediafajly na Vikisklade V steke protokolov TCP IP vypolnyaet funkcii transportnogo urovnya modeli OSI Mehanizm TCP predostavlyaet potok dannyh s predvaritelnoj ustanovkoj soedineniya osushestvlyaet povtornyj zapros dannyh v sluchae poteri dannyh i ustranyaet dublirovanie pri poluchenii dvuh kopij odnogo paketa garantiruya tem samym v otlichie ot UDP celostnost peredavaemyh dannyh i uvedomlenie otpravitelya o rezultatah peredachi Realizacii TCP obychno vstroeny v yadra OS Sushestvuyut realizacii TCP rabotayushie v prostranstve polzovatelya Kogda osushestvlyaetsya peredacha ot kompyutera k kompyuteru cherez Internet TCP rabotaet na verhnem urovne mezhdu dvumya konechnymi sistemami naprimer brauzerom i veb serverom TCP osushestvlyaet nadyozhnuyu peredachu potoka bajtov ot odnogo processa k drugomu Zagolovok segmenta TCPStruktura zagolovka Bit 0 3 4 6 7 15 16 310 Port istochnika Source Port Port naznacheniya Destination Port32 Poryadkovyj nomer Sequence Number SN 64 Nomer podtverzhdeniya Acknowledgment Number ACK SN 96 Dlina zagolovka Data offset Zarezervirovano Flagi Razmer Okna Window size128 Kontrolnaya summa Checksum Ukazatel vazhnosti Urgent Point160 Opcii neobyazatelnoe no ispolzuetsya prakticheski vsegda 160 192 DannyePort istochnika Port naznacheniya Eti 16 bitnye polya soderzhat nomera portov chisla kotorye opredelyayutsya po specialnomu spisku Port istochnika identificiruet prilozhenie klienta s kotorogo otpravleny pakety Otvetnye dannye peredayutsya klientu na osnovanii etogo nomera Port naznacheniya identificiruet port na kotoryj otpravlen paket Poryadkovyj nomer Sequence number 32 bita izmeryaetsya v bajtah i kazhdyj peredannyj bajt poleznyh dannyh payload uvelichivaet eto znachenie na 1 Esli ustanovlen flag SYN idyot ustanovlenie sessii to pole soderzhit iznachalnyj poryadkovyj nomer ISN Initial Sequence Number V celyah bezopasnosti eto znachenie generiruetsya sluchajnym obrazom i mozhet byt ravno ot 0 do 232 1 4294967295 Pervyj bajt poleznyh dannyh v ustanavlivayushejsya sessii budet imet nomer ISN 1 V protivnom sluchae esli SYN ne ustanovlen pervyj bajt dannyh peredavaemyj v dannom pakete imeet etot poryadkovyj nomer Poskolku potok TCP v obshem sluchae mozhet byt dlinnee chem chislo razlichnyh sostoyanij etogo polya to vse operacii s poryadkovym nomerom dolzhny vypolnyatsya po modulyu 232 Eto nakladyvaet prakticheskoe ogranichenie na ispolzovanie TCP Esli skorost peredachi kommunikacionnoj sistemy takova chtoby v techenie MSL maksimalnogo vremeni zhizni segmenta proizoshlo perepolnenie poryadkovogo nomera to v seti mozhet poyavitsya dva segmenta s odinakovym nomerom otnosyashihsya k raznym chastyam potoka i priyomnik poluchit nekorrektnye dannye Nomer podtverzhdeniya Acknowledgment Number ACK SN 32 bita esli ustanovlen flag ACK to eto pole soderzhit poryadkovyj nomer okteta kotoryj otpravitel dannogo segmenta zhelaet poluchit Eto oznachaet chto vse predydushie oktety s nomerami ot ISN 1 do ACK 1 vklyuchitelno byli uspeshno polucheny Kazhdaya storona podschityvaet svoj Sequence number dlya peredannyh dannyh i otdelno Acknowledgement number dlya poluchennyh dannyh Sequence number kazhdoj iz storon sootvetstvuet Acknowledgement number drugoj storony Dlina zagolovka smeshenie dannyh Dlina zagolovka Data offset zanimaet 4 bita i ukazyvaet znachenie dliny zagolovka izmerennoe v 32 bitovyh slovah Minimalnyj razmer sostavlyaet 20 bajt pyat 32 bitovyh slov a maksimalnyj 60 bajt pyatnadcat 32 bitovyh slov Dlina zagolovka opredelyaet smeshenie poleznyh dannyh otnositelno nachala segmenta Naprimer Data offset ravnoe 11112 govorit o tom chto zagolovok zanimaet pyatnadcat 32 bitnyh slova 15 strok 32 bita v kazhdoj stroke 8 bit 60 bajt Zarezervirovano Zarezervirovano 3 bita dlya budushego ispolzovaniya i dolzhno ustanavlivatsya v nol Flagi upravlyayushie bity Eto pole soderzhit 9 bitovyh flagov NS ECN nonce Ustojchivyj mehanizm signalizacii nasysheniya s pomoshyu ECN nonce RFC 3540 CWR Congestion Window Reduced Pole Okno peregruzki umensheno flag ustanovlen otpravitelem chtoby ukazat chto poluchen paket s ustanovlennym flagom ECE RFC 3168 ECE ECN Echo Pole Eho ECN ukazyvaet chto dannyj uzel sposoben na ECN yavnoe uvedomlenie peregruzki i dlya ukazaniya otpravitelyu o peregruzkah v seti RFC 3168 URG pole Ukazatel vazhnosti zadejstvovano angl Urgent pointer field is significant Kogda uzel otpravlyaet segment s URG flagom to uzel poluchatel prinimaet ego na otdelnom kanale ACK pole Nomer podtverzhdeniya zadejstvovano angl Acknowledgement field is significant PSH angl Push function instruktiruet poluchatelya protolknut dannye nakopivshiesya v priyomnom bufere v prilozhenie polzovatelya API dlya ustanovki PSH flaga net Obychno on ustanavlivaetsya yadrom kogda ono ochishaet bufer Delo v tom chto kogda uzel otpravlyaet informaciyu TCP sohranyaet eyo v bufere i ne peredaet eyo srazu drugomu uzlu ozhidaya zahochet li uzel otpravitel peredat eshyo Takaya zhe shema rabotaet i u uzla poluchatelya Kogda on poluchaet informaciyu TCP sohranyaet eyo v bufere chtoby ne trevozhit prilozhenie iz za kazhdogo bajta poluchennoj informacii Esli uzel otpravlyaet segment s PSH flagom eto znachit chto on otpravil vse chto bylo nuzhno RST oborvat soedineniya sbrosit bufer ochistka bufera angl Reset the connection SYN sinhronizaciya nomerov posledovatelnosti angl Synchronize sequence numbers FIN angl final bit flag buduchi ustanovlen ukazyvaet na zavershenie soedineniya angl FIN bit used for connection termination Razmer okna Window Size samostoyatelno opredelyaet kolichestvo bajt dannyh payload posle peredachi kotoryh otpravitel ozhidaet podtverzhdeniya ot poluchatelya chto dannye polucheny Inache govorya poluchatel paketa raspolagaet dlya priyoma dannyh buferom dlinoj razmer okna bajt Po umolchaniyu razmer okna izmeryaetsya v bajtah poetomu ogranichen 216 65535 bajtami Odnako blagodarya TCP opcii Window scale option etot razmer mozhet byt uvelichen do 1 Gbajta Chtoby zadejstvovat etu opciyu obe storony dolzhny soglasovat eto v svoih SYN segmentah Kontrolnaya summa Checksum Pole kontrolnoj summy eto 16 bitnoe dopolnenie k summe vseh 16 bitnyh slov zagolovka vklyuchaya psevdozagolovok i dannyh Esli segment po kotoromu vychislyaetsya kontrolnaya summa imeet dlinu ne kratnuyu 16 bitam to dlina segmenta uvelichivaetsya do kratnoj 16 ti za schyot dopolneniya k nemu sprava nulevyh bitov zapolneniya Bity zapolneniya 0 ne peredayutsya v soobshenii i sluzhat tolko dlya raschyota kontrolnoj summy Pri raschyote kontrolnoj summy znachenie samogo polya kontrolnoj summy prinimaetsya ravnym 0 Ukazatel vazhnosti Urgent pointer 16 bitovoe znachenie polozhitelnogo smesheniya ot poryadkovogo nomera v dannom segmente Eto pole ukazyvaet poryadkovyj nomer okteta kotorym zakanchivayutsya vazhnye urgent dannye Pole prinimaetsya vo vnimanie tolko dlya paketov s ustanovlennym flagom URG Ispolzuetsya dlya vnepolosnyh dannyh Opcii Mogut primenyatsya v nekotoryh sluchayah dlya rasshireniya protokola Inogda ispolzuyutsya dlya testirovaniya Na dannyj moment v opcii prakticheski vsegda vklyuchayut 2 bajta NOP v dannom sluchae 0x01 i 10 bajt zadayushih timestamps Vychislit dlinu polya opcii mozhno cherez znachenie polya smesheniya Mehanizm dejstviya protokolaV otlichie ot tradicionnoj alternativy UDP kotoryj mozhet srazu zhe nachat peredachu paketov TCP ustanavlivaet soedineniya kotorye dolzhny byt sozdany pered peredachej dannyh TCP soedinenie mozhno razdelit na 3 stadii Ustanovka soedineniya Peredacha dannyh Zavershenie soedineniyaSostoyaniya seansa TCP Uproshyonnaya diagramma sostoyanij TCP Bolee podrobno v TCP EFSM diagram na anglijskom yazyke Sostoyaniya seansa TCPCLOSED Nachalnoe sostoyanie uzla Fakticheski fiktivnoeLISTEN Server ozhidaet zaprosov ustanovleniya soedineniya ot klientaSYN SENT Klient otpravil zapros serveru na ustanovlenie soedineniya i ozhidaet otvetaSYN RECEIVED Server poluchil zapros na soedinenie otpravil otvetnyj zapros i ozhidaet podtverzhdeniyaESTABLISHED Soedinenie ustanovleno idyot peredacha dannyhFIN WAIT 1 Odna iz storon nazovyom eyo uzel 1 zavershaet soedinenie otpraviv segment s flagom FINCLOSE WAIT Drugaya storona uzel 2 perehodit v eto sostoyanie otpraviv v svoyu ochered segment ACK i prodolzhaet odnostoronnyuyu peredachuFIN WAIT 2 Uzel 1 poluchaet ACK prodolzhaet chtenie i zhdyot polucheniya segmenta s flagom FINLAST ACK Uzel 2 zakanchivaet peredachu i otpravlyaet segment s flagom FINTIME WAIT Uzel 1 poluchil segment s flagom FIN otpravil segment s flagom ACK i zhdyot 2 MSL sekund pered okonchatelnym zakrytiem soedineniyaCLOSING Obe storony iniciirovali zakrytie soedineniya odnovremenno posle otpravki segmenta s flagom FIN uzel 1 takzhe poluchaet segment FIN otpravlyaet ACK i nahoditsya v ozhidanii segmenta ACK podtverzhdeniya na svoj zapros o razedinenii Ustanovka soedineniya Process nachala seansa TCP takzhe nazyvaemyj rukopozhatie angl handshake sostoit iz tryoh shagov 1 Klient kotoryj namerevaetsya ustanovit soedinenie posylaet serveru segment s nomerom posledovatelnosti i flagom SYN Server poluchaet segment zapominaet nomer posledovatelnosti i pytaetsya sozdat soket bufera i upravlyayushie struktury pamyati dlya obsluzhivaniya novogo klienta V sluchae uspeha server posylaet klientu segment s nomerom posledovatelnosti i flagami SYN i ACK i perehodit v sostoyanie SYN RECEIVED V sluchae neudachi server posylaet klientu segment s flagom RST 2 Esli klient poluchaet segment s flagom SYN to on zapominaet nomer posledovatelnosti i posylaet segment s flagom ACK Esli klient odnovremenno poluchaet i flag ACK chto obychno i proishodit to on perehodit v sostoyanie ESTABLISHED Esli klient poluchaet segment s flagom RST to on prekrashaet popytki soedinitsya Esli klient ne poluchaet otveta v techenie 10 sekund to on povtoryaet process soedineniya zanovo 3 Esli server v sostoyanii SYN RECEIVED poluchaet segment s flagom ACK to on perehodit v sostoyanie ESTABLISHED V protivnom sluchae posle tajm auta on zakryvaet soket i perehodit v sostoyanie CLOSED Process nazyvaetsya tryohetapnym rukopozhatiem angl three way handshake tak kak nesmotrya na to chto vozmozhen process ustanovleniya soedineniya s ispolzovaniem chetyryoh segmentov SYN v storonu servera ACK v storonu klienta SYN v storonu klienta ACK v storonu servera na praktike dlya ekonomii vremeni ispolzuetsya tri segmenta Primer bazovogo 3 etapnogo soglasovaniya TCP A TCP B 1 CLOSED LISTEN 2 SYN SENT gt lt SEQ 100 gt lt CTL SYN gt gt SYN RECEIVED 3 ESTABLISHED lt lt SEQ 300 gt lt ACK 101 gt lt CTL SYN ACK gt lt SYN RECEIVED 4 ESTABLISHED gt lt SEQ 101 gt lt ACK 301 gt lt CTL ACK gt gt ESTABLISHED 5 ESTABLISHED lt lt SEQ 301 gt lt ACK 101 gt lt CTL ACK gt lt ESTABLISHED V stroke 2 TCP A nachinaet peredachu segmenta SYN govoryashego ob ispolzovanii nomerov posledovatelnosti nachinaya so 100 V stroke 3 TCP B peredayot SYN i podtverzhdenie dlya prinyatogo SYN v adres TCP A Pole podtverzhdeniya pokazyvaet ozhidanie TCP B priyoma nomera posledovatelnosti 101 podtverzhdayushego SYN s nomerom 100 V stroke 4 TCP A otvechaet pustym segmentom s podtverzhdeniem ACK dlya segmenta SYN ot TCP B V stroke 5 TCP B peredayot nekotorye dannye Otmetim chto nomer podtverzhdeniya segmenta v stroke 5 ACK 101 sovpadaet s nomerom posledovatelnosti v stroke 4 SEQ 101 poskolku ACK ne zanimaet prostranstva nomerov posledovatelnosti esli eto sdelat pridyotsya podtverzhdat podtverzhdeniya ACK dlya ACK Sushestvuyut eksperimentalnye rasshireniya protokola TCP sokrashayushie kolichestvo paketov pri ustanovlenii soedineniya naprimer angl Ranee takzhe sushestvovalo rasshirenie T TCP Dlya prozrachnogo shifrovaniya dannyh predlagaetsya ispolzovat rasshirenie tcpcrypt Peredacha dannyh Sm takzhe Algoritm Nejgla i Medlennyj start Pri obmene dannymi priyomnik ispolzuet nomer posledovatelnosti soderzhashijsya v poluchaemyh segmentah dlya vosstanovleniya ih ishodnogo poryadka Priyomnik uvedomlyaet peredayushuyu storonu o nomere posledovatelnosti do kotoroj on uspeshno poluchil dannye vklyuchaya ego v pole nomer podtverzhdeniya Vse poluchaemye dannye otnosyashiesya k promezhutku podtverzhdyonnyh posledovatelnostej ignoriruyutsya Esli poluchennyj segment soderzhit nomer posledovatelnosti bolshij chem ozhidaemyj to dannye iz segmenta buferiziruyutsya no nomer podtverzhdyonnoj posledovatelnosti ne izmenyaetsya Esli vposledstvii budet prinyat segment otnosyashijsya k ozhidaemomu nomeru posledovatelnosti to poryadok dannyh budet avtomaticheski vosstanovlen ishodya iz nomerov posledovatelnostej v segmentah Dlya togo chtoby peredayushaya storona ne otpravlyala dannye intensivnee chem ih mozhet obrabotat priyomnik TCP soderzhit sredstva upravleniya potokom Dlya etogo ispolzuetsya pole okno V segmentah napravlyaemyh ot priyomnika peredayushej storone v pole okno ukazyvaetsya tekushij razmer priyomnogo bufera Peredayushaya storona sohranyaet razmer okna i otpravlyaet dannyh ne bolee chem ukazal priyomnik Esli priyomnik ukazal nulevoj razmer okna to peredachi dannyh v napravlenii etogo uzla ne proishodit poka priyomnik ne soobshit o bolshem razmere okna V nekotoryh sluchayah peredayushee prilozhenie mozhet yavno zatrebovat peredat dannye do nekotoroj posledovatelnosti prinimayushemu prilozheniyu ne buferiziruya ih Dlya etogo ispolzuetsya flag PSH Esli v poluchennom segmente obnaruzhivaetsya flag PSH to realizaciya TCP otdayot vse buferizirovannye na tekushij moment dannye prinimayushemu prilozheniyu Protalkivanie ispolzuetsya naprimer v interaktivnyh prilozheniyah V setevyh terminalah net smysla ozhidat vvoda polzovatelya posle togo kak on zakonchil nabirat komandu Poetomu poslednij segment soderzhashij komandu obyazan soderzhat flag PSH chtoby prilozhenie na prinimayushej storone smoglo nachat eyo vypolnenie Zavershenie soedineniya Zavershenie soedineniya mozhno rassmotret v tri etapa Posylka serveru ot klienta flaga FIN na zavershenie soedineniya Server posylaet klientu flagi otveta ACK FIN chto soedinenie zakryto Posle polucheniya etih flagov klient zakryvaet soedinenie i v podtverzhdenie otpravlyaet serveru ACK chto soedinenie zakryto Izvestnye problemyMaksimalnyj razmer segmenta TCP trebuet yavnogo ukazaniya maksimalnogo razmera segmenta MSS v sluchae esli virtualnoe soedinenie osushestvlyaetsya cherez segment seti gde maksimalnyj razmer bloka MTU menee chem standartnyj MTU Ethernet 1500 bajt V protokolah tunnelirovaniya takih kak GRE a takzhe PPPoE MTU tunnel menshe chem standartnyj poetomu segment TCP maksimalnogo razmera imeet dlinu paketa bolshe chem MTU Eto privodit k fragmentacii i umensheniyu skorosti peredachi poleznyh dannyh Esli na kakom libo uzle fragmentaciya zapreshena to so storony polzovatelya eto vyglyadit kak zavisanie soedinenij Pri etom zavisanie mozhet proishodit v proizvolnye momenty vremeni a imenno togda kogda otpravitel ispolzoval segmenty dlinnee dopustimogo razmera Dlya resheniya etoj problemy na marshrutizatorah primenyayutsya pravila Firewall a dobavlyayushie parametr MSS vo vse pakety iniciiruyushie soedineniya chtoby otpravitel ispolzoval segmenty dopustimogo razmera MSS mozhet takzhe upravlyatsya parametrami operacionnoj sistemy Obnaruzhenie oshibok pri peredache dannyh Hotya protokol osushestvlyaet proverku kontrolnoj summy po kazhdomu segmentu ispolzuemyj algoritm schitaetsya slabym 1 V obshem sluchae raspredelennym setevym prilozheniyam rekomenduetsya ispolzovat dopolnitelnye programmnye sredstva dlya garantirovaniya celostnosti peredavaemoj informacii 2 Ataki na protokol Sm takzhe TCP hijacking i Ataka TCP Reset Nedostatki protokola proyavlyayutsya v uspeshnyh teoreticheskih i prakticheskih atakah pri kotoryh zloumyshlennik mozhet poluchit dostup k peredavaemym dannym vydat sebya za druguyu storonu ili privesti sistemu v nerabochee sostoyanie RealizaciyaPsevdozagolovok TCP zagolovok ne soderzhit informacii ob adrese otpravitelya i poluchatelya poetomu dazhe pri sovpadenii porta poluchatelya nelzya s tochnostyu skazat chto soobshenie prishlo v nuzhnoe mesto Poskolku naznacheniem protokola TCP yavlyaetsya nadyozhnaya dostavka soobshenij to etot moment imeet principialnoe znachenie Etu zadachu mozhno bylo reshit raznymi sposobami Samyj ochevidnyj dobavit informaciyu ob adrese naznacheniya v zagolovok TCP odnako eto vo pervyh privodit k dublirovaniyu informacii chto snizhaet dolyu poleznoj informacii perenosimoj TCP segmentom a vo vtoryh narushaet princip inkapsulyacii modeli OSI Poetomu razrabotchiki protokola poshli drugim putyom i ispolzovali dopolnitelnyj 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 310 31 IP adres otpravitelya Source address 32 63 IP adres poluchatelya 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 310 95 IP adres otpravitelya Source address 128 223 IP adres poluchatelya 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 verhnego urovnya Next header Protokol Protocol Protokol verhnego urovnya Next header soderzhit v sebe znachenie 6 00000110 v dvoichnom vide 0x6 v shestnadcaterichnom identifikator TCP protokola Dlina TCP segmenta TCP length soderzhit v sebe dlinu TCP segmenta v bajtah TCP zagolovok dannye dlina psevdozagolovka ne uchityvaetsya Psevdozagolovok ne vklyuchaetsya v TCP segment On ispolzuetsya dlya raschyota kontrolnoj summy pered otpravleniem soobsheniya i pri ego poluchenii poluchatel sostavlyaet svoj psevdozagolovok ispolzuya adres hosta s kotorogo prishlo soobshenie i sobstvennyj adres a zatem schitaet kontrolnuyu summu Osvobozhdenie ot raschyota kontrolnoj summy Mnogie realizacii steka TCP IP predostavlyayut vozmozhnosti ispolzovaniya apparatnoj podderzhki dlya avtomaticheskogo raschyota kontrolnoj summy v setevom adaptere do peredachi v set ili posle priyoma iz seti dlya verifikacii Eto mozhet osvobozhdat operacionnuyu sistemu ot ispolzovaniya cennyh taktov processora pri vychislenii kontrolnoj summy Eta funkciya mozhet privodit k tomu chto analizatory trafika perehvatyvayushie ishodyashie pakety do ih peredachi v setevoj adapter i ne znayushie o delegirovanii raschyota kontrolnoj summy setevomu adapteru mogut soobshat ob oshibke kontrolnoj summy v ishodyashih paketah Sm takzheSCTP TCP hijacking BIC TCP Port TCP IP IP UDPLiteraturaTerri Ogltri Modernizaciya i remont setej Upgrading and Repairing Networks 4 e izd M 2005 S 1328 ISBN 0 7897 2817 6 Duglas Kamer Seti TCP IP tom 1 Principy protokoly i struktura Internetworking with TCP IP Vol 1 Principles Protocols and Architecture M 2003 S 880 ISBN 0 13 018380 6 Andrej Robachevskij Sergej Nemnyugin Olga Stesik Operacionnaya sistema UNIX 2 e izd 2007 S 656 ISBN 5 94157 538 6 SsylkiRFC 793 angl Transmission Control Protocol RFC 793 na russkom Specifikaciya protokola TCP Pravila chteniya tablic opisyvayushih strukturu zagolovkov setevyh protokolov
Вершина