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

  • 网络层首部
    • 版本/首部长度
    • 区分服务
    • 总长度
    • 标识&标志
    • 片偏移
    • 生存时间TTL
    • 协议/首部校验和

传输文件时,为了方便传输会把一个打得文件分成功好几段,每段首部会加一个传输层首部。传输层首部里很多字段定义和实现了传输层功能,网络层同理,也由首部添加的字段来完成某些功能。所以首部又可以视作协议的代指。每一次都有每一层的协议,是因为每一层都有固定的格式,首部都有不同功能的字段。

从传输层到网络层到数据链路层,每一层都会增加首部。这整个过程我们称为封装。因此我们如果想要了解计算机原理,就必须明白每层协议/首部字段代表的意义。

上图中,网络层协议里。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

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

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

  1. 哈工大计算机网络第七章——无线网络与移动网络复习

    目录 1. 概述 2. 无线链路与网络特征 3. IEEE 802.11 体系结构(Wifi) 4. 蜂窝互联网接入 5. 移动管理:原理 6. 移动IP 7. 管理蜂窝网中的移动性 8. 无线与移动 ...

  2. TCP/IP四层模型与OSI七层参考模型(网络协议)

    TCP/IP四层模型与OSI七层参考模型 一. OSI七层参考模型 ①. 物理层 ②. 数据链路层 ③. 网络层 ④. 传输层 ⑤. 会话层 ⑥. 表示层 ⑦. 应用层 二. TCP/IP模型 ①. ...

  3. 计算机网络协议第一章,网络协议基础知识

    序    我计划开发一个系列专栏,将自己在网络方面的积累完善成一个系列知识,让读者的监督和拍砖督促自己并提高自己.如果在读本人的系列文章得到些许收获,那对我来说是更大的收获.    本系列的阅读应该不 ...

  4. 同一个项目相互调接口_408计算机网络D3-第二章:网络体系结构与参考模型(上)分层结构-协议-接口-服务...

    网络体系结构是从功能上描述计算机网络结构. 计算机网络体系结构简称网络体系结构是分层结构:是计算机网络的各层及其协议的集合. 每层遵循某个/些网络协议以完成本层功能. 分层结构-协议-接口-服务 首先 ...

  5. 计算机网络基础知识总结之网络协议

    计算机网络学习的核心内容就是网络协议的学习.网络协议是为在计算机网络中进行数据交换而建立的规则.标准或者说是约定的集合.因为不同用户的数据终端可能采取的字符集是不同的,两者需要进行通信,必须要在一定的 ...

  6. 计算机网络第七章:网络安全

    目录 1 网络安全问题概述 1.1 计算机网络面临的安全性威胁 2 两类密码体制 2.1 对称密钥密码体制 2.2 非对称公钥密码体制 3 数字签名 4 因特网使用的安全协议 4.1 网络层安全协议 ...

  7. 计算机网络(七):应用层协议原理

    零.基础理论 网络应用是计算机网络存在的理由,如万维网(包含了web冲浪.搜索和电子商务),以及具有好友列表的即时讯息和对等(P2P)文件共享. 网络应用都是在端系统上的. 网络应用的基本概念.原理: ...

  8. 计算机网络怎么删除,怎么删除网络协议

    怎么删除网络协议?网络协议为计算机网络中进行数据交换而建立的规则.标准或约定的集合.佰佰安全网看看吧. 我说一下2000和XP的:进入控制面板--进入"网络和拨号连接"--双击本地 ...

  9. IP、ARP、RARP、ICMP、IGMP(网络协议:网络层协议)

    面试和笔试中,如果记住下面这张图,基本就能解决网络协议中70%的问题.需要记住: OSI模型和TCP/IP模型每一层名称: 每一层对应有哪些协议,或者说给出该协议要知道对应那一层: 该协议是基于TCP ...

最新文章

  1. 矩阵专职_新的篇章开始了-我将以专职技术作家的身份加入RunCloud
  2. react项目---基本语法字符串数组(6)
  3. java final private_java – private final static属性vs private final属性
  4. 干货丨深度学习和经典机器学习的全方位对比
  5. MS SQL入门基础:创建索引
  6. mysqld: Can‘t create directory ‘D:\software\mysql-8.0.28-winx64\mysql-8.0.28-winx64\bin\ oftware\mys
  7. android 反射调用方法可不可以重载,使用Java进行反射投射和重载方法调度
  8. Ubuntu 14.04 安装 MongoDB
  9. 没网可以用python吗_在没有网络的情况下能自学python吗?
  10. Sklearn 0.21 中文文档校对活动 | ApacheCN
  11. 计算机系统结构自学试卷,全国2004年4月高等教育自学考试计算机系统结构试题...
  12. 干货|现代IM系统中消息推送和存储架构的实现
  13. Knockout v3.4.0 中文版教程-13-控制文本内容和外观-css绑定
  14. php画弧,75、PHP图像处理之画圆、弧线、网站饼状统计图绘制
  15. 又一股份制银行,菊风「视频能力平台」承包了
  16. Excel表格 |两列数据(多列)合并一列且自动换行
  17. 计算机按键被粘了一样,电脑总是自动重复按键盘上的一个键 经验告诉你该这样...
  18. 基于JavaWeb平台的常用物联网硬件接口对接代码总结文档_田超凡
  19. Mifare l射频卡初始值及其相关说明
  20. 2021-2027全球及中国401(k)软件行业研究及十四五规划分析报告

热门文章

  1. 2021年压力管道巡检维护考试题及压力管道巡检维护模拟试题
  2. python 语言基础 - 你不得不知道的字符串常用函数之isdigit
  3. 为什么bitnami 安装的软件进入容器,用户名都是I have no name
  4. 思考乐教育的荣耀与忧虑:整体增速放缓,异地扩张未见成效
  5. 【北京-永丰基地】这7家公司很不错,推荐给你
  6. 基于STM32的esp8266WIFI自动校时+语音报时可调时钟(附源代码)
  7. 设计模式之门面模式与装饰器模式详解和应用
  8. Python才是人工智能AI的首选编程语言,你值得拥有……
  9. Android|重写ScrollView实现页面越界回弹效果
  10. css3实现鼠标移入图片变色