【网络原理之二】网络层的IP协议、数据链路层的以太协议和MTU

news2024/11/23 12:06:06

  • 网络层协议
    • IP协议
      • IP协议格式
      • IP地址
        • IPV4
        • IPV6
      • IP地址规则-地址管理
      • 路由选择
  • 数据链路层协议
    • 以太网协议
      • 协议格式
    • MTU(最大传输单元)
      • MTU对IP协议的影响
      • MTU对UDP协议的影响
      • MTU对TCP协议的影响
  • 开放性问题

网络层协议

IP协议

IP协议格式

在这里插入图片描述

4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
4位头部长度(header length):IP头部的长度是多少个32bit,也就是length *4的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
8位服务类型(Type of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段 (必须置为0)。4位TOS分别表示: 最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
16位总长度 (totallength):IP数据报整体占多少个字节
16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
3位标志字段:
第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用)。
第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。
第三位表示”更多分片",如果分片了的话,最后一个分片置为0,其他是1。类似于一个结束标记。如果当前表示为更多分片,那就代表看到的消息可能是大消息体中的一部分。
13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)
8位生存时间(Time To Live,TTL):TTL的值表示,在网络每经过一次网络设备就减1,如果TTL减到0就表示网络不通。这个字段主要是用来防止出现路由循环。
在这里插入图片描述

8位协议:表示传输层用的是哪个协议TCP、UDP…
16位校验和:CRC校验。
32位源IP和目的IP地址:网络层确定的源IP和目的IP。
选项:载荷,传输层发来的数据。

IP地址

在这里插入图片描述

IPV4

总长是32位,最多可以表示42亿个地址。在网络上如何分配IP地址让计算机之间可以相互访问?
1.动态分配:设备上网的时候才获取一个IP,下线时就会被收回。一个IP只能同时表示一台主机。
2.NET机制:对一个子网中的所有机器共用一个公网IP地址,子网内的机器分配内网IP。内网IP在不同的子网中是可以重复的,公网IP地址不能重复。

在这里插入图片描述

IP地址分为两大类:
外网IP/公网IP;
内网IP/局域网IP:约定10.,172.16.~172.31.,196.168.

IPV6

总长128位来表示IP地址,约等于42亿 x 42亿 x 42亿 x 42亿。IPV6与IPV4不兼容。

IP地址规则-地址管理

子网掩码:也是32位,左边都用1来表示,有来确定网络号,不会1和0混着表示有多少个1,就表示IP地址左侧有多少位是网络号。IP地址与子网掩码进行按位与运算,得到的结果就是网络号。
默认网关:所有流量都要通过网关,在这里可以做流量的控制。

在这里插入图片描述

路由选择

发出一个请求之后如何到达目标主机。试想一个地图导航路线,可以有很多条。路由的选择过程本身也是一个动态的过程。在路由选择的过程中,每次询问并且向目标前进,一跳,完整的通信过程就是通过一跳一跳完成的。
具体过程:

网络数据报在到达路由器的时候,路由器本身会有一个“路由表(路由器已经认识的路),但是一个路由器无法认识到网络的全貌但是知道附近的一部分。如果当前的目的IP,路由器认识,就会给出一个明确的路线。如果当前的目的IP路由器不认识,他就会把这个数据发送给下一个“更见多识广”的路由器(认识的路更多),下一跳,最终会找到通往目的IP的路径。

是否有可能问了一大圈也没有找到目的地?是有这个可能的,比如IP地址不存在,每问一次路由器(路由转发),TTL就减1,当TTL为0时,就响应超时,找不到主机。

那内网中的机器是如何去访问外网的资源,外网的响应又是如何返回给请求的机器?
1.通过DNS来解析出来IP地址。DNS保存了所有网站的域名(比如“www.baidu.com”这个字符串)和IP的对应关系。
2.通过设置源IP和目的IP进行一层一层路由,最终到达目标服务器。
3.处理完响应之后原路返回给发送方。
在这里插入图片描述

数据链路层协议

以太网协议

“以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等;例如以太网中的网线必须使用双绞线;传输速率有10M,100M,1000M等;以太网是当前应用最广泛的局域网技术;和以太网并列的还有令牌环网,无线LAN等。

协议格式

在这里插入图片描述

源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。
类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码。

MTU(最大传输单元)

MTU相当于发快递时对包裹尺寸的限制。这个限制是不同的数据链路对应的物理层,产生的限制。
以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

MTU对IP协议的影响

