Transport Layer Services & Principles Cung cấp phương tiện truyền thông logic logical Transport protocol được thực thi tại các trạm cuối end system.. application transport network
Trang 1Chươ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.
Trang 3Ch1 The Transport Layer Protocol
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.
Trang 4Transport Layer Services & Principles
Cung cấp phương tiện truyền
thông logic (logical
Transport protocol được thực thi
tại các trạm cuối (end system).
application
transport
network data link physical
application
transport
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical network
data link physical
log ica
l en d-e
nd t ran spo rt
Trang 5Transport & Network layers
Tạo phương thức truyền
thông logic giữa các ứng
Trang 6Transport 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.
Trang 7Ch1 The Transport Layer Protocol
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.
Trang 8M P2
application transport network
Trang 9Dồn và chia kênh thế nào?
source port number: ứng
TCP/UDP segment format
Trang 10Mux/demux: Ví dụ
host A source port: x dest port: 23 server B
source port:23 dest port: x
port use: simple telnet app
Web client
host A
Web server B
Web client host C
Source IP: C Dest IP: B source port: x dest port: 80
Source IP: C Dest IP: B source port: y dest port: 80
port use: Web server
Source IP: A Dest IP: B source port: x dest port: 80
Trang 11Ch1 The Transport Layer Protocol
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.
Trang 12Connectionless 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.
Trang 13UDP: Segment structure
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
Trang 14UDP 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.
Trang 15UDP 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.
m
(bù 1)
Trang 16Ch1 The Transport Layer Protocol
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.
Trang 17Principles 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.
Trang 18send
rdt_send(): called from above,
(e.g., by app.) Passed data to
deliver to receiver upper layer
udt_send(): called by rdt,
to transfer packet over
unreliable channel to receiver
rdt_rcv(): called when packet arrives on rcv-side of channel
deliver_data(): called by
rdt to deliver data to upper
Trang 19Finite State Machine (FSM)
state
event causing state transition actions taken on state transition
state: when in this
“state” next state
uniquely determined
by next event
event actions
Trang 20RDT1.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 below
rdt_rcv(packet)
Trang 21RDT2.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!)
error detection
receiver feedback: control msgs (ACK,NAK) rcvr->sender.
Trang 22extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
Wait for call from below
sender
receiver
rdt_send(data)
Λ
Trang 23RDT2.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)
Wait for call from below rdt_send(data)
Λ
Trang 24extract(rcvpkt,data) deliver_data(data) udt_send(ACK)
Wait for call from below rdt_send(data)
Λ
Trang 25RDT2.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).
Trang 26RDT2.1: sender, handles garbled ACK/NAKs
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
rdt_send(data)
Wait for ACK or NAK 0 udt_send(sndpkt)
Wait for ACK or NAK 1
Λ Λ
Trang 27RDT2.1: receiver, handles garbled ACK/NAKs
Wait for
0 from below
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)
Wait for
1 from below
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)
Trang 28RDT2.2: a NAK-free protocol
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
sender FSM fragment
Wait for
0 from below
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)
extract(rcvpkt,data) deliver_data(data)
Λ
Trang 29RDT3.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?
Trang 30RDT3.0 sender
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
start_timer rdt_send(data)
Wait for ACK0
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
Wait for call 1 from above
sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt)
start_timer rdt_send(data)
udt_send(sndpkt) start_timer
Wait for ACK1
Λ
rdt_rcv(rcvpkt)
Λ Λ
Λ
Trang 31RDT3.0 in action
Trang 32RDT3.0 in action (cont)
Trang 33Ch1 The Transport Layer Protocol
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.
Trang 34TCP 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
Trang 35TCP segment structure
32 bits
application data (variable length)
sequence number acknowledgement number
rcvr window size ptr urgent data checksum
F S R P A U
head len used not
Options (variable length)
URG: urgent data
(generally not used)
to accept
counting
by bytes
of data (not segments!)
Internet checksum (as in UDP) Header length
(by 32-bit word)
Trang 36TCP: Reliable Data Transfer (retransmission)
Trang 37TCP 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.
Trang 38Three 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).
Trang 39TCP 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,
Trang 40Ch1 The Transport Layer Protocol
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.
Trang 41Congestion 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.
Trang 42Ch1 The Transport Layer Protocol
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
Trang 43 Không giới hạn tốc độ truyền.