Tại sao phần mở đầu không được coi là một phần của Tiêu đề Ethernet?


7
  1. Nếu tôi tìm kiếm nơi dữ liệu của tôi bắt đầu trong khung Ethernet, tôi nhận được câu trả lời chung là tiêu đề TCP (20 byte) + tiêu đề IP (20 byte) + tiêu đề Ethernet (SA + DA + Type) tức là 14 byte. Vì vậy, trong ngắn hạn, câu trả lời cho câu hỏi đó trở thành 52-54 byte, dữ liệu bắt đầu trong khung Ethernet nhưng chúng ta có nên thêm 8 byte lời mở đầu trong đó không?

  2. Ngoài ra, tôi đã tìm kiếm về kích thước khung ethernet là 1514 cho khung ethernet. Tại sao chúng ta bỏ qua Preamble và CRC ở đây?

Câu trả lời:


10

Thêm vào câu trả lời của jonathanjo:

Ethernet có các thành phần trong cả hai lớp 1 (vì nó có thể chạy trên các phương tiện khác nhau) và 2 (vì các khung giống nhau trên các phương tiện khác nhau).

Preamble, SoF Delimiter và Inter-pack Gap thực sự ở lớp 1 (đánh thức người nhận, v.v.), trong khi khung (bao gồm tiêu đề, tải trọng và FCS) ở lớp 2.

Dữ liệu trong khung ethernet là tải trọng của khung ethernet. Câu hỏi 1 của bạn giả định rằng mọi giao thức lớp 3 là IPv4 và mọi giao thức lớp 4 là TCP, đó là những giả định xấu. Ethernet không biết hoặc quan tâm đến giao thức lớp 3 nào (IPv4, IPX, IPv6, AppleTalk, v.v.), vì vậy dữ liệu của khung là tải trọng. Ví dụ: tiêu đề gói IPv4 là 20 đến 60 octet, trong khi tiêu đề gói IPv6 luôn là 40 octet. Ethernet không biết điều này, nó chỉ biết rằng nó có trường tải trọng chứ không phải trong trường đó.

Tiêu đề khung ethernet thường là 14 octet, trừ khi bạn có khung được gắn thẻ, thì nó là 18 octet. MTU là kích thước tải trọng tối đa. Ethernet cũng có kích thước khung tối thiểu là 64 octet, bao gồm cả FCS, do đó, tải trọng có thể dao động từ 42 (có thẻ) hoặc 46 (không có thẻ) octet, lên đến kích thước tải tối đa 1500 octet. Điều đó có nghĩa là các khung ethernet (tiêu đề và tải trọng) là từ 60 octet đến 1514 (không có thẻ) hoặc 1518 (có thẻ) octet.

Nếu nơi dữ liệu bắt đầu, bạn có nghĩa là dữ liệu ứng dụng, điều đó thực sự sẽ phụ thuộc vào tất cả các giao thức. Tiêu đề UDP chỉ có 8 octet và tải trọng UDP có thể là dữ liệu ứng dụng hoặc có thể là một datagram cho giao thức lớp ứng dụng có tiêu đề riêng có thể không được tính là dữ liệu ứng dụng. Trong ví dụ về TCP, bạn có thể đang chạy trình duyệt web đến máy chủ web. Bạn có tính HTTP (một giao thức lớp ứng dụng) hoặc HTML là dữ liệu (HTML là dữ liệu cho HTTP) không? Khi bạn tham chiếu đến dữ liệu, nó liên quan đến giao thức mà bạn đang đề cập đến.


Btw, khung được gắn thẻ đôi cũng tồn tại, có tiêu đề 22 octet. Và sau đó có Cầu nối đường trục nhà cung cấp cho phép bạn đệ quy lồng các tiêu đề Ethernet. (Cả hai sẽ khá phổ biến trong các ứng dụng dành cho người tiêu dùng hoặc doanh nghiệp)
user253751

7

Lời mở đầu thực sự là 7 octet, tiếp theo là octet khung, dấu phân cách khung bắt đầu (SFD). Họ chỉ đánh dấu rằng một khung hình đang đến và phục vụ mục đích đồng bộ hóa, chúng không phải là một phần của khung. Giống như khoảng cách giữa các khung hình, không được tính là một phần của khung. Lời mở đầu và SFD không bao giờ đi vào bộ nhớ, và do đó không bao giờ có bất kỳ bù bộ nhớ nào bao gồm 8.

Các khung Ethernet đôi khi được mô tả là 1514 octet vì phần cứng thường tính toán / kiểm tra FCS và CPU không bao giờ nhìn thấy nó hoặc đặt nó vào bộ nhớ: chỉ src, Dest, type, payload. Nhưng khung được xác định để bao gồm FCS, rõ ràng, theo tiêu chuẩn. Khung cơ bản được định nghĩa là có độ dài trường dữ liệu khách hàng tối đa ít nhất 1500 octet, cộng với 14 cộng với 4 FCS = 1520.

Tái bút Đừng quên thẻ 802.1q tùy chọn, 4 octet khác cho các gói trên thân cây; và có một số loại đặc biệt khác.

EDIT Tiêu chuẩn chủ yếu nói về các khung , được xác định để bao gồm FCS (cảm ơn Richard đã bình luận). Nó cũng nói về các gói đi từ đầu đoạn đầu đến cuối các bit mở rộng (đôi khi cần sau FCS, để đảm bảo phát hiện va chạm tốt.) Gói này là tất cả các bit mà phần cứng truyền trên dây. (Việc sử dụng "gói" này có thể gây nhầm lẫn, vì chúng ta thường nói về các gói IP bên trong khung ethernet .)

Cuối cùng, đó chỉ là vấn đề định nghĩa và chúng tôi rất may có thể tra cứu chúng. Nếu bạn không biết, tiêu chuẩn có sẵn miễn phí. Cốt lõi dài 4.000 trang (!), Nhưng hầu hết những thứ như định nghĩa đều rất dễ đọc và hoàn toàn không mơ hồ. Rất khuyến khích để có ít nhất đã xem Phần 3.1.1 Định dạng gói. http://www.ieee802.org/3/


2
Trên thực tế, một thẻ 802.1Q là bốn octet. Vlan là 12 bit, nhưng cũng có các trường khác trong đó.
Ron Maupin

Tất nhiên là bạn đúng; chỉnh sửa câu trả lời với sự điều chỉnh
jonathanjo

1
Nghiêm túc người ta phải tính CRC là một phần của khung: "1.4.248 Khung MAC: Bao gồm Địa chỉ đích, Địa chỉ nguồn, trường Độ dài / Loại, Dữ liệu máy khách MAC, Pad (nếu cần) và Trình tự kiểm tra khung."
richardb

Cảm ơn Richard, bạn cũng dĩ nhiên là đúng! Chỉnh sửa câu trả lời để làm rõ.
jonathanjo

2

Ngoài những điều đã có, những câu trả lời hay:

Lời mở đầu là một chức năng thiết yếu của lớp vật lý. Lưu ý rằng khi bạn tuần tự hóa dữ liệu thành một bit hoặc một luồng ký hiệu, bạn cần cung cấp một số hình thức đồng bộ hóa - trước tiên là các bit / ký hiệu, sau đó đến các từ.

Mẫu biểu tượng mà phần mở đầu tạo ra trên dây (thực sự chỉ có 01010 ... với mã 10BASE-x Manchester) cho phép người nhận điều chỉnh đồng hồ biểu tượng của mình theo tốc độ chính xác của máy phát. Nó sẽ biết có bao nhiêu biểu tượng mà nó vừa nhận được ngay cả khi không có thay đổi nào trên dây. (Tất cả các lớp vật lý cũng cung cấp phương tiện cho đồng bộ hóa trung gian, vì vậy đó là một quá trình liên tục.)

Mẫu SOF đằng sau lời mở đầu đánh dấu sự bắt đầu của từ đầu tiên (hoặc octet / byte). Người nhận kích hoạt bộ đệm của nó và đồng hồ các bit được giải mã vào nó, giải tuần tự hóa các bit đi ra bộ giải mã và truyền nó đến từ bộ đệm cho từ. Không thành vấn đề nếu đó là một byte hoặc một từ 32 bit tại một thời điểm, nhưng điều quan trọng là các ranh giới byte là chính xác.

Vì vậy, phần mở đầu và SOF nhất thiết phải là một phần của cơ chế vận chuyển vật lý, do đó thuộc về lớp vật lý. Từ phối cảnh lớp 2, một khung không yêu cầu điểm đánh dấu bắt đầu - nó chỉ bắt đầu với octet đầu tiên xuất hiện.


1

Ngoài các câu trả lời tuyệt vời của người khác về phân lớp, một số giao thức nằm ngay trên khung ethernet L2, trong đó các giao thức được biết đến nhiều nhất là ARP, RARP, CDP, v.v., liên quan trực tiếp đến liên kết (cũng như tôi được nhắc nhở Zac, các giao thức khác như LLDP và STD của BPDU.)

Điều này rất hiếm, nhưng đôi khi bạn sẽ tìm thấy các ứng dụng gửi dữ liệu của họ trong khung ethernet, mặc dù lý do duy nhất tôi thấy cho điều này là một) các giao thức độc quyền được thiết kế để che khuất hoặc hoàn toàn cục bộ như quản lý giấy phép, b ) thử nghiệm, đặc biệt là chuyển giao thời gian thực hoặc đánh giá timimg giao thức ngăn xếp. Ưu và nhược điểm của việc này nằm ngoài phạm vi của câu trả lời này!

Đây là đầu ra của gói kiểm tra thời gian với "dữ liệu" bắt đầu từ 0x0e.

14:54:29.698140 34:02:86:9f:f2:fc > 00:04:75:c8:28:e5, 802.3, length 64: length 50
    0x0000:  0004 75c8 28e5 3402 869f f2fc 0000 4041  ..u.(.4.......@A
    0x0010:  4243 4445 4647 4849 4a4b 4c4d 4e4f 5051  BCDEFGHIJKLMNOPQ
    0x0020:  5253 5455 5657 5859 5a5b 5c5d 5e5f 6061  RSTUVWXYZ[\]^_`a
    0x0030:  6263 6465 6667 6869 6a6b 6c6d 6e6f 7071  bcdefghijklmnopq

Trên thực tế, có những ứng dụng rất phổ biến nằm trực tiếp trên lớp 2, ví dụ LLDP hoặc STP với các BPDU của nó.
Zac67

Tôi đã gọi các giao thức đó liên quan đến quản lý liên kết, thay vì các ứng dụng và thêm chúng vào câu trả lời của tôi vì chúng tất nhiên là quan trọng. Bạn có biết các ứng dụng phù hợp nằm ngay trên ethernet không?
jonathanjo
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.