● 由于数据链路层MTU的限制,对于较大的IP数据包要进行分包。 将较大的IP包分成多个小包,并给每个小包打上标签;
● 每个小包IP协议头的16位标识(id) 都是相同的;
● 每个小包的IP协议头的3位标志字段中,第2位置为0,表示允许分片,第3位来表示结束标记(当前是否是最后一个小包,是的话置为1,否则置为0);
● 到达对端时再将这些小包,会按顺序重组,拼装到一起返回给传输层;
● 一旦这些小包中任意一个小包丢失,接收端的重组就会失败。但是IP层不会负责重新传输数据;

在这里插入图片描述

MTU对UDP协议的影响

● 一旦UDP携带的数据超过1472(1500 - 20(IP首部) - 8(UDP首部)),那么就会在网络层分成多个IP数据报。
● 这多个IP数据报有任意一个丢失,都会引起接收端网络层重组失败。那么这就意味着,如果UDP数据报在网络层被分片,整个数据被丢失的概率就大大增加了。

MTU对TCP协议的影响

● TCP的一个数据报也不能无限大,还是受制于MTU。TCP的单个数据报的最大消息长度,称为MSS(Max Segment Size);
● TCP在建立连接的过程中,通信双方会进行MSS协商。
● 最理想的情况下,MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)。
● 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值。然后双方得知对方的MSS值之后,选择较小的作为最终MSS。
● MSS的值就是在TCP首部的40字节变长选项中(kind=2);

开放性问题

在浏览器中输入一个URL,到最终展示页面,会发生哪些事情?

1.进行DNS域名解析。
a.网络上是以IP地址做为主机的标识,但是IP不好记忆,于是用一个域名来表示IP地址
b.DNS服务器的功能就是把域名转换成IP地址
c.DNS服务器在全球有13个根服务器,其中一个叫总根,12个是辅根

2.进行数据封装
a.浏览器根据用户请求的数据,构造出HTTP请求 (应用层协议)
b.交给传输层 TCP
C.TCP进行三次握手,与目的主机建立连接
d.把数据交给网络层,使用IP协议进行封装
e.网络层再把数据交给数据链路层
f.数据链路层把数据封装后再交给物理层进行传输

3.传输过程
a.中间会经历交换机和路由器等网络设备
b.每个网络设备会进行分用,之后再封装进行相邻节点的传输。这个分用就是在替换源IP

4.到达目标服务器
a.进行层层分用
b.到达HTTP这一层后服务就可以解析出用户请求的那个资源
c.服务器做出响应(服务端程序要处理的业务逻辑)

5.服务器把响应数据重新封装,交给下一层
6.响应数据通过中间转发,回到客户端
7.客户端解析数据得到响应数据
8.浏览器渲染并呈现内容


继续加油~
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12-Vue的diff算法

参考回答: 当组件创建和更新时,vue均会执行内部的update函数,该函数使用render函数生成的虚拟dom树,将新旧两树进行对比,找到差异点,最终更新到真实dom对比差异的过程叫diff,vue在内部通过一个叫…

ChatGPT系统源码,全开源支持二开!

ChatGPT是开发的大语言模型之一,具备多领域知识,并且可以提供个性化、准确和有趣的答案,无论是在娱乐、教育还是工作中,都可以帮助我们解决问题、获取信息和提供建议。 技术架构 使用流行的技术栈PHP8、TypeScript、ThinkPHP6、…

7.3基础概念/文件、文件路径/batch_size,length,total/acc、loss计算/ect

