Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Maximum Segment Size (MSS)
1.460
byte payload TCP mỗi segment
MTU 1.500 bytes
Header IP 20 bytes
Header TCP 20 bytes
Tổng overhead 40 bytes

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.

Quảng cáo
Sơ đồ gói tin IP hiển thị tiêu đề IP, tiêu đề TCP và phần tải MSS bên trong MTU
MTU là toàn bộ gói tin; MSS là phần dữ liệu còn lại sau khi trừ đi tiêu đề IP và TCP.

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.

Cập nhật lần cuối: