网络知识学习(笔记二)

        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.mfbz.cn/a/176952.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c语言编程(模考3)统计字符串中数字字符的个数

统计字符串中数字字符的个数 #include<stdio.h> int main(){char inputString[100];int digitCount 0;printf("请输入一个字符串&#xff1a;");scanf("%s",inputString);for(int i0;inputString[i]!\0;i){if (inputString[i]>0&&inpu…

Android线程优化——整体思路与方法

**在日常开发APP的过程中&#xff0c;难免需要使用第二方库和第三方库来帮助开发者快速实现一些功能&#xff0c;提高开发效率。但是&#xff0c;这些库也可能会给线程带来一定的压力&#xff0c;主要表现在以下几个方面&#xff1a; 线程数量增多&#xff1a;一些库可能会在后…

论文阅读 Forecasting at Scale (一)

最近在看时间序列的文章&#xff0c;回顾下经典 论文地址 项目地址 Forecasting at Scale 摘要1、介绍2、时间业务序列的特点3、Prophet预测模型3.1、趋势模型3.1.1、非线性饱和增长3.1.2、具有变化点的线性趋势3.1.3、自动转换点选择3.1.4、趋势预测的不确定性 摘要 预测是一…

知虾数据软件:电商人必备知虾数据软件,轻松掌握市场趋势

在当今数字化时代&#xff0c;数据已经成为了企业决策的重要依据。对于电商行业来说&#xff0c;数据更是至关重要。如果你想在电商领域中脱颖而出&#xff0c;那么你需要一款强大的数据分析工具来帮助你更好地了解市场、分析竞争对手、优化运营策略。而知虾数据软件就是这样一…

海外IP代理:数据中心代理IP是什么?好用吗?

数据中心代理是代理IP中最常见的类型&#xff0c;也被称为机房IP。这些代理服务器为用户分配不属于 ISP&#xff08;互联网服务提供商&#xff09;而来自第三方云服务提供商的 IP 地址。数据中心代理的最大优势——它们允许在访问网络时完全匿名。 如果你正在寻找海外代理IP&am…

历法、节日、节气

目录 一&#xff0c;阳历、阴历、公历、农历 1&#xff0c;阳历、阴历 2&#xff0c;公历&#xff0c;农历 二&#xff0c;双历合并 1&#xff0c;组成要素 2&#xff0c;一年 3&#xff0c;一月 4&#xff0c;一日 三&#xff0c;闰法则 1&#xff0c;闰秒 2&#…

Influence Matters 成立印度尼西亚办公室,构建北亚及东南亚服务中心

2023 年 11 月 22 日——过去八年&#xff0c;Influence Matters致力于通过高效的公关传播服务&#xff0c;为跨境B2B 科技企业耕耘中国市场提供业务支持。我们已与近百家企业、组织和政府合作&#xff0c;以远超预期的公关传播方案和执行力&#xff0c;为客户与其目标决策者和…

VR全景校园:不被简单定义的校园展示,看的不止“一面”

学校的宣传&#xff0c;还是仅仅依靠一部宣传片来定义的吗&#xff1f;如今&#xff0c;在这个时代&#xff0c;VR全景技术已经越来越成熟了&#xff0c;并逐渐融入了我们的日常生活中&#xff0c;通过VR全景校园&#xff0c;我们可以在网上真实地感受校园的优美环境&#xff0…

Windows + VS2022超详细点云库(PCL1.8.1)配置

本文在结合多位CSDN大佬的步骤&#xff0c;记录以下最全的点云配置过程&#xff0c;防止走弯路&#xff08;并在最后配上PCL环境配置成功的测试代码-彩色兔子&#xff09; 一、PCL介绍 PCL概述_pcl技术_一杯盐水的博客-CSDN博客 二、准备工作&#xff08;PCL版本的下载&…

递归回溯剪枝-子集

