1、用户数据在网络层(网际层)中使用IP协议进行封装,然后交付给数据链路层。IP协议提供不可靠无连接的数据报传输服务。
2、使用IP协议封装的数据我们称之为IP数据报。
3、IP数据报的首部:IP数据报的首部由20个字节组成,IP数据报的首部常以32个比特为单位进行描述,下图中的每一行都由32个比特(也就是4个字节)构成,每个小格子称为字段或者域。
IP数据报的首部是由固定的20个字节组成,它包含了必需的控制信息,比如源IP地址、目标IP地址、生存时间(TTL)、协议类型等。这些字段是所有IP数据报必须包含的基本信息,因此被认为是首部的固定部分。
除了固定部分外,IP数据报的首部还可以包含可选的字段,用于支持特定的功能或提供额外的信息。这些可选字段是可变的,并且只有在需要时才会出现在IP数据报中。可选字段的长度是可变的,可以根据需要而增加或减少。
因此,IP数据报的首部由固定部分和可选部分组成,其中固定部分是必需的,而可选部分是可变的并且在需要时才会存在。
版本:占4比特,表示IP协议的版本。
首部长度:
区分服务:占8比特,一般不使用。
总长度:
标识、标志、片偏移:这三个字段共同用于IP数据报的分片(网络层有数据报分片功能),以太网中数据链路层规定MTU=1500字节,如果某个IP数据报总长度超过MTU,需要将源IP数据报分片为多个小的数据报,再将每个小的数据报封装成帧。
标识:占16比特,属于同一个IP数据报的各分片IP数据报应该具有相同的标识。IP软件一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
标志:占3比特,各比特含义如下:
片偏移:
数据报分片举例
生存时间:
协议:
首部校验和:
源IP地址:占32比特,表示发送主机的IP地址。
目的IP地址:占32比特,表示目的主机的IP地址。
IP数据报的发送和转发过程包含两部分:主机发送IP数据报、路由器转发数据报。
假设在网络中由一台路由器连接了两个局域网,每个局域网的网络地址、子网掩码,以及每台主机的IP地址分配如下图所示:
为什么左边网络的网络地址是:192.168.0.0,右边网络的网络地址是192.168.0.128?(因为子网掩码是255.255.255.128)
同一个网络中的主机是可以直接通信的,这叫做直接交付;
而不同网络中间的主机是不能直接通信的,需要通过路由器进行中转,这属于间接交付。
那源主机是如何判断目的主机和自己是否在同一个网络中呢?
主机C将自己的IP地址与子网掩码进行按位与操作得到主机C的网络地址(网络号):192.168.0.0,然后将目的主机的IP地址与自己的子网掩码进行按位与操作得到目的网络地址:192.168.0.128,发现两个网路并不相等,说明主机C和主机F不在同一个网络中,不能进行直接交付,主机C将数据发送给路由器R,由路由器R再转发给主机F,这样就实现了主机F和主机F之间的数据通信(间接交付)。
但是问题又来了:主机C又是如何知道要将数据发送给路由器R呢?我们需要将路由器的接口地址192.168.0.126作为主机C的默认网关,这样当主机C发现目的地址与自己不在同一网络中时则将数据发送给设置好的默认网关(路由器)。因此我们可以将左边网络中所有主机的默认网关填写为192.168.0.126,将右边网络所有主机的默认网关填写为192.168.0.254。
那么路由器又是如何对数据进行转发的呢?假设主机A需要将数据发送给主机D,因为主机A与主机D不在同一个网络,所以主机A将数据发送给路由器R,路由器会进行如下操作: