一、概述
传输层把数据段传递给网络层,而网络层通过IP协议给数据段添加目标IP地址、源IP地址和其他一些必要信息组成数据包。
其中协议的层次关系:ARP协议为IP协议服务,IP协议又为ICMP协议和IGMP协议服务。
因IP协议是用来使通过互联网连接起来的许多计算机网络能够通信,于是网络层通常又被称为网际层或IP层。

二、IP数据包格式

版本:包括IPv4和IPv6。
首部长度:因为首部包含可变部分,所以首部的长度是不一定的。通常首部的长度为20字节。
区分服务:有些消息是需要即时服务的,比如语音消息,这就需要让消息有一个优先级,先处理语音,再去处理其他次要的信息。这就是区分服务的目的。
总长度:指首部和数据部分的总长度。
标识:MTU(Maximum Transmission Unit,最大传输单元)不超过1500字节,所以当数据包太大时需要给他分片。相同的标识字段的值使分片后的各数据包分片最后能够正确的重装成为原来的数据包。
标志:虽占3位,但只有2位有意义。最低位MF(More Fragment)为1时表示后面还有分片。MF=0表示最后一个分片。标志字段的中间一位为DF(Don't Fragment),只有当DF=0时才允许分片。
片偏移:如下图所示把3800字节的数据包分片,拿每个分片的开始字节除以8后作为偏移量,表示某分片在原数据包中的位置
生存时间(TTL,time-to live):每经过一个路由,TTL减少1。设置TTL的目的是防止数据包在闭环链路上一直存在,占据流量。当TTL为0时丢弃该数据包。
在命令提示符中ping一个地址时能看到TTL,可以通过TTL的值分辨服务器。如,linux:64;windows:128;Unix:255。
协议:指出此数据报携带的数据是使用何种协议,使目的主机的IP层知道应该将数据部分上交给哪个处理过程(TCP:6、UDP:17、IGMP:1)。
首部检验和:只检验首部,不检验数据部分。

三、几个协议
ARP协议(Address Resolution Protocol,地址解析协议)
根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机(目标MAC地址全为F时表示广播),并接收返回消息,以此确定目标的物理地址;
收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
工作过程:
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
PS:
ARP协议也可以用于查找路由器的MAC地址。在CMD中,arp -a显示所有arp缓存,arp -s修改arp缓存。
ARP欺骗:其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机
ICMP协议(Internet Control Message Protocol,网际控制报文协议)
是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
IGMP协议(Internet Group Management Protocol,网际组管理协议)
举个例子:
一个教室有一半的人通过网络上python课程,另一半的人通过网络上java课程。上python课程的电脑绑上一个多播/组播IP地址,java的绑上另一个多播/组播IP地址。
两个讲师分别用两个多播IP地址来广播节目,网络上的python的多播数据包被绑上python多播IP地址的电脑获取,java被绑上java多播IP地址的电脑获取,这就是IGMP协议的作用
四、静态路由和动态路由
路由器的功能:当一个主机A要发送数据给另一个处于不同网段的主机B时,主机A在路由表内容和ARP缓存中找不到主机B的映射时会发送ARP协议先找到路由器的MAC地址,然后把数据包传递给路由器让路由器选择路径到达主机B所处的网段。
静态路由
静态路由是指由用户或网络管理员手工配置的路由信息。主要参数有目标IP地址,目标子网掩码以及下一跳路由器的接口IP地址
动态路由
路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。
RIP协议(Routing Information Protocol,路由信息协议)
(1)路由建立
路由器运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应;网络稳定后,路由器会周期性发送路由更新信息。
(2)距离矢量的计算
RIP度量的单位是跳数,其单位是1,也就是规定每一条链路的成本为1,而不考虑链路的实际带宽、时延等因素,RIP最多允许15跳。
RIP利用度量来表示它和所有已知目的地间的距离。
当一个RIP更新报文到达时,接收方路由器和自己的RIP路由表中的每一项进行比较,并按照距离矢量路由算法对自己的RIP路由表进行修正。
(3)更新
每隔30s路由器会向其邻居广播自己的路由表信息。
缺点:
由于15跳为最大值,RIP只能应用于小规模网络;
根据跳数选择的路由,不一定是最优路由。(如:选择跳数少的路由线路,但跳数多的路由线路使用了光纤,那么跳数多的线路速度会比较快)
浙公网安备 33010602011771号