Kích thước của bộ phận trong dây của một khung ethernet là gì? 1518 hay 1542?


22

Theo bảng ở đây , nó nói rằng MTU = 1500 byte và phần tải trọng là 1500 - 42 byte hoặc 1458 byte (<- điều này thực sự sai!). Bây giờ, trên hết bạn phải thêm các tiêu đề IPv4 và UDP, là 28 byte (20 IP + 8 UDP). Điều đó để lại thông điệp ứng dụng tối đa có thể của tôi là 1430 byte! Nhưng bằng cách tìm kiếm con số này trên Internet, tôi thấy 1472 thay thế. Tôi đang làm sai tính toán này ở đây?

Tất cả những gì tôi muốn tìm hiểu là thông điệp ứng dụng tối đa tôi có thể gửi qua dây mà không có nguy cơ bị phân mảnh. Nó chắc chắn không phải 1500 vì bao gồm các tiêu đề khung. Ai đó có thể giúp gì không?


Điều khó hiểu là PAYLOAD thực sự có thể lớn tới 1500 byte và đó là MTU. Vậy bây giờ kích thước trong dây cho tải trọng 1500 là bao nhiêu? Từ bảng đó, nó có thể lớn tới 1542 byte.

Vì vậy, tin nhắn ứng dụng tối đa tôi có thể gửi là 1472 (1500 - 20 (ip) - 8 (udp)) cho mức tối đa trong kích thước dây 1542. Điều đó làm tôi ngạc nhiên khi mọi thứ có thể trở nên phức tạp như vậy khi chúng thực sự đơn giản. Và tôi không biết làm thế nào một người nào đó nghĩ ra số 1518 nếu bảng nói 1542.


Câu hỏi thực sự ở đây là ý của bạn là "trong kích cỡ dây" và bạn sẽ làm gì với thông tin này? Bạn đang cố gắng tính toán các gói mỗi giây?
Mike Pennington

@MikePennington Đang cố gắng xác định thời gian chuyển tiếp trong dây. Với kích thước gói và tốc độ ethernet (10 gigabits), bạn có thể tính toán điều đó.
chrisapotek

Câu trả lời:


26

Sơ đồ trên Wikipedia thật kinh khủng. Hy vọng những gì tôi sắp viết sẽ rõ ràng hơn.


Tải trọng tối đa trong ethernet 802.3 là 1500 byte.
Đây là dữ liệu bạn đang cố gắng gửi qua mạng (và những gì MTU đang đề cập đến).
[payload]<- 1500 byte

Tải trọng được gói gọn trong Khung Ethernet (có thêm Mã nguồn / MAC đích, thẻ Vlan, Độ dài và CRC Checksum. Đây là tổng cộng 22 byte của "nội dung" bổ sung
[SRC+DST+VLAN+LENGTH+[payload]+CRC]<- 1522 Byte

Khung được truyền qua dây - trước khi thẻ ethernet của bạn thực hiện, về cơ bản nó sẽ đứng lên và hét thật to để đảm bảo không có ai khác đang sử dụng dây (CSMA / CD) - Đây là dấu phân cách Lời mở đầuKhung bắt đầu (SFD) - thêm 8 byte, vì vậy bây giờ chúng tôi có:
[Preamble+SFD+[Ethernet Frame]]<- 1530 Byte

Cuối cùng, khi bộ thu phát ethernet hoàn tất việc gửi một khung, nó được yêu cầu bởi 802.3 để truyền 12 byte khoảng lặng ("Khoảng cách khung liên kết") trước khi được phép gửi khung tiếp theo.
[Preamble+SFD+[Ethernet Frame]+Silence]<- 1542 byte được truyền trên dây.


Preamble, SFD và Interframe Gap không được tính là một phần của khung. Chúng là cấu trúc hỗ trợ cho chính giao thức Ethernet.

MTU áp dụng cho tải trọng - nó là đơn vị dữ liệu lớn nhất bạn có thể nhồi nhét vào gói. Do đó, gói ethernet có MTU 1500 byte thực sự sẽ là khung 1522 byte và 1542 byte trên dây (giả sử có thẻ vlan).

Vì vậy, câu trả lời cho câu hỏi của bạn - Gói lớn nhất tôi có thể gửi qua 802.3 ethernet mà không bị phân mảnh là gì? - là 1500 byte dữ liệu tải trọng .

TUY NHIÊN lớp ethernet có thể không phải là yếu tố giới hạn của bạn. Để khám phá xem có thứ gì đó trên đường đang hạn chế MTU nhỏ hơn 1500 byte dữ liệu tải trọng hay không, hãy sử dụng một trong các cách sau:

  • Windows: ping hostname -f -l sizeofdata(kỹ thuật John K đã đề cập)
  • BSD: ping -D -s sizeofdata hostname
  • Linux: ping -M do -s sizeofdata hostname

Giá trị lớn nhất của sizeofdatacông việc đó là MTU (trên đường dẫn cụ thể mà dữ liệu của bạn đang thực hiện).


Tuy nhiên tôi phải loại trừ các tiêu đề IP và UDP khỏi 1500 này, phải không? Vì vậy, độ dài tin nhắn ứng dụng tối đa của tôi là 1472 cho UDP.
chrisapotek

@chrisapotek Đúng - Các tiêu đề IP và UDP (hoặc TCP, GRE, v.v.) là một phần của tải trọng được đưa vào khung ethernet
voretaq7

2
traceroute --mtu {target} trên linux cũng sẽ hiển thị mtu ​​tối đa
Rqomey

chúng ta có nên thêm một chút "thể chất"? vi.wikipedia.org/wiki/8b/10b_encoding
SaveTheRbtz

@SaveTheRbtz oh xin vui lòng không - việc xuống đại diện nhị phân làm tôi đau đầu đủ :-)
voretaq7

2

Nó phụ thuộc vào lượng dữ liệu bạn đặt trong khung. Nếu bạn đặt 1500 byte dữ liệu vào một khung, tổng kích thước khung của bạn sẽ là 1518 byte. Với 1472 byte dữ liệu, bạn sẽ có tổng kích thước khung là 1500 ..

http://en.wikipedia.org/wiki/Ethernet_frame

Điều đó đang được nói, nếu bạn thực sự quan tâm đến việc thử nghiệm phân mảnh, một cách tốt để kiểm tra điều này là với một ping cũ tốt với một vài cờ:

tên máy chủ ping -f -l sizeofdata

Cờ -f sẽ khiến ping bị lỗi nếu gói bị phân mảnh. Chìa khóa để hiểu ở đây là "sizeofdata" là lượng dữ liệu bạn có thể gửi trong tin nhắn mà không bị phân mảnh - vì vậy nếu bạn gửi tải trọng 1500, bạn sẽ bắt đầu phân đoạn khi bạn vượt quá 1500 byte. Giảm nó xuống 1472 mặc dù (1500 - chi phí 18 byte) và bạn sẽ thấy các ping đi qua.


Tôi xin lỗi, 1542 byte cao hơn khung ethernet tiêu chuẩn được xác định bởi IEEE 802.3. Tải trọng ethernet 1500 byte chưa được đánh dấu là 1518 byte (không bao gồm SFD / prable). Khung được gắn thẻ 802.1q là 1522 byte (cùng cảnh báo)
Mike Pennington

Điều đó rất khó hiểu. MTU = 1500 nhưng kích thước khung hình là 1542 ??? Vì vậy, MTU chỉ là tải trọng, nói cách khác, nó là kích thước khung hình của 1542 trừ đi 42 thứ phụ. Đúng không?
chrisapotek

Xin lỗi, tôi đã gõ sai - Tôi vừa cập nhật câu trả lời, nhưng nếu tôi vẫn sai, hãy cho tôi biết - đây là phép toán mà tôi nhớ: S
Univ426

Tôi xin lỗi, tôi phải sai - Tôi nghĩ tôi đã hiểu nhưng tôi rõ ràng đã tắt số, có vẻ như là 1518: Xin lỗi về điều đó
Univ426

Không phải bạn là người bối rối, mà là tất cả mọi người. Vì vậy, câu hỏi của tôi tiếp tục. Sự khác biệt giữa kích thước khung MTU và ethernet là gì? Là tải trọng 1500 hoặc ít hơn?
chrisapotek

0

