Công cụ tính MTU & MSS là gì?
Công cụ này giúp bạn chuyển đổi Maximum Transmission Unit (MTU) của một mạng thành Maximum Segment Size (MSS) mà TCP sử dụng. MTU là kích thước gói tin lớn nhất (tính bằng byte) mà một liên kết mạng có thể truyền tải; còn MSS là lượng dữ liệu TCP thực tế (payload) chứa được trong gói tin đó sau khi đã trừ đi phần header của IP và TCP. Xác định đúng MSS sẽ giúp tránh phân mảnh gói tin, hạn chế việc phải truyền lại và đặc biệt là tránh được hiện tượng "PMTUD black hole" gây treo kết nối.
Cách sử dụng
Nhập giá trị MTU của liên kết (1500 là giá trị mặc định của Ethernet), chọn IPv4 (header cơ bản 20 byte) hoặc IPv6 (header cơ bản 40 byte), và nếu cần có thể thêm số byte cho các tùy chọn IP hoặc tùy chọn TCP như timestamps và SACK (thường là 12 byte). Công cụ sẽ trừ tổng phần overhead của header và trả về kết quả MSS tính bằng byte.
Giải thích công thức
Mối quan hệ ở đây rất đơn giản: $$\text{MSS} = \text{MTU} - \left(20 + \text{IP Options}\right) - \left(20 + \text{TCP Options}\right)$$ Một header TCP tiêu chuẩn có kích thước 20 byte. Header IPv4 tiêu chuẩn cũng là 20 byte, nên công thức rút gọn quen thuộc chính là MSS = MTU − 40. Trong khi đó, IPv6 dùng header cố định 40 byte, cho ra \(\text{MSS} = \text{MTU} - 60\). Mọi tùy chọn được thương lượng thêm sẽ làm tăng kích thước header tương ứng và giảm thêm dung lượng payload.
Ví dụ minh họa
Với Ethernet tiêu chuẩn, MTU là 1500 byte. Trường hợp IPv4: header IP = 20, header TCP = 20, tổng overhead = 40. Vậy $$\text{MSS} = 1500 - 40 = 1460 \text{ byte}$$ Nếu TCP timestamps thêm 12 byte tùy chọn, header TCP sẽ tăng lên 32 và MSS giảm xuống còn $$\text{MSS} = 1500 - 20 - 32 = 1448 \text{ byte}$$
Câu hỏi thường gặp
Vì sao MSS của tôi hay là 1460? Bởi vì hầu hết các liên kết mạng dùng MTU 1500 byte, và 40 byte header IPv4 + TCP tiêu chuẩn để lại đúng 1460 byte cho dữ liệu.
MSS có bao gồm phần header không? Không. MSS chỉ tính riêng kích thước payload của TCP; phần header IP và TCP được cộng thêm vào bên trên để tạo thành gói tin hoàn chỉnh.
Còn PPPoE hoặc tunnel thì sao? Việc đóng gói (encapsulation) sẽ làm giảm MTU hiệu dụng (PPPoE thêm 8 byte, khiến MTU còn 1492; VPN còn thêm nhiều hơn). Hãy nhập giá trị MTU đã giảm này vào công cụ để có được MSS chính xác.