传输层和网络层的关系,ip协议+ip地址+ip报头字段介绍(4位TOP字段,8位生存时间(ttl)),ip地址和端口号的作用

news2024/11/26 10:26:14

目录

传输层和网络层的关系

引入

介绍 

ip协议

介绍

ip地址

引入

数据传递过程

举例(ip地址的作用)

ip报头

格式

4位版本号

ip地址不足的问题

8位服务类型

4位TOP(type of service)字段

最小延时

最大吞吐量

4位首部长度

16位总长度

8位协议号

首部校验和

8位生存时间

集线器

提供ip地址和端口号的作用

介绍

举例


传输层和网络层的关系

引入

就像班里有个小王数学成绩可好,每次都在140以上,10次有6次满分

  • 这样的人就可以说他具有考满分的能力(也就是大概率可以上满分),但不一定全是满分

虽然不能百分百考满分,但他有一个校长爸爸

  • 一旦考试没考满分,就让他重考,直到满分
  • 当然,这也是因为这个人有很大概率可以考满分,才会让他重考,否则要是压根考不到满分,再重考几次也白搭

介绍 

在这个场景下:

校长起到的是策略作用,小王没拿到满分就重考

  • 对应计算机里的超时重传机制,也就是传输层的tcp协议,提供可靠性策略

而小王是实际参加考试的人,起到的是执行作用

  • 对应计算机里网络层的ip协议,它提供一种将数据跨网络从a主机送到b主机的能力

虽然主机已经具有跨网络传输数据的能力,但对于用户来说,需要的不只是能力,能力不代表100%可以做到,而是要可靠的送到

  • 所以需要策略和能力相结合,来保证达到用户的需求

ip协议

介绍

ip协议提供的能力 -- 实现跨网络跨主机传输

要想实现,有前提条件:

  • 唯一标识每台主机(也就是ip地址的作用) -- 只有保证唯一性,才有可能在众多主机中定位某一台
  • 就像学号,身份证号一样

ip分为 -- 私有ip , 公有ip

  • 在不同网络的两台主机通信,默认是以公网ip通信
  • 如果两台主机在同一个网络内,它们会使用私有ip地址直接进行通信

ip地址

引入

去某个地点,一般不能直接到达

  • 假如你要去故宫玩,你必须坐高铁/飞机先到北京,再乘坐北京内部的交通工具前往故宫
  • 所以,要去某个地方,一定是目标城市+目标地点才能定位的

类比到ip地址

  • ip地址不仅仅是4字节数据
  • ip地址=目标网络+目标主机

数据传递过程

如果要实现传递,就必须要经过路由器转发,经过多个子网

  • 数据到达b主机前,一定是要先到达b所在子网

也就是,在宏观上,报文发送是要经过两阶段

  • 先到达目标网络,再交给目标主机

举例(ip地址的作用)

假如有以下场景:

  • 在大学里,有各种学院,学院有各自的编号
  • 学院内部有自己的群,各学院的学生会主席也都一起拉了群
  • 当某个计算机院的学生捡到了一个学生证,上面有学号,他只知道学院编号与自己的不同,但具体是哪个学院不清楚,所以他拍个照片发给了自己院的学生会主席
  • 主席是肯定要记住每个学院的编号的,所以他将照片转发给了对应的学院的学生会主席
  • 而主席是认识自己院的学生的,于是直接找到了那个学生

如果这个同学没有使用这种方法,而是选择蹲在某个地点,遇到学生就问

  • 他找到猴年马月都找不到
  • 询问的过程其实就是在查找,查找本质上是在排除,只不过一次只能排除一个人,属于线性遍历

但使用了上面的方式就可以很轻松的找到,为什么呢?

  • 因为同样是在排除,他直接找到本院的学生会主席就排除了自己学院内的其他人
  • 而主席找到对应院的主席,就是排除了其他院
  • 该院主席对照学号找到学生本人,也就排除了本院内的其他人
  • 排除的效率提高了,也就可以在报文路由时,提高路由的效率

