Giao thức UDP (User Datagram Protocol) và TCP (Transmission Control Protocol)

Giao thức UDP (User Datagram Protocol)

UDP là giao thức không liên kết, cung cấp dịch vụ giao vận (Transport Layer) không tin cậy được, sử dụng thay thế cho TCP trong tầng giao vận . Khác với TCP, UDP không có chức năng thiết lập và giải phóng liên kết, không có cơ chế báo nhận (ACK), không sắp xếp tuần tự các đơn vị dữ liệu (datagram) đến và có thể dẫn đến tình trạng mất hoặc trùng dữ liệu mà không hề có thông báo lỗi cho người gửi. Khuôn dạng của UDP datagram được mô tả như sau :

− Số hiệu cổng nguồn (Source Port – 16 bit): số hiệu cổng nơi đã gửi datagram
− Số hiệu cổng đích (Destination Port – 16 bit): số hiệu cổng nơi datagram được chuyển tới
− Độ dài UDP (Length – 16 bit): độ dài tổng cổng kể cả phần header của gói UDP datagram.
− UDP Checksum (16 bit): dùng để kiểm soát lỗi, nếu phát hiện lỗi thì UDP datagram sẽ bị loại bỏ mà không có một thông báo nào trả lại cho trạm gửi. UDP có chế độ gán và quản lý các số hiệu cổng (port number) để định danh duy nhất cho các ứng dụng chạy trên một trạm của mạng. Do có ít chức năng phức tạp nên UDP có xu thế hoạt động nhanh hơn so với TCP.  Nó thường dùng cho các ứng dụng không đòi hỏi độ tin cậy cao trong giao vận.

UDP và IPv4 header

Giao thức TCP (Transmission Control Protocol)

TCP và UDP là  2 giao thức ở tầng giao vận và cùng sử dụng giao thức IP trong tầng mạng. Nhưng không giống như UDP, TCP cung cấp dịch vụ liên kết tin cậy và có liên kết.
Có liên kết ở đây có nghĩa là 2 ứng dụng sử dụng TCP  phải thiết lập liên kết với nhau trước khi trao đổi dữ liệu. Sự tin cậy trong dịch vụ được cung cấp bởi TCP được thể hiện như sau:
− Dữ liệu từ tầng ứng dụng gửi đến được được TCP chia thành các segment có kích thước phù hợp nhất để truyền đi .
− Khi TCP gửi  1 segment, nó duy trì một thời lượng để chờ phúc đáp từ trạm nhận. Nếu trong khoảng thời gian đó phúc đáp không tới được trạm gửi thì segment đó được truyền lại.
− Khi TCP trên trạm nhận nhận dữ liệu từ trạm gửi nó sẽ gửi tới trạm gửi 1 phúc đáp tuy nhiên phúc đáp không được gửi lại ngay lập tức mà thường trễ một khoảng thời gian .
− TCP duy trì giá trị tổng kiểm tra (checksum) trong phần Header của dữ liệu để nhận ra bất kỳ sự thay đổi nào trong quá trình truyền dẫn. Nếu 1 segment bị lỗi thì TCP ở phía trạm nhận sẽ loại bỏ và không phúc đáp lại để trạm gửi truyền lại segment bị lỗi đó.
Giống như IP datagram, TCP segment có thể tới đích một cách không tuần tự. Do vậy TCP ở trạm nhận sẽ sắp xếp lại dữ liệu và sau đó gửi lên tầng ứng dụng đảm bảo tính đúng đắn của dữ liệu. Khi IP datagram  bị trùng lặp TCP tại trạm nhận sẽ loại bỏ dữ liệu trùng lặp đó .
TCP cũng cung cấp khả năng điều khiển luồng. Mỗi đầu của liên kết TCP có vùng đệm (buffer) giới hạn do đó TCP tại trạm nhận chỉ cho phép trạm gửi truyền một lượng dữ liệu nhất định (nhỏ hơn không gian buffer còn lại). Điều này tránh xảy ra trường hợp trạm có tốc độ cao chiếm toàn bộ vùng đệm của trạm có tốc độ chậm hơn.

Các tham số trong khuôn dạng trên có ý nghĩa như sau:

− Source Port (16 bits ) là số hiệu cổng của trạm nguồn .
− Destination Port (16 bits ) là số hiệu cổng trạm đích .
− Sequence Number (32 bits) là số hiệu byte đầu tiên của segment trừ 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 (Initial Sequence Number ) và byte dữ liệu đầu tiên là ISN + 1. Thông qua trường này TCP thực hiện việc quản lý từng byte truyền đi trên một kết nối TCP.
− Acknowledgment Number (32 bits). Số hiệu của segment tiếp theo mà trạm nguồn đang chờ để nhận và ngầm định báo nhận tốt các segment mà trạm đích đã gửi cho trạm nguồn .
− Header Length (4 bits). Số lượng từ (32 bits) trong TCP header, chỉ ra vị trí bắt đầu của vùng dữ liệu vì trường Option có độ dài thay đổi. Header length có giá trị từ 20 đến 60 byte .
− Reserved (6 bits). Dành để dùng trong tương lai .
− Control bits : các bit điều khiển

  • URG : xác đinh vùng con trỏ khẩn  có hiệu lực.
  • ACK : vùng báo nhận ACK Number 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ự (Sequence number).
  • FIN  : không còn dữ liệu từ trạm nguồn.

− Window size (16 bits) : cấp phát thẻ để kiểm soát luồng dữ liệu (cơ chế cửa sổ trượt). Đâ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.
− Checksum (16 bits). Mã kiểm soát lỗi cho toàn bộ segment cả phần header và dữ liệu.
− Urgent Pointer (16 bits). Con trỏ trỏ tới số hiệu tuần tự của byte cuối cùng trong dòng dữ liệu khẩn cho phép 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ực khi bit URG được thiết lập.
− Option (độ dài thay đổi ). Khai báo các tuỳ chọn của TCP trong đó thông thường là kích thước cực đại của 1 segment: MSS (Maximum Segment Size).
− TCP data (độ dài thay đổi ). Chứa dữ liệu của tầng ứng dụng có độ dài ngầm định là 536 byte . Giá trị này có thể điều chỉnh được bằng cách khai báo trong vùng Option.

TCP và IPv4 header.

Chia sẻ nào!

Related posts