Tìm hiểu về TCP - 1
White

manhdung viết ngày 05/10/2015

Bài viết dựa trên cuốn Addison-Wesley_TCPIP_Illustrated tập 1 và một số tài liệu tham khảo khác.

Một số đặc điểm của TCP:

Oriented connection

Một kết nối duy nhất giữa hai endpoint phải được thực hiện trước khi data thực sự được truyền qua. Quá trình thiết lập kết nối này gọi là bắt tay ba bước.

Reliable

  • TCP được cắt nhỏ thành các segment để tiện vận chuyển. Sau đó mỗi segment này được đóng vào trong một IP datagram để truyền đi. Do nằm trong IP datagram nên thứ tự các segment này có thể sai biệt khi đến đích. TCP segment có cơ chế để sắp xếp lại.

  • TCP discard các duplicate data

  • TCP duy trì checksum trên cả header và data.

  • TCP có các cơ chế sửa lỗi như stop and wait, go back và repeat selected để phát hiện và retransmission.

  • TCP sử dụng flow control để điều khiển tốc độ đẩy data từ client lên server và tốc độ response từ server và client.

Packet data TCP hay UDP đều được đóng vào IP datagram truyền đi theo cùng con đường nhưng vì TCP có cơ chế giám sát và điều khiển nên nó có tính đảm bảo hơn UDP. Tuy vậy, cũng vì chính cơ chế này mà TCP hoạt động chậm hơn UDP.

Cấu trúc TCP

alt text

Tối thiểu một TCP data sẽ lên đến 41 byte.

  • Port number có hai trường src port và destination port.

  • Sequence number: Là thứ tự byte của TCP data. Dựa vào trường giá trị này mà TCP ở đầu nhận biết cách ráp các segment thành một TCP hoàn chỉnh.

  • Ack number: chứa thứ tự byte tiếp theo mà receiver muốn nhận.

  • Vì TCP là full duplex nên mỗi endpoint sẽ có sequence number và ack number của riêng nó.

  • Window size là kích cỡ cửa sổ sử dụng trong sliding window protocol. Đây là cơ chế flow control ngăn client không làm tràn receiving buffer của receiver.

  • Header length là kích cỡ của header. Giá trị trường này cần thiết vì phần options có thể có.

  • Checksum: Checksum được thực hiện trên cả TCP header và data.

  • Mỗi một TCP segemt sẽ có một cờ xác định. Cờ ACK bật khi ack number có gía trị hợp lệ. Cờ PSH bật khi truyền data. Nó cũng là chỉ dấu ra hiệu receiver nên xử lý data này nhanh chóng. Cờ RST để reset kết nối. Cờ SYN để khởi tạo một kết nối. Cờ FIN để đóng kết nối.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

manhdung

44 bài viết.
274 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
82 11
Giới thiệu RabbitMQ là một message broker ( messageoriented middleware) sử dụng giao thức AMQP Advanced Message Queue Protocol (Đây là giao thức ph...
manhdung viết hơn 3 năm trước
82 11
White
48 4
Giả định bạn tiếp nhận một server mới toanh, bạn cần tìm một số thông tin về nó như loại CPU, loại main, loại memory, memory dùng của hãng nào... c...
manhdung viết 2 năm trước
48 4
White
43 12
Trong phần 1, tôi đã giới thiệu về sơ lược rabbitmq, vai trò của rabbitmq trong hệ thống phân tán và hướng dẫn cài đặt. Trong phần này, tôi sẽ trìn...
manhdung viết hơn 3 năm trước
43 12
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
44 bài viết.
274 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!