TCP/IP四层模型 —— 关于网络层的那些协议那些事儿

网络层概念

网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它为数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。

简单来说,网络层负责的就是地址管理和路由选择,为每一条数据选择合适的路径。

在TCP/IP协议族中,网络层协议包括IP协议,ICMP协议(Internet互联网控制报文协议)以及IGMP协议(Internet组管理协议)

网络层只有IP协议的话,进行数据传输是不可靠的,因此需要其他协议帮助

  • ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
  • IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。

IP协议格式

TCP/IP四层模型 —— 关于网络层的那些协议那些事儿_第1张图片
如上图:

  • 四位版本号:IPV4/IPV6
  • 四位首部长度:标识IP报头长度 (一个单位代表四字节,最小20字节/最长60字节)
  • 八位服务类型:三位弃用,一位置0,四位TOS字段-最大吞吐量/最小成本/最高可靠性/最小延时
  • 16位数据报长度,限制IP报文最大长度不超过64K-20-8
  • 分片标识:标识当前分片属于哪一个上层报文(传输数据大于MTU会进行数据分片)
  • 三位标志: 一位保留,一位禁止分片位,一位分片标志位(一般置为1 1 0)
  • 13位分片偏移:标识当前分片位于原始报文的什么位置(2^13 --> 8192 ,单位8个字节,因此描述道0-65536)
  • 八位TTL:报文的最长生存周期,每经过路由器-1,默认64/128,防止路由环路
  • 八位上层协议:记录传输层协议类型
  • 16位校验和:校验数据一致性
  • 32位源端/对端IP地址:描述通信的两方
  • 0-40字节选项数据:保存特殊服务信息

MTU与mss关系图:

MTU是链路层最大传输单元,而mss则可以理解为传输层所能传输最大数据大小。
TCP/IP四层模型 —— 关于网络层的那些协议那些事儿_第2张图片
MTU通常默认1500字节,因此在网络层如果数据大于1500字节,就会进行分片
TCP/IP四层模型 —— 关于网络层的那些协议那些事儿_第3张图片
不考虑选项数据,当传输层封装的报文为2500字节时,网络层会取出1480字节+20字节的IP头部进行封装,向链路层传递。

IP地址管理

IP地址在网络层就相当于一个主机的标识,主机在网络中的绝大多数行为,比如请求资源,都要通过IP地址进行操作。

IP地址分为IPV4/IPV6地址。

  • ipv4地址其实是一个uint32_t的整形,也就是说ipv4地址一共不到43亿个。
  • ipv6地址相比于ipv4最显著的区别就是ipv6地址有128位。

IP地址的组成包含两部分,网络号+主机号。

  • 网络号,俗称网段,也就是当前网络的标识。
  • 主机号就是一个主机在网络中的唯一标识。

我们在这里详细解释ipv4地址。

早期网段划分

网段的划分分为早期和当前,早期划分方式不合理,因此人们对其进行改造,衍生出了当前网段的划分。

早期将网络号划分为了五部分:

  • A:用于组建大型网络,高一位0,7位网络号,24位主机号。
    网络号范围:0-127,IP地址范围0.0.0.0-127.255.255.255
  • B:用于组建中型网络,高二位10,14位网络号,16位主机号。
    网络号范围:128.0-191.255,IP地址范围:128.0.0.0-191.255.255.255
  • C:用于组建小型网络,高三位110,21位网络号,八位主机号。
    网络号范围:192.0-233.255,IP地址范围:19.0.0.0-233.255.255.255
  • D:特殊IP地址
  • E:特殊IP地址

无类域间路由(CIDR)

传统划分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地址相与会得到当前网络的网络号,
  • 子网掩码取反可以得到当前网络的主机号范围,

特殊IP地址

二进制下

  • IP地址全0:可以实现当前主机的任意网卡地址,常用于服务端监听地址,绑定监听本地的所有地址。
  • IP地址全1:全网广播地址,常用于DHCP请求地址
    主机号全0:网络号的标识,不可分配
    主机号全1:UDP局域网广播地址,适配当前网络的所有主机,不可分配
    127.0.0.1:本地虚拟回环网卡的IP地址,本地网络测试通信

因此在一个网络中不是所有的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协议和IGMP协议

ICMP协议,英文全称(Internet Control Message Protocol),就是网际控制信息协议。
主要是用于补充IP传输数据报的过程中,发送主机无法确定数据报是否到达目标主机。

ICMP报文分为出错报告报文和查询报文两种。若数据报不能到达目标主机,ICMP出错报告报文可以以回送信息的方式,向源主机发去信息,并不能纠正数据报中的任何出错。除了出错报告,ICMP还可以诊断出某些网络问题,这就是ICMP的查询报文。

IGMP协议,英文全称(Internet Group Management Protocol),网络组管理协议。主要用于建立和管理多播组,对IP分组广播进行控制。

你可能感兴趣的:(网络编程,网络,子网掩码,网络协议,TCP/IP,网络层)