LCR 079. 子集 - 力扣&#xff08;LeetCode&#xff09; 方法一 1. 决策树&#xff1a;对于决策树&#xff0c;思考的角度不同&#xff0c;画出的决策树也会不同&#xff0c;这道题可以从两个角度来画决策树。 2. 考虑全局变量的使用&#xff1a; 使用全局变量 List<List&…

金蝶云星空部署包导出文件

文章目录 金蝶云星空部署包导出文件 金蝶云星空部署包导出文件 打开补丁包后&#xff0c;贴入导出文件的文件夹&#xff0c;然后按F2即可导出到目标文件夹。

宽压12-90V转5V3A降压IC,AH8691芯片

## 宽压12-90V转5V3A降压IC&#xff0c;多重保护功能全面升级 1. **宽压输入范围**&#xff1a;8V-100V&#xff0c;支持输出电压低至3.3V 2. **高效转换**&#xff1a;5A典型峰值开关电流&#xff0c;高达95%的转换效率 3. **多重保护**&#xff1a;包括过流、过热、输出短路…

JAVA毕业设计111—基于Java+Springboot+Vue的养老院管理系统(源码+数据库+12000字论文)

基于JavaSpringbootVue的养老院管理系统(源码数据库12000字论文)111 一、系统介绍 本系统前后端分离&#xff0c;本系统分为销售、人事、服务、餐饮、财务、超级管理员六种角色 系统主要功能如下&#xff1a; 首页统计&#xff1a;包括今日新增咨询、今日新增预定、今日新增…

解决requests库进行爬虫ip请求时遇到的错误的方法

目录 一、超时错误 二、连接错误 三、拒绝服务错误 四、内容编码错误 五、HTTP错误 在利用requests库进行网络爬虫的IP请求时&#xff0c;我们可能会遇到各种错误&#xff0c;如超时、连接错误、拒绝服务等等。这些错误通常是由目标网站的限制、网络问题或我们的爬虫代码中…

虚拟机centos设置网络模式(桥接|NAT)

前言 桥接模式是通过物理网卡直接与外部网络建立联系的&#xff0c;而NAT模式则是通过虚拟网卡VMnet1或VMnet8通过宿主机共享IP与外部建立网络关系当需要将虚拟机资源共享给局域网用户使用时&#xff0c;宜采用桥接模式&#xff1b;当需要保护虚拟机资源&#xff0c;确保只能由…

净利降4成、股价腰斩,戎美困在“淘系女装第一股”

今年的“双11”静悄悄。 作为“淘系女装第一股”&#xff0c;戎美却拒绝参加“双11”。 戎美作为一家淘宝女装店&#xff0c;喊出“从不打折&#xff0c;从不参加任何促销”的口号&#xff1b;尽管戎美采取独特的营销策略&#xff0c;但其业绩承压困局也写在最新的三季报里。…

140.【鸿蒙OS开发-01】

鸿蒙开发 (一)、初识鸿蒙1.初识鸿蒙(1).移动通讯技术的发展(2).完整的鸿蒙开发 (二)、鸿蒙系统介绍1.鸿蒙系统的官方定义(1).鸿蒙操作系统概述(2).鸿蒙的生态 2.鸿蒙系统的特点3.鸿蒙和安卓的对比4.鸿蒙开发的发展前景 (三)、鸿蒙开发准备工作1.鸿蒙OS的完整开发流程2.注册并实…

【HTML + CSS】 实现原神纯静态官网

文章目录 一、网页效果演示 二、poster code 2.1、html: <!-- 页面一 --> <div class"poster"> <!-- 头部导航栏 --> <div class"header_bar"> <!-- 头部左边&#xff0c;logo --> <div class&…

如何防止网络被入侵?

随着互联网的普及&#xff0c;网络安全问题越来越受到人们的关注。其中&#xff0c;如何防止网络被入侵是一个重要的问题。本文将介绍一些防止网络被入侵的方法&#xff0c;帮助大家保护自己的网络安全。 一、使用强密码 强密码是防止网络被入侵的第一道防线。一个好的密码应该…
最新文章