Chương 3: Giao thức tầng giao vận (transport layer) - Đoàn Thị Thu Hà
Bạn đang xem 20 trang mẫu của tài liệu "Chương 3: Giao thức tầng giao vận (transport layer) - Đoàn Thị Thu Hà", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- chuong_3_giao_thuc_tang_giao_van_transport_layer_doan_thi_th.ppt
Nội dung text: Chương 3: Giao thức tầng giao vận (transport layer) - Đoàn Thị Thu Hà
- Chương 3. Giao thức tầng giao vận (transport layer) Đoàn Thị Thu Hà
- OSI 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 2
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 3
- Transport Layer Services & Principles ◼ Cung cấp phương tiện truyền application thông logic (logical transport network data link network communication) giữa các physical data link network physical applications. data link physical network ◼ PDUs data link physical network data link application: messages. physical network transport: segments (đoạn). data link physical ◼ Các msg từ tầng application gửi application xuống được chia nhỏ thành các transport network data link đoạn (segments). physical ◼ Transport protocol được thực thi tại các trạm cuối (end system). 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 4
- Data Message Segment Packet Frame Bit 5
- Port vµ §iÓm kÕt nèi ◼ V× cã nhiÒu giao thøc øng dông líp trªn cïng sö dông dÞch vô cña TCP do ®ã cÇn cã mét c¬ chÕ ®Ó nhËn biÕt gãi tin nµo thuéc øng dông nµo ◼ TCP cung cÊp mét c¬ chÕ gäi lµ “c¬ chÕ cæng” (Port Mechanism) g¾n mçi øng dông víi mét “sè hiÖu cæng” (Port number) vÝ dô FTP g¾n víi cæng 21, HTTP g¾n víi cæng 80 6
- Port vµ §iÓm kÕt nèi ◼ §èi víi ngêi lËp tr×nh, mét ®Þa chØ IP hay mét cæng kh«ng ®ñ ®Þnh danh mét thùc thÓ duy nhÊt trªn m¹ng ◼ TCP ®a ra ®Þnh nghÜa “®iÓm kÕt nèi” (endpoint) lµ mét cÆp sè nguyªn (host, port) trong ®ã, host lµ ®Þa chØ IP cña mét m¸y tÝnh cßn port lµ port number mµ m¸y tÝnh ®ã sö dông. VÝ dô: (190.2.2.1,23) 7
- Port RoomRoom 11 RoomRoom 22 RoomRoom 33 RoomRoom 44 Port 1 Port 2 Port 3 Port 4 House Address IP Address Main road 8
- Transport & Network layers ◼ Network layer: Truyền thông logic giữa các trạm làm việc (host). PDUs = packets (gói). IP (Internet Protocol) là giao thức truyền không tin cậy. ◼ Transport layer: Tạo phương thức truyền thông logic giữa các ứng dụng (application/process). Nhận các gói tin từ tầng Network gửi lên. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 9
- Transport & Network layers kids Processes letters in envelopes app messages houses hosts Ann Bill transport protocol postal service network-layer protocol 10
- Transport Protocols ◼ TCP (Transmission Control Protocol) Connection-oriented (có liên kết). Flow control (điều khiển luồng). Congestion control (điều khiển chống nghẽn mạng). → reliable transport protocol (tin cậy) ◼ UDP (User Datagram Protocol) Connectionless. Không có kiểm soát luồng và kiểm soát nghẽn mạng. → unreliable transport protocol. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 11
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 12
- Multiplexing/demultiplexing (mux/demux) sender receiver sender P3 P4 application-layer M M data application segment P1 transport P2 M header M network application application transport segment Ht M transport network Hn segment network ◼ Multiplexing (chia kênh): Các msgs từ các apps (P1,P2) được chia nhỏ và đóng thành các segments. ◼ Demultiplexing (dồn kênh): Các segments nhận được được gửi tới apps tương ứng (P3, P4). 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 13
- Multiplexing/demultiplexing (mux/demux) 14
- Multiplexing/demultiplexing (mux/demux) 15
- Dồn và chia kênh thế nào? ◼ source port number: ứng 32 bits dụng gửi dữ liệu. source port # dest port # ◼ destination port number: other header fields ứng dụng nhận dữ liệu. ◼ Port number: application 0-1023: well-known port data number (đã được giữ cho các (message) apps phổ biến). 1024 – 65535. TCP/UDP segment format 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 16
- Mux/demux: Ví dụ source port: x Web client host A dest. port: 23 server B host C source port:23 dest. port: x Source IP: C Source IP: C Dest IP: B Dest IP: B source port: y source port: x port use: simple telnet app dest. port: 80 dest. port: 80 Source IP: A Dest IP: B Web Web client source port: x server B host A dest. port: 80 port use: Web server 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 17
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 18
- Connectionless Transport (UDP). ◼ User Datagram Protocol [RFC 768] ◼ “no frill”, “bare bones” Internet transport protocol. chỉ cần những thủ tục cơ bản nhất. thông tin điều khiển cũng chỉ cần cơ bản nhất. ◼ “best effort” service: dữ liệu có thể mất mát, sai sót nhưng luôn “cố gắng hết sức” để giảm thiểu. ◼ Connectionless: Không có cơ chế bắt tay (handshaking): thiết lập → truyền dữ liệu → kết thúc. Không nắm giữ trạng thái. Các segments được xử lý độc lập với nhau. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 19
- UDP: Segment structure ◼ source port. 32 bits ◼ dest port. Length, in source port # dest port # bytes of length checksum ◼ length. UDP segment, ◼ application data. including header ◼ checksum: mã kiểm Application data tra lỗi (phục vụ cho (message) cơ chế nhận biết lỗi – error detection) UDP segment format 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 20
- UDP checksum ◼ Mã kiểm tra phục vụ cho cơ chế nhận biết lỗi. ◼ Sender: Coi segment như chuỗi các số nguyên 16-bit. checksum = số bù một (1’s complement) của tổng các số nguyên đó. ◼ Receiver: Tính toán checksum của segment nhận được. So sánh với checksum chứa trong trường checksum của segment nhận được → nếu sai khác tức là có lỗi. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 21
- UDP checksum: example ◼ Phép cộng các số 16-bit liên tiếp là phép cộng có nhớ. ◼ Kiểm tra checksum: Lấy tổng các số 16-bit (có nhớ) cộng với checksum: Kết quả là 1111 1111 1111 1111 thì không có lỗi, nếu khác là có lỗi. 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 wraparound 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 (bù 1) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 22
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 23
- Principles of Reliable Data Transfer (RDT) ◼ Truyền dữ liệu tin cậy là vấn đề vô cùng quan trọng (top 10 list of important networking topics). ◼ Cần thiết đối với app, transport, datalink layer. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 24
- RDT 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 25
- Finite State Machine (FSM) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 26
- RDT1.0: reliable data transfer over reliable channel ◼ Tầng dưới: Không có lỗi. Không mất mát dữ liệu (gói tin). ◼ Sender gửi dữ liệu xuống tầng dưới. ◼ Receiver nhận dữ liệu gửi từ tầng dưới lên. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 27
- RDT2.0: channel with bit errors ◼ Tầng dưới có thể có lỗi bit (0 → 1) UDP checksum có khả năng phát hiện lỗi bit. ◼ Khắc phục lỗi (error recover) thế nào? acknowledgements (ACKs): receiver thông báo đã nhận gói dữ liệu tốt (không có lỗi). negative acknowledgements (NAKs): receiver thông báo gói dữ liệu nhận được có lỗi. Nếu nhận được NAK, sender cần gửi lại gói tin bị lỗi. ◼ rdt2.0 so với rdt1.0: error detection receiver feedback: control msgs (ACK,NAK) rcvr->sender. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 28
- RDT2.0: FSM specification 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 29
- RDT2.0: operation with no errors rdt_send(data) sndpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for Wait for rdt_rcv(rcvpkt) && call from ACK or udt_send(sndpkt) corrupt(rcvpkt) above NAK udt_send(NAK) rdt_rcv(rcvpkt) && isACK(rcvpkt) Wait for L call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 30
- RDT2.0: error scenario rdt_send(data) sndpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for Wait for rdt_rcv(rcvpkt) && call from ACK or udt_send(sndpkt) corrupt(rcvpkt) above NAK udt_send(NAK) rdt_rcv(rcvpkt) && isACK(rcvpkt) Wait for L call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 31
- RDT2.0: problems ◼ Nếu ACK, NAK bị lỗi? Sender không biết kết quả gửi gói tin thế nào. Cũng chẳng thể gửi lại gói tin vì có thể gây hiện tượng lặp gói tin. ◼ Giải pháp: Sender truyền lại nếu như ACK/NAK bị lỗi. Kiểm soát lặp gói tin (duplicate handling) ◼ Thêm vào gói tin trường số thứ tự (sequence number). Căn cứ vào số thứ tự gói tin, receiver bỏ qua những gói tin bị lặp. → Sender sẽ không gửi gói tin tiếp theo nếu như chưa chắc chắn receiver nhận được gói trước đó (stop and wait protocol). 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 32
- RDT2.1 33
- RDT2.1: sender, handles garbled ACK/NAKs rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || Wait for Wait for isNAK(rcvpkt) ) ACK or call 0 from udt_send(sndpkt) above NAK 0 rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) L L Wait for Wait for ACK or call 1 from rdt_rcv(rcvpkt) && NAK 1 above ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_send(data) udt_send(sndpkt) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 34
- RDT2.1: receiver, handles garbled ACK/NAKs rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) Wait for Wait for rdt_rcv(rcvpkt) && 0 from 1 from rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && below below not corrupt(rcvpkt) && has_seq1(rcvpkt) has_seq0(rcvpkt) sndpkt = make_pkt(ACK, chksum) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 35
- RDT2.2: a NAK-free protocol 36
- RDT2.2: Phân mảnh tại bên gửi và bên nhận rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || Wait for Wait for isACK(rcvpkt,1) ) call 0 from ACK above 0 udt_send(sndpkt) sender FSM fragment rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && && isACK(rcvpkt,0) (corrupt(rcvpkt) || L has_seq1(rcvpkt)) Wait for receiver FSM 0 from sndpkt = below fragment make_pkt(ACK1, chksum) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 37
- RDT3.0: channels with errors and loss ◼ Tầng dưới: Có thể có lỗi. Có thể gây mất mát gói tin. ◼ Giải pháp: Sender truyền lại gói tin nếu như chờ ACK một thời gian nhất định nào đó mà không thấy (cần countdown timer). Nếu ACK hay gói tin chỉ bị chậm thôi? ◼ truyền lại sẽ gây ra hiện tượng lặp gói tin. ◼ cần sequence number. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 38
- RDT3.0 sender rdt_send(data) rdt_rcv(rcvpkt) && sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) || udt_send(sndpkt) isACK(rcvpkt,1) ) rdt_rcv(rcvpkt) start_timer L L Wait Wait for timeout call 0from for udt_send(sndpkt) above ACK0 start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt,1) && notcorrupt(rcvpkt) stop_timer && isACK(rcvpkt,0) stop_timer Wait Wait for timeout for call 1 from udt_send(sndpkt) ACK1 above start_timer rdt_rcv(rcvpkt) rdt_send(data) L rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum) isACK(rcvpkt,0) ) udt_send(sndpkt) start_timer L 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 39
- RDT3.0 in action 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 40
- RDT3.0 in action (cont) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 41
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 42
- TCP Overview ◼ Transmission Control Protocol [RFCs: 793,1122, 1323, 2018, 2581] ◼ Point-to-point: 1 sender, 1 receiver. ◼ Giao thức tin cậy (reliable). ◼ Kiểm soát luồng (flow control). ◼ Kiểm soát nghẽn mạng (congestion control). ◼ full duplex: truyền nhận trên cùng một liên kết. application application writes data reads data ◼ send/receive buffers socket socket door door TCP TCP send buffer receive buffer segment 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 43
- TCP segment structure URG: urgent data 32 bits (generally not used) source port # dest port # counting ACK: ACK # by bytes sequence number valid of data (not segments!) Header length acknowledgement number (by 32-bit word) head not len used UAP R S F rcvr window size # bytes checksum ptr urgent data PSH: push data to rcvr willing app immediately to accept (generally not used) Options (variable length) RST, SYN, FIN: connection estab application (setup, teardown commands) data (variable length) Internet checksum (as in UDP) 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 44
- TCP segment structure ◼ Source port và Destination port chứa các giá trị cổng TCP để xác định các chương trình ứng dụng tại hai đầu của kết nối. ◼ Sequence Number : số thứ tự gói tin, xác định vị trí trong chuổi các byte dữ liệu trong segment của nơi gửi. 45
- TCP segment structure ◼ Acknowledgment Number xác định số lượng byte mà nguồn đang dợi để nhận kế tiếp. ◼ Hlen xác định độ dài của header(4bytes) ◼ Reserved chưa sử dụng để dành cho tương lại 46
- TCP segment structure ◼ URG(Urgent pointer field significant) báo gói tin phải được gữi đi khẩn. ◼ ACK(Acknowledgement filed significant) , bào Segment này là Segment trả lời từ bên nhận, xác nhận việc đã nhận được gói tin. ◼ PSK(push function) báo segment đang ở ché độ gữi đi(Rish) 47
- TCP segment structure ◼ RST(Reset the connection) reset lại 1 connectinon mới. ◼ SYN (synchronize sequence numbers) bắt tay đồng bộ giữa 2 máy tính ứng dụng TCP giữa 2 máy tính. ◼ FIN( Release the connection) : bit báo finish cuộc truyền dữ liệu. 48
- TCP segment structure ◼ Window size: Độ lớn cửa sổ nhận, cho bên sender biết có thể gửi tiếp bao nhiêu byte, tính từ byte được biên nhận (ack). ◼ Checksum: checksum của cả TCP segment + Pseudo header. Trước khi tính, trường này = 0. (Tổng các word 16 bit kiểu bù 1, kết quả thu được lại tính bù 1 - XOR). ◼ Urgent pointer: byte trong trường data của TCP segment cần được xử lý đầu tiên. 49
- TCP segment structure ◼ Options: Các tuỳ chọn. Hiện nay tuỳ chọn duy nhất được dùng là MSS (Maximum Segment Size). Giá trị default = 536 byte payload + 20 byte header = 556 byte. ◼ Pad: chèn thêm để chiều dài trường Options là bội của 32 bit. ◼ Data: số liệu của ứng dụng TCP 50
- TCP: Reliable Data Transfer (retransmission) Host A Host B timeout X loss time lost ACK scenario 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 51
- TCP flow control ◼ Các apps có thể xử lý dữ liệu chậm, các gói tin nhận về được đưa vào bộ đệm (receiver buffer). ◼ Flow control: kiểm soát không để cho receiver buffer bị tràn vì sender gửi nhiều gói tin quá. ◼ Receiver: Thông báo cho sender biết kích thước của RcvWidow (free buffer): trường rcv window size trong TCP segment headers. ◼ Sender: Luôn nắm được kích thước tối đa của gói tin có thể truyền tiếp. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 52
- TCP flow control ◼ Cơ chế điều khiển lưu lượng (Flow control): các quy tắc chi phối việc nhận các lưu lượng từ bên ngoài đi vào mạng. Việc thực hiện các cơ chế này được gọi là điều khiển lưu lượng. ◼ Flow control: Đảm bảo rằng bên gửi có tốc độ nhanh không thể tiếp tục truyền dữ liệu nhanh hơn mức mà bên nhận có thể tiếp thu được. Liên quan đến việc vận chuyển giữa một người gửi đã biết nào đó và một người nhận. Cần có một sự phản hồi trực tiếp từ phía người nhận đến người gửi để báo cho bên gửi về khả năng nhận số liệu thực của bên nhận. 53
- TCP Connection management ◼ TCP: Connection-oriented. Three way handshaking: ◼ Khởi tạo các giá trị: ◼ Bước 1: client gửi TCP sequence number. SYN control segment tới buffers, flow control server. information. ◼ Bước 2: server nhận SYN ◼ Client:Connection initiator segment rồi trả lời bằng (khởi tạo liên kết: socket). SYNACK segment. ◼ Server: Chấp nhận kết nối. ◼ Bước 3: client nhận SYNACK segment và trả lời bằng ACK segment (có thể có dữ liệu đi kèm). 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 54
- TCP Connection management: ngắt liên kết ◼ Bước 1: client (phía muốn ngắt liên kết) gửi TCP FIN segment. client server ◼ Bước 2: server (phía còn closing lại) nhận được FIN, gửi ACK, ngắt liên kết, gửi tiếp FIN segment. closing ◼ Bước 3: client nhận FIN, trả lời bằng ACK. timed wait (chờ một lúc nữa cho tới khi liên kết đóng hẳn). closed ◼ Bước 4: server nhận ACK, timedwait đóng liên kết. closed 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 55
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 56
- Congestion control ◼ Nghẽn mạng là điều khó tránh khỏi!!! ◼ Khi mạng bị nghẽn, các gói tin có thể bị trễ hay bị mất. ◼ Hai hướng tiếp cận: End-end congestion control: Thông tin về mức độ nghẽn mạng được suy ra từ lượng tin bị mất mát trong quá trình truyền. Network-assited congestion control: Routers cung cấp các thông tin phản hồi về tình trạng nghẽn mạng tới end systems. ◼ Bit thông báo nghẽn mạng → đừng gửi nữa hoăc xin chờ một lát. ◼ Tốc độ tối đa cho phép gửi (maximum rate allowed). ◼ TCP sử dụng phương pháp end-end congestion control. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 57
- Congestion control Các khái niệm ◼ Hiện tượng tắc nghẽn (congestion): lưu lượng đến mạng tăng lên, thông lượng vận chuyển của mạng lại giảm đi. ◼ Deadlock: tình trạng tắc nghẽn trầm trọng đến mức mạng bị nghẹt hoàn toàn, thông lượng vận chuyển của mạng tụt xuống bằng không. 58
- Congestion control ◼ Nguyên nhân dẫn đến tắc nghẽn: ⚫ Lưu lượng đi đến trên nhiều lối vào đều cần cùng một đường đi ra. ⚫ Tốc độ xử lý tại các router chậm ⚫ Các đường truyền có bandwidth thấp = cổ chai. Tắc nghẽn có khuynh hướng tự nó làm gia tăng 59
- Congestion control ◼ Điều khiển tắc nghẽn (Congestion control) Đảm bảo cho mạng có khả năng vận chuyển lưu lượng đưa vào Đó là một vấn đề toàn cục, liên quan đến hành vi của mọi nút mạng, quá trình chứa và chuyển tiếp trong mỗi nút mạng và các yếu tố khác có khuynh hướng làm giảm thông lượng của mạng. 60
- Congestion control ◼ Điều khiển lưu lượng và điều khiển tắc nghẽn là hai khái niệm khác nhau, nhưng liên quan chặt chẽ với nhau: Điều khiển lưu lượng là để tránh tắc nghẽn Điều khiển tắc nghẽn là để giải quyết vấn đề tắc nghẽn khi nó xuất hiện hoặc có dấu hiệu sắp xảy ra ◼ Trong thực tế, nhiều khi cả hai thuật toán này cùng được cài đặt trong một giao thức, thể hiện ra như là một thuật toán duy nhất, thí dụ trong TCP ◼ Tên gọi chung: Điều khiển lưu lượng (Flow control) 61
- Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 62
- Một số so sánh TCP/UDP ◼ Có liên kết, lưu trữ trạng ◼ Không liên kết, không lưu thái liên kết (quản lý liên trữ trạng thái. kết). ◼ Điểm-điểm ◼ Điểm-điểm, quảng bá. ◼ Có độ trễ (delay): thiết lập, ◼ Độ trễ thấp. quản lý liên kết, luồng, nghẽn ◼ Segment header nhỏ (8 ◼ Segment header lớn (20 bytes) bytes) ◼ Bị giới hạn tốc độ truyền (congestion control) ◼ Không giới hạn tốc độ truyền. 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 63
- Các app thực tế Application App protocol Transport protocol Electronic mail SMTP TCP Remote terminal access Telnet TCP Web HTTP TCP File transfer FTP TCP Remote file server NFS typically UDP Streaming multimedia proprietary typically UDP Internet telephony proprietary typically UDP Network management SNMP typically UDP Routing protocol RIP typically UDP Name translation DNS typically UDP 1-6/2005 Chương 3. Giao thức tầng giao vận (transport layer) 64