.2 Lựa chọn cho phép SACK TCP

Một phần của tài liệu Các cải tiến TCP cho đường truyền vệ tinh (Trang 51 - 53)

Sau khi đã thực hiện kết nối SACK TCP xong, bên TCP nhận sẽ thực hiện nhận các gói dữ liệu đƣợc gửi từ bên TCP phát. Sau đó, TCP nhận sẽ báo nhận bằng các biên nhận có thêm lựa chọn SACK với khn dạng nhƣ hình 3.3.

Hình 3.3 Khn dạng lựa chọn SACK TCP (length =n)

Trong lựa chọn SACK TCP, có chứa danh sách các khối (block) dữ liệu kế tiếp nhau vừa đƣợc nhận nhƣng không đúng thứ tự (nằm ở bộ đệm, đợi xử lý).

Mỗi một khối dữ liệu nêu trên đƣợc xác định bằng 2 số nguyên 32 bit, chỉ thứ tự byte dữ liệu đầu tiên và cuối cùng của khối, đó chính là 2 trƣờng: Left Edge và Right Edge. Mỗi block thể hiện các byte dữ liệu nhận đƣợc liền nhau và độc lập với nhau. Giá trị các byte vừa nhận đƣợc ở block trƣớc (Left Edge of Block -1) và byte nhận đƣợc ở block sau (Right Edge of Block) chính là các byte khơng nhận đƣợc (bị mất).

Mỗi block trong SACK-Permitted Option có độ dài 8 byte, do đó nếu lựa chọn SACK có n block thì độ dài sẽ là (8*n+2) byte. Tuy nhiên, vì trong TCP header trƣờng lựa chọn có độ dài tối đa là 40 byte, nên SACK TCP chỉ chứa đƣợc tối đa là 4 block. Nếu sử dụng SACK TCP với nhãn thời gian (Timestamp) thì chỉ sử dụng đƣợc 3 block [16].

Việc bổ sung tùy chọn SACK vào giao thức TCP không làm thay đổi cơ chế điều khiển tắc nghẽn bên trong của nó, SACK TCP vẫn bảo tồn đƣợc các đặc tính của Tahoe và Reno TCP là mạnh trong trƣờng hợp có các gói số liệu đến khơng đúng thứ tự, nó sử dụng cơ chế phát lại khi bị hết giờ nhƣ giải pháp cuối cùng.

3.3. TCP HACK (HeAder ChecKsum option)

Thơng thƣờng các gói tin TCP chỉ chứa duy nhất một trƣờng kiểm tra tổng (Checksum) theo phƣơng pháp CRC cho toàn bộ segmnet (gồm cả header và data). Trong trƣờng hợp trƣờng Checksum duy nhất này bị lỗi sẽ dẫn đến cả gói tin sẽ đƣợc cho là có lỗi và sẽ bị loại bỏ. Trong nhiều trƣờng hợp, phần dữ liệu (data) bị lỗi nhƣng phần Header khơng lỗi, nếu nhận biết đƣợc điều đó thì có thể lấy đƣợc các thơng tin quan trọng trong phần Header. Bằng cách thêm một trƣờng Checksum riêng biệt vào phần TCP Header option để kiểm tra CRC cho riêng TCP Header và phần đầu giả IP (pseudo-IP header), bên nhận gói tin có thể kiểm tra đƣợc tính tồn vẹn của phần TCP Header, R. K. Balan và các cộng sự đã mô tả rất chi tiết trong [21]. Thông qua việc kiểm tra đƣợc đƣợc tính tồn vẹn của TCP Header khi gói tin nhận đƣợc bị lỗi, bên nhận có thể gửi thông báo ACK đặc biệt trở lại với bên gửi nhằm chỉ ra chính xác gói tin bị hỏng. Thông báo ACK đặc biệt này sẽ chứa số tuần tự (sequence number) của gói tin bị hỏng. Thông báo này cũng giống nhƣ các thông báo thông thƣờng khác ngoại trừ chúng có thêm các trƣờng lựa chọn.

Để thực hiện đƣợc HACK TCP, cần sửa đổi các thủ tục gửi và nhận dữ liệu nhƣ đƣợc trình bày sau đây [21].

 Sửa đổi bên gửi TCP

Khi gửi các gói dữ liệu, bên gửi sẽ kiểm tra xem lựa chọn Header Checksum có cần phải thêm vào khơng, nếu khơng cần lựa chọn này thì bên gửi TCP sẽ thực hiện việc gửi gói tin TCP bình thƣờng. Trong trƣờng hợp ngƣợc lại, bên gửi sẽ tính tốn Header Checksum cho gói dữ liệu và gán nó vào trong trƣờng Header Checksum option, sau đó bên gửi sẽ gửi gói tin đi nhƣ các gói tin thơng thƣờng.

Một phần của tài liệu Các cải tiến TCP cho đường truyền vệ tinh (Trang 51 - 53)

Tải bản đầy đủ (PDF)

(84 trang)