阅读RFC 894和RFC 1042相关文档
This commit is contained in:
@@ -65,5 +65,43 @@ ipv4地址大小为4字节,其分类如下所示:
|
||||
- IP协议:上层协议可能为`ICMP, IGMP, TCP, UDP`
|
||||
- TCP, UDP: 上层可能为各种应用层序,通过来源ip、来源端口号、目标端口号进行判断
|
||||
|
||||
## 数据链路层
|
||||
TCP/IP中以太网数据报的封装格式在`RFC894`中,IEEE 802网络的ip数据报则是封装在`RFC 1042`中。
|
||||
|
||||
对于Internet主机,必须要求:
|
||||
- 必须能接受和发送RFC 894封装格式的分组
|
||||
- 应该能接受`RFC 894`和`RFC 1042`封装格式的分组
|
||||
- 也许能发送`RFC 1042`封装格式的分组
|
||||
|
||||
RFC 894是最常被使用的封装格式,如下为两种格式的定义。
|
||||
|
||||
### RFC 1042
|
||||
`目的物理地址(6字节)` + `源物理地址(6字节)` + `长度(2字节)` + `802.2 LLC(3字节)` + `802.2 SNAP(5字节)` + `数据(38 ~ 1492字节)` + `CRC(4字节)`
|
||||
|
||||
其中,字段含义如下:
|
||||
- `目的/源地址`:目的/源地址均代表物理地址,长度均为6字节48bit
|
||||
- `长度`: RFC 1042中长度代表`长度`字段后续`不包含CRC`的长度
|
||||
- `CRC`: CRC字段用于帧内字节差错的循环冗余校验,
|
||||
|
||||
### RFC 894
|
||||
`目标物理地址(6字节)` + `源物理地址(6字节)` + `类型(2字节)` + `数据(46 ~ 1500字节)` + `CRC(4字节)`
|
||||
|
||||
其中,字段定义如下:
|
||||
- `类型`:以太网帧中`类型`字段定义了被封装数据的协议类型:
|
||||
- `0800`: 如果类型字段的值为`0800`,那么代表后续数据为IP数据报
|
||||
- `0806`: 如果类型字段值为`0806`,那么代表后续数据为ARP请求/应答
|
||||
- `0835`: 如果字段类型为`0835`,那么代表后续数据为RARP请求/应答
|
||||
|
||||
RFC 894和RFC 1042定义的帧必须有最小长度要求,RFC894要求数据长度至少为46字节,而RFC1042要求数据长度至少为38字节,为了保证被封装数据长度达到最小长度要求,必须`在长度不足时向剩余空间填充pad字节`。
|
||||
|
||||
### 环回接口
|
||||
大多数产品都支持环回接口(loopback interface),允许运行在同一台机器上的程序之间相互进行通信。在A类地址中,`127`开头的地址即是为环回端口预留。根据惯例,大多数系统把`127.0.0.1`分配给这个接口,并命名为localhost。
|
||||
|
||||
> 一个传给loopback interface的ip数据包不能在任何网络上出现。
|
||||
|
||||
### MTU
|
||||
RFC 894和RFC 1042对数据帧长度有限制,数据部分长度最多不能超过1500和1492字节,该限制被称为最大传输单元(MTU)。
|
||||
|
||||
如果ip层需要传输一个大于MTU的数据报,那么该数据报需要被分片为若干片,令每一片都小于MTU限制的大小。
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user