Điểm khác biệt khiến TCP khiến nó trở thành giao thức truyền dẫn tin cậy là bởi vì nó cần phải thiết lập kết nối trước khi truyền dữ liệu. Tức là khi bạn muốn gửi tin nhắn từ máy tính A sang máy tính B thì bạn cần phải thiết lập kết nối giữa A và B trước. Quy trình thiết lập kết nối này được gọi là Three-Way HandSake, hay quy trình kết nối 3 bước.
Sở dĩ có tên gọi là Three-way vì quy trình thiết lập kết nối này gồm 3 bước cơ bản sau:
- Bước 1 (SYN): Trong bước này, thiết bị gửi một gói tin TCP có cờ SYN (synchronize) được đặt để bắt đầu quá trình thiết lập kết nối. Gói tin này chứa một số cổng nguồn và một số cổng đích mà máy chủ mong muốn thiết lập kết nối.
- Bước 2 (SYN + ACK): Khi thiết bị đích nhận được gói tin SYN từ thiết bị nguồn, nó sẽ gửi lại một gói tin TCP với cờ SYN và ACK (acknowledgment). Trong gói tin này, nó xác nhận nhận được yêu cầu thiết lập kết nối (SYN), và nó cũng đề xuất một số cổng nguồn mới cho thiết bị nguồn.
- Bước 3 (ACK): Khi thiết bị nguồn nhận được gói tin SYN + ACK từ thiết bị đích, nó sẽ gửi lại một gói tin ACK để xác nhận nhận được thông điệp xác nhận (ACK). Quá trình này hoàn tất việc thiết lập kết nối giữa hai thiết bị, và sau đó, dữ liệu có thể được truyền qua kết nối TCP mới được thiết lập.
Khi dữ liệu truyền dẫn kết thúc, giao thức TCP kết thúc kết nối giữa 2 thiết bị. Do đó, ta có quy trình 4 bước từ lúc thiết lập kết nối đến lúc hoàn thành quá trình truyền dẫn như sau:
- Bước 1: Ứng dụng khách muốn kết thúc kết nối, vì vậy nó gửi một đoạn tin TCP với cờ FIN được đặt thành 1. Điều này là tín hiệu cho máy chủ biết rằng khách hàng muốn kết thúc kết nối.
- Bước 2: Máy chủ xác nhận yêu cầu: Máy chủ nhận được yêu cầu đóng kết nối từ ứng dụng khách và gửi lại một đoạn tin TCP ACK để xác nhận rằng nó đã nhận được yêu cầu đóng kết nối.
- Bước 3: Máy chủ yêu cầu đóng kết nối: Sau khi máy chủ nhận được xác nhận từ khách hàng, nó tự gửi một đoạn tin TCP riêng của mình với cờ FIN được đặt thành 1 đến khách hàng. Điều này là tín hiệu cho khách hàng biết rằng máy chủ muốn đóng kết nối.
- Bước 4: Ứng dụng khách nhận được yêu cầu từ máy chủ và gửi lại một đoạn tin TCP ACK để xác nhận. Sau đó, kết nối được đóng và không còn tồn tại nữa.
Hiểu rõ các cờ (Flag) trong gói tin TCP
- SYN: Cờ SYN được thiết lập thành 1 trong gói tin TCP để bắt đầu quá trình thiết lập kết nối. Khi một thiết bị muốn thiết lập kết nối với một thiết bị khác, nó gửi một gói tin TCP với cờ SYN được đặt thành 1. Cờ này thông báo cho thiết bị đích biết rằng thiết bị gửi muốn bắt đầu quá trình thiết lập kết nối. Trong quá trình three-way handshake, gói tin chứa cờ SYN được gửi từ thiết bị gửi đến thiết bị đích.
- ACK: Cờ ACK được sử dụng để nhận dạng và xác nhận việc nhận được dữ liệu. Trong quá trình three-way handshake, khi thiết bị đích nhận được gói tin chứa cờ SYN từ thiết bị gửi, nó gửi lại một gói tin TCP với cờ SYN và ACK được thiết lập thành 1. Điều này đồng nghĩa với việc nó xác nhận nhận được yêu cầu thiết lập kết nối và cũng thông báo cho thiết bị gửi biết rằng nó sẵn sàng để thiết lập kết nối. Cờ ACK cũng được sử dụng trong các gói tin sau này để xác nhận việc nhận dữ liệu.
- FIN: Cờ FIN được sử dụng để đóng kết nối TCP. Khi một thiết bị muốn đóng kết nối, nó gửi một gói tin TCP với cờ FIN được thiết lập thành 1. Điều này thông báo cho thiết bị đích biết rằng thiết bị gửi muốn kết thúc kết nối. Trong quá trình kết thúc kết nối, cờ FIN được gửi từ cả hai bên để đảm bảo rằng cả hai đều đồng ý đóng kết nối.
Vai trò của giao thức TCP và quy trình bắt tay 3 bước trong tầng Transport Layer
Trong mô hình OSI, tầng Transport đóng vai trò quan trọng trong việc đảm bảo truyền dữ liệu đáng tin cậy và hiệu quả giữa các thiết bị trong mạng. Giao thức TCP là giao thức chính được sử dụng ở tầng Transport để cung cấp các dịch vụ này.
Một phần không thể thiếu của giao thức TCP là quá trình three-way handshake, được thực hiện để thiết lập kết nối giữa hai thiết bị trong mạng trước khi truyền dữ liệu.
Quá trình three-way handshake đảm bảo rằng cả hai thiết bị đều sẵn sàng và hiểu về việc thiết lập kết nối trước khi bắt đầu truyền dữ liệu. Nó cũng đảm bảo rằng các thông số cấu hình đúng được xác định cho kết nối, như cỡ cửa sổ cửa sổ và các tham số khác, để đảm bảo hiệu suất và độ tin cậy của kết nối.
Nhờ vào quá trình bắt tay 3 bước, giao thức TCP có thể đảm bảo việc truyền dữ liệu đáng tin cậy và hiệu quả giữa các thiết bị trong mạng, làm cho nó trở thành một lựa chọn phổ biến và quan trọng trong việc xây dựng các ứng dụng mạng đáng tin cậy.
Mong rằng qua bài viết này, bạn đã hiểu rõ hơn lý do tại sao giao thức TCP lại được chọn làm truyền dẫn dữ liệu đáng tin cậy trong khi giao thức UDP thì không?
Thông Tin Về Tác Giả
Nguyễn Thành Hợp là một chuyên gia về lĩnh vực thiết bị mạng, viễn thông gần 10 năm kinh nghiệm với nhiều chứng chỉ chất lượng như CCNA 200-301, CCNP, CCDA, CCDP,... do Cisco cung cấp. Sở thích cá nhân là khám phá những kiến thức mới mẻ về công nghệ nói chung và đặc biệt là liên quan đến lĩnh vực mạng!