🎉🎉🎉写在前面:
博主主页:🌹🌹🌹戳一戳,欢迎大佬指点!
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个小菜鸟嘿嘿
-----------------------------谢谢你这么帅气美丽还给我点赞!比个心-----------------------------
—承接上篇博文
四,网络层
网络层最重要协议就是IP协议,IP协议的作用:地址管理与路由选择
4.1 地址管理
首先,认识一下IP数据包的报文格式:
【各个部分介绍:】
4位版本号:
这个值只存在两种情况,4或者6,对应的就是IPv4和IPv6
4位首部长度:
这个4位首部长度和TCP一样,单位是字节,也就是表示的是有多少个4字节。
8位服务类型:
8位中实际只有4位有效,这四位中同时只能有一位为1,表示四种不同的工作模式。分别是最小延时,最大吞吐量,最高可靠性,最小成本
16位总长度:字节数
这里的总长度说的是一个IP数据报的总长度。对于IP数据报来说,我们知道它的总长度,知道它的报头长度,所以说可以求出其载荷部分的长度。
这个载荷其实就是TCP数据报的长度,TCP自身是没有总长度这一项的。
16位标识,3位标志位,13位片偏移
这几个属性主要是服务于IP协议的分包,组包机制。因为当一个数据报如果比较大,一个IP数据报放不下就会进行分包。
IP数据报分包的过程就相当于是分装货物的过程,一批货物找了多辆卡车来装,这些卡车的标识都是一样的,但是装了先走的车片偏移就小,后面的车片偏移就大。
8位生存时间(单位TTL):
网络上的数据传输,并不是所有的数据都能到底目的主机,比如你的目的IP地址写错了,那么无论中间你怎么转发都是不可能到达的。所以生存时间就对一个数据包的转发次数做出了限制,超过多少次转发次数之后就会直接将数据报丢弃,默认是到达不了的数据。
TTL是一个整数,代表转发次数,一般是32/64/128之类的数字,数据报每经过一个路由器转发,TTL就会减少1,直至TTL减为0的时候,数据报就会被丢弃,一般情况下,在较少的转发次数下数据是可以到达世界上的任何地方的。
8位协议:
指的是IP数据报的载荷部分使用的传输层协议是什么,因为当数据报到达接收方进行分用的时候,需要这一项来告诉传输层使用什么协议来进行解析。
32位源IP地址,32位目的IP地址:
表示你的数据报是从哪个主机发送过来,又要到哪个主机去。
4.2 路由选择
路由选择就是在两点之间规划处一条路线。这个过程是一个启发式的过程,类似与是问路。
在IP数据报里面,会有一个目的IP,当网络数据到达路由器的时候,路由器自身会有一个路由表的数据结构(里面记录着这个路由器所能认识的路,一个路由器肯定是无法认识到网络的全部的,但是相邻的一部分可以),如果当前的目的IP这个路由器的路由表中有记录,也就是有明确的路线给出,如果路由器没有记录,也就是不认识,那就是继续转发给下一个路由器(路由器中会有一个默认的选项,下一跳)。这样的转发不是无限制,一般都可以到达,但是如果说是IP地址错误了,那么就会根据TTL的限制,在TTL减为0之后就不会再转发了。
并且对于路由而言,在转发数据的时候,它不仅仅是找一路,在有多个选择的情况下,它会选择一条最优的路。
4.3 关于IP地址的补充
如何解决的IP地址不够用的问题?
我们都知道,IP地址是一个32位的整数,可以表示的IP地址也就42亿多,但是对于目前的互联网直接而言,IP地址早就不够用了,解决的办法有以下几个:
1,动态分配IP地址设备上网的时候才会给它分配IP地址,当设备不再使用网络的时候就会回收IP地址。这种方法显然是治标不治本,并且回收,分配也比较麻烦。
2,NAT模式
这是现在的主流机制。NAT模式下不再强制要求一个主机一个不一样的IP地址,而是将IP地址进行了划分:公网(外网)IP 和 私网(局域网/内网)IP 常见的内网IP 例如:10.x/172.16.~172.31.x/192.168.x
并且约定,在一个局域网的内部,IP地址不能重复,但是在不同的局域网之间,IP地址可以重复,另外,如果想要访问外网的设备,那么则会使用一个外网IP来代替这一个局域网的设备,这样就大大减少了外网IP的数量,减少了消耗。
3,IPv6
采用IPv6是根本的解决方案,因为IPv6是16字节,128位来表示一个IP地址,也就是说IPv6所能表示的IP地址的数量是IPv4的2^96倍,目前肯定是完全够用了的。
现在IP地址的分配方式还是采取的NAT加上动态分配的方式,IPv6现在支持但是使用的更多的还是IPv4地址。
局域网内的设备之间可以相互通信,但是不同局域网之间的设备是不能够直接进行通信的,也就是跨局域网通信,如果想要直接跨局域网通信,需要使用特殊手段比如内网穿透和vlan虚拟局域网。
五,数据链路层
认识以太网数据帧格式:
这里的目的地址指的是MAC地址而不是IP地址。类型有三种,分别对应IP,ARP,RARP,帧尾是CRC校验码。
认识MTU:
以太网数据帧的最长是1500个字节,这个限制就是MTU,不同的网络类型有不同的MTU。如果说物理层是公路,那么数据链路层就是公路上的卡车,在进行数据的运输。
在数据链路层里面,有很多的协议,不同协议的MTU不同,也即是卡车的载重量不同,以太网协议的载重量是比较小的,所以,在IP协议中会有分包机制,会将一个IP数据包分包,然后确保一辆卡车能够装得下,只不过是需要多辆卡车进行装货了。