ip地址就是用这种原理定义的

  • 学号就是ip地址
  • 学院就是局域网,院内学生就是局域网内的主机
  • 学生会主席就是出口路由器
  • 主席之间的群叫做公网
  • 公网内的每一台路由器,天然都认识里面的其他路由器,就可以精准转发
  • 这就可以提高定位主机的效率

ip报头

格式

和tcp协议报头类似,都是20字节定长,并且都有选项,只是一般不用

4位版本号

一般是固定的,ipv4的版本号就是4

ip地址不足的问题

使用ipv4协议的ip地址有2^32=42亿多个

  • 但是,在当前全世界中,入网设备肯定是超过了这个数字的
  • 所以ip地址已经不够分了

于是发展出了新技术来解决

  • NAT
  • ipv6

ipv6

  • 其实它和ipv4并不兼容,相当于是一个新的协议,所以即使在这里的字段填成6也没啥意义
  • 使用128bit(16字节)来表示ip地址,目前多使用于内网环境

8位服务类型

3位已经启用

  • 用于指定数据包的优先级

1位保留字段

  • 必须为0
4位TOP(type of service)字段
  • 从a主机到b主机有多条路径可以选择,需要结合自身的传输策略来决定路径选择
  • 也就是用来指导路由器转发的4个小策略
最小延时
  • 也就是用时最短
  • 如果设置了该位,表示需要低延迟,适用于需要快速传输的应用,如实时语音和视频通信
最大吞吐量
  • 表示单位时间内传输的数据量最大
  • 如果设置,表示需要高吞吐量,适用于需要高数据传输速率的应用,如大文件传输和数据备份

最高可靠性

  • 也就是可靠性最好,适用于需要确保数据完整性的应用,如电子邮件和文件传输
  • 但是网络层不是不保证可靠性吗,这里的可靠从何而来呢?
  • 丢包是可能的,且ip协议对丢包无能为力,只能等待上层进行超时重传,它只是会尽量选择丢包概率最小的路径

最小成本

  • 耗费资源最少,适用于对传输费用敏感的应用,如非紧急数据传输

这四者互相冲突,只能取其一

  • 根据具体的应用场景选择

4位首部长度

可以用来分离报头和有效载荷

  • 即使报头长度一定,选项长度是不定的,所以无法确定有效载荷的正确位置
  • 和tcp一样,报头+选项的长度=首部长度*4

16位总长度

表示整个报文的长度,可以知道有效载荷的长度

  • 16位报文总长度-首部长度=有效载荷长度

这里就和tcp不同了,而和udp类似

  • 因为报头保存了总报文长度
  • 说明网络层传输时,都是一个一个的,所以这一层的报文叫做数据报
  • 而面向字节流的概念,是tcp协议提供给应用层的,并不在ip层体现

8位协议号

用来标识该报文具体交给上层的哪个协议

  • 假如自己是发送端,由tcp交给ip,就会填入tcp协议号
  • 当传送到对面的网络层时,就会知道要交给传输层的tcp协议

首部校验和

和tcp里的用处一样

  • 用于检测传输过程中是否发生了错误

8位生存时间

一个ip报文在转发的过程中(查找路由表,跳转下一个路由器):

  • 如果本身主机不可达/网络问题,可能会被一直转发
  • 因为它找不到目标主机->形成游离报文->会大量积压(一直存在在网络里,不停被转发,且因集线器的处理而不会信号衰减)
  • 所以,需要设置一个报文存活时间(ttl -- time to live) ,记录最大经历路由器的跳数(相当于是一个基准值)

每经过一个路由器,ttl-1

  • ttl=0时,当前路由器会丢弃这个报文
集线器

路由器中的数据->二进制序列->光电信号->会衰减

  • 而集线器会在信号衰减时,自动帮我们进行信号放大,保证长距离传输

