Atsisiųsti pateiktį
Pateiktis įkeliama. Prašome palaukti
PateikėΠροκόπιος Καλογιάννης
1
TCP - dalis I Orientuotis y Lab 5. Pirmas TCP modulis, kuris apima duomenų paketų formatą,duomenų perdavimą ir ryšio valdymą.
2
Overview TCP = Transmission Control Protocol
(persiuntimo valdymo protokolas) Orientuoto ryšio protokolas Tiekia patikimą unicast(Field-networking,ty. darbas tinkle) transliavimą end-to-end bitų srautą per nepatikimą internetworką(tarptinklinį ryšį).
3
Orientuotas ryšys Prieš perduodant bet kokius duomenis, TCP sudaro ryšį: Vienas TCP objektas laukia ryšio (“server”) Kitas TCP objektas (“client”) susijungia su serveriu Tikrasis procesas sudarant ryšį yra sudėtingesnis Kiekvienas ryšys yra pilnai dvipusis
4
Patikimas Baitų srautas suskaidomas į dideles dalis, kurios yra vadinamos segmentais Gavėjas siunčia gavimo pranešimą (ACKs) segmentams TCP palaiko ir laikmatį (taimerį). Jei ACK negautas laiku, tada segmentas yra persiunčiamas dar kartą. Išsiaiškinant klaidas: TCP turi kontrolines sumas headeriui ir duomenims. Segmentai su klaidingom kontrolinėm sumom yra atmetami Kiekvienas baitas, kuris yra persiųstas turi sekos numerį
5
Baito srauto aptarnavimas
Žemesniuose lygiuose, TCP sutvarko duomenis į blokus ir segmentus. Aukštesniuose lygiuose TCP sutvarko duomenis kaip baitų seką ir nenustato ribos tarp baitų Taigi: Aukštesni lygiai nežino apie segmentų pradžią, bei pabaigą !
6
TCP Formatas TCP segmentai turi 20 bitų headerį su >= 0 bitų informacija.
7
TCP header Fields Porto numeris:
Porto numeris nustato galutinį jungimosi punktą. Tai pora <IP address, port number> nustato galutinį jungimosi punktą. Dvi poros <client IP address, server port number> ir <server IP address, server port number> identifikuoja TCP jungimąsi, koks jis yra .
8
TCP header Fields Eiles numeris (SeqNo):
Eilės numeris yra 32 bito ilgio. Taigi sekos numerio diapazonas yra 0 <= SeqNo <= 4.3 Gbyte Kiekvienas sekos numeris atpažįsta baitą, baitų sraute Pradinis ryšio sekos numeris (ISN) yra nustatomas prieš ryšio sukūrimą Q: What are possible requirements for ISN ?
9
TCP header Fields Patvirtinimo numeris (AckNo):
Acknowledgements are piggybacked, I.e segmentas iš A -> B gali turėti patvirtinimą duomenims nusiųstiems iš B -> A kryptį Q: Why is piggybacking good ? Hostas naudoja gavimų pranešimų numerio lauką, siųst patvirtinimams . (If a host sends an AckNo in a segment it sets the “ACK flag”) Gavimų pranešimų numeris turi sekantį eiles nr. Kurį hostas nori gauti Pvz: The acknowledgement for a segment with sequence numbers is AckNo=1501
10
TCP headr Fields Patvirtinimo numeris (cont’d)
TCP naudoja sliding window flow protocolą (see CS 457) reguliuoti duomenų srautą tarp siuntėjo ir gavėjo TCP naudoja sekantį sliding window variantą : jokių NACKs (neigiami gavimo pranešimai) Tiktai kaupiamieji ACKs Pvz: Tarkim: Siuntėjas siunčia du segmentus “ ” ir “ ”, bet gavėjas gauna tiktai antrą segmentą. Šiuo atveju: gavėjas negali patvirtinti kad gavo antrą paketą. Tai gali būti siunčiamas tik AckNo=1
11
TCP header fields Header Length ( 4bits):
Headerio ilgis yra 32-bitų žodžiuose Atkreipkit dėmesį, kad TCP headeris turi kintamą ilgį (su mažiausiai 20 bitais)
12
TCP header fields Flag bits: URG: Urgent pointer is valid
If the bit is set, the following bytes contain an urgent message in the range: SeqNo <= urgent message <= SeqNo+urgent pointer ACK: Patvirtinimo numeris yra teisingas PSH: PUSH Flag Pranešimas iš siuntėjo gavėjui, kad gavėjas turėtų praleist visus duomenis siunčiamus aplikacijai (programai). Paprastai nustatomas siuntėjo, kai jo bufferis yra tuščias
13
TCP header fields Flag bits:
RST: Reset the connection – nustatyti iš naujo ryšį The flag causes the receiver to reset the connection Gavėjas su RST nutraukia ryšį ir nurodo aukštesnį aplikacijos (programos) lygį kuriam bus resetas SYN: Synchronize sequence numbers Siunčiamas pirmam pakete pradedant ryšį FIN: Sender is finished with sending Used for closing a connection Both sides of a connection must send a FIN
14
TCP header fields Lango dydis:
Kiekviena ryšio pusė paskelbia lango dydį Window size is the maximum number of bytes that a receiver can accept. Maximum window size is 216-1= bytes TCP Checksum(kontrolinė suma): TCP checksum covers over both TCP header and TCP data (also covers some parts of the IP header) Urgent Pointer: Only valid if URG flag is set
15
TCP header fields Options:
16
TCP header fields Options:
NOP is used to pad TCP header to multiples of 4 bytes Maximum Segment Size Window Scale Options Increases the TCP window from 16 to 32 bits, I.e., the window size is interpreted differently Q: What is the different interpretation ? This option can only be used in the SYN segment (first segment) during connection establishment time Timestamp Option Naudojama apeit, patikrint išmatavimus
17
Connection Management in TCP
Atidarymas TCP ryšio Uždarymas TCP ryšio Spec.scenarijus(galimų įvykių seka) Būsenos diagrama(apibendrinant)
18
TCP Connection Establishment
TCP uses a three-way handshake)to open a connection: (1) ACTIVE OPEN: Client sends a segment with SYN bit set * port number of client initial sequence number (ISN) of client (2) PASSIVE OPEN: Server responds with a segment with initial sequence number of server ACK for ISN of client (3) Client acknowledges by sending a segment with: ACK ISN of server (* counts as one byte)
19
Three-Way Handshake
20
A Closer Look with tcpdump
1 aida.poly.edu.1121 > mng.poly.edu.telnet: S : (0) win <mss 1460,nop,wscale 0,nop,nop,timestamp> 2 mng.poly.edu.telnet > aida.poly.edu.1121: S : (0) ack win 8760 <mss 1460> 3 aida.poly.edu.1121 > mng.poly.edu.telnet: . ack win 17520 4 aida.poly.edu.1121 > mng.poly.edu.telnet: P : (24) ack win 17520 5 mng.poly.edu.telnet > aida.poly.edu.1121: P : (3) ack win 8736 6 aida.poly.edu.1121 > mng.poly.edu.telnet: P : (3) ack win 17520
21
Three-Way Handshake
22
Why is a Two-Way Handshake not enough?
Bus išmestas kaip dublikuotas sinchronizavimas When aida initiates(pradeda) the data transfer (starting with SeqNo= ), mng will reject all data.
23
TCP Connection Termination
Kiekviena duomenų srauto pabaiga turi būti išjungta nepriklausomai (“half-close”) Jei yranors vienas srautas uždaromas, jis siunčia FIN segmentą. Tai reiškia, kad nebus daugiau jokiu duomenų siunčiama Keturi žingsniai galimi: (1) X sends a FIN to Y (active close) (2) Y ACKs the FIN, (at this time: Y can still send data to X) (3) and Y sends a FIN to X (passive close) (4) X ACKs the FIN.
24
Connection termination with tcpdump
1 mng.poly.edu.telnet > aida.poly.edu.1121: F : (0) ack win 8733 2 aida.poly.edu.1121 > mng.poly.edu.telnet: . ack win 17484 3 aida.poly.edu.1121 > mng.poly.edu.telnet: F : (0) ack win 17520 4 mng.poly.edu.telnet > aida.poly.edu.1121: . ack win 8733
25
TCP Connection Termination
26
TCP States
27
TCP States in “Normal” Connection Lifetime
28
TCP State Transition Diagram Opening A Connection
29
TCP State Transition Diagram Closing A Connection
30
2MSL Wait State 2MSL Wait State = TIME_WAIT
When TCP does an active close, and sends the final ACK, the connection must stay in in the TIME_WAIT state for twice the maximum segment lifetime. 2MSL= 2 * Maximum Segment Lifetime Why? TCP is given a chance to resent the final ACK. (Server will timeout after sending the FIN segment and resend the FIN) The MSL is set to 2 minutes or 1 minute or 30 seconds.
31
Resetting Connections
Resetting connections is done by setting the RST flag When is the RST flag set? Connection request arrives and no server process is waiting on the destination port Abort (Terminate) a connection Causes the receiver to throw away buffered data. Receiver does not acknowledge the RST segment
Panašios pateiktys
© 2025 SlidePlayer.lt Inc.
All rights reserved.