网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它为数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。
简单来说,网络层负责的就是地址管理和路由选择,为每一条数据选择合适的路径。
在TCP/IP协议族中,网络层协议包括IP协议,ICMP协议(Internet互联网控制报文协议)以及IGMP协议(Internet组管理协议)
网络层只有IP协议的话,进行数据传输是不可靠的,因此需要其他协议帮助。
MTU与mss关系图:
MTU是链路层最大传输单元,而mss则可以理解为传输层所能传输最大数据大小。
MTU通常默认1500字节,因此在网络层如果数据大于1500字节,就会进行分片
不考虑选项数据,当传输层封装的报文为2500字节时,网络层会取出1480字节+20字节的IP头部进行封装,向链路层传递。
IP地址在网络层就相当于一个主机的标识,主机在网络中的绝大多数行为,比如请求资源,都要通过IP地址进行操作。
IP地址分为IPV4/IPV6地址。
IP地址的组成包含两部分,网络号+主机号。
我们在这里详细解释ipv4地址。
网段的划分分为早期和当前,早期划分方式不合理,因此人们对其进行改造,衍生出了当前网段的划分。
早期将网络号划分为了五部分:
传统划分IP地址的方法都是8位划分的,要不就是前8位网络ID,后24位主机ID;或前16位网络ID,后16位主机ID,或前24位网络ID,后8位主机ID,这种划分IP地址的方法是固定的.
无类域间路由这种划分IP地址的方法,可以划分这种地址,前10位是网络ID,后22位是主机ID这种ID地址,他并不强行规定哪些位是网络ID,哪些位是主机ID。
因为不规定明确的网络ID和主机ID,于是提出了子网掩码的概念,根据子网掩码配合IP地址可以判断出哪些位是网络ID,哪些位是主机ID。
子网掩码时一个uint32_t的数。由连续的二进制1组成,
比如11111111 11111111 11111111 11000000
二进制下
因此在一个网络中不是所有的IP地址都能划分的,应该减去2.
网络可以分为公网/外网,私网/内网
公网/者外网就是我们常听到互联网。
私网/内网是一个私有网络,仅限于内部通信。
ipv4明显IP地址不够分配, 因此由DHCP动态地址分配和NAT网络地址转换等方式解决。
DHCP动态地址分配简单来说,当前主机IP地址为0.0.0.0,向255.255.255.255,发送一个获取IP地址的请求,当DHCP服务器收到后,就会分配IP地址。
NAT(网络地址转换 )和 NAPT(网络地址端口转换)。
它们都是地址转换,NAPT与NAT的区别在于 NAT是NAT是一对一转换,NAPT是多对一转换。 通俗来说NAT是一个内部地址转换成一个外部地址进行通信的,而NAPT是多个内部地址使用同一地址不同端口转换成外部地址进行通信的。
简单来说:NAPT发送数据的时候会在源地址和目标地址上加上端口号(比如源地址:192.168.1.2:1010,目标地址:200.1.1.2:1020),回来的数据也是一样。
NAPT与NAT的区别在于,NAPT不仅转换IP包中的IP地址,还对IP包中TCP和UDP的Port进行转换。这使得多台私有网主机利用1个NAT公共IP就可以同时和公共网进行通信。(NAPT多了对TCP和UDP的端口号的转换)
IP地址转换和port转换对双方完全透明
路由选择就是路由器根据拿到的数据的IP地址,在路由表中匹配,将数据发往对应的网络。
ICMP协议,英文全称(Internet Control Message Protocol),就是网际控制信息协议。
主要是用于补充IP传输数据报的过程中,发送主机无法确定数据报是否到达目标主机。
ICMP报文分为出错报告报文和查询报文两种。若数据报不能到达目标主机,ICMP出错报告报文可以以回送信息的方式,向源主机发去信息,并不能纠正数据报中的任何出错。除了出错报告,ICMP还可以诊断出某些网络问题,这就是ICMP的查询报文。
IGMP协议,英文全称(Internet Group Management Protocol),网络组管理协议。主要用于建立和管理多播组,对IP分组广播进行控制。