TCP (Transmission Control Protocol)
Xem thửBạn sẽ học được gì?
- So sánh TCP (reliable, connection-oriented) vs UDP (best-effort)
- Giải thích 3-way handshake, flow control và congestion control cơ bản
- Phân biệt segment (L4) vs datagram (L3) vs frame (L2)
TCP (Transmission Control Protocol)
TCP cung cấp kênh byte-stream đáng tin cậy, có thứ tự, song công giữa hai endpoint (RFC 9293). Phù hợp tải trang, file, email — dữ liệu không được phép “thiếu mảnh”.
Three-way handshake
- Client gửi Server: SYN (kèm ISN).
- Server gửi Client: SYN-ACK.
- Client gửi Server: ACK, kết nối chuyển sang ESTABLISHED.
Mục tiêu: đồng bộ sequence number hai chiều, xác nhận hai bên sẵn sàng (chống old duplicate SYN trong mạng chậm).
Độ tin cậy
- Sequence / ACK: xác nhận cumulatively (và SACK nếu dùng RFC 2018).
- Retransmission: theo RTO ước lượng từ RTT (Jacobson/Karels — xem Kurose-Ross).
- Flow control: cửa sổ nhận (rwnd) — sender không làm tràn buffer receiver.
- Congestion control: cwnd; các pha cổ điển slow start, congestion avoidance (AIMD), phản ứng loss (Reno/CUBIC…). Mục tiêu: chia sẻ băng thông công bằng, tránh collapse (xem thêm RFC 5681).
Phân biệt: flow control bảo vệ máy nhận; congestion control bảo vệ mạng.
Kết thúc kết nối
Thường four-way (FIN/ACK mỗi hướng) vì TCP full-duplex: mỗi hướng đóng độc lập. Có trạng thái TIME_WAIT để hấp thụ segment cũ.
Vòng đời kết nối TCP theo trạng thái — cùng bắt tay/kết thúc ở sequence diagram trên, nhưng nhìn theo góc độ state machine phía client:
Đang tải sơ đồ…
Vì sao HTTP dùng TCP (và HTTP/3 đổi hướng)?
Web cần đủ nội dung. HTTP/1.x–2 chạy trên TCP; HTTP/3 chuyển sang QUIC/UDP để giảm head-of-line blocking giữa các stream khi mất gói.
Ghi nhớ nhanh
- Handshake 3 bước mở; FIN hai chiều đóng.
- Seq/ACK + retransmit + rwnd + cwnd = “tin cậy + lịch sự với mạng”.
Trong thực tế
HTTP/2 trên TCP: head-of-line blocking vẫn xảy ra ở tầng transport — latency spike khi packet loss trên WAN. QUIC/HTTP3 chuyển reliability sang UDP + user-space stack.
Đang tải sơ đồ…