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

  • Nguyên tắc cửa sổ trượt CWD

    🔥 Hiểu tận gốc Cơ Chế Cửa Sổ Trượt của TCP – "Trái tim" điều khiển tốc độ truyền dữ liệu trên Internet!

    Bạn đã bao giờ tự hỏi: Làm sao TCP biết được nên gửi bao nhiêu dữ liệu và khi nào nên dừng lại? Làm sao Internet có thể vừa truyền nhanh, vừa tránh bị "nghẽn cổ chai"? Câu trả lời nằm trong cơ chế Sliding Window – cửa sổ trượt, một trong những “vũ khí bí mật” giúp TCP thông minh và ổn định.
    💡 Cửa sổ trượt là gì?


    Trong một kết nối TCP, máy nhận sẽ thông báo cho máy gửi biết: "Tôi có thể nhận tối đa bao nhiêu byte một lúc mà không bị quá tải". Thông tin này được gói trong trường Window của mỗi segment TCP.

    Cửa sổ này chính là bộ đệm trên máy nhận – một dạng thông báo: “Đừng đẩy dữ liệu quá nhanh, tôi chưa xử lý kịp!”

    📌 Máy gửi sẽ gửi liên tục một lượng dữ liệu tối đa = kích thước cửa sổ mà máy nhận công bố, mà không cần chờ ACK. Khi nhận được ACK, nó sẽ “trượt cửa sổ” và gửi tiếp.
    🧠 Nhưng đó chưa phải tất cả…


    TCP còn thêm một cơ chế rất "có tâm": giảm tốc khi thấy nghẽn mạng!
    Điều này được kiểm soát bởi một biến gọi là CWND – Congestion Window, giúp TCP không chỉ nghe theo máy nhận, mà còn phán đoán độ nghẽn của mạng để điều chỉnh tốc độ gửi.
    🔁 Tóm tắt thuật toán cửa sổ trượt có kiểm soát nghẽn (Congestion Control):

    ▶️ Bước 1: Khởi động chậm (Slow Start)
    • CWND bắt đầu ở mức rất thấp, thường = 1 MSS (Maximum Segment Size).
    • Tốc độ tăng nhanh, theo cấp số nhân: mỗi ACK nhận được sẽ tăng gấp đôi CWND.
      ⏫ Giống như ta tăng ga từ từ để tránh tai nạn khi vừa nhập đường cao tốc.
    🔁 Bước 2: Phát hiện nghẽn (Loss Detected)
    • Nếu mất gói: TCP hiểu rằng mạng đang nghẽn → Giảm CWND xuống một nửa.
    • Đồng thời tính lại một ngưỡng gọi là SSThresh (Slow Start Threshold).
    Bước 3: Tăng lại một cách cẩn trọng
    • Nếu gói đã được truyền lại thành công: tăng CWND trở lại, nhưng không tăng nhanh như ban đầu.
    • Lúc này, TCP dùng Congestion Avoidance: tăng CWND theo tuyến tính.

    📈 Ví dụ thực tế:
    • MTU Ethernet thường = 1500 byte, header IP & TCP khoảng 40 byte → MSS ≈ 1460 byte.
    • Lúc mới kết nối: CWND = 1 MSS = 1460 byte.
    • Sau mỗi lần nhận ACK, CWND có thể tăng lên: 2 MSS, 4 MSS, 8 MSS, v.v.
    • Nếu rớt gói ở CWND = 16 MSS → SSThresh = 8 MSS. Sau đó tăng lại dần dần.

    🖼️ Hình dung qua biểu đồ:


    Trong đồ thị CWND theo thời gian:
    • Lúc đầu là tăng theo dạng đường cong đứng (exponential).
    • Sau đó chuyển sang tăng dốc nhẹ (linear).
    • Khi gói bị rớt → giảm xuống đột ngột → rồi bắt đầu lại từ Slow Start hoặc tiếp tục Avoidance tuỳ theo tình huống.

    🎯 Vì sao quan trọng?


    Cơ chế này giúp TCP truyền dữ liệu hiệu quả mà không gây quá tải cho mạng, nhất là trong môi trường có băng thông thay đổi như mạng di động, Internet quốc tế, hoặc mạng Wi-Fi đông người.

    Đây chính là trái tim của hiệu suất TCP, không có nó, mạng sẽ dễ rơi vào tình trạng:
    • Quá tải, nghẽn liên tục
    • Mất gói triền miên
    • Truyền tải không ổn định, giật lag

    📌 Tips thực chiến CCNA/CCNP/CCIE:
    • Trong lệnh show tcp hoặc Wireshark, bạn có thể thấy trường Window Size được cập nhật sau mỗi ACK.
    • Khi làm lab GNS3/EVE-NG mô phỏng nghẽn mạng, bạn sẽ thấy rõ sự giảm CWND.
    • Từ khóa “Congestion Window”, “Slow Start”, “SSThresh” rất thường gặp trong đề thi CCNP ENCOR, CCIE EI, và các chứng chỉ bảo mật như CEH, CISSP khi nói về DoS/Buffer Overflow.


    🧠 Nhớ nhé: TCP không chỉ là "gửi-gói-nhận-gói" – nó là một hệ sinh thái có trí tuệ nhân tạo nguyên thủy, tự học từ nghẽn và tự điều chỉnh theo thời gian thực. Đó là lý do vì sao nó vẫn được tin dùng hơn 30 năm qua!

    📣 Nếu bạn thấy phần này hay, hãy comment “CWND” và chia sẻ cho bạn bè cùng học nhé. Click image for larger version

Name:	CWD.png
Views:	7
Size:	9.8 KB
ID:	431834
    Đặng Quang Minh, CCIEx2#11897 (Enterprise Infrastructure, Wireless), DEVNET, CCSI#31417

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