4.1 网络层功能概述
功能:向上提供简单灵活,无连接的,尽最大努力交付的数据报服务
- 异构网络互联:使用相同的网际协议(Internet protocol,IP),让各网段在逻辑上看起来像是一个整体
- 路由和转发:routine and forward,路由选择,形成路由表,分组转发,从合适的端口发送
-
4.2 IP协议
4.2.1 IPv4
IP数据报的格式:
- IP数据报分片:在以太网中,IP数据报的长度在46~1500字节之间(包含20字节的IP首部),在被封装成MAC帧之后,加上首尾18个字节,则就有了CSMA/CD最小帧长64字节;MTU,为IP数据报的最大长度,也即数据链路层能承载的最大数据量;因此需要对较大的数据进行分片,即对长IP数据报的数据部分单独拿出来,分成更小的IP数据报,偏移为8B的倍数
IP地址的划分:
- 标准IPv4的地址:

- 127开头的地址是环回地址,即发送后会直接从主机的另一个端口传回,不会出现在网络中
- 0.0.0.0表示未知主机,只用作源IP地址,表示只知道目的IP而不知道源IP的数据报
- 全1的IP地址表示整个网络广播,但是因为路由器的隔离,因此只是受限广播地址
- 子网划分:为了增加IP地址的利用率,因此出现的子网划分的机制,即在原先的两级IP变成“网络号,子网号,主机号”三级IP地址
- 子网掩码、逐位与操作,去除主机号,得出网络号
- CIDR:不再使用网络号和主机号的分类等概念,用后面的数字表示网络前缀
- 在进行子网划分时,需要将主机号为全1和全0的去除,因为全0的表示整个子网,全1表示广播,如果有主机选择了这两个IP地址,那么路由器将无法知道到底要发给主机还是发送给全网广播;但是用CIDR就不会有二义性,因为CIDR采用最长前缀匹配,主机的网络前缀更长,因此路由将选择这个主机而不是整个网络
- 划分地址有定长和不定长的区别,定长划分时直接用二进制位数去运算,比如要分成个7网络,则拿3位作为子网号,后面的用作主机号即可,注意这里需要减去全0和全1的两种情况;而不定长划分就有一定技巧了,可以选择如下的按需一一分配,也可以选择00000- 01111 ~ 10000- 10111 ~ 11000- 11111这种方法


- 标准IPv4的地址:
NAT:私有网络与共有网络分割开,由于私有网络的地址是可以重复的,因此这一操作将会大大增加IP地址的利用率;
概念:为了使一个IP分组能够发送给多个目的主机,而不是给每个目的主机发送一个单独的分组,因此采用IP组播技术;组播采用的是D类地址,范围为224~239;采用的是IGMP协议
- 组播IP与以太网MAC帧的映射:01-00-5E,MAC帧的前3个字节不能变,第4个字节的第一个比特为0,后23位比特照搬
IGMP协议(Internet Group Management Protocol):构造以源节点为根节点的组播转发树
4.2.4 移动IP
概念:解决主机IP移动至另一局域网后的数据传输问题;与DHCP动态分配IP不同
过程:在原先的网络中有一个归属代理,现在所处的网络中有一个外部代理,当现在有IP数据报要发送给主机时,数据路由至子网,子网内没有对应的主机号,此时数据包将转交给归属代理,外部代理和归属代理将通过隧道通信,主机与外部代理通信得到数据报
4.2.5 DHCP协议
概念:新加入网络的计算机自动获得IP地址无需手动;应用层协议,使用UDP传送数据
- 过程:C/S服务,客户机先广播请求发现DHCP服务器,DHCP服务器收到后广播提供服务消息,客户机收到后发送请求IP地址消息,服务器收到后确认并分配IP地址
- 这样的C/S模型在应用层中用到,因此是应用层的协议,而且在主机没有IP地址的情况下也没办法仅通过IP层完成服务;至于为什么用UDP,因为TCP需要知道详细的IP地址以建立连接
4.3 路由协议
4.3.1 自治系统与层次路由
- 自治系统(Autonomy System):非同一自治系统的路由器无法直接连通
层次:根据路由选择协议是在自治系统内还是自治系统外,分为内部网关IGP和外部网关EGP
4.3.2 路由选择协议
4.3.2.1 RIP协议及算法
routine information protocol细节:
open shortest path first细节:
border gateway protocol细节:
网络层中的数据依靠IP地址进行传输,但是在向下封装的过程中,路由器仅仅知道下一跳路由器的IP地址是不够的,因为链路层的传输需要知道MAC地址,因此路由转发过程需要实现IP地址到MAC地址的映射
在路由转发过程中,需要增加IP数据报的成功交付的可能,因此需要差错报告和询问机制
4.3.3.2 ARP协议
Address Resolution Protocol细节:
Internet Control Message Protocol细节:


