I. GIAO THỨC TCP/IP
2. Giao thức TCP và UDP
2.1 Giao thức truyền tải - TCP
a) Khỏi quỏt về giao thức TCP
TCP là giao thức điều khiển truyền dẫn cú độ tin cậy cao đƣợc thiết kế để phục vụ việc liờn lạc giữa hai host và chỉ hỗ trợ phƣơng thức truyền “unicasting”. Trong ứng dụng truyền thoại VoIP, giao thức TCP đƣợc sử dụng làm giao thức truyền bỏo hiệu chứ khụng phục vụ việc truyền cỏc tớn hiệu thoại. Lý do vỡ mào đầu của TCP lớn và vỡ đảm bảo tớnh chớnh xỏc cao của đƣờng truyền nờn giao thức TCP gõy ra thời gian trễ lớn ảnh hƣởng đến chất lƣợng cỏc ứng dụng thời gian thực. Và để đảm bảo tớnh chớnh xỏc và thứ tự nờn giao thức TCP đƣợc ứng dụng để truyền bỏo hiệu. Giao thức TCP thực hiện cỏc chức năng chớnh nhƣ sau:
- Thiết lập liờn kết: khi hai thực thể TCP muốn trao đổi dữ liệu với nhau cần phải thiết lập một liờn kết logic giữa chỳng. Liờn kết đƣợc thiết lập phải đƣợc bảo đảm về tớnh chớnh xỏc và độ tin cậy, khi liờn kết khụng cũn đủ độ tin cậy thỡ liờn kết sẽ bị huỷ bỏ và thiết lập lại. Khi hoàn tất việc truyền thụng cỏc liờn kết sẽ đƣợc giải phúng. Để thực hiện việc thiết lập liờn kết cỏc modul TCP sử dụng một cơ chế đặc biệt gọi là “bắt tay ba chiều” (three way handshake).[7]
- Bảo đảm tớnh chớnh xỏc: giao thức TCP cung cấp cỏc tham số để kiểm tra cũng nhƣ sửa đú là số thứ tự (sequence number), xỏc nhận (acknowledge) và kiểm lỗi tổng (checksum). Cỏc segment đƣợc đỏnh số hiệu tuần tự do vậy dễ dàng loại bỏ cỏc segment bị thu đỳp cũng nhƣ cỏc segment khụng đƣợc yờu cầu. Cỏc segment sau khi đƣợc thu sẽ đƣợc kiểm tra nhờ cheksum, nếu đƣợc thu đỳng sẽ phỏt lại tớn hiệu ACK khẳng định. Nếu segment bị thu lỗi, segment sẽ bị loại bỏ và nú sẽ đƣợc phỏt lại. Nhờ ACK mà cỏc segment lỗi hay bị mất sẽ đƣợc phỏt lại đảm bảo đƣợc tớnh chớnh xỏc của dữ liệu thu.[7]
- Ngoài ra giao thức TCP cũn cung cấp một số chức năng kiểm tra đƣờng truyền (flow control và congestion control) cho phộp kiểm soỏt và trỏnh đƣợc sự tắc nghẽn trờn mạng.
Hỡnh 10: Cấu trỳc của TCP segment
Cổng nguồn (Source Port - 16bit): số hiệu cổng của trạm nguồn Cổng đớch (Destination Port -16bit): số hiệu cổng của trạm đớch
Số tuần tự (Sequence Number - 32bit): số hiệu của byte đầu tiờn của segment từ khi bit SYN đƣợc thiết lập. Nếu bit SYN đƣợc thiết lập thỡ Sequence Number là số hiệu tuần tự khởi đầu (ISN) và byte dữ liệu đầu tiờn là ISN+1
Số xỏc nhận (Acknowledgment Number - 32bit): số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận. Ngầm ý bỏo nhận tốt cỏc segment mà trạm đớch đó gửi cho trạm nguồn.
Offset số liệu (Data Offset - 4bit): số lƣợng từ trong phần mào đầu của TCP. Chỉ ra vị trớ bắt đầu của vựng dữ liệu.
Dự phũng (Reserved - 6bit): dành để dựng trong tƣơng lai Bit điều khiển (Control bit - 6bit): là cỏc bit điều khiển.
URG: vựng Urgent Pointer (con trỏ khẩn) cú hiệu lực ACK: vựng ACK number (bỏo nhận) cú hiệu lực PSH: chức năng Push
RST: khởi động lại liờn kết
SYN: đồng bộ hoỏ cỏc số hiệu tuần tự FIN: khụng cũn dữ liệu từ trạm nguồn
Cửa sổ ( Window - 16bit): cấp phỏt thẻ bài để kiểm soỏt luồng dữ liệu theo cơ chế cửa sổ. Đõy chớnh là số lƣợng cỏc byte dữ liệu bắt đầu từ byte đƣợc chỉ ra trong vựng ACK number mà trạm nguồn đó sẵn sàng để nhận.
Kiểm lỗi (Checksum - 16bit): mó kiểm soỏt lỗi theo phƣơng phỏp CRC cho toàn bộ segment bao gồm cả phần mào đầu.
Con trỏ khẩn (Urgent Pointer - 16bit): con trỏ này trỏ tới số hiệu tuần tự của byte đi sau dữ liệu khẩn, cho bờn nhận biết đƣợc độ dài của dữ liệu khẩn. Vựng này chỉ cú hiệu lựuc khi bit URG đƣợc thiết lập.
Tuỳ chọn (Option): độ dài thay đổi, khai bỏo cỏc lựa chọn của TCP trong đú cú độ dài tối đa của vựng data trong một segment.
Vựng đệm (Padding): độ dài thay đổi, vựng đệm để đảm bảo cho phần mào đầu luụn kết thỳc ở một mốc 32bit.
Số liệu TCP (TCP data): độ dài thay đổi, chứa dữ liệu của tầng trờn cú độ dài tối đa ngầm định là 536 byte. Giỏ trị này cú thể thay đổi nhờ khai bỏo trong vựng Option.
c) Quản lý số hiệu tuần tự (Sequence number)
Mỗi byte dữ liệu đầu tiờn trong cỏc TCP segment đƣợc gửi đi đều đƣợc đỏnh số tuần tự và đƣợc xỏc nhận lại tại điểm thu. Cỏc TCP segment mang một số acknowledgment number là số sequence number của TCP segment kế tiếp sẽ đƣợc gửi đi theo hƣớng ngƣợc lại bờn phỏt. Khi gửi một TCP segment nú đồng thời chộp một bản sao của segment đú vào hàng chờ phỏt lại và khởi động bộ định thời. Nếu nhận đƣợc ACK từ phớa thu bản sao đú sẽ bị loại ra khỏi hàng. Nếu chƣa nhận đƣợc ACK sau khoảng thời gian timeout thỡ bản sao sẽ đƣợc phỏt lại. Số hiệu tuần tự đƣợc đỏnh số trong giới hạn từ 0 đến 232 -1. Số thứ tự nhỏ nhất đƣợc đỏnh số ở byte đầu tiờn ngay sau header và cỏc byte tiếp theo đƣợc đỏnh số liờn tiếp. Khi một kết nối đƣợc thiết lập, số thứ tự bắt đầu đƣợc cung cấp ISN (Initial Sequence Number) một cỏch ngẫu nhiện gồm 32bit. Cỏc bit thấp đƣợc tăng lần lƣợt sau 4(s do đú chu kỳ khởi tạo ISN đƣợc lặp lại trong chu kỳ là 4,55 giờ. Thời gian tối đa một gúi tồn tại trờn mạng là vài chục phỳt nờn xỏc suất để hai TCP segment cú cựng số thứ tự là khụng xảy ra.[7]
2.2 Giao thức số liệu người sử dụng - UDP
a) Khỏi quỏt về giao thức UDP:
UDP là một trong hai giao thức truyền dữ liệu đƣợc sử dụng trờn cơ sở của giao thức IP. Cỏc đơn vị dữ liệu đƣợc trao đổi là cỏc UDP datagram. Giao thức UDP là
giao thức khụng cú liờn kết và khụng cú cỏc cơ chế bảo đảm độ tin cậy. Giao thức UDP khụng cung cấp cỏc cơ chế kiểm tra, truyền lại cũng nhƣ cỏc cơ chế phản hồi để kiểm soỏt tốc độ luồng dữ liệu. Do đú cỏc UDP datagram cú thể bị mất, thu đỳp hoặc thu khụng đỳng yờu cầu. Tuy vậy UDP cũng cung cấp cỏc cơ chế quản lý số hiệu cổng để phõn biệt giữa nhiều chƣơng trỡnh đƣợc chạy trờn cựng một mỏy tớnh. Hơn nữa cấu trỳc của UDP datagram đơn giản nờn thời gian trễ truyền dẫn cũng nhƣ thời gian xử lý cũng nhanh hơn do đú tốc độ truyền nhanh hơn. Cỏc chƣơng trỡnh dựa vào giao thức UDP thƣờng hoạt động tốt trong phạm vi hẹp (local enviroment) cũn khụng tốt trong phạm vi rộng nhƣ Internet.[7]
b) Cấu trỳc UDP datagram:
Cổng nguồn Cổng đớch Chiều dài Mó kiểm lỗi
Số liệu
Hỡnh 11: Cấu trỳc của UDP datagram
Cổng nguồn (Source Port - 16bit): số hiệu cổng của trạm nguồn Cổng đớch (Destination Port - 16bit): số hiệu cổng của trạm đớch
Chiều dài (Message Length - 16bit): chỉ rừ độ dài phần UDP datagram (tớnh theo byte) bao gồm cả phần data và phần header. Độ dài nhỏ nhất của UDP datagram là 8 byte khi chỉ cú phần header.
Mó kiểm lỗi (Checksum - 16bit): mó kiểm soỏt lỗi.
c) Mào đầu giả của UDP
Trƣờng UDP checksum khụng chỉ đƣợc tớnh riờng cho UDP datagram. Để tớnh toỏn phần checksum UDP xõy dựng một mào đầu giả và mào đầu giả này khụng đƣợc truyền đi cựng UDP datagram. Ban đầu gỏn cho phần checksum bằng khụng sau đú cộng lần lƣợt mỗi lần 16bit vào đú. Phần checksum đƣợc tớnh bao gồm mào đầu giả, mào đầu UDP và datagram. Mục đớch của việc sử dụng mào đầu giả là để xỏc nhận UDP datagram đƣợc truyền đỳng đớch. Chỡa khoỏ để hiểu mào đầu giả là ở chỗ nhận ra đƣợc địa chỉ đớch và giao thức đƣợc sử dụng tại đớch. Cũn UDP mào đầu đơn thuần chỉ chỉ rừ số hiệu cổng đƣợc sử dụng. Để xỏc nhận đớch, bờn phỏt tớnh checksum bao gồm cả phần địa chỉ IP và UDP datagram. Tại đớch cuối cựng, chƣơng trỡnh sẽ xỏc nhận phần checksum sử dụng địa chỉ IP thu đƣợc trong phần mào đầu IP. Nếu đỳng thỡ cú nghĩa là datagram đó tỡm đến đỳng đớch đó định sẵn
bao gồm cả giao thức đƣợc sử dụng. Cấu trỳc mào đầu giả đƣợc trỡnh bày nhƣ hỡnh vẽ:[7]
Địa chỉ IP nguồn Địa chỉ IP đớch
8 số 0 Giao thức Chiều dài UDP
Hỡnh 12: Cấu trỳc của UDP mào đầu giả
Địa chỉ IP nguồn (Source IP address - 32bit): địa chỉ IP của trạm nguồn Địa chỉ IP đớch (Destination IP address - 32bit): địa chỉ IP của trạm đớch 8 số 0 (Zero - 8bit): gồm toàn số 0
Giao thức (Protocol - 8bit): chỉ rừ giao thức đƣợc sử dụng ở trạm đớch (17 dành cho UDP)
Chiều dài UDP (UDP length - 16bit): độ dài của UDP datagram khụng kể mào đầu giả. Để kiểm tra checksum, phớa thu khụi phục tham số này từ mào đầu IP.[7]