【计算机网络】第七章:[网络层]网络协议(Part1.网络层首部)

CN.StudyLog.Ch7.Network Layer.网络层 (Part1.网络层首部)

传输文件时,为了方便传输会把一个打得文件分成功好几段,每段首部会加一个传输层首部。传输层首部里很多字段定义和实现了传输层功能,网络层同理,也由首部添加的字段来完成某些功能。所以首部又可以视作协议的代指。每一次都有每一层的协议,是因为每一层都有固定的格式,首部都有不同功能的字段。
在这里插入图片描述
从传输层到网络层到数据链路层,每一层都会增加首部。这整个过程我们称为封装。因此我们如果想要了解计算机原理,就必须明白每层协议/首部字段代表的意义。
在这里插入图片描述
上图中,网络层协议里。ARP为IP协议提供服务,IP为ICMP&IGMP协议提供服务。其中IP协议是所有动态路由协议的统称(RIP,ISIS,OSPF等)。

网络层首部

在这里插入图片描述
网络层首部,固定部分20字节,这20字节是必须有的。我们先来说这固定部分。

固定部分:总计20字节,上图中分成了5行,也就说每行4个字节(byte),换言之每行32bit。可以根据上图的标识符看出,8/16/24就是分割四个字节的分界点。
也就说说:

组成部分 所占字节
版本 4bit
首部长度 4bit
区分服务 1Byte
总长度 1Byte
标识 2Byte
标志 3bit
片偏移 13bit
生存时间 1Byte
协议 1Byte
首部检验和 2Byte
源IP地址 4Byte
目标IP地址 4Byte
可选字段 -
填充字段 -
数据部分 实际不是只有数据部分,还有上层协议(首部),只不过对于网络层而言都是数据部分。

版本/首部长度

通过抓包工具来了解首部。版本,顾名思义,志表示第几版。现在的网络层协议中,只有IPv4和IPv6两种。
首先,网络层协议我们应该关注的是Internet Protocol这一项。
在这里插入图片描述

如图,IPv6和v4的版本部分。
在这里插入图片描述
在这里插入图片描述

其中,关于首部长度:它的单位是4字节。也就说是4x该部分表示的数量的字节数,才是首部的真正长度。4位二进制最大值是11112(1510)。所以一个网络层首部的最大长度是15x4=60byte。其中20byte是必须有的,剩余40byte是可以有也可以没有的,根据填充部分和可变部分的需求增加。换言之,除去固有部分最多有40字节可以装其他内容。
在这里插入图片描述
上图捕获的信息中,首部版本号和首部长度合计1字节用两位十六进制表示,其中4和5就是416和516。版本号用4表示IPv4,而长度是计算出来的:5x4byte(基本单位)=20byte。

区分服务

在这里插入图片描述
区分服务:优先保障某一种网络流量转发,通过路由器缓存中的多个优先级队列中的来保证某些服务流量。从而在网络资源不富足的情况下保证某些网络访问通畅。

举个例子:

虚拟 现实
视频通话,如果家庭局域网内使用网络的设备比较多,带宽分配不均,而此时视频通话就可能出现卡顿的情况,一旦网络卡顿,就会出现对面听不清你说什么,自己听不请对面说什么,为了规避这种现象,可以给视频通话的流量增加一个Qos标记,带有这个标记的流量进入优先队列,配置路由器,路由器优先转发带这个标记的流量,从而保证视频畅通。 排队买票,退伍军人/人大代表/老人等绿色通道代表着不同的优先级。在人大召开期间,人大代表有最高购票优先级,如果车站人非常多,且车站售票口不足的情况下,仍然优先售票给人数较少的人大代表。然后是退伍军人,而普通人只能排长队。这种措施保证了在人大召开期间,人大代表出行通畅,不会耽误行程。

Qos配置需要至少在两处进行配置。
1:发送端设备。设备为这种流量添加Qos标记,来让路由器优先转发这种流量
2:路由器。路由器必须配置识别这种标记,然后才会对其进行优先级队列处理。如果只配置设备不配置路由,就好像你用一张纸条写上10万存款证明然后你去银行取钱一样,银行根本不认;然而你从一张只差写金额的支票上写就是另一回事了。
3.(可选):接收端:如果只配置发送端这边的组策略,那么保证的是流量去向通畅,但是并不能保证来也通畅。如果刚好对面流量来这边也堵了,那么仍然会导致质量差。但是一般而言,流量更多是用于访问web服务器等,服务器不可能单独为某个用户启用Qos而且一般的服务器性能及策略足够好以至于很难出现线路拥堵情况。

下面我们通过配置组策略来实验并通过抓包来观察这1个字节。这里实验采用访问网站时,优先转发。
在这里插入图片描述
新建一个accessWeb的Qos的策略。

DCSP:我们给他写的标记随意即可(但是不可大于64)
在这里插入图片描述
应用程序选择:如果是所有应用程序则满足条件都加这个标记;我们也可以指定比如谷歌浏览器,360浏览器等某应用程序的某些流量质量保护。我添加的是36。这个数值除以4就是对应在十六进制里的数字。这个不能随便给,必须给4的倍数。
在这里插入图片描述
还可以限定IP的源和目的地来选择定向质量保护。这里选任意,因为要测试WEB。
在这里插入图片描述
访问网站通过的是TCP协议的80端口。
在这里插入图片描述
这样配置完后,应该所有访问web服务器的出口流量都加上了标记,但是回来的数据包是没有标记的,因为远程网站没有配置这个标记。
在这里插入图片描述

总长度

在这里插入图片描述
受限于数据链路层的帧长度,一个网络层数据包需要被分片处理,被分割的小段会分别在加上网络层首部进行传输。被分割的数据片段在接收端会重组,为了明确哪些数据段是属于哪个数据包的,需要对数据包进行标识。
在这里插入图片描述
虽说一个数据包最大可以承载65535字节,但是因为装成这么大的数据包还得拆分,增加开销,所以一般网络层封装时不会封装出这么大的包,一般不会超过最大传输单元的1500字节。

标识&标志

在这里插入图片描述
标识:标识是一个编号,一个数据包分割出来的多个片段都有相同的编号,接收端收到数据包后根据标识来确认哪些片段是原本一个整体。
在这里插入图片描述
在这里插入图片描述
传输通畅时,根据数据包到来的先后,他们的标识也存在递增+1的关系。


标志:核心就是000三位,其中第一位是保留的没用。第二位是0则表示允许分片,1则标识不可分片。第三位是0表示这是多个分片的最后一片,有了它就能够组装一个完整的数据包;第三位是1说明这是分片中的一片,不是最后一片。
实验需要的命令:

ping -l 4000 允许拆分ping4000字节
ping -f  不允许分片
ping -f -l 4000 不允许拆分ping4000字节

ping -l 4000:
在这里插入图片描述
在这里插入图片描述
ping -f
在这里插入图片描述
ping -f -l 4000
在这里插入图片描述
设置了不可分片,但是又需要分片,此时矛盾,这种数据包不会从网卡发出,抓包工具也抓不到。

片偏移

在这里插入图片描述
片偏移量:用来记录这是被分割的数据包的第多少位,从而知道分片的组装顺序。
在这里插入图片描述
用这个命令来发大数据包。观察分段
在这里插入图片描述
在这里插入图片描述
片偏移量是370,370*8=2960,他是被分割的第2960字节开始的数据段。

生存时间TTL

占8位二进制,也就说最大数值255.这个数值代表网络中能经过多少路由器,没经过一个路由器,这个数值就会-1.当数值为0,路由器就会丢掉这个数据包并返回一个ICMP的错误报告。
在这里插入图片描述
一般来说很少会转发数据包过20个路由器,哪怕访问国外也不用这么多。
在这里插入图片描述
如图,我的系统是win系统所以默认TTL128,访问内网直接通不过路由所以TTL不变,访问谷歌8.8.8.8返回了TTL115说明过了128-115个路由器。而访问其他内网因为没有权限是访问不到的,访问百度返回了TTL48,说明使用的linux系统。(因为上面说了基本不会出现转发20个路由的情况,所以是和这个值比较近的linux,现在主流系统是linux和win)
在这里插入图片描述
路由追踪:ping -i可以设定TTL值,1就是TTL值只有1。换句话说过1个路由,那个路由器就会返回给你错误信息,因为TTL先-1后转发,所以这个数据包在第一个路由器就会被丢掉。那么TTL不断的增加,就可以知道过得这些路由端口分别是什么了。中间可以看到i7请求超时而i8是TTL耗尽,这是因为路由器可以手动设置禁止返回ICMP包,如果这样设置的话,则无法用这种方法追踪路由,但是下一个路由器没有这样设置,所以可以知道下一个的路由端口。
在这里插入图片描述
在这里插入图片描述
TTL的主要作用就是限制环路和默认路由导致数据包死循环永不消失的情况。在数据包里,TTL协作Time to Live
在这里插入图片描述

协议/首部校验和

协议字段表明了协议的类型,TCP/UDP/ICMP……
在这里插入图片描述
在这里插入图片描述
首部校验和只校验首部有无变化, 不校验数据部分。网络层首部的总长度、标志、片偏移、生存时间等会随着数据包分片而变化,首部校验和的功能就是用来检验首部传输过程中有无错误。

在这里插入图片描述
最后就是目标和源IP,要求每个4byte。32bit。意义很明确不再赘述。要求这张图表的每一部分能够明确并反馈到数据包分析中。
在这里插入图片描述

组成部分 内容
版本 IPv4
首部长度 20 byte
区分服务 0
总长度 40 byte
标识 0x4639=17977
标志 010
片偏移 0
生存时间 52
协议 TCP
首部检验和 0x9686
源IP地址 223.203.200.43
目标IP地址 192.168.1.113

网络层的协议是由网路层首部不同字段来代表的意思。网络层设备都可以看懂这些字段然后进行相应的处理。

猜你喜欢

转载自blog.csdn.net/Chahot/article/details/107055525