Tầng Transport của TCP/IP: Cung cấp 2 giao thức cơ bản là TCP, UDP được sử dụng trong hầu hết trong các ứng dụng về mạng.
UDP (User Datagram Protocol)
– Là loại giao thức connectionless (nghĩa là có gói tin nào là đẩy ngay vào đường truyền mà không cần thiết lập các kết nối trước)
– Không đảm bảo tính tin cậy khi truyền dữ liệu và không có cơ chế phục hồi dữ liệu ( nó không quan tâm gói tin có đến đích hay không, không biết gói tin có bị mất mát trên đường đi hay không)
UDP Header: như đã đề cập, trước khi dữ liệu xuống tầng Internet thì nó sẽ được đóng 1 Transport Header (TCP Header hoặc UDP Header).
Ta cùng phân tích UDP Header.
UDP Header rất đơn giản (phần màu vàng)
Gồm 16 bit source port, 16 bit des port. Vậy port là gì ?
Có rất nhiều session sử dụng kết nối UDP vậy làm thế nào để định danh chúng ? thì tầng Transport dùng 1 cặp source port và des port để định danh 1 session đang truy nhập vào đường truyền của kết nối UDP. Ta có thể coi port là địa chỉ tầng Transport ( giao thức DNS chạy UDP port 53, TFTP port 69 v.v)
16 bit UDP Length: cho biết toàn bộ gói tin UDP dài tổng cộng bao nhiêu byte. Ta thấy 16 bit thì sẽ có tổng cộng 2^16 byte = 65536 giá trị (từ 0 -> 65535 byte).
16 bit UDP checksum: sử dụng thuật toán mã vòng CRC để kiểm lỗi. Và chỉ kiểm tra một cách hạn chế.
Các ứng dụng sử dụng UDP là: voip, video conference, DNS, TFTP v.v.
TCP (Transmission Control Protocol)
– Là giao thức hướng kết nối (connection-oriented) nghĩa là khi muốn truyền dữ liệu thì phải thiết lập kết nối trước.
– Hỗ trợ cơ chế full-duplex ( truyền và nhận dữ liệu cùng một lúc)
– Cung cấp cơ chế đánh số gói tin (sequencing): để ráp các gói tin cho đúng ở điểm nhận
– Cung cấp cơ chế báo nhận (Acknowledgement) :Khi A gửi dữ liệu cho B, B nhận được thì gửi gói tin cho A xác nhận là đã nhận. Nếu không nhận được tin xác nhận thì A sẽ gửi cho đến khi B báo nhận thì thôi.
– Phuc hồi dữ liệu bị mất trên đường truyền ( A gửi B mà không thấy xác nhận sẽ gửi lại) .
TCP Header: Do là giao thức tin cậy nên header của TCP rất phức tạp
UDP Header
32 bit sequence number: dùng để đánh số thứ tự gói tin (từ số sequence nó sẽ tính ra được số byte đã được truyền).
32 bit acknowledgement number: dùng để báo nó đã nhận được gói tin nào và nó mong nhận được byte mang số thứ tự nào tiếp theo.
4 bit header length: cho biết toàn bộ header dài bao nhiêu Word (1 Word = 4 byte).
Phần kí tự (trước 16 bit Window Size): là các bit dùng để điều khiển cờ (flag) ACK, cờ Sequence v.v.
16 bit urgent pointer: được sử dụng trong trường hợp cần ưu tiên dữ liệu ( kết hợp với bit điều khiển u r g ở trên).
Các trường ở trên là cố định, TCP dành cho chúng ta trường Option để lập trình thêm các tính năng cho TCP nếu có nhu cầu.
Các ứng dụng sử dụng giao thức TCP: HTTP, DNS, SMTP, telnet, SNMP v.v.
Tiến trình bắt tay 3 bước (Three-way handshake)
Three-way Handshake
Gải thích ví dụ trên:
Bước 1:
Host A gửi cho B một gói tin có cờ SYN được bật lên, với số thứ tự được đánh là 100
Bước 2:
Host B nhận được gói tin thì B gửi lại gói tin có cờ SYN được bật lên, kèm theo đó là cờ ACK (để xác nhận).
ACK=101 nghĩa là ” này A, tôi đã nhận được gói tin có SEQ = 100, tôi mong muốn nhận thêm gói tin có SEQ= 101). Khi gửi gói tin đi thì nó đánh số thứ tự SEQ= 300
Bước 3:
Sau khi kết nối đã được thiết lập thì A gởi tin để đáp ứng nhu cầu của B.
Gói tin được đánh số SEQ = 101: để đáp ứng nhu cầu của B
ACK =301 dùng để báo là đã nhận được gói tin có SEQ = 300.
Và chỉ có cờ ACK được bật lên bởi gói tin bước 3 được dùng để báo nhận cho gói tin bước 2.
Cơ chế điều khiển luồng trong TCP (Flow Control)
Flow Control
Giả sử: Sender gửi quá nhiều dữ liệu cho Receiver, thì Receive sẽ chuyển vào bộ đệm để chờ xử lý, đến lúc bộ đệm đầy thì B gởi tín hiệu cho A để không truyền nữa cho đến khi B xử lý hết thì sẽ gởi lại gói tin cho A để tiếp tục nhận dữ liệu.
Fixed Windowing
Fixed Windowing
Thay vì gửi từng byte rồi đợi ACK thì Sender sẽ gửi nhiều byte cùng lúc. ( Window Size bằng bao nhiêu sẽ gửi bấy nhiêu)
Receiver sau khi nhận được byte thứ 3 sẽ ACK=4 để xác nhận và yêu cầu byte thứ 4.
ở cơ chế Fixed Windowing thì Window Size cố định, nhưng có trường hợp ta không giữ cửa sổ cố định được.
TCP Sliding Windowing (Window Size có thể thay đổi)
TCP Sliding Windowing
Window Size = 3 nên Sender sẽ gửi lần lượt 3 byte nhưng Receiver chỉ nhận được 2 byte ( do nghẽn mạng, do xử lý không nổi) thì Receiver sẽ ACK=3 để yêu cầu Sender gửi lại byte thứ 3 đồng thời nó cũng báo là hãy sử dụng Window Size =2(vì nó chỉ chịu nổi Size =2). Sender sau đó sẽ set Window Size=2.
Các bạn tìm hiểu thêm về mạng Lan, cơ chế CSMA/CD, half duplex, full duplex nhé.
http://www.slideshare.net/laonap166/mcsa-2012-mng-cn-bn-phn-3
nguồn: tuhocmang.com
0 Comments