网络数据传输过程

news2024/11/26 22:26:19

先验知识:OSI模型

OSI网络模型实际上是参考模型,在实际中并不使用,在网络出现问题的时候,可以从一个宏观的整体去分析和解决问题,而且搭建网络的时候并不需要划分为7层,当今互联网广泛使用的是TCP/IP网络模型(原本只有4层),随着人们不断实践后发现,划分为5层会更符合实际。

image-20240120141543587

网络传输的流程

image-20240119173111092

image-20240121003011819

1. 应用层

  • 正:应用程序发起连接,比如”我们要浏览某个网页“,我们就会对该网页发起请求;
  • 反:将段解封为报文,报文是数据在应用层中的名字;

例子:客户端要发送数据,也就是报文。

image-20240121000243263

2. 传输层

  • 正:将报文封装为段,封装时会加上端口号;
  • 反:将包解封为段,段是传输层中数据的名字;
  • 传输层管理两个节点之间的数据传输,负责可靠传输(TCP)和不可靠传输(UDP),还有一个新的叫QUIC;

例子:报文来到传输层,加上源端口号和目标端口号,封装成段。

image-20240121000223610

3.网络层

  • 正:将段封装为包,封装时会加上ip地址;
  • 反:将帧解封为包,包是网络层中数据的名字;

例子:段来到网络层,加上源IP和目标IP封装成包;

image-20240121004809448

4. 数据链路层

  • 正:将包封装为帧,在封装的时候会加上MAC地址;

  • 反:在数据链路层中,比特会被封装成帧,帧是这一层表示数据的名字;

    image-20240120155254218

    例子:数据来到数据链路层之后,理论上根据目标MAC地址可以将包和源MAC地址和目标MAC地址封装成帧。但是存在的问题是目标IP地址和源IP地址并不是在同一个网络下的,要发送到其他的网络,就需要经过默认网关,由于客户端主机并不知道默认网关的MAC地址,没有办法封装成帧,这个时候可以用ARP协议进行广播,找到网关IP对应的MAC地址。具体步骤如下:

    1. 首先,客户端将自己的MAC地址封装成帧,利用ARP协议广播出去,默认网关收到广播出去的帧之后,查看帧,可以看到客户端的MAC地址,再解封发现包里面的IP地址,然后将IP和MAC关联为一台主机;image-20240121001402501

    2. 然后默认网关将自己的IP地址放入包中,再结合自己的MAC地址封装成帧,然后将其原路返回客户端,这样客户端就知道默认网关的MAC地址了;

      image-20240121002006804

5. 物理层

  • 正:将帧封装为比特;

  • 反:比特;

  • 我们要发送出去的数据在计算机里只不过是无数的0和1(比特),物理层要把这些比特用不同的媒介传输出去,这些媒介可以是电缆、光或者其他形式的电磁波来表示和传输信号;

  • 数据从网络接口出去之后,会经过不同的网络拓扑(网络拓扑是指网络中设备如计算机、路由器、交换机之间物理或逻辑连接的布局结构,描述了设备之间的关系以及他们如何相互连接,是设计和管理计算机网络的基础),

例子:帧到了物理层封装成比特流,发送出去。

  • 然后会经过默认网关,解封为帧发现是发送给自己的,再解封为包查看目标IP地址是在另一个网络中的,然后进行路由转发,最终到达目的网络;

  • 如果目标网关知道目标IP地址和MAC地址是哪台主机,封装成帧就可以直接发送了,如果不知道的话也可以用ARP协议来广播一下获取。

  • 服务器在收到比特流之后按上面的过程倒序进行解封,就可以得到相应的请求报文。

  • 然后以同样的方式给客户端发送回应。

参考:https://www.bilibili.com/video/BV1EU4y1v7ju/?spm_id_from=333.788&vd_source=bad9fad47786fe7e9f54f99cc00b91e9

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

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

相关文章

Leetcode 2788. 按分隔符拆分字符串

我们可以先自己模拟一下分隔字符串的过程。如果只是简单的,遇到分隔符,将分隔符前后的子串加入结果的List,那么很显然并没有考虑到一个String中有多个字符串的情况。一种比较容易想到的方法是: 先对List中每个字符串遍历&#xf…

Docker-Confluence部署记录

启动 docker container run -v $(pwd):/var/atlassian/application-data/confluence/ --nethost -d --nameconfluence_720_20240120 confluence/confluence:7.2.0新建mysql数据库 导入破解包 atlassian-agent 参考-Confluence 破解方式(Linux) 按流程破…

设计模式-资源库模式

设计模式专栏 模式介绍模式特点应用场景资源库模式与关系型数据库的区别代码示例Java实现资源库模式Python实现资源库模式 资源库模式在spring中的应用 模式介绍 资源库模式是一种架构模式,介于领域层与数据映射层(数据访问层)之间。它的存在…

Spring Boot 3.2.2整合MyBatis-Plus 3.5.5依赖不兼容问题

问题演示 导依赖 当你启动项目就会 抛出该异常 java.lang.IllegalArgumentException: Invalid value type for attribute factoryBeanObjectType: java.lang.String 问题原因 mybatis-plus 中 mybatis 的整合包版本不够导致的 解决方案 排除掉mybatis-plus 中 mybatis 的整合…

k8s 使用cert-manager证书管理自签

个人建议使用安装更快,比helm快,还要等待安装crd kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml#官网 https://cert-manager.io/docs/installation/kubectl/#创建自签的ClusterIssuer c…

基于YOLOv8的学生课堂行为检测,引入BRA注意力和Shape IoU改进提升检测能力

💡💡💡本文摘要:介绍了学生课堂行为检测,并使用YOLOv8进行训练模型,以及引入BRA注意力和最新的Shape IoU提升检测能力 1.SCB介绍 摘要:利用深度学习方法自动检测学生的课堂行为是分析学生课堂表…

基于SpringBoot Vue养老院管理

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

【iOS】CollectionView、瀑布流式和圆环布局

使用UITableView作为表格来展示数据完全没有问题,但仍有许多局限性,对于一些更加复杂的布局样式,就有些力不从心了 比如,UITableView只允许表格每一行只能显示一个cell,而不能在一行中显示多个cell,对于这…

智慧工地解决方案及案例:PPT全文26页,附下载

关键词:智慧工地解决方案,智慧工地建设,智慧工地整体架构,数字化工地,智慧工程 一、智慧工地建设对传统建筑业的影响 1、提高了施工效率和质量:智慧工地建设采用了先进的信息技术和管理方法,可…

【C++】vector容器接口要点的补充

接口缩容 在VS编译器的模式下&#xff0c;类似于erase和insert接口的函数通常会进行缩容&#xff0c;因此&#xff0c;insert和erase行参中的迭代器可能会失效。下图中以erase为例&#xff1a; 代码如下&#xff1a; #include <iostream> #include <vector> #inclu…

前端面试题-html5新增特性有哪些

HTML html5新增特性有哪些 1.新增了语义化标签 标签用法header定义文档或区块的页眉&#xff0c;通常包含标题&#xff0c;导航和其他有关信息nav定义导航链接的容器&#xff0c;用于包裹网站的导航部分section定义文档的一个独立节或区块&#xff0c;用于组织相关的内容art…

【C++】用wxWidgets实现多文档窗体程序

一、基本步骤和示例代码 在wxWidgets中&#xff0c;要实现多文档窗体程序&#xff0c;通常会使用wxMDIParentFrame和wxMDIChildFrame类来创建一种标准的MDI&#xff08;多文档接口&#xff09;应用。以下是基本步骤和示例代码&#xff0c;演示如何使用wxWidgets创建多文档界面…

Deepin_Ubuntu_查看树形目录结构(tree)

Linux系统&#xff08;Deepin、Ubuntu&#xff09;中&#xff0c;可以使用tree命令来查看树形目录结构&#xff0c;下面是一些示例&#xff1a; 查看当前目录的树形结构&#xff1a; tree查看指定目录的树形结构&#xff0c;例如/etc/X11/fonts目录&#xff1a; tree /etc/X…

Cortex-M3/M4内核NVIC及HAL库函数详解(2):HAL库中断底层函数实现

0 工具准备 Keil uVision5 Cortex M3权威指南&#xff08;中文&#xff09; Cortex M3与M4权威指南 stm32f407的HAL库工程 STM32F4xx中文参考手册 1 HAL库中断底层函数实现 打开stm32f407的HAL库工程&#xff0c;可以在CMSIS->Include->core_cm4.h内找到有关NVIC寄存器设…

为什么使用物理、数学等工具不能实现对人类智能的模拟

物理和数学是研究自然界和抽象概念的工具&#xff0c;它们为我们提供了理论和方法来解决问题。在实现类人的智能方面&#xff0c;物理和数学可以应用于以下几个方面&#xff1a; 1、计算机科学和算法 数学中的逻辑、统计学和优化理论等可以用于开发智能算法和机器学习模型。这些…

【趣味题-03】20240120猴子吃桃( 从大到小insert ,列表元素互减)

背景需求&#xff1a; 猴子摘桃的题目 解决&#xff1a; 猴子吃桃 倍数问题 作者&#xff1a;阿夏 时间&#xff1a;2024年1月20日猴子吃桃问题-1 猴子第一天摘了许多桃子&#xff0c;第一天吃了一半&#xff0c;&#xff1b;第二天又吃了一半&#xff0c; 后面每天都是这样吃…

NLP论文阅读记录 - 2022 | WOS 04.基于 XAI 的强化学习方法,用于社交物联网内容的文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法3.1 总结为两阶段学习3.1.1 基础系统 3.2 重构文本摘要 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 XAI-Base…

vue3 项目中 arguments 对象获取失败问题

问题 在 vue3 项目中 获取到的 arguments 对象与传入实参不符&#xff0c;打印出函数中的 arguments 对象显示如下&#xff1a; 原因 作者仔细回看代码才发现&#xff0c;自己一直用的是 vue3 的组合式写法&#xff0c;函数都是箭头函数&#xff0c;而箭头函数不存在 argumen…

GoZero微服务个人探究之路(七)添加中间件、自定义中间件

说在前面 官方已经自己实现了很多中间件&#xff0c;我们可以方便的直接使用&#xff0c;不用重复造轮子了 开启方式可以看官方文档 中间件 | go-zero Documentation 实现自定义的中间件 在业务逻辑中&#xff0c;我们需要实现自定义功能的中间件 ------这里我们以实现跨源…

【jQuery入门】链式编程、修改css、类操作和className的区别

文章目录 前言一、链式编程二、修改css2.1 获取css的值2.2 设置单个css属性2.3 设置类样式添加类移除类切换类 三、类操作与className的区别总结 前言 jQuery是一个流行的JavaScript库&#xff0c;广泛用于简化DOM操作和处理事件。在jQuery中&#xff0c;链式编程是一种强大的…