Frame Ethernet

Một packet data (gói dữ liệu) trên một link Ethernet được gọi là một packet Ethernet. **Frame Ethernet** là payload (phần tải mang theo) do packet này vận chuyển.

Một frame Ethernet có một preamble và một start frame delimiter (SFD) đi đầu, cả hai đều là một phần của packet Ethernet ở tầng vật lý.  Mỗi frame Ethernet bắt đầu bởi một header Ethernet. Header này chứa địa chỉ MAC nguồn và đích ở hai trường đầu tiên.  Phần ở giữa frame là data payload chứa các header bất kì của các protocol khác (ví dụ, Internet Protocol) được mang trong frame này. Frame kết thúc bởi một frame check sequence (FCS, chuỗi kiểm tra frame). Đây là một cyclic redundancy check 32 bit được dùng để phát hiện bất kì hư hỏng dữ liệu nào trong lúc truyền.

## Cấu trúc

Ethernet truyền dữ liệu với most-significant octet (byte) đầu tiên; tuy nhiên bên trong mỗi octet, least-significant bit lại được truyền đầu tiên.

Cấu trúc bên trong của một frame Ethernet frame được xác định trong IEEE 802.3.   Bảng dưới đây cho thấy một packet Ethernet hoàn thiện và frame bên trong nó, như được truyền, trong đó kích thước payload MTU (đơn vị truyền cực đại) là 1500 octet. Một số implementation của Gigabit Ethernet và các phương án Ethernet tốc độ cao hơn hỗ trợ các frame lớn hơn (các jumbo frame).

Tag 802.1Q (tùy chọn) chiếm không gian phụ thêm bên trong frame. Các kích thước trường cho tùy chọn này được chỉ ra trong dấu ngoặc đơn ở bảng phía trên. IEEE 802.1ad (Q-in-Q) cho phép có nhiều tag trong một frame. Tùy chọn này không được minh họa ở đây.

### Packet Ethernet – tầng vật lý
#### Preamble và start frame delimiter

Một packet Ethernet bắt đầu bởi một preamble dài 7 octet và một *start frame delimiter* (SFD) dài một octet.

Preamble chứa một pattern bit dài 56-bit (bảy-byte) gồm các bit 1 và 0 xen kẽ nhau, cho phép các thiết bị trên mạng dễ dàng đồng bộ clock receiver của chúng, cung cấp đồng bộ hóa ở mức bit. Nó được theo sau bởi SFD để cung cấp đồng bộ hóa ở mức byte và để đánh dấu một frame mới đang đến. Đối với các phương án Ethernet truyền các bit tuần tự thay vì các symbol lớn hơn, pattern bit trên-đường-dây (không được mã hóa) dành cho preamble cùng với phần SFD của frame là 10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011; bởi vì các bit được truyền với thứ tự từ trái sang phải, biểu diễn hexadecimal tương ứng là 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAB.

SFD là giá trị 8-bit (một byte) đánh dấu kết thúc của preamble, trường đầu tiên của một packet Ethernet, và chỉ ra điểm bắt đầu của một frame Ethernet.  SFD được thiết kế để phá vỡ pattern bit của preamble và đánh tín hiệu sự bắt đầu của một frame thực sự.  Địa chỉ MAC của đích theo ngay sau SFD. Đây là trường đầu tiên của một frame Ethernet. SFD có giá trị 171 (10101011 ở dạng nhị phân), được truyền với least-significant bit đi trước tiên như 213 (0xD5 hexadecimal).

Physical layer transceiver circuitry (viết tắt: PHY) cần phải kết nối Ethernet MAC với medium vật lý. Kết nối giữa một PHY và MAC độc lập với medium vật lý và sử dụng một bus từ họ giao diện độc lập media (MII, GMII, RGMII, SGMII, XGMII). Các chip transceiver Fast Ethernet sử dụng bus MII, một bus rộng 4-bit (một nibble), do đó preamble được biểu diễn bởi 14 lần 0x5, và SFD là 0x5 0xD (như các nibble). Các chip transceiver Gigabit Ethernet sử dụng bus GMII, một giao diện rộng 8-bit, vì thế chuỗi preamble theo sau bởi SFD sẽ là 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAA 0xAB (như các byte).

### Frame – Tầng liên kết dữ liệu
#### Header
Header gồm có địa chỉ MAC nguồn và đích (mỗi địa chỉ dài 6 octet), trường EtherType và một tag IEEE 802.1Q tùy chọn.

Trường EtherType dài hai octet và có thể dùng cho nhiều mục đích khác nhau. Giá trị nhỏ hơn hoặc bằng 1500 có nghĩa là nó được dùng để chỉ kích thước của payload bằng octet, còn giá trị lớn hơn hoặc bằng 1536 có nghĩa là nó được dùng để chỉ kiểu EtherType, xác định procol nào được đóng gói trong payload của frame. Khi được dùng với tư cách là EtherType, chiều dài của frame được xác định bởi vị trí của interpacket gap và frame check sequence (FCS) hợp lệ.

Tag IEEE 802.1Q, nếu có, là một trường dài 4-octet chỉ thành viên mạng virtual LAN (VLAN) và quyền ưu tiên IEEE 802.1p.

#### Payload
Payload minimum là 42 octet khi có một tag 802.1Q và 46 octet khi không có tag. Payload maximum là 1500 octet. Các jumbo frame (frame ngoại cỡ) phi tiêu chuẩn cho phép kích thước payload lớn hơn kích thước maximum.

#### Frame check sequence
Frame check sequence (FCS, chuỗi kiểm tra frame) là một cyclic redundancy check (CRC) dài 4 octet cho phép phát hiện dữ liệu bị hỏng bên trong toàn bộ frame khi nhận ở phía receiver.  Giá trị FCS được tính như một hàm số của các trường frame MAC được bảo vệ: địa chỉ nguồn, địa chỉ đích, trường độ dài/kiểu, dữ liệu client MAC và padding (có nghĩa là, tất cả các trường trừ FCS).

Chạy thuật toán CRC trên dữ liệu frame đã nhận được bao gồm mã CRC sẽ luôn có kết quả là một giá trị 0 nếu như dữ liệu nhận được không có lỗi, bởi vì CRC là số dư của dữ liệu chia bởi đa thức.  Tuy nhiên, kĩ thuật này có thể có kết quả là các "false negative" (phủ định sai), trong đó dữ liệu với các trailing zero cũng sẽ có kết quả trong số dư cùng zero.  Để tránh trường hợp này, FCS được complement (bổ sung) (dự trữ cho mỗi bit) bởi sender trước khi nó gắn vào đuôi của dữ liệu payload.  Nếu làm theo cách này thì thuật toán sẽ luôn luôn có kết quả là một *magic number* (số huyền bí) hoặc *CRC32 residue* của 0xC704DD7B khi dữ liệu được nhận một cách chính xác.  Điều này cho phép nhận frame và xác nhận FCS mà không cần biết trường FCS thực sự bắt đầu ở đâu.

### End of frame – tầng vật lý
*End of a frame* (kết thúc frame) thường được biểu thị bằng một symbol (kí hiệu) end-of-data-stream ở tầng vật lý hoặc bởi sự mất mát của tín hiệu mang (carrier signal); một ví dụ là 10BASE-T, trong đó station nhận phát hiện được kết thúc của một frame đã gửi.  Sau đó tầng vật lý sử dụng một symbol *end of data* rõ ràng hoặc một symbol/chuỗi *end of stream*  để tránh sự mơ hồ về nghĩa, đặc biệt khi carrier được gửi liên tục giữa các frame; một ví dụ là Gigabit Ethernet với sơ đồ mã (encoding scheme) 8b/10b, các sơ đồ này sử dụng các symbol đặc biệt được truyền đi trước và sau khi một frame được truyền.
### Interpacket gap – tầng vật lý
Interpacket gap là khoảng thời gian nhàn rỗi giữa hai packet. Sau khi một packet đã được gửi đi, các transmitter cần phải truyền ít nhất 96 bit (12 octet) của idle line state (trạng thái dây rảnh) trước khi truyền packet tiếp theo.

## Các kiểu frame Ethernet

Có nhiều kiểu frame Ethernet:

* Frame Ethernet II, hoặc Ethernet Version 2, hoặc frame DIX là một kiểu thông dụng nhất hiện nay vì nó thường được dùng trực tiếp bởi Internet Protocol.
* Frame biến hóa phi tiêu chuẩn IEEE 802.3 thô của công ty Novell
* Frame Logical Link Control (LLC) IEEE 802.2 
* Frame Subnetwork Access Protocol (SNAP) IEEE 802.2

Các kiểu frame khác nhau có các định dạng và các giá trị MTU khác nhau, nhưng có thể cùng tồn tại trên cùng một medium vật lý.  Sự khác biệt giữa các kiểu frame có thể dựa trên bảng bên phải.

Ngoài ra, bốn loại frame Ethernet có thể chứa một tag IEEE 802.1Q (tùy chọn) để xác định nó thuộc về mạng VLAN nào và độ ưu tiên của nó (quality of service). Việc đóng gói này được định nghĩa trong specification IEEE 802.3ac và tăng frame maximum frame lên 4 octet.

Tag IEEE 802.1Q, nếu có, nằm giữa các trường Source Address (Địa chỉ Nguồn) và EtherType hoặc Length (Chiều dài). Hai octet đầu tiên của tag là giá trị Tag Protocol Identifier (TPID) bằng 0x8100. Cái này nằm ở cùng vị trí với trường EtherType/Length trong các frame không có tag, vì thế giá trị EtherType 0x8100 nghĩa là frame có tag, và EtherType/Length chính xác nằm sau Q-tag. TPID được theo bởi hai octet chứa Tag Control Information (TCI) ((quality of service) ưu tiên IEEE 802.1p và VLAN id). Q-tag được theo bởi phần còn lại của frame, sử dụng một trong số kiểu được mô tả ở trên.

### Ethernet II
**Ethernet II framing** (còn được gọi là **DIX Ethernet**, đặt theo tên của DEC, Intel và Xerox, những công ty chủ chốt tham gia quá trình thiết kế nó), định nghĩa trường EtherType dài hai octet trong một frame Ethernet, đứng trước các địa chỉ MAC đích và nguồn, định nghĩa một upper layer protocol (giao thức tầng trên) đóng gói dữ liệu của frame. Ví dụ, giá trị EtherType 0x0800 báo hiệu frame chứa một datagram IPv4. Tương tự, giá trị EtherType 0x0806 biểu thị một frame ARP, 0x8100 biểu thị một frame IEEE 802.1Q và 0x86DD biểu thị một frame IPv6.

Khi tiêu chuẩn được phát triển trong công nghiệp này thông qua quá trình tiêu chuẩn hóa chính thức của IEEE, trường EtherType bị đổi thành một trường chiều dài (dữ liệu) trong tiêu chuẩn 802.3 mới. Vì bên nhận vẫn cần biết cách thuyết giải frame, tiêu chuẩn yêu cầu một header IEEE 802.2 để theo dõi chiều dài và xác định kiểu.  Nhiều năm sau đó, tiêu chuẩn 802.3x-1997, và các phiên bản sau đó của tiêu chuẩn 802.3, chính thức phê chuẩn cả hai kiểu framing.  Trong thực tế, cả hai định dạng đều được sử dụng rộng rãi, với Ethernet framing nguyên thủy là thông dụng nhất trong các mạng local area network Ethernet, nhờ sự đơn giản và overhead thấp hơn.

Để một số frame sử dụng framing Ethernet v2 và một số frame sử dụng phiên bản nguyên thủy của framing 802.3 được phép sử dụng trong cùng segment Ethernet, các giá trị EtherType phải lớn hơn hoặc bằng 1536 (0x0600).  Giá trị đó được chọn bởi vì độ dài lớn nhất của trường payload của một frame Ethernet 802.3 là 1500 octet (0x05DC).  Vì vậy, nếu giá trị của trường lớn hơn hoặc bằng 1536, frame sẽ là một frame Ethernet v2, với trường đó là một trường kiểu.  Nếu nó nhỏ hơn hoặc bằng 1500, nó sẽ là một frame IEEE 802.3, với trường đó là một trường độ dài.  Các giá trị từ 1500 đến 1536 không được định nghĩa. Quy ước này cho phép phần mềm xác định khi nào thì một frame là frame Ethernet II hoặc là một frame IEEE 802.3, cho phép cùng tồn tại cả hai tiêu chuẩn trên cùng một medium vật lý.

### IEEE 802.3 thô của công ty Novell
Định dạng frame 802.3 "thô" của công ty Novell dựa trên công trình IEEE 802.3 ban đầu. Novell đã dùng cái này như một điểm bắt đầu để tạo ra implementation đầu tiên của IPX Network Protocol over Ethernet của chính họ. Họ không dùng bất kì header LLC nào nhưng đã khởi đầu packet IPX trực tiếp sau trường độ dài. Điều này không tương thích với tiêu chuẩn IEEE 802.3, nhưng vì IPX luôn có FF là hai octet đầu tiên (trong khi trong IEEE 802.2 LLC pattern đó có thể về mặt lí thuyết nhưng gần như không có khả năng), trong thực tiễn điều này thường cùng tồn tại trên dây với các implementation Ethernet khác, với ngoại lệ nổi bật là một số dạng ban đầu của DECnet có thể gây nhầm lẫn.

Novell NetWare đã sử dụng loại frame này mặc định cho đến giữa thập niên 1990, và vì NetWare lúc đó rất phổ biến, trong khi IP thì không, tại một thời điểm nào đó, phần lớn Ethernet traffic của thế giới chạy trên 802.3 "thô" mang IPX. Từ NetWare 4.10, NetWare mặc định đến IEEE 802.2 với LLC (NetWare Frame Type Ethernet_802.2) khi dùngIPX.

### IEEE 802.2 LLC

Một số protocol thiết kế cho OSI stack, hoạt động trực tiếp trên đỉnh của việc đóng gói LLC IEEE 802.2, cung cấp cả hai dịch vụ mạng hướng kết nối và không kết nối.

Việc đóng gói LLC IEEE 802.2 không phổ biến rộng rãi trong các mạng thông thường hiện nay, với ngoại lệ là việc cài đặt NetWare doanh nghiệp lớn chưa được chuyển lên NetWare over IP. Trong quá khứ, nhiều mạng doanh nghiệp đã sử dụng IEEE 802.2 để hỗ trợ các cầu nối dịch trong suốt giữa Ethernet và các mạng Token Ring hoặc FDDI.

Có một tiêu chuẩn Internet cho việc đóng gói IPv4 traffic trong các frame SAP/SNAP LLC IEEE 802.2. Nó gần như chưa bao giờ được implement trên Ethernet, mặc dù nó được sử dụng trên FDDI, Token Ring, IEEE 802.11  và các mạng LAN IEEE 802 khác. IPv6 có thể được gửi trên Ethernet dùng SAP/SNAP LLC IEEE 802.2, nhưng một lần nữa gần như không bao giờ được sử dụng.

### IEEE 802.2 SNAP

Bằng cách kiểm tra header LLC 802.2, có thể xác định có hay không một header SNAP theo sau nó. Header LLC gồm có hai trường địa chỉ 8-bit phụ, được gọi là các *service access point* (SAP, điểm truy cập dịch vụ) trong thuật ngữ học mô hình OSI; khi cả hai SAP nguồn và đích được gán giá trị 0xAA, dịch vụ SNAP sẽ được yêu cầu. Header SNAP cho phép các giá trị EtherType được sử dụng với tất cả các protocol IEEE 802, cũng như hỗ trợ các không gian ID protocol riêng. Trong IEEE 802.3x-1997, tiêu chuẩn IEEE Ethernet được thay đổi để cho phép trường 16 bit sau các địa chỉ MAC được sử dụng như là trường độ dài hoặc trường kiểu một cách tường minh.

Mac OS sử dụng việc đóng gói SAP/SNAP LLC IEEE 802.2 cho bộ protocol AppleTalk v2 trên Ethernet ("EtherTalk").

## Throughput cực đại
Ta có thể tính Chi phí của protocol (protocol overhead) cho Ethernet dưới dạng tỉ lệ phần trăm (kích thước packet bao gồm InterPacket Grap)
:\text{Chi phí của protocol} = \frac{\text{Kích thước packet} - \text{Kích thước payload}}{\text{Kích thước packet}}
Ta có thể tính *hiệu suất của protocol* (protocol efficiency) cho Ethernet
:\text{Hiệu suất của protocol} = \frac{\text{Kích thước payload}}{\text{Kích thước packet}}
Hiệu suất lớn nhất đạt được với kích thước payload cực đại được phép là:
:\frac{1500}{1538} = 97.53\%
cho các frame không có tag, vì kích thước packet cực đại là 1500 octet cho payload + 8 octet cho preamble + 14 octet cho header + 4 octet cho trailer + interpacket gap nhỏ nhất tương ứng là 12 octet = 1538 octet. Hiệu suất cực đại là:
:\frac{1500}{1542} = 97.28\%
khi tagging 802.1Q VLAN được sử dụng.

Throughput (lưu tốc, lưu lượng) có thể được tính từ hiệu suất như sau:
:\text{Throughput} = \text{Hiệu suất} \times \text{bit rate net}\,\!,
trong đó bit rate net tầng vật lí (bit rate dây dẫn) phụ thuộc vào tiêu chuẩn tầng vật lý Ethernet, và có thể là 10 Mbit/s, 100 Mbit/s, 1 Gbit/s hoặc 10 Gbit/s. Do đó, throughput cực đại cho 100BASE-TX Ethernet là 97.53 Mbit/s nếu không có 802.1Q, và 97.28 Mbit/s với 802.1Q.

Channel utilization là một khái niệm thường bị nhầm lẫn với hiệu suất của protocol. Nó chỉ xem xét việc sử dụng kênh mà không để ý đến bản chất của dữ liệu được gửi đi – cả payload và overhead. Ở tầng vật lý, kênh liên kết và thiết bị không biết được sự khác nhau giữa dữ liệu và các frame điều khiển. Ta có thể tính channel utilization như sau:

:\text{Channel utilization} = \frac{\text{Thời gian đã mất cho việc truyền dữ liệu}}{\text{Tổng thời gian}}

Tổng thời gian có tính đến round trip time (thời gian chuyến khứ hồi) dọc theo kênh truyền, thời gian xử lý ở các host và thời gian truyền dữ liệu và các acknowledgement. Thời gian mất cho việc truyền dữ liệu bao gồm cả dữ liệu và các acknowledgement.

## Frame runt
Một frame runt là một frame Ethernet có chiều dài ngắn hơn chiều dài minimum 64 octet của chuẩn IEEE 802.3. Các frame runt thường do xung đột; các nguyên nhân khác có thể là card mạng bị hỏng, tràn bộ đệm hoặc lỗi phần mềm.

## Chú thích

## Tham khảo