Tầng Vận chuyển
CHỨC NĂNG - 1
Cung cấp kênh truyền dữ liệu ở mức logic
giữa 2 tiến trình trên 2 máy
2
Application
Presentation
Session
Data link
Physical
Network
Transport
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
application
transport
network
data link
physical
NỘI DUNG
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
Giao thức TCP
Giao thức UDP
3
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
NHẮC LẠI
03/2011
4
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
source
application
transport
network
link
physical
H
t
H
n
M
segment
H
t
packet
destination
application
transport
network
link
physical
H
t
H
n
M
H
t
M
M
network
link
physical
link
physical
H
t
H
n
H
l
M
H
t
H
n
M
H
t
H
n
M
H
t
H
n
H
l
M
router
switch
message M
H
t
M
H
n
frame
TẦNG VẬN CHUYỂN - 1
5
application
transport
network
M
P4
application
transport
network
H
n
segment
application
transport
network
P1
M
M
M
P2
P3
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
D D
M
Ht D Ht
H
n
segment
D Ht D
Process nhận?
Gởi đến Process?
Ht
TẦNG VẬN CHUYỂN - 2
Thực thi ở end-system
Bên gởi: thực hiện Dồn kênh
Nhận dữ liệu từ tầng ứng dụng (từ các socket)
Phân đoạn thông điệp ở tầng ứng dụng thành các
segment
Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng
Transport
Chuyển các segment xuống tầng mạng (network layer)
Bên nhận: thực hiện Phân kênh
Nhận các segment từ tầng mạng
Phân rã các segment thành thông điệp tầng ứng dụng
Chuyển thông điệp lên tầng ứng dụng (đến socket tƣơng
ứng)
03/2011
6
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
TẦNG VẬN CHUYỂN - 3
Hỗ trợ
Truyền dữ liệu đáng tin cậy
Điều khiển luồng
Điều khiển tắt nghẽn
Thiết lập và duy trì kết nối
Truyền dữ liệu không đáng tin cậy
Nổ lực gởi dữ liệu hiệu quả nhất
Không hỗ trợ
Đảm bảo thời gian trễ
Đảm bảo băng thông
03/2011
7
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
DỒN KÊNH – PHÂN KÊNH - 1
Dồn kênh (Multiplexing):
Thực hiện tại bên gởi
Thu thập dữ liệu từ các socket
dán nhãn dữ liệu với 1 header
Phân kênh (Demultiplexing):
Thực hiện tại bên nhận
phân phối các segment nhận đƣợc cho socket tƣơng ứng
Khi đóng gói dữ liệu ở tầng transport, header sẽ
thêm vào:
Source port
Destination port
8
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
DỒN KÊNH – PHÂN KÊNH - 2
03/2011
9
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
source port # dest port #
32 bits
application
data
(message)
other header fields
Cấu trúc của một segment
P1
P1
5775
P2
6428
DỒN KÊNH – PHÂN KÊNH - 3
10
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
Client
IP:A
server
IP: B
SP: 6428
DP: 5775
SP: 5775
DP: 6428
NỘI DUNG
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
Giao thức TCP
Giao thức UDP
11
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
BÀI TOÁN
03/2011
12
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
Làm sao để truyền
đáng tin cậy???
NGUYÊN LÝ TRUYỀN DỮ LIỆU ĐÁNG TIN CẬY
Đặc tính của đƣờng truyền không tin cậy quyết định độ
phức tạp của nghi thức truyền tin cậy
13
Bên gửi
Bên nhận
Đƣờng truyền tin cậy
transport
Nghi thức
truyền tin cậy
Nghi thức
truyền tin cậy
Đƣờng truyền không tin cậy
a. Cung cấp dvụ
b. Triển khai dvụ
application
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
NỘI DUNG
Nghi thức truyền dữ liệu đáng tin cậy
RDT 1.0
RDT 2.0, RDT 2.1, RDT 2.2
RDT 3.0
Pipeline
Go-back-N
Gởi lại có chọn
14
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
GIẢI QUYẾT LỖI BIT
Bên gởi
Gởi kèm theo thông tin kiểm tra lỗi
Sử dụng các phƣơng pháp kiểm tra lỗi
Checksum, parity checkbit, CRC,
Bên nhận
Kiểm tra có xảy ra lỗi bit?
Hành động khi xảy ra lỗi bit?
Báo về bên gởi
03/2011
15
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
GIẢI QUYẾT MẤT GÓI
Bên nhận
Gởi tín hiệu báo
Gởi gói tin báo hiệu ACK, NAK
Bên gởi
Định nghĩa trƣờng hợp mất gói
Chờ nhận tín hiệu báo
Hành động khi phát hiện mất gói
03/2011
16
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
GIAO THỨC RDT
RDT = Reliable Data Transfer
Nguyên tắc: dừng và chờ
Bên gởi
Gởi gói tin kèm theo thông tin kiểm tra lỗi
Dừng và chờ đến khi nào gói tin vừa gởi đến đƣợc bên nhận an
toàn: nhận đƣợc gói tin ACK
Gởi lại khi có lỗi xảy ra: lỗi bit, mất gói
Bên nhận:
Kiểm tra lỗi, trùng lắp dữ liệu
Gởi gói tin phản hồi
Phiên bản:
RDT 1.0
RDT 2.0
RDT 2.1
RDT 2.2
RDT 3.0
03/2011
17
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
NGUYÊN LÝ PIPE LINE
Cho phép gởi nhiều gói tin khi chƣa nhận ACK
Sử dụng buffer để lƣu các gói tin
Bên gởi: lƣu gói tin đã gởi nhƣng chƣa ack
Bên nhận: lƣu gói tin đã nhận đúng nhƣng chƣa đúng thứ
tự
Giải quyết mất gói
Go back N
Selective Repeat (gởi lại có chọn)
03/2011
18
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
RDT1.0 : ĐƢỜNG TRUYỀN LÝ TƢỞNG
Giả thiết: kênh truyền bên dƣới tuyệt đối
Không lỗi bit
Không mất gói tin
FSM (finite state machine) cho bên gửi và nhận
Bên gửi chuyển dữ liệu xuống kênh bên dƣới
Bên nhận đọc dữ liệu từ kênh truyền bên dƣới
19
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
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
RDT2.0 KÊNH TRUYỀN CÓ LỖI BIT - 1
Giả thiết: kênh truyền có thể xảy ra lỗi bit
Sử dụng các cơ chế kiểm tra lỗi
checksum
Làm sao để khắc phục khi nhận ra lỗi?
Acknowledgement(ACKs): bên nhận báo cho bên
gửi đã nhận đƣợc dữ liệu
Nagetive acknowledgement(NAKs): bên nhận báo
gói tin bị lỗi
Bên gửi sẽ gửi lại gói tin khi nhận NAK
So với rdt1.0, rdt2.0:
Nhận dạng lỗi
Cơ chế phản hồi: ACK, NAK
20
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
RDT2.0 FSM - 2
03/2011
21
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
Wait for
call from
above
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)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt)
Wait for
ACK or
NAK
Wait for
call from
below
sender
receiver
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_send(data)
L
ACK/NAK sai???
RDT2.0 - 3
Giải quyết:
Bên gửi gửi lại gói tin khi nhận ACK/NAK sai
Bên gửi đánh số thứ tự cho mỗi gói tin
Bên nhận sẽ loại bỏ gói tin trùng.
Dừng và đợi
Bên gửi gửi một gói tin và chờ phản hồi từ bên nhận
22
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
RDT2.1 BÊN GỬI XỬ LÍ LỖI ACK/NAK
23
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
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)
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)
Wait for
call 1 from
above
Wait for
ACK or
NAK 1
L
L
RDT2.1 BÊN NHẬN XỬ LÍ LỖI ACK/NAK
24
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
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)
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)
RDT2.1 THẢO LUẬN
Bên gửi
Thêm số thứ tự vào gói tin
0 và 1???
Phải kiểm tra: ACK/NAK sai
không
Phải nhớ gói tin hiện thời có
thứ tự 0 hay 1
25
Bên nhận
• Phải kiểm tra nếu
nhận trùng
– So sánh trạng thái
đang chờ (0 hay 1) với
trạng thái gói tin nhận
đƣợc
• Bên nhận không biết
ACK/NAK cuối cùng
có chuyển tới bên gửi
an toàn không?
03/2011
TTMTRANG - BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM