Đặt hàng Byte mạng


8

Theo thứ tự byte cuối lớn hoặc thứ tự byte mạng, các bit được truyền theo thứ tự này: bit 0-7 trước, sau đó là bit 8-15, sau đó là 16-23 và bit 24-31 cuối cùng. Điều này có nghĩa là các bit từ phiên bản, nhận dạng, TTL, vv đi trước và sau đó là bit từ các trường tiếp theo?

nhập mô tả hình ảnh ở đây

Câu trả lời:


6

Có một sự nhầm lẫn ở đây. Thứ tự byte mạng không chỉ định cách các bit được truyền qua mạng. Nó chỉ định cách các giá trị được lưu trữ trong các trường nhiều byte.

Ví dụ :

Trường Tổng chiều dài bao gồm hai byte. Nó chỉ định theo byte kích thước của gói.

Hãy nói rằng chúng ta có giá trị 500 cho trường đó. Sử dụng thứ tự mạng Byte, nó sẽ được nhìn thấy qua dây như thế này, được truyền đi từ trái sang phải:

00000001 11110100

Nếu chúng ta sử dụng định dạng endian nhỏ thì nó sẽ được nhìn thấy qua dây như thế này:

11110100 00000001

Sau khi toàn bộ gói được xây dựng, các bit sẽ được gửi bắt đầu bằng bit có địa chỉ thấp nhất của tiêu đề (bit 0), do đó việc truyền sẽ bắt đầu với trường Phiên bản .

Một điểm cuối cùng cần thực hiện ở đây là thứ tự byte mạng, như bạn đã đề cập, thứ tự Big Endian. Điều này được chọn tùy ý để có một định dạng chung cho tất cả các giao thức và triển khai mạng.


1
Vì vậy, trong trường hợp trường đầu tiên sẽ đi trên dây là phiên bản, sau đó là HL, sau đó Nhập, sau đó Tổng chiều dài, sau đó Nhận dạng, v.v. Endian lớn và endian nhỏ chỉ xác định cách các bit được lưu trữ trong các trường tiêu đề.
NHẠC 10/11/2015

Có bạn hiểu rồi :)
dragosb

@MUSR: không, họ xác định thứ tự các byte trong trường nhiều byte được truyền đi.
EML

3

Thật dễ dàng để nghĩ rằng các gói internet đi trên dây theo cách "cổng nối tiếp" rất đơn giản. Trong thực tế không có gì nối tiếp về nó.

Nếu bạn nghĩ về một số chi tiết giao diện, nó có thể làm cho điều này rõ ràng hơn:

  • Xem xét IP cổng song song, thực sự gửi dữ liệu 4 bit tại một thời điểm qua bốn dây. https://en.wikipedia.org/wiki/Parallel_Line_INET_Protocol
  • 100baseTX thực tế xáo trộn các khối 4 bit và gửi chúng dưới dạng 5 bit theo cách riêng nhưng dữ liệu gốc không hiển thị trong đầu ra, vì vậy câu hỏi về thứ tự chúng đi vào không có câu trả lời. https://en.wikipedia.org/wiki/4B5B
  • Khi bạn gửi một gói qua giao diện loopback, nó có thể được sao chép bên trong bus 64 bit của máy tính; hoặc thực sự chỉ bằng cách ánh xạ lại bộ nhớ mà thực sự sẽ là toàn bộ gói song song.

Tất nhiên IP cổng song song không phổ biến, nhưng nó minh họa điểm; hai cái kia có mặt khắp nơi.

Mong rằng sẽ giúp

Jonathan.


2

Các giao thức khác có thể khác nhau, nhưng Ethernet truyền hầu hết octet / byte đầu tiên và trong từng bit có ý nghĩa nhỏ nhất trước tiên . Vì vậy, trường 16 bit được truyền 8-9-10-11-12-13-14-15 - 0-1-2-3-4-5-6-7 (0 = bit có ý nghĩa ít nhất, 15 = nhất bit đáng kể). Kiểm tra các điều khoản của IEEE 802.3 3.1.1, 3.2.6 và 3.3.

(Đây là cho Ethernet nối tiếp hoàn toàn - tùy thuộc vào lớp vật lý, tối đa tám bit có thể được chuyển đồng thời. Ngoài ra, thứ tự bit chỉ dành cho lớp không được mã hóa 1.)

Trước tiên, IPv4 cũng sử dụng octet đáng kể nhất, kiểm tra RFC 791. Tuy nhiên, việc đánh số trong IETF RFC là theo thứ tự truyền với số bit ngược lại với Ethernet : Bit 0 = bit đáng kể nhất = được truyền trước (trong trường hợp không được xác định trước).


Bạn nhầm lẫn octet và thứ tự bit nên là: 7-6-5-4-3-2-1 15-14-13-12-11-10-9-8 octet đầu tiên là 0-7 bit thứ 7 là ít nhất có ý nghĩa.
Gopoi

@Gopoi Nếu bạn đánh số bit theo cách bạn đúng. Tuy nhiên, thông thường "0" là bit có ý nghĩa nhỏ nhất (cuối cùng ở dạng viết của con người) và "15" là bit có ý nghĩa nhất (đầu tiên ở dạng viết của con người) - theo sức mạnh của hai giá trị.
Zac67

Tôi luôn nghĩ về việc đánh số bit là thứ tự truyền vì các tiêu đề RFC được hiển thị như vậy. Bạn càng biết nhiều!
Gopoi
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.