intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

TCP: Tổng quan

Chia sẻ: Nguyen Duc Cuong | Ngày: | Loại File: PDF | Số trang:38

84
lượt xem
27
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

TÀI LIỆU THAM KHẢO TỔNG QUAN VỀ QUẢN TRỊ MẠNG TCP

Chủ đề:
Lưu

Nội dung Text: TCP: Tổng quan

  1. TCP: T ng quan RFCs: 793, 1122, 1323, 2018, 2581 ði m n i ñi m: Truy n song công: M t g i, M t nh n D li u truy n theo c hai hư ng Tin c y, theo ñúng th t : MSS: Kích thư c t i ña m t Không quan tâm ñ n khuôn segment d ng thông ñi p. Hư ng n i: ðư ng ng: B t tay, chào h i trư c khi C a s ki m soát t c ngh n nói chuy n (trao ñ i thông và ñi u khi n lưu lư ng. tin ñi u khi n). Thi t l p b B ñm phía Nh n và G i ñ m hai ñ u. Ki m soát lưu lư ng: application application Nói quá nhanh, nghe quá writes data reads data socket socket door door ch m TCP TCP send buffer receive buffer segment 3: Transport Layer 3b-1
  2. C u trúc TCP segment 32 bits URG: d li u kh n c p ðư c xác ñ nh source port # dest port # (ít s d ng) theo STT c a sequence number byte trong lu ng ACK: ACK # d li u acknowledgement number H pl head not rcvr window size UAP R S F PSH: chuy n d li u len used S lư ng byte ngay (ít s d ng) checksum ptr urgent data mà bên nh n có kh năng RST, SYN, FIN: Options (variable length) nh n Ki m soát k t n i (L nh Thi t l p và ðóng ) D li u ng d ng (kích thư c tùy ý) Internet checksum (gi ng UDP) 3: Transport Layer 3b-2
  3. TCP: S th t và S biên nh n S th t (STT): Máy B Máy A Là S th t c a byte Ngư i dùng ñ u tiên trong lu ng Seq=4 2, ACK ñánh ch =79, d d li u ata = ‘ C’ ‘C’ Biên nh n S biên nh n: ch ‘C’, ph n Là S th t c a byte C’ a=‘ hi 3, dat CK=4 k ti p mà bên nh n l i ch ‘C’ 7 9, A Seq= mu n nh n. Biên nh n tích lũy Biên nh n l i cho ch Q? Bên nh n x lý gói tin Seq=4 3 , AC K ‘C’ ph n h i =80 không ñúng th t ntn ? A: TCP không quy ñ nh. Tùy thu c vào Th i gian ngư i cài ñ t. ng d ng telnet ñơn gi n 3: Transport Layer 3b-3
  4. TCP: Truy n Tin c y S ki n: nh n d li u FSM bên G i ñơn gi n, gi t phía bên trên ñ nh r ng: T o và G i segment •D li u truy n theo m t hư ng •Không ki m soát t c ngh n S ki n: timer timeout cho •Không ñi u khi n lưu lư ng wait wait segment có STT là y for for G i l i segment SS ki n ki n S ki n: Nh n biên nh n cho gói có STT là y X lý ACK 3: Transport Layer 3b-4
  5. Nhanh chóng truy n l i Kho ng th i gian Timeout N u phía g i nh n ñư c 3 thư ng tương ñ i dài: ACK trùng l p, có th gi thi t gói tin ngay sau gói Ch m tr trong vi c g i l i gói tin b m t tin ñư c biên nh n 3 l n liên ti p b m t: Phát hi n m t gói tin qua G i l i k c khi gói này chưa timeout các ACK trùng l p Phía g i thư ng g i nhi u gói tin N u gói tin b m t, s có ACK trùng l p 3: Transport Layer 3b-5
  6. Fast Retransmit: event: ACK received, with ACK field value of y if (y > SendBase) { … SendBase = y if (there are currently not-yet-acknowledged segments) start timer … } else { increment count of dup ACKs received for y if (count of dup ACKs received for y = 3) { resend segment with sequence number y … ACK trùng l p cho gói tin ðã ñư c biên nh n Truy n l i nhanh chóng 3: Transport Layer 3b-6
  7. 00 sendbase = initial_sequence number agreed by TWH 01 nextseqnum = initial_sequence number by TWH 02 loop (forever) { 03 switch(event) 04 event: data received from application above 05 if (window allow send) 06 create TCP segment with sequence number nextseqnum 06 if (no timer) start timer TCP: 07 pass segment to IP 08 nextseqnum = nextseqnum + length(data) else put packet in buffer Truy n 09 event: timer timeout for sendbase 10 retransmit segment 11 compute new timeout interval tin c y 12 restart timer 13 event: ACK received, with ACK field value of y 14 if (y > sendbase) { /* cumulative ACK of all data up to y */ 15 cancel the timer for sendbase 16 sendbase = y 17 if (no timer and packet pending) start timer for new sendbase TCP phía G i 17 while (there are segments and window allow) 18 sent a segment; ñơn gi n 18 } 19 else { /* y==sendbase, duplicate ACK for already ACKed segment */ 20 increment number of duplicate ACKs received for y 21 if (number of duplicate ACKS received for y == 3) { 22 /* TCP fast retransmit */ 23 resend segment with sequence number y 24 restart timer for segment y 25 } 3: Transport Layer 3b-7 26 } /* end of loop forever */
  8. TCP: Chính sách ACK [RFC 1122, RFC 2581] Bên nh n (TCP) S ki n Trì hoãn ACK. ð i segment k ti p Segment theo ñúng STT ñ n, trong 500ms. N u không có segment, Không thi u d li u, g i ACK Không có ACK treo Ngay l p t c g i m t ACK mang giá Segment theo ñúng STT ñ n, tr tích lũy Không thi u d li u, Có m t ACK b treo G i ACK trùng l p, ch STT c a Segment theo ñúng STT ñ n byte d li u mình mu n nh n (STT ñ n l n hơn s mong ñ i). Thi u d li u Biên nh n STT bên nh n mong mu n M t segment ñ n ñi n vào nh n ño n d li u b khuy t 3: Transport Layer 3b-8
  9. TCP: Ví d v Truy n l i Host A Host B Host A Host B Seq=9 Seq=9 2 , 8 byt 2 , 8 byt es da es da ta Seq=92 timeout Seq= ta 1 00, 2 0 byt es da Seq=100 timeout timeout ta 100 CK= A 00 =1 0 X CK CK=12 AA loss Seq=9 Seq=9 2 , 8 byt 2 , 8 byt es da es da ta ta 0 =1 2 CK 100 A C K= A time time Timeout trư c khi nh n Ví d m t ACK ACK, bên g i biên nh n tích lũy 3: Transport Layer 3b-9
  10. ði u khi n lưu lư ng trong TCP ði u khi n Phía Nh n: Thông báo rõ lưu lư ng ràng cho phía G i kh Không cho bên G i g i năng nh n d li u c a quá nhi u, quá nhanh mình (thay ñ i thư ng xuyên) RcvBuffer = Kích thư c B ñ m nh n RcvWindow = Kích thư c vùng còn tr ng trong B ñ m Phía G i: Gi kh i lư ng d li u g i ñi nhưng chưa ñư c biên nh n nh hơn lư ng bên kia ch p nh n ñư c B ñ m phía Nh n 3: Transport Layer 3b-10
  11. ði u khi n lưu lư ng trong TCP source port # dest port # sequence number acknowledgement number head not rcvr window size len used U A P R S F checksum ptr urgent data Ch tr ng trong B ñ m Options (variable length) = RcvWindow application data (variable length) 3: Transport Layer 3b-11
  12. TCP Round Trip Time and Timeout Q: Làm th nào ñ ư c lư c RTT? Q: Thi t l p giá tr timeout ntn ? SampleRTT: kho ng th i gian t khi g i gói tin cho ñ n khi nh n ñư c biên Timeout > RTT nh n Chú ý: RTT thay ñ i B qua truy n l i thư ng xuyên SampleRTT thay ñ i thư ng xuyên. Quá bé: timeout ngay Chúng ta mu n ư c lư ng RTT “m n Truy n l i không c n hơn” thi t S d ng nhi u giá tr ño ñư c Quá l n: x lý vi c m t trong quá kh , không ph i ch có gói tin b ch m tr m t SampleRTT g n nh t 3: Transport Layer 3b-12
  13. TCP Round Trip Time và Timeout EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Tr ng s s thay ñ i giá tr trung bình nh hư ng c a SampleRTT x thư ng ch n giá tr 0.1 Thi t ñ t giá tr timeout EstimtedRTT c ng thêm m t “giá tr an toàn” Bi n thiên EstimatedRTT càng l n -> tăng “giá tr an toàn” Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| 3: Transport Layer 3b-13
  14. TCP : Qu n lý K t n i B t tay ba bư c: Chú ý: Trong TCP, phía G i và Nh n thi t l p “k t n i” trư c Bư c 1: Phía client g i gói tin ñi u khi trao ñ i các segment d khi n TCP SYN t i server li u. Ch a S th t kh i ñ u Kh i t o các bi n TCP: Bư c 2: Nh n ñư c gói SYN, n u ch p S th t nh n k t n i, server g i tr l i gói tin B ñ m, Thông tin v lưu ñi u khi n SYNACK lư ng (RcvWindow) Biên nh n cho gói SYN v a client: Kh i t o k t n i nh n Socket clientSocket = new C p phát b ñ m Socket("hostname","port Thông báo v STT kh i ñ u c a number"); server server: ð i k t n i t client Socket connectionSocket = welcomeSocket.accept(); 3: Transport Layer 3b-14
  15. B t tay ba bư c ð ñ m b o r ng bên kia th c s mong mu n thi t l p k t n i A B A B SYN(s eq=x) SYN(s eq=x) Ch p nh n? =y) =y) (seq (seq N Y N x), S Y x), S eq= eq= (s AC K (s AC K Không có yêu c u như v y ACK(s eq=y) ACK(s eq=z) D AT A T ch i (seq= x+1) REJE CT(se q=y) 3: Transport Layer 3b-15
  16. TCP: Qu n lý K t n i (ti p) client ðóng m t k t n i: server close client ñóng socket: FIN clientSocket.close(); Bư c 1: client g i gói ñi u khi n AC K close FIN t i server FIN Bư c 2: server nh n ñư c gói timed wait A CK FIN, biên nh n cho gói tin này. ðóng k t n i, g i gói FIN. closed 3: Transport Layer 3b-16
  17. TCP: Qu n lý K t n i (ti p) client Bư c 3: client nh n gói FIN, server biên nh n l i ACK. closing FIN Bư c vào tr ng thái “timed wait” – s biên nh n ACK cho các gói FIN nh n ñư c AC K closing FIN Bư c 4: server nh n ñư c ACK, ñóng k t n i. timed wait A CK Chú ý: V i vài c i ti n nh , ta có closed th x lý ñ ng th i nhi u gói FIN. closed 3: Transport Layer 3b-17
  18. ðóng k t n i M c tiêu: client server M i phía gi i phóng I am d Yêu c u tài nguyên và xóa b one. A re you ñóng done tr ng thái v kênh too? Gi i phóng truy n Tài nguyên? ðóng bye! Good too. one md Gi i Ia phóng ðóng Tài Gi i phóng nguyên Tài nguyên 3: Transport Layer 3b-18
  19. V n ñ t ng quát: Quân Xanh-Tr ng Hai phía quân xanh c n th ng nh t th i ñi m ñ cùng t n công quân tr ng. H th a thu n b ng cách g i thông ñi p cho nhau. N u cùng ñ ng ý : t n công, còn không s không t n công. Chú ý r ng ngư i truy n tin có th b b t ! N u cùng t n công, bên xanh th ng, còn n u t n công riêng l , bên tr ng th ng 3: Transport Layer 3b-19
  20. ðóng k t n i trong b n bư c A B ð ngh ñóng ðóng FIN A->B A->B ñóng AC K ðóng ð ngh ñóng A->B ñóng B->A FIN A CK timed wait - Có th truy n l i ACK n u ACK này b m t ðóng Xóa b t t ðóng c tr ng thái Xóa b t t c tr ng thái 3: Transport Layer 3b-20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2