Xem mẫu
- 5/22/2011
LOGO
C3 TẦNG GIAO VẬN
Giới thiệu
Dịch vụ dồn kênh và phân kênh
Giao thức UDP
Giao thức TCP
Biên soạn : Lê Minh
LOGO
Giới thiệu
I
Cung cấp đường
truyền logic giữa các
tiến trình chạy trên
các máy tính khác
nhau
Dùng hai giao thức:
TCP và UDP
Biên soạn : Lê Minh
1
- 5/22/2011
LOGO
Giới thiệu
I
Các giao thức của tầng giao vận chạy trên các
thiết bị đầu cuối ( máy tính,PDA … )
Phía gởi : chia các thông điệp (message) nhận
từ tầng ứng dụng thành các segment và chuyển
xuống tầng mạng
Phía nhận : tái hợp các segment thành thông
điệp và gởi lên cho tầng ứng dụng
Biên soạn : Lê Minh
LOGO
Quan hệ tầng giao vận với tầng mạng
1
Tầng mạng: Tầng giao vận:
Cung cấp đường Cung cấp đường
truyền logic giữa các truyền logic giữa các
máy tính tiến trình
PDU : datagram PDU: segment
Datagram có thể bị Phụ thuộc vào và mở
mất, trùng lắp và rộng thêm các dịch
chuyển đi không vụ của tầng mạng
đúng thứ tự
Biên soạn : Lê Minh
2
- 5/22/2011
LOGO
Giao thức tầng giao vận
2
Mở rộng việc truyền dữ liệu giữa các thiết bị
đầu cuối của tầng mạng thành việc truyền dữ
liệu giữa các tiến trình
TCP: giao thức tin cậy, gởi nhận theo đúng
thứ tự
Kiểm soát tắt nghẽn
Điều khiển lưu lượng
Thiết lập đường truyền
UDP: giao thức không tin cậy, gởi nhận không
theo thứ tự
Biên soạn : Lê Minh
LOGO
Dịch vụ dồn kênh và phân kênh
II
Tầng mạng sử dụng cùng một kênh truyền
giữa hai máy tính cho việc liên lạc với nhau
HTTP
FTP
Transport Transport
Telnet
Layer Layer
Network Network
Layer Layer
Mỗi máy tính có thể chạy nhiều ứng dụng
cùng lúc, mỗi ứng dụng được gởi xuống tầng
mạng qua một cổng bằng một tiến trình.
Dữ liệu gởi đúng từ tiến trình gởi đến tiến
trình nhận?
Biên soạn : Lê Minh
3
- 5/22/2011
LOGO
Dịch vụ dồn kênh và phân kênh
II
Bên gởi : thực hiện dịch vụ dồn kênh
Nhận dữ liệu từ nhiều tiến trình ứng dụng
khác nhau từ tầng ứng dụng
Thêm tiêu đề để tạo thành segment và chuyển
xuống tầng mạng
Bên nhận: thực hiện dịch vụ phân kênh
Nhận dữ liệu từ tầng mạng chuyển lên
Căn cứ vào tiêu đề của segment để chuyển dữ
liệu đến đúng tiến trình nhận
Biên soạn : Lê Minh
LOGO
Dịch vụ dồn kênh và phân kênh
II
Căn cứ để phân kênh?
Mỗi tiến trình được gởi
qua một cổng
Mỗi gói tin (segment) sẽ
có địa chỉ cổng
nguồn/đích
Datagram ở tầng mạng
sẽ có IP nguồn/đích
Biên soạn : Lê Minh
4
- 5/22/2011
LOGO
Dịch vụ dồn kênh và phân kênh
II
Biên soạn : Lê Minh
LOGO
Giao thức UDP
III
Là giao thức đơn giản của tầng giao vận
Giao thức không hướng kết nối:
Không “bắt tay” giữa bên gởi và bên nhận
Các UDP segment được xử lý độc lập
Giao thức không tin cậy:
Các UDP segment có thể bị mất mát khi truyền
Không có cơ chế kiểm soát tắt nghẽn
Tại sao dùng UDP??
Biên soạn : Lê Minh
5
- 5/22/2011
LOGO
Giao thức UDP
III
Tại sao dùng UDP?
Không cần thiết lập đường truyền
Không cần lưu lại trạng thái ở 2 bên gởi/nhận
Trường tiêu đề của gói tin nhỏ
Không cần cơ chế kiểm soát tắt nghẽn
Thường được dùng bởi các ứng dụng đa
phương tiện:
Chấp nhận mất mát dữ liệu
Cần tốc độ truyền nhanh
Muốn truyền tin cậy với giao thức UDP: ứng
dụng phải có cơ chế khắc phục lỗi
Biên soạn : Lê Minh
LOGO
Cấu trúc gói tin UDP
1
Source port: địa chỉ
32 bits
cổng nguồn
dest port #
source port #
Dest port: địa chỉ checksum
length
cổng đích
Checksum: kiểm tra
lỗi của segment
Application
Length: độ dài của data
(message)
segment (byte) – tính
cả header
UDP segment format
Biên soạn : Lê Minh
6
- 5/22/2011
LOGO
UDP checksum
2
Mục đích: phát hiện lỗi trong các segment đã
gởi
Phía gởi:
Chia nội dung của segment thành các từ có độ
dài 16 bit
Tính checksum bằng cách lấy tổng (có nhớ)
của các từ 16 bit này, sau đó lấy bù 1
Đặt kết quả tính checksum vào trường
checksum của UDP segment
Giá trị ban đầu của trường checksum trong
segment là bao nhiêu??
Biên soạn : Lê Minh
LOGO
UDP checksum
2
Phía nhận:
Chia nội dung của segment nhận được thành
các từ có độ dài 16 bit
Tính tổng của các từ 16 bit kể cả trường
checksum
Nếu kết quả bằng 111111111 11111111 thì dữ
liệu nhận được không lỗi
Nếu có bất kỳ bit nào trong kết quả là 0 thì dữ
liệu nhận được có lỗi
UDP sẽ làm gì khi có lỗi xảy ra???
Biên soạn : Lê Minh
7
- 5/22/2011
LOGO
Giao thức TCP
IV
Là giao thức theo hướng kết nối:
Tiến trình gởi và nhận phải “bắt tay” với nhau
để xác định các tham số đảm bảo cho việc
truyền dữ liệu
Kết nối TCP:
Là kết nối điểm – điểm
Cung cấp kênh truyền song công
Có bộ đệm ở phía gởi và nhận
Quy định lượng dữ liệu lớn nhất MMS có thể
đặt trong mỗi segment. Giá trị MMS có thể
thay đổi được.
Biên soạn : Lê Minh
LOGO
Cấu trúc gói tin TCP
1
32 bits
URG: urgent data Được xác
source port # dest port #
(thường không dùng) định bởi số
sequence number byte dữ liệu
ACK: giá trị ACK
đã gởi/nhận
acknowledgement number
đã nhận được
head not
UA PRS F Receive window
PSH: push data now len used
Số
(thường không dùng) checksum Urg data pnter
lượng
byte
RST, SYN, FIN: Options (độ dài thay đổi)
bên
Thiết lập kết nối
nhận
(thiết lập và
có thể
đóng kết nối)
Dữ liệu từ tầng ứng dụng nhận
(độ dài thay đổi)
Internet
checksum
(giống ở UDP)
Biên soạn : Lê Minh
8
- 5/22/2011
LOGO
Sequence number và ACK number
2
TCP sẽ đánh số thứ tự cho từng byte của dòng
dữ liệu nhận được từ tầng ứng dụng
Mỗi segment sẽ mang một số Seq number, là
số thứ tự của byte đầu tiên trong phần dữ liệu
của segment đó ( không phải là số thứ tự của
segment)
Ví dụ: A cần truyền cho B file có kích thước
5000 byte, MMS là 1000 byte, byte đầu tiên có
số thứ tự là 0
Biên soạn : Lê Minh
LOGO
Sequence number và ACK number
2
Giá trị ban đầu của sequency number được
chọn ngẫu nhiên
Việc đánh số sequency number phụ thuộc vào
từng bên truyền nhận
ACK number: số seq # của segment tiếp theo
mong muốn nhận được từ bên kia
Biên soạn : Lê Minh
9
- 5/22/2011
LOGO
Sequence number và ACK number
2
Ví dụ Host B
Host A
Seq #: số thứ 1000 byte
data
tự của byte dữ
host ACKs
liệu đầu tiên
receipt of
trong segment data
ACK #:
• Số seq# của
segment tiếp Host sends
mong another
theo
500 bytes
chờ từ phía
kia
• Được tính
time
kiểu “tích
lũy”
Biên soạn : Lê Minh
LOGO
Truyền dữ liệu tin cậy với TCP
3
Tầng mạng cung cấp dịch vụ IP: dịch vụ
truyền không tin cậy
TCP tạo ra đường truyền dữ liệu tin cậy dựa
trên dịch vụ IP
Đảm bảo truyền đúng và đủ dữ liệu (segment)
cho bên nhận
Căn cứ vào ACK và timer để thực hiện việc
truyền lại các segment, 1 segment sẽ được
truyền lại khi:
“Không” nhận được ACK xác nhận từ bên
nhận
Hết thời gian chờ (timeout) nhận ACK soạn : Lê Minh
Biên
10
- 5/22/2011
LOGO
Truyền dữ liệu tin cậy với TCP
3
Các hoạt động của bên gởi:
Nhận dữ liệu từ tầng ứng dụng:
• Chia dữ liệu ra và đóng gói thành các segment
căn cứ vào giá trị MMS
• Đánh số cho các segment và đặt vào trường
sequency number của segment
• Tiến hành gởi segment và khởi động timer cho
từng segment
Biên soạn : Lê Minh
LOGO
Truyền dữ liệu tin cậy với TCP
3
Các hoạt động của bên gởi:
Sau khoảng thời gian chờ (timeout) cho mỗi
segment, nếu không nhận được ACK xác nhận
từ bên nhận:
• Gởi lại segment đó
• Khởi động lại timer cho segment
Nếu nhận được ACK xác nhận từ bên nhận
trước thời gian timeout:
• gửi tiếp segment có số sequency tương ứng với
số ACK vừa nhận được
Bên nhận: nếu nhận được segment từ bên gởi
sẽ trả lời lại bằng segment chứa ACK
Biên soạn : Lê Minh
11
- 5/22/2011
LOGO
Truyền dữ liệu tin cậy với TCP
3
Ví dụ:
ACK xác nhận từ bên nhận bị thất lạc
Biên soạn : Lê Minh
LOGO
Truyền dữ liệu tin cậy với TCP
3
Ví dụ:
ACK xác nhận thứ 2 đến trước thời gian
timeout của mình
Biên soạn : Lê Minh
12
- 5/22/2011
LOGO
Truyền dữ liệu tin cậy với TCP
3
Ví dụ:
ACK xác nhận thứ 2 đến trước thời gian
timeout của ACK thứ nhất
Biên soạn : Lê Minh
LOGO
Điều khiển lưu lượng trong TCP
4
Mục đích: tránh hiện tượng bên gởi làm tràn
bộ đệm bên nhận
Khi khởi tạo kết nối TCP, mỗi bên sẽ khởi tạo
cho mình bộ đệm nhận (RevBuffer)
Dữ liệu nhận được từ bên gởi sẽ được lưu
trong bộ đệm nhận trước khi được xử lý
Biên soạn : Lê Minh
13
- 5/22/2011
LOGO
Điều khiển lưu lượng trong TCP
4
32 bits
source port # dest port #
sequence number
acknowledgement number
head not
UA PRS F Receive window
len used
checksum
bên gởi biết độUrg data pnter
Bên nhận báo cho lớn của vùng
đệm còn rỗi ( RcvWindow) của dài thay??
Options (độ mình đổi)
Khi bộ đệm bên nhận đầy (RcvWindow = 0)??
Dữ liệu từ tầng ứng dụng
(độ dài thay đổi)
Biên soạn : Lê Minh
LOGO
Quản lý kết nối TCP
5
Thiết lập kết nối : bắt
client server
tay 3 bước giữa client và
server:
B1: client gởi 1 segment
SYN tới server ( không
chứa data, chứa số Seq#
khởi đầu)
B2: server trả lời bằng 1
segment SYN-ACK ( khởi
tạo giá trị Seq# của
server)
B3: client trả lời bằng 1
segment SYN-ACK
Biên soạn : Lê Minh
14
- 5/22/2011
LOGO
Quản lý kết nối TCP
3
Đóng kết nối:
B1: client gởi segment client server
closing
FIN tới server
B2: server gởi segment
ACK xác nhận, gởi lại 1
segment FIN
B3: client gởi lại 1
segment ACK xác nhận
timed wait
sau khi nhận được
segment FIN
B4: server nhận được
segment ACK, đóng kết
nối
Biên soạn : Lê Minh
15
nguon tai.lieu . vn