一、 一些基础术语: util是utility的缩写,意思为实用工具。一般用于描述和业务逻辑没有关系的数据处理分析工具。 logger :日志 meter : 记录表 使用下划线 _ 表示不需要的变量是一种常见的开发者的约定,(Python 解释…

SpringBoot3 事件和监听器

1. 生命周期监听 场景:监听应用的 生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springframework.boot.SpringA…

【数据挖掘】时间序列教程【八】

4.4 时间混淆 我们先考虑一个简单的线性回归模型, 哪里 和是具有平均值的高斯过程00和自协方差 .现在,在不失去一般性的情况下,让我们假设 而那瓦尔

【UGUI控件全面解析】 教程专栏目录贴

🎬【UGUI控件全面解析】 教程专栏目录贴🐱‍🏍UGUI系列内容介绍🎁文章内容结构介绍 💯总结 🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,…

“金九银十”和秋招通过率达 95% 的 Java 面试要点集锦

前言 这才刚刚进入 7 月,我就看到了许多朋友在焦急的准备“金九银十”跳槽面试,甚至很多即将毕业的大学生都在备战秋招,对于学历还算优秀的大学生来说,这是一次离大厂最近的机会,毕竟是应届毕业生,不会对技…

Selenium Wire编辑header破解反爬机制和访问限制

一、selenium Wire介绍 介绍 Selenium Wire扩展了Selenium的Python绑定,使您能够访问浏览器发出的底层请求。您已使用Selenium相同的方式编写代码,但是您获得了额外的api,用于检查请求和响应,并动态地对它们进行更改。&#xff08…

oracle 基础1

目录 Oracle表空间-创建 Oracle表空间-删除 Oracle常用用户 Oracle常用角色 Oracle用户创建 Oracle常用数据类型 Oracle表创建 Oracle增删改查 Oracle表常见约束 0.oracle手动开启方式 1.Oracle 表空间-创建 plsql登录system用户 新建sql窗口 创建表空间 2.Oracle表…

化亿级海量于秒级瞬间:大表关联计算提速

5G 时代,意味着数据通信将会拥有更高的速率、更大的容量和更低的时延。随着数据量的爆发式增长,对海量数据存储和实时分析成为数据淘金者的刚需,数据量暴增导致数据间的关联分析也越来越频繁。如何快速对数据进行分析,并获取其中有…

Jmeter接口测试参数化详解

目录 前言: RandomString函数 CSVRead函数 CSV Data Set Config配置元件 前言: 在进行接口测试时,参数化是一项重要的技术,可以帮助测试人员有效地模拟不同的场景和数据,增加测试用例的覆盖范围。JMeter提供了多种…

2023 年 10 大前端发展趋势

新技术的出现和老技术的淘汰让前端开发者们需要不断地学习和更新知识。特别是在经济不好的情况下,是否掌握新的技术很大程度决定着你是否被淘汰。 虽然应用程序试图将网站替代,但前端 Web 开发业务仍在快速变化和增长,前端开发人员的功能并没…

Debezium系列之:支持数据库存储系统,把ddl信息存储到数据库表中

Debezium系列之:支持数据库存储系统,把ddl信息存储到数据库表中 一、需求背景二、实现的效果三、核心参数四、创建存储ddl表五、创建采集表六、完整配置七、提交connector八、插入数据九、查看ddl数据十、修改表结构十一、清空存储ddl表十二、总结和延展一、需求背景 目前deb…

基于transformer的人群计数论文汇总

文章目录 2022TransCrowd: weakly-supervised crowd counting with transformersAn End-to-End Transformer Model for Crowd Localization 参考 2022 TransCrowd: weakly-supervised crowd counting with transformers code: https://github.com/dk-liang/TransCrowd 摘要&a…

达梦数据库性能分析

目录 数据库常用性能分析方法... 3 一、服务器监控... 3 1、cpu监控... 3 2、内存... 3 3、swap内存... 3 4、磁盘... 4 5、网络监测... 4 二、数据库实例监控... 6 1、v$sessions. 6 2、慢sql、阻塞、锁... 7 3、内存监控... 10 4、monitor监控工具使用及开启sql日…

五年Java学习心路历程

五年Java学习心路历程 从大学毕业到工作的过程中,我度过了五年学习Java的岁月。从基础语法到各种细节技术再到分布式和微服务架构,经历了许多的挑战与成长。接下来,我将详细记录这段心路历程,与大家分享学习Java的经验与感悟。 …

Java基础---String str=new String(“tang“)创建了几个对象

目录 典型回答 常量池基本概念 字符串常量池的结构 再看字面量和运行时常量池 intern 还是创建了几个对象 intern的正确用法 典型回答 创建的对象数应该是1个或者2个如果常量池中存在,则直接new一个对象如果常量池不存在,则在常量池中创建一个对象…

KubeEdge官方示例运行成功_Counter Demo 计数器

运行KubeEdge官方示例_Counter Demo 计数器 KubeEdge Counter Demo 计数器是一个伪设备,用户无需任何额外的物理设备即可运行此演示。计数器在边缘侧运行,用户可以从云侧在 Web 中对其进行控制,也可以从云侧在 Web 中获得计数器值,原理图如下…

前端web入门-移动web-day10

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 移动Web基础 手机模拟器 屏幕分辨率 视口 二倍图 适配方案 rem 适配方案 rem 媒体查询 rem – …

使用java生成mvt切片的方法

如何使用java生成geoserver的矢量切片供前端(mapbox等)调用 目录新的想法Java能为切片做什么如何生成切片如何转换xyz数据如何查询如何输出mvt格式给前端前端如何调用 目录 好久没发博客了,每日或忙碌、或悠闲、或喜或悲、时怅时朗&#xff…