Đối với khung Ethernet_II cơ bản, kích thước khung là 1518 byte (bật hoặc tắt dây). Điều này được tạo thành từ 6 byte cho mỗi địa chỉ đích và địa chỉ nguồn, 2 byte cho trường loại từ 46 đến 1500 byte cho tải trọng (trong trường hợp của bạn là toàn bộ gói IP với tiêu đề IP và tiêu đề UDP của nó) và 4 byte cho FCS. Ngoài ra, còn có một hạn chế về mức độ nhỏ của một khung hình (64 byte). Đây là lý do tại sao phạm vi là từ 46 byte (thêm địa chỉ này vào hai địa chỉ và loại và FCS và bạn nhận được 64 byte - 46 + 6 + 6 + 2 + 4 = 64).

Nếu khung nằm trên một mạng hỗ trợ nhiều vlans và bạn cần gắn thẻ khung bằng thẻ vlan, thì một trường bổ sung sẽ được thêm vào trước trường loại. Đây là 4 byte. Điều này bây giờ có nghĩa là phạm vi kích thước cho tải trọng có thể giảm 4 byte ở cuối cùng và vẫn có tối thiểu 64 byte. Do đó 42. (Vì vậy 42 + 6 + 6 + 2 + 4 + 4 cho thẻ vlan = 64)

Vì vậy, khi phạm vi được viết 1500-42 không có nghĩa là 1500 trừ 42, điều đó có nghĩa là mọi thứ từ 1500 đến 42 byte đều hợp lệ. Một dây, khung được gắn thẻ này có thể lớn tới 1522 byte (nếu chỉ sử dụng một thẻ hoặc 1526 nếu sử dụng hai thẻ). Không ai trong số này giải thích số 1542.

Để có được số này, bạn cần xem xét cách gửi khung trên Ethernet. Không có đồng hồ trên Ethernet LAN, do đó, một loạt 1 và 0 được gửi bởi bộ phát của khung để đặt đồng hồ. Điều này được gọi là lời mở đầu. Không phải mọi người nghe sẽ 'nghe' tất cả lời mở đầu, nhưng hầu hết nên nghe một phần của nó. Để báo hiệu sự kết thúc của phần mở đầu, một trong 8 bit cuối cùng được gửi được lật để thay vì 10101010, nó trở thành 10101011. byte này được gọi là Bắt đầu phân định khung (SDF). Điều này không hữu ích về mặt kỹ thuật để bắt dây, vì vậy 7 byte của phần mở đầu và SDF 1 byte thường không được tính nhưng nếu chúng là 1518 ban đầu của chúng tôi thì bây giờ sẽ là 1526. Vẫn không phải là 1542 ..

Sau khi một khung được gửi, có một khoảng im lặng được thi hành trên dây được gọi là khoảng cách giữa các khung. Điều này tương đương với việc truyền 12 byte. Điều này cũng không được tính hoặc nắm bắt nhưng nếu nó sẽ đưa chúng ta tới 1538 byte. Cách duy nhất đến bây giờ là đến 1542 từ 1538 là nói rằng khung được gắn thẻ (tức là nó có chứa thẻ kế hoạch 4 byte). Phew, 1542 cuối cùng.

Đó là tất cả trong thuật ngữ. Một khung tiêu chuẩn là 1518 byte trên dây (theo như bất kỳ thiết bị chụp nào có liên quan). Một khung được gắn thẻ (thẻ đơn) là 1522 byte trên dây. Chúng chiếm 1538 byte hoặc 1542 byte không gian truyền trên dây.

Hy vọng rằng sẽ giúp làm rõ ..


-1

không bạn muốn phân mảnh xảy ra, đây là lý do tại sao bạn nhận được gói cần phải phân mảnh nhưng df đặt nó giống như đường cao tốc 2 chiều với toàn bộ bán kết so với đường cao tốc với cả một loạt xe thông minh nhỏ đang đi cùng một bán kết đích mang tải trọng lớn hơn nhưng chậm hơn và có thể tắc nghẽn những chiếc xe nhỏ dễ dàng hơn mang ít hơn nhưng MSS đi nhanh hơn cũng không giống như MTU


1
Câu trả lời này gần như, nhưng không hoàn toàn, hoàn toàn không liên quan đến câu hỏi.
kasperd
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.