计算机网络 - 网络层

1,403 阅读5分钟

1. 网络层的功能

负责在不同网络之间尽力转发数据包
基于数据包的IP地址进行转发
不负责丢失重传和按需递交
每个数据包都独立的选择路径 在TCP/IP协议中,网络层包含了IP、ARP、ICMP和IGMP协议。

2. ARP协议

用于获取本网段内其他机器的MAC地址。比如局域网网内的PC1(IP地址为IP1)要给PC2(IP地址为IP2)发送数据,如果不知道PC2的MAC地址,PC2就会先在本网段内发一个广播消息"请问IP地址为IP2的机器的MAC地址是多少?"。PC2收到这条广播之后,给PC1发送响应,PC1就可以知道PC2的MAC地址了。

ARP欺骗:PC3回复了询问PC2的MAC地址的广播,之后原本要发给PC2的数据包就会发送给PC3。

3. ICMP协议

我们可以通过ping这个命令去测试到一个主机的网络层连接是否通畅,这个功能就是网络层的ICMP协议支持的。使用TCP/IP协议通讯的主机,都支持其他主机来测试到自己的网络层连接是否通畅。

网络流量不应定都是应用层产生的,ping命令接收网络层产生的流量。

4. IGMP协议

即Internet组播(多播)管理协议。

组播的作用:假如在一个教室里有20人收看语文课程,30人收看数学课程。如果流媒体服务器发送广播消息,那教室中所有的计算机都能收到两种课程,显然是没有必要的。那如果流媒体服务器通过点对点通信给每个同学单独发送感兴趣的课程的数据的话,那教师机的发送流量就非常大,浪费网络资源。而且网卡也可能的带宽也可能无法支持这么大的流量,同学们播放视频时就会不流畅。为了解决这个问题引入了**组播(多播)**通信,20个要收看语文课程的主机绑定一个相同的组播地址,另外30台主机绑定另一个相同的组播地址,教师机只要向两个组播地址发送数据即可。

上面说的场景比较简单,是局域网的内的组播(可以在数据链路层协议实现),如果要实现跨网段的组播,就需要用到网络层的组播管理协议了。

网络层的组播(多播):网关通过IGMP的支持周期性的去轮询本网段内是否还有机器要接收组播IP地址。网关从上游路由器收到一个到本网段的组播包时,如果本网段已经没有机器想接收这个组播IP的数据了,就会直接丢弃掉这些数据。

5. IP协议

IP数据包结构

  • 首部

    • 固定部分20字节,可变部分是长度可变的可选字段。
    • 版本:数据包的版本是IPv4 or IPv6
    • 首部长度:减去20字节后就是首都可变部分的长度。一般都是20字节,可变部分很少会用到。
    • 服务类型:数据包的优先级(提高服务质量QoS)。网络拥塞时网络层优先发送高优先级的数据包。例如即时聊天的数据包比发送邮件的数据包优先级要高。
    • 总长度:数据包的总长度,减去首部长度就是数据部分的长度。
    • 标识、标志、片偏移:网络层从传输层收到的数据段大于下面数据链路层支持的数据帧最大长度时,会分成多个IP包进行传输,叫做分片传输。标识是IP包相当于IP包的序号,一个完整数据包不同分片的IP层标识相同。标志用于指示一个IP包是完整的数据包还是一个分片,是完整数据包的第几个分片。片偏移用于记录分片的数据部分中的第一个字节是完整数据包的数据部分的第几个字节。
    • 生存时间TTL: 每经过一个路由器TTL减一。TTL耗尽之后路由器丢弃数据不会再继续往下转发了。避免网络中出现了路由环路,数据包一直在网络中不会消失,浪费网络流量。
    • 协议:标识传输数据的协议版本,进而确定数据应该由哪个协议层来处理。如果是ICMP、IGMP协议就在网络层处理。如果是TCP、UDP协议就向上递交给传输层。
    • 首部检验和:用于判断IP包在传输过程中首部是否发生了变化。如果变化过则丢弃该IP包。
    • 源地址、目的地址

IP协议 RIP和OSPF等能让路由器自动学习路由表的协议都称为IP协议。

静态路由
需要管理员手动给所有路由器配置路由表,让路由器知道发往没有直连的网络的数据包,下一跳应该发给那个路由器。

动态路由

  • RIP协议
    路由器周期性(30秒)的广播经过自己能去到哪个网段以及去其中的某个网段还要经过几个路由器。通过RIP协议路由器不仅能够学习到路由表,还能选出去某个网段的最佳路径。RIP协议中约定经过路由器较少的路径是更加好的选择。路由表保存的信息是有失效时间的,如果网络中某个路由器发生故障,停止了RIP广播,其他路由器也能够感知到,感知到的路由器也会通过广播把有路由器挂掉的消息通知其他路由器,并把故障路由器从路由表中剔除掉。