前端人之网络通信概述
前端人之网络通信概述
- 介绍
- 网络七层模型
- 物理层
- 链路层
- 网络层
- 传输层
- 应用层
介绍
互联网的核心技术就是一系列协议,总称“互联网协议”,对电脑如何连接和组网作出详细的规定,理解了这些协议就理解了互联网的原理。
网络七层模型
互联网完成数据传输需要经过七层模型,每一层都是为了完成一种功能,为了实现这些功能,就需要大家遵守共同的规则,这个共同的规则就叫做“协议”。下面介绍每一层的功能,主要就是介绍每一层的主要协议。

物理层
“物理层”就是把两个电脑连接起来的物理手段(用电缆、光缆、双绞线、无线电波等方式),主要规定了一些电气特性,作用是负责传输0和1的电信号。

链路层
单纯的0和1是没有任何意义的,必须规定解读方式。比如:多少个电信号为一组?每个信号位有何意义?这就是链路层的功能,确定了0和1的分组方式。
早期不同厂商对电信号的分组方式都不同,后来逐渐的一种叫以太网的协议占据了主导地位,它规定一组信号构成一个数据包,叫做“帧(Frame)”,每一帧分成两个部分,标头(Head)和数据(Data):

- Head:包含数据包的一些说明项,比如发送者、接收者、数据类型等。固定长度为18字节。
- Data:数据包的具体内容,最短为46字节,最长为1500字节。
因此,一个帧最长为1518字节,如果数据很长,就必须分割成多个帧发送。
以太网规定,进入网络的所有设备,都必须具有“网卡”接口,数据包必须从一块网卡传送到另一块网卡,网卡的地址就是数据包的发送和接收地址,这个地址就是MAC地址。每块网卡出厂时都会有一个全球独一无二的MAC地址,长度为48个二进制位,通常用12个十六进制数表示,比如:00-B0-D0-86-BB-F7。在数据包 Head 中有了这个MAC地址,就可以定位网卡和数据包的路径了。
一块网卡如何去寻找另一块网卡的MAC地址呢?以及如何将数据准确发送到接收方呢?
以太网采用一种很原始的方:向本网络内所有计算机发送,让每台计算机自己判断是否为接收方,判断 Head 的接收方MAC地址与自身MAC地址是否相同,是就接收否就丢弃,这种方式就叫做广播。有了数据包的定义,网卡的MAC地址,广播的发送方式,链路层就可以在多台计算机之间传送数据了。
网络层
原理上,已知接收方的MAC地址其实应该就可以精准的将数据直接发送过去,广播的方式不仅效率低,而且局限在发送者和接收者都在同一个局域网内(这种设计是合理的,否则互联网上每一台计算机都会收到所有包)。因此需要找到一种方法,能够区分哪些MAC地址属于同一个子网络,如果是就采用广播方式发送,否则就采用路由方式发送。MAC地址显然做不到这一点,因为不同厂商出产的网卡他们的MAC地址只与厂商有关,与所处网络无关。
这就导致了网络层的诞生,它的作用是引进一套新的地址,,使得我们能够区分不同的计算机是否属于同一个子网络,这套地址就叫做网络地址,简称网址。于是,网络层出现以后,每台计算机有了两种地址:MAC地址和网络地址(两种地址之间没有任何联系)。
规定网络地址的协议就叫做IP协议,它所定义的地址被称为IP地址,由32个二进制位组成。IP协议的作用有两个:一是为每台计算机分配IP地址,另一个是确定哪些地址在同一个子网络中。通过IP地址就能找到对应的子网络,通过MAC地址对子网络里的计算机进行广播发送,将数据发送出去。
传输层
有了MAC地址和IP地址,就可以在互联网上的任意两台计算机建立通信。接下来的问题是,同一台主机上有很多程序都需要接收网络数据(比如同时聊天和网购),当一个数据包从互联网上发来的时候如何知道这个数据包是来自哪个程序呢?
也就是说还需要一个参数,表示这个数据包到底供那个程序(进程)使用,这个参数就叫做端口,它其实是每一个使用网卡的程序的编号,每个数据包都发到主机的特定端口,所有不同的程序就能取到自己所需要的数据,应用程序会随机选用一个端口。
因此,传输层的功能就是建立端口到端口的通信,相比之下网络层是建立主机到主机的通信。
现在,必须在数据包中加入端口信息,这就需要新的协议,最简单的实现就叫做UDP协议,也是由标头和数据两部分组成,Head 主要定义发出端口和接收端口,Data 包含具体内容。整个UDP数据包放入IP数据包的 Data 部分,IP数据包又是放在以太网数据包中,所以整个以太网数据包现在是这样了:

由于UDP协议没有办法知道对方是否接收到了数据,没办法保证数据传输的完整性和一致性,是不可靠的。因此出现了TCP协议,是一种面向连接的,可靠的基于字节流的传输层通信协议,保证了数据的可靠性。
不是说TCP协议可靠就在任何情况下都使用这种协议。还是需要看具体场景,例如:在视频直播,语言通信等其实可以采用UDP协议,因为它们不会因为数据的丢失而导致需要重新连接(TCP协议一旦数据发送失败会重新发送),顶多也就是卡顿一下,这是可以接受的。因此,UDP协议和TCP协议都有它们各自适用的场景。
应用层
由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则无法解读。应用程序收到传输层的数据,接下来就是要对数据进行解读,规定应用程序的数据格式。
举例来说,TCP协议可以为各种应用程序传递数据,比如:Email、www、FTP等,那么就必须有不同协议规定这些应用程序的数据格式,这些应用协议就构成了应用层。
这是最高的一层,直接面向用户(主要是开发人员),它的数据就放在TCP数据包的Data部分,因此现在的以太网的数据包就变成了下面这样:

相关文章:
前端人之网络通信概述
前端人之网络通信概述 介绍网络七层模型物理层链路层网络层传输层应用层 介绍 互联网的核心技术就是一系列协议,总称“互联网协议”,对电脑如何连接和组网作出详细的规定,理解了这些协议就理解了互联网的原理。 网络七层模型 互联网完成数…...
Python从0到100(七十二):Python OpenCV-OpenCV实现手势音量控制(文末送书)
前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…...
【云原生开发】K8S多集群管理系统成果展示
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
spring boot项目打成war包部署
1.修改pom.xml 在 pom.xml 里设置 <packaging>war</packaging>2.移除嵌入式tomcat插件 在 pom.xml 里找到spring-boot-starter-web依赖,在其中添加如下代码, <dependency><groupId>org.springframework.boot</groupId>&l…...
网络学习第四篇
引言: 我们在第三篇的时候出现了错误,我们要就行排错,那么我们要知道一下怎么配置静态路由实现ping通,这样子我们才知道下一跳到底是什么,为什么这样子做。 实验目的 理解和掌握静态路由的基本概念和配置方法。 实…...
【资料】网络安全风险评估报告,风险管理报告,网络安全风险管理计划,网络安全网络安全能力验证报(Word原件)
一、概述 1.1工作方法 1.2评估依据 1.3评估范围 1.4评估方法 1.5基本信息 二、资产分析 2.1 信息资产识别概述 2.2 信息资产识别 三、评估说明 3.1无线网络安全检查项目评估 3.2无线网络与系统安全评估 3.3 ip管理与补丁管理 3.4防火墙 四、威胁细类分析 4.1威胁…...
Django基础用法+Demo演示
Django快速上手 参考: Django快速上手 再写几个页面 编辑demo1/urls.py, 添加URL和视图函数映射 urlpatterns [path(index/, views.index),path(user/list/, views.user_list),path(user/add/, views.user_add), ]编辑app01/views.py,添加几个函数 from djang…...
【webrtc】 RTP 中的 MID(Media Stream Identifier)
RTP 中的 MID(Media Stream Identifier) RID及其与MID的区别 cname与mid的对比【webrtc】CNAME 是rtprtcp中的Canonical Name(规范化名称) 同样都是RTP头部扩展: 基于mediasoup的最新的代码,学习,发现mid在创建RtpSendStream时是必须传递的参数: 例如 D:\XTRANS\soup\…...
React 中 为什么多个 JSX 标签需要被一个父元素包裹?
为什么多个 JSX 标签需要被一个父元素包裹? JSX 虽然看起来很像 HTML,但在底层其实被转化为了 JavaScript 对象,你不能在一个函数中返回多个对象,除非用一个数组把他们包装起来。这就是为什么多个 JSX 标签必须要用一个父元素或者…...
记录日志中logback和log4j2不能共存的问题
本文章记录设置两个日志时候,控制台直接报错 标黄处就是错误原因:1. SLF4J(W):类路径包含多个SLF4J提供程序。 SLF4J(W):找到提供程序[org.apache.logging.slf4j. net]。 SLF4J(W):找到提供程序[ch.qos.log .classi…...
第5章: 图像变换与仿射操作
图像变换和仿射操作是图像处理中常用的技术,通过旋转、缩放、平移、剪裁等操作,可以实现多种视觉效果以及数据增强。 1.1 图像旋转 1.1.1 基础旋转操作 使用 rotate() 方法可以对图像进行旋转操作,指定旋转的角度(以度为单位&am…...
【计算机网络】【网络层】【习题】
计算机网络-传输层-习题 文章目录 13. 图 4-69 给出了距离-向量协议工作过程,表(a)是路由表 R1 初始的路由表,表(b)是相邻路由器 R2 传送来的路由表。请写出 R1 更新后的路由表(c)。…...
Scala的不可变Map常用操作
//类型:不可变,可变 //操作:添加元素,删除元素,查询元素,删除元素,遍历 object map {def main(args: Array[String]): Unit {//不可变Mapval map1 Map("鄂"->"湖北省"…...
nginx配置负载均衡详解
在现代的 web 应用中,负载均衡是确保高可用性、可扩展性和稳定性的关键技术之一。Nginx 是一个非常流行的反向代理服务器和负载均衡器,它支持多种负载均衡策略,能够帮助将客户端的请求分发到多个后端服务器,以提高系统的整体性能和…...
传奇996_19——龙岭总结
功能: 切割 切割属性: 即人物属性,可以设置临时属性或者永久属性,龙岭使用的是临时属性,所谓临时就是存在有效期,龙岭设置的有效期是123456789秒,即1428.89802天。 龙岭写法(倒叙…...
el-table 行列文字悬浮超出屏幕宽度不换行的问题
修改前的效果 修改后的效果 ui框架 element-plus 在网上找了很多例子都没找到合适的 然后这个东西鼠标挪走就不显示 控制台也不好调试 看了一下El-table的源码 他这个悬浮文字用的el-prpper 包着的 所以直接改 .el-table .el-propper 设置为max-width:1000px 就可以了 吐槽一…...
鸿蒙HarmonyOS 网络请求获取数据Http
注意的是;要为接口返回值指定类型 ,以及定义接口数据类型 index.ets import { http } from kit.NetworkKit;interface createAtType {date: number,}interface dataListType {createAt: createAtType;imgUrl: }Component export default struct TabBar {State dat…...
MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中
MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中 基础篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的…...
JavaScript逆向爬虫教程-------基础篇之JavaScript密码学以及CryptoJS各种常用算法的实现
目录 一、密码学介绍 1.1 为什么要学密码学?1.2 密码学里面学哪一些 二、字符编码三、位运算四、Hex 编码与 Base64 编码 4.1 Hex 编码4.2 Base64 编码 五、消息摘要算法 5.1 简介5.2 JS中的MD5、SHA、HMAC、SM3 六、对称加密算法 6.1 介绍6.2 加密模式和填充方式6.3 CryptoJ…...
【分布式】万字图文解析——深入七大分布式事务解决方案
分布式事务 分布式事务是指跨多个独立服务或系统的事务管理,以确保这些服务中的数据变更要么全部成功,要么全部回滚,从而保证数据的一致性。在微服务架构和分布式系统中,由于业务逻辑往往会跨多个服务,传统的单体事务…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
