Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 🔥 [Giải mã TCP: Bắt tay ba bước và quá trình kết thúc kết nối]

    🔥 [Giải mã TCP: Bắt tay ba bước và quá trình kết thúc kết nối]

    Anh em CCNA, CCNP, CCIE chắc hẳn đều đã từng nghe đến "TCP three-way handshake", nhưng đã thực sự hiểu cặn kẽ nó hoạt động như thế nào chưa? Hôm nay mình sẽ bóc tách từng gói tin trong quá trình thiết lập và kết thúc một kết nối TCP, dựa trên hình minh họa chuẩn sách giáo trình. Bài này dành cho cả những bạn mới học và cả các bạn muốn ôn luyện kỹ năng thi chứng chỉ mạng chuyên nghiệp.
    💡 1. Mỗi kết nối TCP là giữa hai socket


    Một kết nối TCP không chỉ là giữa 2 IP — mà chính xác là giữa 2 socket.
    👉 Socket = IP + Port + Transport Protocol (ở đây là TCP)
    Ví dụ thực tế:
    • Máy khách (Client): IP 192.168.1.2, Port 1027
    • Máy chủ (Server): IP 192.168.1.10, Port 80 (dịch vụ Web)

    🤝 2. Thiết lập kết nối – "Three-way handshake"


    Quá trình này đảm bảo rằng cả hai bên sẵn sàng trước khi truyền dữ liệu. Mỗi gói tin trong quá trình bắt tay có chứa sequence number (số thứ tự) và các cờ (flag) như SYN, ACK. 🔹 Bước 1 – Client gửi SYN

    Từ: Client (Port 1027) → Server (Port 80)
    SEQ = 200, SYN = 1


    Gói này thể hiện ý định bắt đầu kết nối. 🔹 Bước 2 – Server gửi SYN-ACK

    Từ: Server (Port 80) → Client (Port 1027)
    SEQ = 1450, ACK = 201, SYN = 1, ACK = 1


    Server đồng ý thiết lập kết nối, phản hồi lại SEQ và ACK. 🔹 Bước 3 – Client gửi ACK

    Từ: Client (Port 1027) → Server (Port 80)
    SEQ = 201, ACK = 1451, ACK = 1


    Client xác nhận lại, vậy là kết nối TCP chính thức được thiết lập.
    🔍 Lưu ý: Sequence number là giá trị khởi tạo tuỳ ý (thường là số ngẫu nhiên), không phải 0, để bảo mật tốt hơn và tránh trùng lặp gói trong kết nối trước.

    🔚 3. Kết thúc kết nối – "Four-way handshake"


    Khi một bên muốn kết thúc truyền dữ liệu, nó sẽ gửi một gói tin có cờ FIN. Mỗi bên sẽ phải đóng kết nối riêng biệt. 🔸 Bước 1 – Client gửi FIN

    Từ: Client (Port 1027) → Server (Port 80)
    FIN = 1, ACK = 1


    Client báo hiệu không còn dữ liệu để gửi nữa. 🔸 Bước 2 – Server gửi ACK

    Từ: Server (Port 80) → Client (Port 1027)
    ACK = 1 🔸 Bước 3 – Server gửi FIN

    Từ: Server (Port 80) → Client (Port 1027)
    FIN = 1, ACK = 1


    Server cũng kết thúc truyền dữ liệu. 🔸 Bước 4 – Client gửi ACK

    Từ: Client (Port 1027) → Server (Port 80)
    ACK = 1


    Sau bước này, kết nối được đóng hoàn toàn.
    🧠 Tips thi chứng chỉ và thực chiến
    • Trong wireshark: Bạn sẽ thấy các gói SYN, SYN-ACK, ACK rất rõ khi lọc tcp.stream eq X.
    • Gỡ rối lỗi TCP connection reset cũng phải hiểu quá trình này.
    • Trong tường lửa hoặc ACL, cổng TCP và các cờ SYN thường được dùng để lọc gói kết nối mới.
    • Tấn công SYN Flood: lợi dụng việc gửi hàng loạt SYN mà không hoàn tất handshake để làm cạn tài nguyên Server.

    📌 Tóm lại


    Việc hiểu rõ quá trình thiết lập và kết thúc một kết nối TCP là nền tảng bắt buộc cho mọi kỹ sư mạng. Không chỉ để học, thi, mà còn để chẩn đoán sự cố, cấu hình firewall hay phát hiện tấn công.

    👉 Nếu bạn đang học CCNA thì đây là chương trình nền móng. Nếu bạn ôn CCNP hoặc CCIE, thì đây là đoạn phải thuộc nằm lòng để làm lab phân tích gói tin hay xử lý sự cố nâng cao.

    Bạn thấy phần nào vẫn còn mơ hồ? Cần mình giải thích bằng Wireshark hay thực hành GNS3/Packet Tracer không? Comment mình hỗ trợ tiếp nhé! 💬
    tcp #ThreeWayHandshake ccna ccnp ccie networking #VnProNetCenter #TCPsocket #NetworkDebug wireshark Click image for larger version

Name:	KetnoiCong.png
Views:	25
Size:	40.3 KB
ID:	431794
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X