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.

  • 📨 Nắm rõ bốn loại tin nhắn: Gói SYN khởi tạo, gói ACK xác nhận, gói SYN-ACK kết hợp cả hai, và gói FIN kết thúc kết nối TCP.
  • 🔁 Hãy làm theo ba bước sau: Gói tin SYN từ máy khách → gói tin SYN-ACK từ máy chủ → gói tin ACK từ máy khách; phiên giao dịch chỉ được thiết lập sau khi gói tin thứ ba đến.
  • 🔢 Số thứ tự rất quan trọng: Mỗi bên chọn một số thứ tự ban đầu; bên kia xác nhận bằng cách cộng thêm một, điều này giúp duy trì thứ tự của luồng byte.
  • 🚪 Kế hoạch tháo dỡ: Sau khi truyền dữ liệu, TCP đóng kết nối bằng các cặp FIN/ACK để giải phóng socket ở cả hai đầu.
  • 🤖 Sử dụng trí tuệ nhân tạo để phân tích gói dữ liệu: Trợ lý AI giải thích Wireshark Chức năng này giúp bắt giữ các gói tin, đánh dấu các gói ACK bị thiếu và làm nổi bật các gói SYN tràn hoặc các kết nối bán mở.

Bắt tay 3 chiều TCP

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ước TCP

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

Ví dụ thực tế về quá trình bắt tay ba bước TCP

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.

Câu Hỏi Thường Gặp

Hai thông báo không thể chứng minh rằng cả hai bên đã đồng ý về số thứ tự ban đầu và sẵn sàng gửi. Thông báo ACK thứ ba xác nhận rằng gói SYN-ACK của máy chủ đã đến, đảm bảo cả hai điểm cuối đều đạt trạng thái ESTABLISHED trước khi dữ liệu được truyền đi.

SYN là một tín hiệu đơn lẻ mở đầu cuộc hội thoại và đề xuất một số thứ tự ban đầu. SYN-ACK kết hợp tín hiệu SYN với một tín hiệu xác nhận SYN trước đó của bên kia, hoàn tất quá trình đồng bộ hóa trong một gói tin duy nhất.

Tấn công SYN flood làm quá tải máy chủ bằng cách gửi nhiều gói SYN mà không hoàn tất quá trình bắt tay. Các kết nối bán mở làm đầy hàng đợi và chặn người dùng hợp lệ. SYN cookies là biện pháp giảm thiểu tiêu chuẩn.

TCP đóng kết nối bằng quá trình bắt tay bốn chiều gồm các gói tin FIN và ACK. Mỗi chiều được đóng độc lập, cho phép một bên hoàn tất việc gửi dữ liệu ngay cả sau khi bên kia đã đóng phần của mình.

Số thứ tự ban đầu là một giá trị 32 bit được chọn ngẫu nhiên bởi mỗi điểm cuối cho luồng byte của riêng nó. Nó dùng để khởi tạo bộ đếm được sử dụng để phát hiện các phân đoạn bị thiếu hoặc trùng lặp và để chống lại các gói tin giả mạo.

Không. UDP là giao thức không kết nối và gửi các gói dữ liệu mà không cần bắt tay. Điều đó làm cho nó nhanh hơn và nhẹ hơn TCP, nhưng các ứng dụng phải tự xử lý độ tin cậy, thứ tự và kiểm soát tắc nghẽn.

Trợ lý AI chú thích các gói dữ liệu được ghi lại, phân loại lại.transmits và RST, và phát hiện các cuộc tấn công SYN tràn ngập. Chúng dịch Wireshark Dịch thuật toán lọc sang ngôn ngữ dễ hiểu và đề xuất bước chẩn đoán tiếp theo cho các vấn đề kết nối.

Đúng vậy. Trợ lý lập trình AI biến yêu cầu bằng tiếng Anh thông thường thành một câu lệnh lập trình hiệu quả. Python Scapy hoặc kịch bản netcat kích hoạt và kiểm tra quá trình bắt tay ba bước, sau đó giải thích từng dòng để các kỹ sư có thể xem xét trước khi chạy.

Tóm tắt bài viết này với: