Bắt tay 3 chiều TCP (SYN, SYN-ACK,ACK)
⚡ Tóm tắt thông minh
TCP 3-Way Handshake là nghi thức thiết lập kết nối mà mọi phiên TCP đều bắt đầu bằng. Máy khách và máy chủ trao đổi các gói SYN, SYN-ACK và ACK để đồng bộ hóa số thứ tự và xác nhận cả hai phía đã sẵn sàng trước khi gửi bất kỳ byte dữ liệu ứng dụng nào.

Quá trình bắt tay ba bước TCP là gì?
Bắt tay ba chiều TCP là quy trình mà máy khách và máy chủ sử dụng trên một Mạng TCP/IP Mục đích là thiết lập một kết nối đáng tin cậy trước khi bất kỳ dữ liệu ứng dụng nào được trao đổi. Như tên gọi cho thấy, nó bao gồm ba bước trong đó cả hai bên trao đổi các gói đồng bộ hóa (SYN) và xác nhận (ACK) và thống nhất về số thứ tự ban đầu mà họ sẽ sử dụng.
Quá trình bắt tay được thiết kế sao cho cả hai đầu cuối có thể khởi tạo, đàm phán và hủy bỏ các socket TCP một cách đối xứng. Sau khi quá trình bắt tay hoàn tất, kết nối sẽ hoạt động song công – cả hai phía có thể gửi và nhận dữ liệu song song cho đến khi một trong hai bên phát ra tín hiệu FIN để đóng phiên.
Các loại thông báo TCP
Bốn cờ điều khiển xuất hiện lặp đi lặp lại trong quá trình bắt tay và gỡ bỏ.
| Tin nhắn | Mô tả Chi tiết |
|---|---|
| SYN | Khởi tạo kết nối và đồng bộ hóa số thứ tự giữa các thiết bị. |
| ACK | Xác nhận với bên kia rằng đã nhận được đoạn tin nhắn trước đó. |
| ĐỒNG HÀNH-ACK | Một thông điệp kết hợp — một gói SYN từ thiết bị cục bộ cộng với một gói ACK xác nhận gói SYN trước đó của thiết bị đối tác. |
| FIN | Được sử dụng để chấm dứt kết nối một cách nhẹ nhàng. |
Quá trình bắt tay ba chiều TCP
Lưu lượng TCP luôn bắt đầu bằng quá trình bắt tay ba bước. Máy khách khởi xướng cuộc hội thoại bằng cách yêu cầu một phiên kết nối với máy chủ.
Sơ đồ bắt tay ba bên.
- Bước 1 — SYN: Máy khách gửi một phân đoạn với cờ SYN được thiết lập. Nó báo cho máy chủ biết "Tôi muốn bắt đầu giao tiếp" và đề xuất một số thứ tự ban đầu.
- Bước 2 — SYN-ACK: Máy chủ phản hồi bằng một phân đoạn trong đó cả cờ SYN và ACK đều được thiết lập. Cờ ACK xác nhận cờ SYN của máy khách, và cờ SYN đề xuất số thứ tự ban đầu của chính máy chủ.
- Bước 3 — XÁC NHẬN: Máy khách xác nhận gói tin SYN-ACK của máy chủ bằng một gói tin ACK cuối cùng. Kết nối đã được thiết lập và cả hai phía có thể bắt đầu. transmitdữ liệu ứng dụng ting.
Ví dụ trong thế giới thực
Dưới đây là một ví dụ minh họa với các số thứ tự cụ thể.
- Máy chủ X bắt đầu kết nối bằng cách gửi gói tin TCP SYN đến máy chủ. Gói tin này mang một số thứ tự ban đầu ngẫu nhiên — ví dụ:
4321— đó là dấu hiệu bắt đầu của luồng byte mà Máy chủ X sẽ gửi. - Máy chủ nhận gói SYN và trả lời bằng gói SYN-ACK. Số ACK là số thứ tự của Máy chủ X được tăng thêm 1 (
4322), và gói SYN đề xuất số thứ tự ban đầu của chính máy chủ. - Máy chủ X trả lời bằng một ACK cuối cùng có số xác nhận là số thứ tự của máy chủ cộng thêm 1.
Sau khi quá trình trao đổi dữ liệu hoàn tất, TCP sẽ ngắt kết nối bằng chuỗi FIN/ACK bốn chiều để cả hai đầu cuối có thể giải phóng socket một cách gọn gàng.
Tại sao TCP cần cơ chế bắt tay ba bước?
Việc bắt tay không chỉ là một thủ tục hình thức — nó giải quyết ba vấn đề cụ thể phát sinh từ việc truyền tải luồng byte đáng tin cậy:
- Đồng bộ hóa số thứ tự: Cả hai bên đều học được số thứ tự ban đầu của bên kia, đây là thông tin mà TCP sử dụng để phát hiện các phân đoạn bị mất hoặc không theo thứ tự.
- Thỏa thuận trạng thái kết nối: Gói ACK thứ ba xác nhận rằng gói SYN-ACK của máy chủ đã được nhận, vì vậy cả hai bên đều không bắt đầu gửi dữ liệu cho đến khi cả hai đều ở trạng thái sẵn sàng. THÀNH LẬP nhà nước.
- Bảo vệ gói dữ liệu trùng lặp: Các số thứ tự ban đầu ngẫu nhiên và trạng thái bắt tay theo thời gian giúp ngăn chặn việc chấp nhận nhầm các phân đoạn cũ từ phiên trước.
Các sự cố thường gặp với quá trình bắt tay TCP
Quá trình bắt tay diễn ra mạnh mẽ nhưng vẫn có thể bị gián đoạn theo những cách dễ nhận biết. Các kỹ sư mạng thường gặp phải một trong những trường hợp sau:
- Tấn công SYN flood: Một máy khách độc hại gửi hàng nghìn gói SYN mà không phản hồi lại các gói SYN-ACK, làm cạn kiệt bảng kết nối của máy chủ. SYN cookies là biện pháp phòng vệ tiêu chuẩn.
- Các kết nối bán mở: Khi mất tín hiệu ACK thứ ba, kết nối sẽ duy trì ở trạng thái bán mở và cuối cùng sẽ bị ngắt do hết thời gian chờ.
- Sự cố mất gói dữ liệu giữa chừng do tường lửa hoặc NAT: Các thiết bị trung gian có trạng thái (stateful middlebox) bị mất trạng thái có thể làm mất các gói SYN-ACK và khiến máy khách phải thử lại.
- RST đặt lại: Nếu máy chủ không lắng nghe trên cổng được yêu cầu, nó sẽ trả lời gói SYN bằng gói RST, điều này sẽ ngay lập tức chấm dứt nỗ lực kết nối.


