Bài giảng Mạng máy tính - Giao thức tầng giao vận (Transport Layer Protocol)

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.

human scenarios using ACKs, NAKs? (telephone talking!)

rdt2.0 so với rdt1.0:

error detection

receiver feedback: control msgs (ACK,NAK) rcvr->sender.

 

ppt43 trang | Chia sẻ: maiphuongdc | Lượt xem: 4723 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Bài giảng Mạng máy tính - Giao thức tầng giao vận (Transport Layer Protocol), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 1: Giao thức tầng giao vận (Transport Layer Protocol) Giảng viên: Từ Thanh Trí. Computer Networking Services (Dịch vụ mạng) Khoa CNTT – Trường Trung Cấp Tây Bắc. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Transport Layer Services & Principles Cung cấp phương tiện truyền thông logic (logical communication) giữa các applications. PDUs application: messages. transport: segments (đoạn). Các msg từ tầng application gửi xuống được chia nhỏ thành các đoạn (segments). Transport protocol được thực thi tại các trạm cuối (end system). Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Household analogy: 12 kids sending letters to 12 kids processes = kids app messages = letters in envelopes hosts = houses transport protocol = Ann and Bill network-layer protocol = postal service Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Multiplexing/demultiplexing (mux/demux) 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). P2 receiver H t segment segment M P1 P3 P4 segment header application-layer data sender sender Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Dồn và chia kênh thế nào? source port number: ứng dụng gửi dữ liệu. destination port number: ứng dụng nhận dữ liệu. Port number: 0-1023: well-known port number (đã được giữ cho các apps phổ biến). 1024 – 65535. source port # dest port # 32 bits application data (message) other header fields TCP/UDP segment format Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Mux/demux: Ví dụ host A server B port use: simple telnet app Web client host A Web server B Web client host C port use: Web server Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 UDP: Segment structure source port. dest port. length. application data. checksum: mã kiểm tra lỗi (phục vụ cho cơ chế nhận biết lỗi – error detection) source port # dest port # 32 bits Application data (message) UDP segment format length checksum Length, in bytes of UDP segment, including header Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 wraparound sum checksum (bù 1) Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT send side receive side Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Finite State Machine (FSM) event causing state transition actions taken on state transition state: when in this “state” next state uniquely determined by next event Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Wait for call from above packet = make_pkt(data) udt_send(packet) rdt_send(data) extract (packet,data) deliver_data(data) Wait for call from below rdt_rcv(packet) sender receiver Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. human scenarios using ACKs, NAKs? (telephone talking!) rdt2.0 so với rdt1.0: error detection receiver feedback: control msgs (ACK,NAK) rcvr->sender. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.0: FSM specification Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) sender receiver rdt_send(data) L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.0: operation with no errors Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data) L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.0: error scenario Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Wait for call from below rdt_send(data) L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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). Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.1: sender, handles garbled ACK/NAKs Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) L L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.1: receiver, handles garbled ACK/NAKs sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) 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) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT2.2: a NAK-free protocol sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) sender FSM fragment rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt)) udt_send(sndpkt) receiver FSM fragment L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT3.0 sender sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer stop_timer udt_send(sndpkt) start_timer timeout udt_send(sndpkt) start_timer timeout rdt_rcv(rcvpkt) L rdt_rcv(rcvpkt) L L L Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT3.0 in action Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 RDT3.0 in action (cont) Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. send/receive buffers Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 TCP segment structure URG: urgent data (generally not used) ACK: ACK # valid PSH: push data to app immediately (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) # bytes rcvr willing to accept counting by bytes of data (not segments!) Internet checksum (as in UDP) Header length (by 32-bit word) Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 TCP: Reliable Data Transfer (retransmission) Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 TCP Connection management TCP: Connection-oriented. Khởi tạo các giá trị: sequence number. buffers, flow control information. Client:Connection initiator (khởi tạo liên kết: socket). Server: Chấp nhận kết nối. Three way handshaking: Bước 1: client gửi TCP SYN control segment tới server. Bước 2: server nhận SYN segment rồi trả lời bằng SYNACK segment. 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). Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Bước 2: server (phía còn lại) nhận được FIN, gửi ACK, ngắt liên kết, gửi tiếp FIN segment. 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). Bước 4: server nhận ACK, đóng liên kết. client FIN server ACK ACK FIN closing closing closed timed wait closed Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 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. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Ch1. The Transport Layer Protocol Transport Layer Services & Principles. Multiplexing/Demultiplexing. Connectionless Transport (UDP). Principles of Reliable Data Transfer (RDT). Connection-oriented Transport (TCP). Congestion Control. Sử dụng TCP hay UDP Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Một số so sánh TCP/UDP Có liên kết, lưu trữ trạng thái liên kết (quản lý liên kết). Điểm-điểm Có độ trễ (delay): thiết lập, quản lý liên kết, luồng, nghẽn… Segment header lớn (20 bytes) Bị giới hạn tốc độ truyền (congestion control) Không liên kết, không lưu trữ trạng thái. Điểm-điểm, quảng bá. Độ trễ thấp. Segment header nhỏ (8 bytes) Không giới hạn tốc độ truyền. Chương 1. Giao thức tầng giao vận (Transport Layer Protocl) * 14-02-2011 Các app thực tế

Các file đính kèm theo tài liệu này:

  • pptchapter1b_transport_layer_protocol.ppt