提供ip地址和端口号的作用

介绍

创建套接字时,需要提供ip和端口号

  • 其中,端口号给tcp协议填充报头
  • ip地址给ip协议填充报头 -- 这也就是为什么要把字符串格式的ip地址(点分十进制)->4字节,因为ip报头的ip地址字段是4字节

举例

以唐僧为例:

  • 他受唐王所托,从东土大唐而来,要去往西天,向佛祖求取真经

而里面的人物/地点对应到网络中就是:

  • 东土大唐 -- src_ip
  • 唐太宗 -- src_port(进程)
  • 西天 -- dst_ip
  • 如来佛祖 -- dst_port(进程)
  • 只有提供了以上数据,唐僧才能成功到达并返回

唐僧在其中充当什么角色呢?

  • 唐僧只是个跑腿的 -- 报文
  • 真经 -- 目标数据

西游记本质上是唐太宗和如来佛祖之间的通信过程

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

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

相关文章

科研绘图系列:R语言分割小提琴图(Split-violin)

介绍 分割小提琴图(Split-violin plot)是一种数据可视化工具,它结合了小提琴图(violin plot)和箱线图(box plot)的特点。小提琴图是一种展示数据分布的图形,它通过在箱线图的两侧添加曲线来表示数据的密度分布,曲线的宽度表示数据点的密度。而分割小提琴图则是将小提…

LeNet实验 四分类 与 四分类变为多个二分类

目录 1. 划分二分类 2. 训练独立的二分类模型 3. 二分类预测结果代码 4. 二分类预测结果 5 改进训练模型 6 优化后 预测结果代码 7 优化后预测结果 8 训练四分类模型 9 预测结果代码 10 四分类结果识别 1. 划分二分类 可以根据不同的类别进行多个划分,以…

【数据分享】2013-2022年我国省市县三级的逐月SO2数据(excel\shp格式\免费获取)

空气质量数据是在我们日常研究中经常使用的数据!之前我们给大家分享了2000——2022年的省市县三级的逐月PM2.5数据和2013-2022年的省市县三级的逐月CO数据(均可查看之前的文章获悉详情)! 本次我们分享的是我国2013——2022年的省…

Langchain-Chatchat-Ubuntu服务器本地安装部署笔记

Langchain-Chatchat(原Langchain-ChatGLM)基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM), local knowledge based LLM (like ChatGLM) QA app with langchain。 开源网址:https:…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

基于面向对象和递归的拦截器设计模式

1 定义 拦截器模式(Interceptor Pattern),是指提供一种通用的扩展机制,可以在业务操作前后提供一些切面的(Cross-Cutting)的操作。这些切面操作通常是和业务无关的,比如日志记录、性能统计、安…

SciPy版本与Python和NumPy各个版本的兼容性

但是现在我用Scipy1.13.1,Python3.10,NumPy2.0.0,使用Scipy时会报错,将NumPy 版本降低为1.26.4以后,就没有报错了。

C++ | Leetcode C++题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; class Solution { public:int missingNumber(vector<int>& nums) {int n nums.size();int total n * (n 1) / 2;int arrSum 0;for (int i 0; i < n; i) {arrSum nums[i];}return total - arrSum;} };

【MySQL】一些业务场景常见的查询,比如实现多表字段同步,递归查询等

目录 快速加注释多表关联查询更新多个字段循环查询子级方法1&#xff1a;递归查询方法2&#xff1a;循环查询 快速加注释 使用ALTER TABLE语句可以修改表结构&#xff0c;包括添加注释。以下是添加注释的语法&#xff1a; ALTER TABLE 表名 MODIFY COLUMN 列名 列类型 COMMEN…

【开源库学习】libodb库学习(三)

4 查询数据库 如果我们不知道我们正在寻找的对象的标识符&#xff0c;我们可以使用查询在数据库中搜索符合特定条件的对象。ODB查询功能是可选的&#xff0c;我们需要使用--generate-query ODB编译器选项显式请求生成必要的数据库支持代码。 ODB提供了一个灵活的查询API&#x…

LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】

【链表】 No. 0160 相交链表 【简单】&#x1f449;力扣对应题目指路 希望对你有帮助呀&#xff01;&#xff01;&#x1f49c;&#x1f49c; 如有更好理解的思路&#xff0c;欢迎大家留言补充 ~ 一起加油叭 &#x1f4a6; ⭐题目描述&#xff1a;两个单链表的头节点 headA 和 …

51单片机嵌入式开发:13、STC89C52RC 之 RS232与电脑通讯

STC89C52RC 之 RS232与电脑通讯 第十三节课&#xff0c;RS232与电脑通讯1 概述2 Uart介绍2.1 概述2.2 STC89C52UART介绍2.3 STC89C52 UART寄存器介绍2.4 STC89C52 UART操作 3 C51 UART总结 第十三节课&#xff0c;RS232与电脑通讯 1 概述 RS232&#xff08;Recommended Stand…

huawei USG6001v1学习----NAT和智能选路

目录 1.NAT的分类 2.智能选路 1.就近选路 2.策略路由 3.智能选路 NAT:&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09; 指网络地址转换&#xff0c;1994年提出的。NAT是用于在本地网络中使用私有地址&#xff0c;在连接互联网时转而使用全局…

Java | Leetcode Java题解之第263题丑数

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isUgly(int n) {if (n < 0) {return false;}int[] factors {2, 3, 5};for (int factor : factors) {while (n % factor 0) {n / factor;}}return n 1;} }

数学建模--优劣解距离法TOPSIS

目录 简介 TOPSIS法的基本步骤 延伸 优劣解距离法&#xff08;TOPSIS&#xff09;的历史发展和应用领域有哪些&#xff1f; 历史发展 应用领域 如何准确计算TOPSIS中的理想解&#xff08;PIS&#xff09;和负理想解&#xff08;NIS&#xff09;&#xff1f; TOPSIS方法在…

<数据集>手势识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2400张 标注数量(xml文件个数)&#xff1a;2400 标注数量(txt文件个数)&#xff1a;2400 标注类别数&#xff1a;5 标注类别名称&#xff1a;[fist, no_gesture, like, ok, palm] 序号类别名称图片数框数1fist597…

Qt中在pro中实现一些宏定义

在pro文件中利用 DEFINES 定义一些宏定义供工程整体使用。&#xff08;和在cpp/h文件文件中定义使用有点类似&#xff09;可以利用pro的中的宏定义实现一些全局的判断 pro中实现 #自定义一个变量 DEFINES "PI\"3.1415926\"" #自定义宏 DEFINES "T…

XLua原理(一)

项目中活动都是用xlua开发的&#xff0c;项目周更热修也是用xlua的hotfix特性来做的。现研究底层原理&#xff0c;对于项目性能有个更好的把控。 本文认为看到该文章的人已具备使用xlua开发的能力&#xff0c;只研究介绍下xlua的底层实现原理。 一.lua和c#交互原理 概括&…

香橙派AIpro部署边缘端夜莺监控

文章目录 硬件信息硬件简介技术路线硬件参数到手实拍接口详情图应用场景相关资源香橙派官方昇腾论坛 开箱使用准备工作上电准备启动设备开发板状态 连接设备方式一、显示器直连方式二、Micro Usb 数据线串口连接方式三、Micro Usb 数据线方式网络直连方式四、Micro Usb数据线方…

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图(二D)

R语言画散点图-饼图-折线图-柱状图-箱线图-直方图-等高线图-曲线图-热力图-雷达图-韦恩图&#xff08;二D&#xff09; 散点图示例解析效果 饼图示例解析效果 折线图示例解析效果 柱状图示例解析效果 箱线图示例解析效果 直方图示例解析效果 等高线图使用filled.contour函数示例…