IP协议
之前介绍了传输层的重点协议,TCP和UDP协议,以下将介绍网络层的重点协议IP协议。
1. IP协议的报文格式
IP地址 本质上是一个32位整数,在机器中按4个字节存储。现实中通常将其用点分十进制表示,比如:192.168.1.1三个点将32位整数分为四部分,每部分一个字节,取值为0-255。
IP协议的报文格式如图所示:
-
4位版本号:IP协议的版本号,目前有IPv4和IPv6两个版本。
-
4位首部长度:IP的报头和TCP类似,都是长度可变的,带有选项。4位的取值范围为0-15,它的单位为4字节。
-
8位TOS:其中4位有效,分别表示最小延时,最大吞吐量,最高可靠性,最小成本。表示某一时刻的状态,同一时刻只能取一种状态。
-
16位总长度:表示最大长度64k,单个IP数据报最大长度不能超过64k。如果超过长度可以采用 分包 和 组包 的方法。
-
以下三个字段就是用来分包组包的,多个被拆分的IP数据报的16位标识相同,13位偏移确定拆分的数据报顺序,三位标志位有一位有效,为0时表示不是最后一个数据报,1时表示为最后一个数据报。
注意: IP协议数据报的分包只针对接收到的数据拆分,举例如果是一个TCP数据那么我们只针对数据部分拆分不拆分TCP报头。 -
8位生存空间:表示一个IP数据报在网络上还能存在多久,单位为转发次数,也就是最多能转发多少次。 如果出现数据包中的IP地址是永远到达不了的,此时不断转发会占用过多的硬件资源,所以设置了一个最大的转发次数。
-
8位协议:用于标识传输层使用的协议。
-
16位首部校验和:用来校验传输的数据是否正确。
-
32位源IP地址:表示发件人地址。
-
32位目的IP地址:表示收件人地址。
2. IP协议的地址管理
上述了解到IP地址实际是32位整数,那么表示的地址就是有限的,如果出现地址不够用,如何解决呢?
在IP协议中有三种处理方式:动态分配IP地址 、NAT机制 、IPv6协议 。
-
动态分配地址:设备上网就分配ip地址,不上网就不分配,但是这种方式并没有增加ip的数量,只是暂时缓解,如果同时上网个数达到一定量也会不够用。
-
NAT机制:将ip地址分为两类,内网IP 和 外网IP,此时规定外网IP必须是唯一的,内网IP可以重复出现(在不同局域网中)。如果内网设备要访问外网,就会给他分配一个外网IP,但是这个外网IP并不是该设备独有,而是该内网中所有设备公用。
内网IP主要为:(1)10.开头 (2)172.16. 到 172.31.* (3)192.168.开头。
外网IP为: 剩下的IP地址。
举例说明:
如果我的主机连接了宿舍的路由器,当我想要访问百度时,我的 IP协议数据包 传输到路由器时,路由器会将我们的IP地址(源ip地址)替换成自己的 IP地址(外网IP地址),此时再传输给百度服务器,百度认为该数据包来自于路由器。得出结论外网设备无法直接访问内网设备。
如果此时有连接路由器的两个主机都访问百度, 返回两个数据报到路由器时。此时路由器会根据自己替换了谁的ip地址进行区分,就能将数据转发回对应的主机。
这种方法也只是提高了ip地址的利用率,并没有增加ip地址 -
IPv6协议:它是使用16个字节,128位来表示IP地址,此时增加了大量的IP地址解决IP不够用问题。但是目前并没有开始启用,只是某些路由器等设备支持了IPv6协议,一般默认关闭IPv6。
3. IP地址的组成
ip地址分为两部分:
- 网络号:表示网段(局域网),保证相互连接的两个网段具有不同标识。
- 主机号:表示主机,同一局域网这主机之间具有相同的网络号,不同的主机号。
对于路由器 :一个路由器有两个IP地址,WAN口IP和LAN口IP,分别在不同的局域网中,路由器的作用就是将两个局域网连接起来。我们上述讲到路由器替换IP地址,是将我们主机的IP地址(内网)替换成路由器的外网IP地址。
LAN口(Local Area Network):表示连接本地网络的端口,主要与家庭网络中的交换机、集线器或PC相连。
WAN口(Wide Area Network):表示连接广域网的端口,一般指互联网。
如图:我们的电脑连接路由器的LAN口,路由器WAN口连接另一个路由器的LAN口(连通另一个局域网),此时绿色部分为一个局域网,路由器与另一个路由器也处一个局域网,另一个路由器LAN口也可以连接其他设备同处一个局域网。
DHCP协议
实际手动管理IP地址是一个非常麻烦的事情,当子网中新增主机时需要给其分配一个IP地址,当子网当中有主机断开网络时又需要将其IP地址进行回收,便于分配给后续新增的主机使用。
- 因此对于IP地址的分配和回收一般不会手动进行,而是采用DHCP动态主机配置协议。
- DHCP通常被应用在大型的局域网环境中,其主要作用就是集中地址管理、分配IP地址,使网络环境中的主机动态获得IP地址Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
- DHCP是一个基于UDP的应用层协议,一般的路由器都带有DHCP功能,因此路由器也可以看作一个DHCP服务器。
当我们连接WiFi时,如果验证通过,路由器就会给你动态分配了一个IP地址,然后你就可以基于这个IP地址进行上网。
注意: 在IP地址中网络号与主机号的划分界限是不一定的。主要有两种分类方式:
-
IP地址划分类:这种方式比较繁琐目前已经不使用了。
划分方式如图所示:
各类IP地址的取值范围如下:
A类:0.0.0.0到127.255.255.255。
B类:128.0.0.0到191.255.255.255。
C类:192.0.0.0到223.255.255.255。
D类:224.0.0.0到239.255.255.255。
E类:240.0.0.0到247.255.255.255。 -
子网掩码方式:子网掩码也是32位整数,我们可以通过ping查看电脑的子网掩码,表示形式与IP地址一样。
如图所示:站在二进制角度看左侧有几位1,对应的的IP地址的那些位就是网络号。
以上则表示IP地址前24位都为网络号,剩下的为主机号,一般家用网络子网掩码一般为:255.255.255.0
** 一些特殊的IP地址:**
- 将IP地址中的主机地址全部设为0,如:192.168.0.0;成为了网络号,代表这个局域网。
- 将IP地址中的主机地址全部设为1,如:192.168.0.255;就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包。通常适用于不知道对方IP地址需要探测的情况下
- 127.* 的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。环回IP对应特殊的虚拟网卡,传输数据时没有IO操作,纯内存操作,所以比一般普通IP传输数据要快。
- 主机号为1,如192.168.0.1,一般作为网关IP(并不绝对),是局域网的出入口。
4. IP协议的路由选择
路由器是不能将整个网络环境都记录下来的,只能记录周围的情况。
所以我们在进行传数据时,就是一跳一跳(Hop by Hop)“问路”的过程。所谓“一跳”就是数据链路层中的一个区间,具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间。
IP数据包的传输过程中会遇到很多路由器,这些路由器会帮助数据包进行路由转发,每当数据包遇到一个路由器后,对应路由器都会查看该数据的目的IP地址,并告知该数据下一跳应该往哪跳。文章来源:https://www.toymoban.com/news/detail-438225.html
路由器的查找结果可能有以下三种:文章来源地址https://www.toymoban.com/news/detail-438225.html
- 路由器经过路由表查询后,得知该数据下一跳应该跳到哪一个子网。
- 路由器经过路由表查询后,没有发现匹配的子网,此时路由器会将该数据转发给默认路由(更高一级的路由器记录着更多的数据可以查询)。
- 路由器经过路由表查询后,得知该数据的目标网络就是当前所在的网络,此时路由器就会将该数据转给当前网络中对应的主机。
到了这里,关于网络层——IP协议详细解读的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!