主机到网络层
主机到网络层的协议对应于OSI的数据中路层、对于硬件及其驱动层TCP/ IP协议没有进行规范。网络层主要为IP协议和ARP协议提供服务、发送和接收网络数据报。在这一层中主要实现跨网和跨设备的互通。以太网的封包格式为:
目的地址(6字节) + 源地址(6字节) + 包类型(2字节) + 数据(46~1500字节)+ CRC(4字)
以太网用48bit(6字)来示源地址和目的地址(这里的地址指的是硬件地址。如:MAC地址)。
数据大小范围是46个字节到1500个字节,不足的要用空字符填满(如:ARP协议的数据格式为28个字节,为了符合规范,其后18个字节的占位符用于满足最少46个字节的要求)。数据段的长度有一个最大值,以太网为1500,这个特性称为MTU,即最大传输单元。如IP层有一个要传送的数据长度比MTU大,在IP层数据要进行分片,使得每个片都小于MTU。
CRC字段 用于对帧内数据进行校验,保证数据传输的正确性,通常由硬件实现,例如在网卡设备中实现网络数据的CRC校验。
IP协议
IP协议是TCP/IP协议中最重要的协议,它为TCP、UDP、ICMP等协议提供传办理的通路。IP层的主要目的是提供子网的互联,形成较大的网络,使不同的子网之间能传输数据。
IP层主要有如下作用:
- 数据传送:将数据从一个主机传输到另一个主机。
- 寻址:根据子网划分和IP地址,发现正确的目的主机地址。
- 路由选择:选择数据在互联网上的传送路径。
- 数据报文的分段:当传送的数据大于MTU时,将数据进行分段发送和接收并组装。
IP数据的头部长度为20个字节,具体格式如下:
0 15 16 31
版本 (4 位 ) | 头长度 (4 位 ) | 服务类型( 8 位) | 总长度( 16 位) | |
标识( 16 位) | 标识( 3 位) | 片偏移( 13 位) | ||
生存时间 TTL(8 位 ) | 协议类型( 8 位) | 头部校验和( 16 位) | ||
源 IP 地址( 32 位) | ||||
目的 IP 地址( 32 位) | ||||
选项( 32 位) | ||||
数据
|
1、版本
IP协议的版本号,长度为4位,规定网络所实现的IP版本,例如,如果主机为IPv4协议,此字段的值为4,而IPv6协议此字段的值为6。
2、首部长度
首部长度指的是IP字段除去数据和选项的整个头部的数据长度,以32位(即:4个字节)为单元计算。首部长度值为:5 - 15,即IP数据头最大长部为20 - 60个字节。
3、服务类型(TOS)
IP的服务类型字段长度为8位。此字段包含3位的优先权(现在已经忽略),4位的服务类型子字段和1位的保留位(必须置0)。4位的服务类型分别为最小延迟(D)、最大吞吐量(T)、最高可靠性(R)、最小费用(F)。这4位中最多只有一个位置可以为1,如果全为0表示一般服务。
优先权字段3位(该字段目前已被忽略)。它允许传输站点的应用程序设定向IP层发送数据报文的优先权。该字段与D、T、R、F相结合,确定应采取哪种路由方式。
服务类型字段由应用程序进行设置,路由器仅在必要时进行读取,不进行设置。
4、总长度
总长度字段是16位,表示以字节为单位的数据报文长度,长度包含IP 的头部和数据部分。由于数据位段是16位,所以IP数据报文最大可达到65535个字节的长度。
5、标识和偏移
IP每发一份数据报文都会填写一个标识用来表示此数据包,发送完后此值会加1。在IP进行分片的时候,将标识复制的IP 的头部表示数据报文的来源,还要加上分片数据在原数据报文中的偏移地址,便于之后进行组装。利用字段总长度和片偏移可以重新组装IP的数据报文。总长度指出原始包的总长度,片偏移指出该包位于正在组装的IP的报文的偏移量,偏移量从头部开始计算。
6 、生存时间(TTL)
TTL(Time To Live)字段的值表示数据报文最多可以经过的路由器的数量。它指定数据报文的生存时间,源主机发送数据时设置TTL(一般为32或64),经过一个路由器TTL 的值减1。当TTL为0的时候,路由器丢弃此包,并发送一个ICMP报文通知源主机。TTL的出现是由于在包的传递过程中可能会出现错误情况,引起包在Internet的路由器之间不断循环。为了访止此类事件发生,因而引入了TTL限制报文经过路由器的个数。
7 、 协议类型
该字段为8位长度,表演示IP 承载的是什么高级协议。在封包和解包的过程中,TCP/IP协议栈知道将数据发给哪个层的协议做相关的处理,字段的值分别表示各协议类型(ICMP、IGMP、TCP、UDP)。
8 、 校验和
校验和是一个16位长度的数值,使用循环冗余校验生成,其作用是保证IP 帧的完整性。发送端发送数据的时候要计算CRC16校验值,填入此字段; 接收端会计算IP的校验值与此字段进行匹配,如果不匹配,表示此帧发生错误,将丢弃此报文。在路由的过程中,由于每经过一个路由器都要修改TTL的值,所以需要重新计算CRC16,将结果填入此字段中。
9 、 源地址和目的地址
源地址表示发送数据的主机或者设备的IP地址,目的地址为接收数据的主机IP地址。这两个院段均为32位长度。字段的目的用于识别Internet上的主机。
10 、 IP选项
IP选项字段是一个32b的字段,该选项用来识别IP的数据段是正常数据还是用做网络控制的数据。主要有如下定义:
- 安全和处理限制。
- 路径记录:记录所经历路由器的IP地址。
- 宽松源站路由:指定数据报文必须经历的IP地址,可以经过没有指定的IP地址。
- 严格的源站路由:指定数据报文必须经历的IP址址,不能经过没有指定的IP地址。