网络知识学习(笔记二)

        ios模型规定的网络模型一共有7层,但是实际使用过程中,4层的TCP/IP模型是经常使用的,网络知识学习笔记里面也是基于4层TCP/IP模型进行分析的,前面已经讲了:(1)物理层,(2)数据链路层。本次笔记将记录网络层、运输层的UDP,运输层的TCP将放在下次笔记中记录。

一、网络层

        网络层主要是:IP、ICMP、ARP协议等。

        (1)如下图所示,网络层的报文主要有两部分组成:首部、数据。

        (2)首部:网络层添加的报文。

        (3)数据:上一层“运输层”传过来的数据报文。

1.1、网络层报文

(1)网络层报文一些长度的规定

        1、网络层数据包报文中,首部得固定长度是20个字节,首部得可变长度部分尾40个字节,总长度为20~60个字节

        2、网络层数据包报文得总长度为65535个字节,是指:首部长度+数据长度

        3、数据链路层中报文要求网络层传过来的数据长度不能超过1500个字节。如果网络层传过来的数据超过了1500个字节,将对网络层中的报文进行分片,每片都是含有网络层的报文首部的。

(2)网络层数据报文首部分析

        网络层报文的格式如下所示,下面将针对报文中的每个部分的内容进行解释。下图所示的占的多少,并不是字节,一个字节有8位。

   

1.版本(Version):占4位

      0100:IPV4

      0110:IPV6

2.首部长度(Header Length):

        占4位二进制乘以4才是最终长度

        最小值:0101,对应的十进制值是5,所以最终首部长度最小是5*4=20字节

        最大值:1111,对应的十进制值是15,所以最终首部长度最大时15*4=60字节

        由于首部固定长度是20字节,所以可变长度是0~40字节

3.总长度:Total Length

        占16位

        3.1.首部+数据部分的长度之和,即整个数据包的长度,最大值是65535字节

        3.2.整个数据包是要传给数据链路层作为帧的数据部分的,但是帧的数据部分不能超过1500字节,所以过大的IP数据包,会被分成片(fragments)传输给数据链路层。

        而且每一片fragments都有自己的网络层首部(IP首部)。

4.区分服务:Differentiated Services Field

        4.1.占8位,可以用来提高网络的服务质量,Quality of Service

        4.2.没有值时:0x00;如果值是0x40,可能路由器就会优先传输这个给IP包,即提高网络服务质量。

        区分服务这部分是不需要用户关心的。

5.标识(Identification):

        5.1.占16位,数据包的ID当数据包传给数据链路层时,发现数据包过大,数据包就会进行分片。每一片fragments都有自己的IP首部,而且这些片的IP首部的标识部分都一样。这样就能区分哪些片是一个IP包拆分的。被分片的数据包的标识位ID是不变的,所有片的标识都是一样的。

        5.2.数据包的ID:代表是哪个IP包。而且有一个计数器专门管理数据包的ID,没发出一个数据包,ID就加1。

        5.3.这个时候虽然能确定下来片fragments属于哪个数据包,但是怎么确定哪个片属于数据包的哪个部分呢?使用下面介绍的片偏移的方式。

        如果数据包过大,标识的数值加到最大的时候,就会变成0,从0从新开始加。

6.片偏移(Fragment Offset)

       同一个数据包的标识ID是一样的,那么划分的长度都是最长的,所以可以通过片偏移的方式,从一个片的位置找到下一个片的位置。

         1.占13位,片偏移乘以8:字节偏移,每一片的长度一定是8的整数倍。

        2.字节偏移:

                        第一片:从IP数据包首部后的第0字节处开始算,共1400字节

                        第二片:从IP数据包首部后的第1400字节处开始算,共1400字节。

                        第三片:从IP数据包首部后的第2800字节处开始算,共1000字节。

                                        所以第一片的字节偏移是0,其IP首部中片偏移就是0/8=0

                        第二片的字节偏移是1400,其IP首部中片偏移就是1400/8=175

                        第三片的字节偏移是2800,其IP首部中片偏移就是2800/8=350

        3.为什么不直接用字节偏移呢,而是要再除以8,用片偏移呢?

                       因为存放偏移量的这部分一共才13位,最大值是8192-1=8191。而整个IP数据包的最大长度是65535字节。所以如果用字节偏移量的话,很可能13位不够表示。

7.标志(Flags)

        1.占3位,每一位有不同的含义。

        2.第一位(Reserved Bit):保留位

        3.第二位(Don't Fragment):1代表不允许分片,0代表允许分片

        4.第三位(More Fragments):1代表不是最后一片,0代表最后一片。

                一旦发现第三位是0,说明这个网络层的数据包已经组装好了。

8.协议和首部检验和

        只对网络协议报文中的首部进行检验。刚开始首部检验和的几位全是零,对首部计算之后的检验值放在首部检验和的位置。

        网络层的数据是从运输层传下来的,那么运输层用的什么协议会被记录下来,放在网络层首部的协议位置处。

        另外,ICMP也有协议字段,但是这些协议是被划分到网络层的。

        传输层的TCP协议的数据,或者UDP协议的数据,都会传输给网络层,被打包成IP协议的数据。

9.生存时间:Time To Live, TTL

        占8位

        1.每个路由器在转发之前都会将TTL减1一旦发现TTL减为0路由器会返回错误报告

        2.各个操作系统的发送数据的默认TTL,减一的次数也是不一样的

        如果没有上面的生存时间,如果用户配置错误,导致数据在两个路由器之间来回的传输出数据,就会占据路由器,导致路由器无法工作。

        所以百度服务器应该是部署在linux服务器上,所以中间经历了64-52=12个服务器。

        3.ping baidu.com -i 1

        设置ping的数据的TTL是1,那么经过第一个路由器时就会减成0,就不会往下再发送包,而是返回报错信息。

        我得ip:192.168.43.143。所以我的第一个网关地址就是192.168.43.1:

二、传输层协议

        1.传输层的TCP协议的数据,或者UDP协议的数据,都会传输给网络层,被打包成IP(IPV4、IPV6)协议的数据。

        2.传输层主要有两个协议:

        1.TCP(Transimission Control Proticol),传输控制协议

如果之前的数据没有发送成功,还会再发送一次,那么就打乱了实时性(现在接收的信息,突然插入一个之前的信息)。

        2.UDP(User Datagram Protocol),用户数据报协议。

如果之前的数据没有成功发过来,那我也不要了,我只关注当前的信息:音视频通话。

        3.两个协议的大致区别:

        4.我们一般发送一个请求,是先在应用层用一个协议封装一个数据,然后在发给下一层,即传输层。

        TCP协议一般封装的是,来自应用层的HTTP/HTTPS等协议封装的数据

        UDP协议一般封装的是,来自应用层的DNS协议封装的数据。

1、UDP协议

1.1、UDP的数据格式

        1.UDP是无连接的,减少了建立和释放连接的开销

        2.UDP尽最大可能交付传输的数据,但是不保证数据的完整性,即不保证可靠交付。

        3.因此不需要维护一些复杂的参数,首部只有8个字节。(TCP首部至少20个字节)

1.2、UDP首部的构成

        1.UDP长度

                16位,2字节:表示  首部的长度+数据的长度

        2.UDP校验和 Checksum

                检验和的计算部分:伪首部+首部+数据

                伪首部:仅在计算检验和时起作用,并不会传递给网络层。

        3.端口Port

                1.服务器可以在一个端口上开启一个服务器软件,这个服务器软件来监听发送到这个端口的数据。之后服务器软件再从8080端口将数据返回给客户端。

                2.UDP首部中每个端口部分占用2字节,可以推测出端口号的取值范围0~65535。

                3.客户端的源端口是应用软件发送请求时的端口,而且是临时开启的随机端口,不固定。

                临时开一个端口发数据,所以同一个应用软件前后两次发数据时,源端口很可能是不一样的。

                4.服务响应请求,返回数据时。此时UDP数据包首部中的目的端口部分,就是客户端发送这个数据的源端口。

                客户端接收到响应的数据,发现目的端口是12656,就会恍然;原来是响应我上次从12656端口发送的数据。

                服务器发送数据时,源端口不变。

        5.防火墙可以设置开启/关闭一些端口来提高安全性。

        6、防火墙和服务器之间的管理

        用户只能发请求过来,请求获得服务器数据,不能通过账号或密码直接访问服务器。

1.3、UDP的抓包分析

        注意:服务器是采用80端口监听数据的。

下面是抓包分析UDP报文数据格式。

        1.传输层的首部是1f 40 0f a8 00 3f 0e 73这8个字节,下面的部分02开始是传输层的数据部分。

        2.传输层的数据会传给网络层,被封装成包:而且数据部分是从1f 40 0f a8 00 3f 0e 73这8个字节开始。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/202159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes+Gitlab+Jenkins+ArgoCD多集群部署

KubernetesGitlabJenkinsArgoCD多集群部署 文章目录 KubernetesGitlabJenkinsArgoCD多集群部署1. KubernetesGitlabJenkinsArgoCD多集群部署2. 添加WebHooks自动触发3. Jenkins-构建-执行Shell4. 制作镜像及修改Yaml文件4.1 Dockerfile4.2 Build-Shell 5.自动部署Demo测试5.1 推…

nginx学习(4)Nginx 配置高可用集群(主从配置)

Nginx 配置高可用集群 Nginx的高可用集群是指由两台或多台Nginx服务器组成的集群系统,通过负载均衡和故障转移等技术,实现高可用性和可伸缩性的目标。在这种集群系统中,每个Nginx服务器都配置为主节点(master)或从节点…

【Delphi】使用TWebBrowser执行JavaScript命令传入JSON参数执行出错解决方案

目录 一、问题背景: 二、实际示例: 三、解决方案: 1. Delphi 代码: 2. javaScript代码: 一、问题背景: 在用Delphi开发程序,无论是移动端还是PC端,都可以很方便的使用TWebBrows…

基于SSM的焦作旅游协会管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

梨花声音教育,美食视频配音再次挑战味蕾

在为美食视频进行配音时,配音艺术家的目标是通过声音来激活观众的感官,唤起他们对美味佳肴的渴望,同时展现食物的诱人特色和烹饪的艺术性。配音应当能够描绘美食的丰富细节,传达烹饪的趣味性以及食材的高品质。以下是一些为美食视…

LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」

原文:LangChain: 类似 Flask/FastAPI 之于 Django,LangServe 就是「LangChain 自己的 FastAPI」 - 知乎 说明:LangServe代替 langchainserver 成为新的langchain 部署工具 官网资料:🦜️🏓 LangServe | &…

VM——畸变校正、标定板标定

1、需求:精密测量时,使用远心镜头时依然会有畸变,最好使用标定板进行畸变校正和像素当量计算 2、方法:使用VM的“畸变校正”、“标定板标定”模块 2.1 标定板制作 step1: 使用海康的标定板生成工具,可以制作海康I型…

单片机调试技巧--修改bin文件实现断点

fromelf --text -a -c --outputall.dis F103_Moduel\F103_Moduel.axffromelf --bin --outputtest.bin F103_Moduel\F103_Moduel.axf 在启动文件中,修改UsageFault_Handler UsageFault_Handler\PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE…

智能座舱架构与芯片- (14) 测试篇 上

一、 验证平台概要 1.1 测试软件方法论 “软件定义汽车” 的时代,软件在整车制造中的重要性日渐凸显。但不同于其他行业的软件开发,汽车行业有自己独特的软件开发要求。首先是需求严谨、需求层次复杂、需要通过专业的工具进行管理;其次开发…

【开源】基于Vue.js的康复中心管理系统

项目编号: S 056 ,文末获取源码。 \color{red}{项目编号:S056,文末获取源码。} 项目编号:S056,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员…

c语言:回文字符串

题目: 思路: 创建一个字符数组,然后判断字符串长度,用循环,看对应字符是否相等,相等则输出,不相等则将对应字符ascll较大的改成ascll较小的(题目要求字典最小的情况)。…

Markdown语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

自然资源土地管理法律法规知识竞赛这么办才高端

近些年,全国各地自然资源厅举办了土地管理法律法规知识竞赛,从我公司承办的这些赛事来看,传统的必答题、抢答题、风险题的方式已无法激起现场比赛气氛,需要更加复杂有趣的环节设置及高端竞赛软件及其配套设备加持才可以让知识竞赛…

BootStrap【表格二、基础表单、被支持的控件、表单状态】(二)-全面详解(学习总结---从入门到深化)

目录 表格二 表单_基础表单 表单_被支持的控件 表单_表单状态 表格二 紧缩表格 通过添加 .table-condensed 类可以让表格更加紧凑&#xff0c;单元格中的内补&#xff08;padding&#xff09;均会减半 <table class"table table-condensed table-bordered"…

2023-11-22 LeetCode每日一题(网格中的最小路径代价)

2023-11-22每日一题 一、题目编号 2304. 网格中的最小路径代价二、题目链接 点击跳转到题目位置 三、题目描述 给你一个下标从 0 开始的整数矩阵 grid &#xff0c;矩阵大小为 m x n &#xff0c;由从 0 到 m * n - 1 的不同整数组成。你可以在此矩阵中&#xff0c;从一个…

LeetCode(32)串联所有单词的子串【滑动窗口】【困难】(含图解)

目录 1.题目2.答案3.提交结果截图4.图解 链接&#xff1a; 串联所有单词的子串 1.题目 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如&#xff0c;如果 w…

Notpad-- ubuntu下载安装

Notpad-- ubuntu下载安装 下载 Gitee链接&#xff1a; https://gitee.com/cxasm/notepad– 安装 sudo apt install *.deb运行 /opt/apps/com.hmja.notepad/files/Notepad--出错 需要安装qt5 sudo apt-get install qt5-default

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化:输入延迟、卡顿,大小核调度

关于 win11 系统下12代/13代英特尔大小核架构 CPU 的 VMware 优化&#xff1a;输入延迟、卡顿&#xff0c;大小核调度 一、前言二、VMware 的优化2.1 键鼠输入延迟问题的解决2.1.1 搜索内核隔离2.1.2 关闭内存完整性并重启2.1.3 搜索启用或关闭windows功能2.1.4 关闭 hyper-v 和…

【Android】画面卡顿优化列表流畅度六(终篇)

上一篇&#xff1a; 【Android】画面卡顿优化列表流畅度五之下拉刷新上拉加载更多组件RefreshLayout修改 场景回顾&#xff1a; 业务经过一年半左右的运行后&#xff0c;出现了明显的列表卡顿情况&#xff1b;于是开始着手进行列表卡顿优化。目前的情况是&#xff1a; 网络图…

2022最新版-李宏毅机器学习深度学习课程-P49 GPT的野望

GPT→类似于Transformer Encoder 训练任务&#xff1a;Predict Next Token 使用MASK-attention&#xff0c;不断预测“下一个token”。 可以用GPT生成文章。 How to use GPT? 给出描述和例子 给出前半段&#xff0c;补上后半段 In-context Learning(no GD) 结果 目前看起…