Tải bản đầy đủ (.pdf) (49 trang)

Chương 3a: Tầng giao vận ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (893.68 KB, 49 trang )

3: Transport Layer
3a-1
Chương 3: Tầng giao vận
Mục tiêu :
 Nguyên lý các dịch vụ của
tầng giao vận:
 Phân kênh / Dồn kênh
 Xây dựng ñường truyền tin
cậy
 ðiều khiển lưu lượng
 Kiểm soát tắc nghẽn
 Cài ñặt những nguyên lý này
trên Internet như thế nào ?
Sẽ học cái gì ?
 Các dịch vụ của tầng giao vận
 Phân kênh / Dồn kênh
 UDP : Giao thức không hướng nối
 Nguyên lý xây dựng ñường truyền
tin cậy
 TCP : Giao thức hướng nối
 Tin cậy
 ðiều khiển lưu lượng
 Kiểm soát tắc nghẽn
 Nguyên lý kiểm soát tắc nghẽn
 Kiểm soát tắc nghẽn trong TCP
3: Transport Layer
3a-2
Dịch vụ và Giao thức ở tầng Giao vận
 Cung cấp ñường truyền logic giữa
các tiến trình chạy trên các thiết bị
ñầu cuối.


 Giao thức Giao vận chạy trên thiết
bị ñầu cuối
 Phân biệt dịch vụ của tầng Giao
vận với tầng Mạng:
 Tầng Mạng: Chuyển dữ liệu giữa
các thiết bị ñầu cuối.
 Tầng Giao vận: Chuyển dữ liệu
giữa các tiến trình
 Dựa trên tầng Mạng nhưng biến
ñổi, tăng cường
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
l
o
g
i
c
a
l

e
n
d
-
e
n
d

t
r
a
n
s
p
o
r
t

3: Transport Layer
3a-3
Giao thức ở tầng Giao vận
Có hai giao thức giao vận trên
Internet:
 Tin cậy, Nhận theo ñúng thứ tự
gửi, một người nhận (TCP)
 Kiểm soát tắc nghẽn
 ðiều khiển lưu lượng
 Thiết lập ñường truyền
 Không tin cậy (“cố gắng tối ña”),
Không theo ñúng thứ tự: UDP
 Cả TCP và UDP ñều không cung
cấp:
 Chuyển theo thời gian thực
 Băng thông tối thiểu
 Nhiều người nhận tin cậy
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
l
o
g
i
c
a
l

e
n
d
-
e
n
d

t
r

a
n
s
p
o
r
t
3: Transport Layer
3a-4
application
transport
network
M
P2
application
transport
network
Phân kênh / Dồn kênh
Nhớ lại: segment – ðơn vị dữ liệu
trao ñổi giữa hai thực thể Giao
vận
 Còn gọi là TPDU:
Transport Protocol Data
Unit
Bên nhận
H
t
H
n
Phân kênh: Chuyển các segment

nhận ñược cho Ứng dụng phù
hợp
segment
segment
M
application
transport
network
P1
M
M
M
P3
P4
Tiêu ñề
segment
Dữ liệu tầng Ứng
dụng
3: Transport Layer
3a-5
Phân kênh / Dồn kênh
Dồn kênh/Phân kênh:
 Dựa trên ðịa chỉ IP, Số hiệu
cổng của bên Gửi và bên Nhận
 source, dest port trong mỗi
segment
 Nhớ lại: Các số hiệu cổng
của các ứng dụng thông
dụng
Lấy dữ liệu từ nhiều trình Ứng

