Today I learned: TCP

nguyen duy
2 min readFeb 16, 2021

Trước khi server có thể gửi dữ liệu về cho client trên các giao thức như HTTP, FTP, SMTP,… thì client phải chủ động thiết lập một kết nối TCP đến server. Quá trình thiết lập này gọi là 3-way handshake

1. 3-way handshake

Gồm 3 bước:

  • Client gửi tín hiệu SYN sang phía server
  • Phía server nhận được tín hiệu SYN và hồi đáp lại client bằng tín hiệu SYN-ACK
  • Client nhận được tín hiệu SYN-ACK bèn hồi đáp lại bằng tín hiệu ACK. Lúc này TCP connection đã được thiết lập

Có thể liên hệ cơ chế 3-way handshake này với việc 2 người A và B gọi điện thoại cho nhau:

  • A nhấc điện thoại lên, bấm số của B (gửi tín hiệu SYN) và chờ
  • B nhấc điện thoại và nói “Alo” (gửi tín hiệu SYN-ACK)
  • A nghe thấy B nói “Alo” bèn hồi đáp lại “Alo B đấy à” (gửi tín hiệu ACK). Lúc này A và B có thể nói chuyện thoải mái

Sau khi client và server trao đổi thông tin xong, kết nối TCP sẽ được đóng lại bằng cơ chế 4-way disconnect

2. 4-way disconnect

Cơ chế này đảm bảo việc ngắt kết nối TCP được xác nhận từ cả 2 phía client và server.

Giả sử client là phía muốn ngắt kết nối trước, lúc này nó sẽ:

  • Gửi tín hiệu FIN sang server
  • Server nhận tín hiệu FIN và gửi trả lại tín hiệu FIN-ACK. Lúc này phía server xác nhận là client muốn ngắt kết nối

Đến lượt server, sau khi gửi tín hiệu FIN-ACK xong, nó lại:

  • Gửi tiếp 1 tín hiệu FIN sang client
  • Client nhận tín hiệu FIN và gửi trả lại tín hiệu FIN-ACK. Lúc này, đến lượt client xác nhận là server muốn ngắt kết nối

--

--