Tự học CCNA – Bài 4: Tìm hiểu về giao thức TCP và UDP

49

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.

1. 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 được sử dụng khi tốc độ là mong muốn và sửa lỗi là không cần thiết. Ví dụ, UDP thường được sử dụng cho chương trình phát sóng trực tiếp và trò chơi trực tuyến.

Ví dụ, giả sử bạn đang xem hình ảnh video trực tiếp. Live Stream phát sóng thường sử dụng UDP thay vì TCP. Các máy chủ chỉ cần gửi một dòng của các gói tin UDP để máy tính xem. Nếu bạn bị mất kết nối trong vài giây, video sẽ đóng băng cho một thời điểm và sau đó chuyển đến các bit hiện tại của truyền hình, bỏ qua các bit bạn đã bị bỏ qua. Video hoặc âm thanh có thể bị bóp méo một lúc và video tiếp tục chơi mà không có dữ liệu bị mất.

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à destination 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.
–  Phục 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

  • 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.

3. Tiến trình bắt tay 3 bước (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)

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

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)

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.

Truyền dữ liệu half-duplex và full-duplex

Trên một môi trường truyền dẫn (ví dụ trên một sợi cáp đồng) thông tin lan truyền giữa các thiết bị mạng có thể được thực hiện theo nhiều dạng thức khác nhau như: Chỉ cho phép truyền một chiều (quá trình t1) từ thiết bị mạng này tới thiết bị mạng khác trong một đơn vị thời gian, quá trình t2 chỉ được thực hiện khi t1 kết thúc. Dạng thức này được gọi là bán song công (half-full duplex gọi tắt là halfduplex). Trong trường hợp môi trường truyền và các thiết bị mạng có thể hoạt động song song cùng lúc để quá trình t1 và t2 xảy ra đồng thời ta có dạng thức truyền toàn song công ( full duplex).

+ Truyền bán song công (half duplex): giữa hai đường truyền dữ liệu và luồng tin, chỉ truyền theo một hướng tại một thời điểm khi một thiết bị hoàn thành việc truyền dẫn, nó phải chuyển môi trường truyền đến thiết bị khác. Một thiết bị có thể đóng vai trò Thu và Phát tín hiệu nhưng tại một thời điểm nó chỉ có thể thực hiện một vai trò duy nhất. Ví dụ hoạt động của bộ tọa đàm điện thoại, mạng LAN có sử dụng các thiết bị trung tâm là thiết bị lớp 1 thì luôn sử dụng không thể sử dụng dạng thức fullduplex.

+ Truyền toàn song công ( full duplex): cho phép dữ liệu truyền đồng thời trên cả hai đường, mỗi thiết kế có một kênh riêng. Một thiết bị có thể đồng thời vừa Phát lại vừa Thu tín hiệu. Các modem máy tính đều hoạt động theo phương thức này, mạng LAN sử dụng toàn thiết bị tập trung lớp 2 hoặc 2 máy tính kết nối trực tiếp với nhau có thể sử dụng dạng thức fullduplex.

+ Bên cạnh đó còn có thể áp dụng dạng thức truyền đơn công (simple mode): Thông tin chỉ truyền theo một chiều qui định trước, một thiết bị chỉ đóng một vai trò Thu hoặc Phát cố định. Hệ thống báo cháy sử dụng phương thức này.

Các bạn tìm hiểu thêm về mạng Lan, cơ chế CSMA/CD, half duplex, full duplex nhé.

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]

LEAVE A REPLY