dụng, Bổ sung thêm các tiêu ñề
(ñể sau này Phân kênh sử dụng
source port # dest port #
32 bits
application
data
(message)
other header fields
Khuôn dạng tổng quát của TCP/UDP
Dồn kênh:
3: Transport Layer
3a-6
Phân biệt Phân kênh và Dồn kênh
application
transport
network
link
physical
P1
application
transport
network
link
physical
application
transport
network
link
physical
P2

P3
P4
P1
host 1
host 2
host 3
= process= socket
Chuyển segment ñến ñúng
socket
Phân kênh ở nút nhận:
Lấy dữ liệu từ nhiều socket,
ñặt trong các phong bì khác
nhau (ñể phân kênh sau này)
Dồn kênh ở nút gửi
3: Transport Layer
3a-7
Ví dụ : Phân kênh / Dồn kênh
host A
server B
source port: x
dest. port: 23
source port:23
dest. port: x
Ứng dụng Telnet ñơn giản
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 : Ứng dụng Web
Source IP: A
Dest IP: B
source port: x
dest. port: 80
3: Transport Layer
3a-8
Phân kênh bằng cách nào ?
 Máy tính ñích nhận ñược IP
datagrams
 Mỗi datagram có ñịa chỉ IP
ñích, IP nguồn
 Mỗi datagram chứa một
segment của tầng giao vận
 Mỗi segment chứa ñịa chỉ cổng
gửi, cổng nhận
(chú ý : cổng của các ứng dụng
thông dụng)
 Máy tính ñích sử dụng ñịa chỉ IP
và cổng của bên gửi ñể chuyển
segment ñến socket thích hợp
source port # dest port #

32 bits
application
data
(message)
other header fields
TCP/UDP segment format
3: Transport Layer
3a-9
UDP: User Datagram Protocol [RFC 768]
 Giao thức giao vận cực kỳ ñơn
giản, gần như không có gì
 Dịch vụ kiểu “cố gắng tối ña”, các
segment của UDP có thể :
 Mất.
 Tầng ứng dụng chịu trách
nhiệm sắp xếp theo ñúng thứ
tự.
 Không hướng nối:
 Phía gửi, phía nhận không cần
“bắt tay”
 Các segment UDP ñược xử lý
ñộc lập
Tại sao sử dụng UDP?
 ðộ trễ nhỏ: Không có giai ñoạn
thiết lập ñương truyền
 ðơn giản: Phía gửi và nhận
không phải ghi nhớ trạng thái
gửi/ nhận.
 Tiêu ñề gói tin bé
 Không có cơ chế kiểm soát tắc

nghẽn: Bên gửi có thể gửi dữ
liệu với tốc ñộ tối ña.
3: Transport Layer
3a-10
UDP (tiếp)
 Thường ñược các ứng dụng ña
phương tiện sử dụng
 Chấp nhận mất dữ liệu
 Tốc ñộ truyền quan trọng
 Một số ứng dụng khác cũng sử
dụng (Vì sao?):
 DNS
 SNMP
 Muốn truyền tin cậy bằng UDP:
phải ñặt cơ chế tin cậy tại ứng
dụng
 Ứng dụng chịu trách nhiệm
phát hiện và khắc phục lỗi!
source port # dest port #
32 bits
Dữ liệu tầng ứng dụng
(Thông ñiệp)
Khuôn dạng segment UDP
length
checksum
ðộ dài
Segment
UDP,
Tính theo
ñơn vị

byte, kể
cả phần
tiêu ñề
3: Transport Layer
3a-11
UDP checksum
Bên gửi:
 Xem nội dung segment là các
số nguyên 16-bit liên tiếp (các
từ).
 checksum: tổng bù 1 của các
từ
 Phía gửi sẽ ñặt giá trị
checksum tính ñược vào
trường checksum trong tiêu ñề
gói tin UDP
Bên nhận:
 Tính giá trị checksum của
segment vừa nhận ñược
 Kiểm tra xem giá trị vừa tính ñược
có trùng với giá trị trong trường
checkum ở tiên ñề không:
 KHÔNG TRÙNG – có lỗi
 TRÙNG – Không phát hiện ñược
lỗi. Nhưng có thể có lỗi.
Mục tiêu: phát hiện “lỗi” (bit bị thay ñổi giá trị) trong segment
nhận ñược.
3: Transport Layer
3a-12
Ví dụ tính UDP Checksum

 Note
 Khi cộng hai số, nhớ ở bit cao nhất sẽ ñược cộng vào
kết quả
 Ví dụ: Cộng hai số nguyên 16-bit
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

Tổng
Tổng kiểm tra
3: Transport Layer
3a-13
Nguyên lý Truyền tin cậy
 Có thể áp dụng trong Tầng Giao vận và Liên kết dữ liệu
 Một trong 10 vấn ñề quan trọng nhất của Mạng!
 Các ñặc ñiểm của ñường truyền không tin cậy phía dưới sẽ quyết ñịnh
ñộ phức tạp của giao thức Truyền tin cậy (rdt)
3: Transport Layer
3a-14
Truyền tin cậy: Bắt ñầu như thế nào ?
PHÍA
GỬI
PHÍA
NHẬN
rdt_send(): Tầng trên gọi, (ví dụ Ứng
dụng.). Yêu cầu chuyển dữ liệu tin cậy
cho ñối tác bên kia
udt_send(): rdt gọi ñể chuyển

packet cho phía nhận qua ñường
truyền không tin cậy
rdt_rcv(): ñược gọi khi packet ñến phía
nhận
deliver_data(): Rdt gọi ñể chuyển
dữ liệu lên trên
3: Transport Layer
3a-15
Truyền tin cậy: Khởi ñầu
Chúng ta sẽ :
 Phát triển dần dần cả phía Gửi và phía Nhận trong
Giao thức Truyền tin cậy (rdt)
 Xét dữ liệu chỉ truyền trên một hướng
 Nhưng thông tin ñiều khiển có thể truyền theo cả hai hướng!
 Sử dụng máy Hữu hạn trạng thái (FSM) ñể miêu tả
phía Gửi và phía Nhận
state
1
state
2
Sự kiện gây chuyển trạng thái
Các hành ñộng sẽ thực hiện trước khi chuyển
Trạng thái: Chỉ thay ñổi
sang trạng thái khác khi
có sự kiện mang tính
duy nhất xảy ra
Sự kiện
Hành ñộng
3: Transport Layer
3a-16

Rdt1.0: Truyền tin cậy qua kênh truyền tin cậy
 ðặc ñiểm của kênh truyền tin cậy
 Bit trong gói tin không bị lỗi
 Gói tin không bị mất
 FSM cho bên Gửi và bên Nhận ñộc lập nhau:
 Phía Gửi truyền gói tin qua kênh truyền phía dưới
 Phía Nhận ñọc gói tin từ kênh truyền bên dưới
3: Transport Layer
3a-17
Rdt2.0: Kênh truyền có lỗi bit
 Kênh truyền bên dưới có thể khiến bit trong gói tin lỗi
 Ghi nhớ: checksum có thể ñược sử dụng ñể phát hiện lỗi
 Vấn ñề: Khắc phục lỗi như thế nào ?
 Biên nhận tích cực (ACK): Bên nhận thông báo tường minh cho
bên gửi mình nhận ñúng và chính xác gói tin.
 Biên nhận tiêu cực (NAK): Bên nhận thông báo tường minh cho
bên gửi gói tin mình nhận có lỗi.
 Phía gửi gửi lại gói tin khi nhận ñược NAK
 Ví dụ nào trong cuộc sống sử dụng ACK, NAK?
 Bổ sung thêm cơ chế mới trong rdt2.0 :
 Phát hiện lỗi
 Phản hồi tường minh: thông ñiệp phản hồi (ACK,NAK) Nhận

→→

Gửi
3: Transport Layer
3a-18
rdt2.0: ðặc tả FSM
FSM Gửi FSM Nhận

3: Transport Layer
3a-19
rdt2.0: Ví dụ không lỗi
FSM Gửi FSM Nhận
3: Transport Layer
3a-20
rdt2.0: Ví dụ có lỗi
FSM Gửi FSM Nhận
3: Transport Layer
3a-21
Tổng quan về rdt2.0
Gửi
d
a
t
a

(
n
)
Nhận
d
a
t
a

(
n
)
A

C
K
d
a
t
a

(
n
+
1
)
N
A
C
K
ðợi biên
nhận
ðợi dữ
liệu
3: Transport Layer
3a-22
rdt2.0 chưa hoàn chỉnh !
Chuyện gì xảy ra nếu ACK/NAK bị lỗi?
 Mặc dù bên Gửi nhận ñược phản hồi, nhưng không biết
chuyện gì xảy ra ở phía Nhận !
Gửi
d
a
t

a

(
n
)
ðợi
Biên
nhận
?
3: Transport Layer
3a-23
Có hai trường hợp
sender
d
a
t
a

(
n
)
receiver
d
a
t
a

(
n
)

ðợi
dữ
liệu
N
A
C
K
sender
receiver
A
C
K
d
a
t
a

(
n
+
1
)
d
a
t
a

(
n
)

Chuyển
Chuyển
ðợi
Biên
nhận
ðợi
Biên
nhận
3: Transport Layer
3a-24
rdt2.0 Có lỗi nghiêm trọng !
Như vậy nếu gói tin
ACK/NAK bị lỗi
 Phía Gửi không biết gì về trạng
thái phía Nhận !
 Nếu truyền lại: Dữ liệu có thể
bị trùng lặp
Phải làm sao ?
 Phía gửi lại biên nhận cho
phản hồi từ phía nhận? Nếu
chính gói phản hồi bị mất thì
sao ?
 Truyền lại ? Có thể truyền lại
gói tin ñã ñược nhận ñúng !
Xử lý trùng lặp ?
 Phía gửi ñánh Số thứ tự cho
mỗi gói tin gửi ñi.
 Nếu gói tin phản hồi bị lỗi: phía
Gửi truyền lại gói tin.
 Phía Nhận loại bỏ các gói tin

trùng lặp (không chuyển lên
trên)
Phía Gửi gửi một gói tin,
Dng lại và và Ch phía
nhận phản hồi.
Dừng và Chờ
3: Transport Layer
3a-25
rdt2.1: Khắc phục Phản hồi bị lỗi (bên Gửi)

×