网络通信概述

news2025/1/22 18:00:18

文章目录

  • IP地址
  • 端口号
  • 协议
    • 三要素
    • 作用
  • 五元组
  • 协议分层
    • OSI七层模型
    • TCP/IP 五层模型
      • 应用层
      • 传输层
      • 网络层
      • 数据链路层
      • 物理层
  • 封装和分用
    • 发送方 - 封装
    • 中间转发
    • 接收方 - 分用

一般认为计算机网络就是利用通信线路和通信设备将地理上分散的、具有独立功能的多个计算机系统按不同的形式连接起来,以功能完善的网络软件及通信协议实现资源共享和信息传递的系统。

  • 通讯设备(具有自治功能的)
  • 介质互联(双绞线、光纤…)
  • 资源共享(目的)

IP地址

;网络通信的目的是资源共享,数据之间基于介质传输数据,那么这些传输数据的节点之间是如何判断信息的来源,和目的呢?

  • 用于标识网络设备的网络地址
  • 用4个字节32位二进制表示(一般写作点分十进制如127.0.0.1)
  • 环回IP 127.0.0.1

环回IP:本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信。是使用一个特殊的ip地址127.0.0.1来实现的

端口号

端口号可以标识主机中发送数据、接收数据的进程。例如mysql服务器默认绑定3306端口。

  • 标识一个具体的应用程序(进程)
  • 使用2个字节16位表示(0 ~ 65535)
  • 0 号端口一般不使用,1 ~ 1023为知名端口号,不应占用
    • 22 - ssh
    • 80 - http
    • 443 - https
    • 23 - teIntent

协议

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。协议最终体现为在网络上传输的数据包的格式。

三要素

  1. 语义。语义是解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应
  2. 语法。语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。
  3. 时序。时序是对事件发生顺序的详细说明。(也可称为“同步”)。
    人们形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

作用

由于网络环境的复杂性,在进行网络通信时的状况比较复杂,所以在传输时就需要提前确定好如何传输,数据如何组织,如何发送数据,网络线路如何选择…

如果使用一个协议来约定和解决所有问题,会导致这个协议非常复杂,非常的庞大,因此在设计网络协议时,就对网络协议进行拆分,这样:

  • 上层协议调用下层协议,不需要了解下层协议的实现细节(封装)

  • 下层协议给上层协议提高支持

  • 可以灵活的调整替换某层协议

有了这样的层次结构,就可以避免夸层次交互,降低了协议之间的耦合,提高了协议系统的可读性

五元组

在TCP/IP协议中,用五元组来标识一个网络通信:

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

协议分层

网络通信是一个比较复杂的工作,如果靠一个协议来解决所有的问题,会导致这个协议非常庞大、复杂。

网络分层就可以让网络的体系结构更加清晰的呈现。上层协议调用下层协议,下层协议给上层协议提高支持。每个层次之间不需要明确层次结构,每个层次对外隐藏实现细节,对每个层次之间的协议也可以根据需要灵活调整。这样就降低了耦合

由于理论和实践之间的差异,理论上网络有七层OSI七层模型 - 参考模型,而各大产商支持的普遍是TCP/IP五层协议。

OSI七层模型

在这里插入图片描述

TCP/IP 五层模型

在这里插入图片描述
在具体实践中,将OSI中的应用层、表示层、会话层合并为TCP/IP中的应用层。

应用层

    通信双方通信数据的规范
通常是根据场景和需求,由程序员自主决定的

传输层

    只关注通信的起点和终点 - 端口

网络层

    网络传输路线如何规划 - IP地址

数据链路层

    描相邻节点之间的如何 - MAC地址

物理层

    描述了网络基础设施的规范和标准

封装和分用

我们通过一个例子来看网络中的封装和分用。比如我给对方发送一句”hello“,这句“hello”,对方是如何收到的。
在这里插入图片描述

发送方 - 封装

(我 微信号:111111):
1. 应用层:微信客户端按照应用层的协议将”hello“封装成应用层的数据报,然后交给传输层。假设微信的应用层的协议这样组织(发送方微信号,接收方微信号,时间,正文):
在这里插入图片描述
应用层就可以根据协议构造上述的应用层数据报,构造好后调用传输层API将这个数据报交给传输层。

  1. 传输层:传输层有很多协议,其中最主要的是TCP和UDP协议此处假设传输层协议为UDP,传输层收到应用层的数据报后,根据UDP协议构造UDP数据报。
    在这里插入图片描述

UDP不会关心应用层的数据是什么,将其当做本层载荷进行封装。传输层封装完成后,进一步将UDP数据报交给网络层。

  1. 网络层:网络层最主要的协议是IP协议,此处网络层拿到UDP数据报后会将其封装成IP数据报:在这里插入图片描述
    同样的,IP层也不会关心UDP的内容,只会将其当做本层的载荷,进行封装。

  2. 数据链路层:使用以太网对上层协议(IP数据报)进行封装,加上以太网帧头和帧尾。
    在这里插入图片描述

  3. 物理层:物理层根据物理层协议规范(网卡)将以太网数据报转换成01序列进一步转换成光/电信号进行发送

中间转发

    中间情况:中间可能会经过路由器交换机的转发,先拆包,在封装,具体拆到那一层取决于是交换机还是路由器。

  • 交换机将电信号转换成二进制数据送往交换机的数据链路层,因为交换机属于数据链路层的设备,所以它将可以查看数据帧头部的内容,但不会进行封装和解封装的过程。
  • 当路由器收到数据后会拆掉数据链路层的 MAC 头部信息,将数据送达网络层,这样 IP 头部信息就“暴露”在最外面了。 路由器将检测数据包头部的目标 IP 地址信息,并根据该信息进行路由过程,智能地将数据报文转发到下一跳路由器上(重复过程)

接收方 - 分用

(对方 微信号:222222):

  1. 物理层:物理层(硬件设备网卡),收到光电信号,需要将信号转换成01序列,得到以太网数据报,进一步将以太网数据报交给数据链路层。
    在这里插入图片描述
  2. 数据链路层:数据链路层得到以太网数据报后就会根据以太网协议进行解析,拿到以太网数据报的载荷,再将以太网数据报的载荷交给网络层IP协议处理。
    在这里插入图片描述
  3. 网络层:网络层得到IP数据报,根据IP协议进行解析,去掉IP报头得到IP载荷,交给传输层处理:
    在这里插入图片描述
  4. 传输层:传输层得到UDP数据报后,根据UDP协议进行解析,去掉UDP报头,得到UDP载荷,交给应用层。
    在这里插入图片描述
  5. 应用层:应用层拿到后就可以根据应用层的协议进行解析,解析完毕后就可以拿到数据”hello“,进一步就收到了”hello“这条消息了。

    发送方从应用层到物理层逐层封装,接收方从物理层到应用层逐层解析,每个层次之间相互独立,完成自己的功能,相互配合,完成了数据的传输。

总结:

  1. 封装:将数据从应用层开始,层层封装,最后通过网卡转换成光电信号进行传输
  2. 转发:中间会进过交换机和路由器进行转发
    • 交换机:会解析出以太网数据帧(数据链路层),获取到帧头中的“mac地址”
      • 重新封装,根据”mac地址”进行转发
    • 路由器:解析出ip数据报(网络层),拿到”目的ip地址”
      • 进一步规划处接下来的路线
      • 将数据进行封装,进行转发
  3. 分用:数据报到达目的主机后,根据各层协议,层次解析,最终拿到传输的数据

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

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

相关文章

Qt 天气预报项目

参考引用 QT开发专题-天气预报 1. JSON 数据格式 1.1 什么是 JSON JSON (JavaScript Object Notation),中文名 JS 对象表示法,因为它和 JS 中对象的写法很类似 通常说的 JSON,其实就是 JSON 字符串,本质上是一种特殊格式的字符串…

销门!销售秘籍都在这了

很多刚进销售行业,或者初入职场的小白,肯定会有这一段迷茫/茫然期:为什么同事每天都有客户打电话/实地拜访呢? 而自己却无所事事,也没有客户找我,也不知道去哪里拜访客户。 这个阶段对于销售小白来说是很…

联想SR660 V2服务器使用默认用户登录BMC失败

新到了一台服务器,使用默认用户登录BMC失败 登录失败提示:账号或密码错误 解决方案: 1、重置BMC 2、新增用户 开机后在出现 ThinkServer 界面按 F1,进入 BIOS 界面 进入 System Settings-BMC Configuration 菜单相关&#xf…

聊聊VMware vSphere

VMware vSphere是一种虚拟化平台和云计算基础设施解决方案,由VMware公司开发。它为企业提供了一种强大的虚拟化和云计算管理平台,能够在数据中心中运行、管理和保护应用程序和数据。vSphere平台与VMware ESXi虚拟化操作系统相结合,提供了完整…

1992-2021年区县经过矫正的夜间灯光数据(GNLD、VIIRS)

1992-2021年区县经过矫正的夜间灯光数据(GNLD、VIIRS) 1、时间:1992-2021年3月,其中1992-2013年为年度数据,2013-2021年3月为月度数据 2、来源:DMSP、VIIRS 3、范围:区县数据 4、指标解释&a…

从零开始:PHP实现阿里云直播的简单方法!

1. 配置阿里云直播的推流地址和播放地址 使用阿里云直播功能前,首先需要在阿里云控制台中创建直播应用,然后获取推流地址和播放地址。 推流地址一般格式为: rtmp://{Domain}/{AppName}/{StreamName}?auth_key{AuthKey}-{Timestamp}-{Rand…

(亲测有效)解决windows11无法使用1500000波特率的问题

大家好!我是编码小哥,欢迎关注,持续分享更多实用的编程经验和开发技巧,共同进步。 1、问题描述 从图1可以看出串口是正常的,安装的驱动是CP210xVCPInstaller_x64.exe,但是从图2可以看出,串口拒…

【刷题】DFS

DFS 递归: 1.判断是否失败终止 2.判断是否成功终止,如果成功的,记录一个成果 3.遍历各种选择,在这部分可以进行剪枝 4.在每种情况下进行DFS,并进行回退。 199. 二叉树的右视图 给定一个二叉树的 根节点 root&#x…

GEE 23:基于GEE实现物种分布模型之随机森林法

基于GEE实现物种分布模型之随机森林法 1.物种分布数据2.研究区绘制3.预测因子选择 1.物种分布数据 根据研究目的和需要导入物种数据: // Load presence data var Data ee.FeatureCollection("users/************736/Distribution"); print(Original da…

超好用的IDEA插件

IDEA是一款功能强大的集成开发环境(IDE),它可以帮助开发人员更加高效地编写、调试和部署软件应用程序。我们在编写完接口代码后需要进行接口调试等操作,一般需要打开额外的调试工具。 今天给大家介绍一款IDEA插件:Api…

设计模式 【Adapter 模式】

Adapter 模式 1.什么是 Adapter 模式 用来填补现有的程序和所需的程序之间差异的设计模式就是 Adapter 模式。 Adapter 模式有两种: ● 类适配器模式,即使用继承的适配器 ● 对象适配器模式,即使用委托的适配器 2.使用继承的适配器示例…

远程文件包含漏洞

远程文件包含漏洞 配置相关的文件包含 allow_url_fopen On/Off 通过远程方式打开文件(开启或关闭) allow_url_include On/Off 通过远程方式包含文件(开启或关闭) server2016为受害者 IP为10.9.46.226 文件包含的页面 ser…

RabbitMQ消息的应答

消息的应答机制 消费者完成一个任务可能需要一段时间,如果其中一个消费者处理一个长的任务并仅只完成了部分突然它挂掉了,会发生什么情况。RabbitMQ 一旦向消费者传递了一条消息,便立即将该消息标记为删除。在这种情况下,突然有个…

uniapp打包ios有时间 uniapp打包次数

我们经常用的解决方案有,分包,将图片上传到服务器上,减少插件引入。但是还有一个方案好多刚入门uniapp的人都给忽略了,就是在源码视图中配置,开启分包优化。 1.分包 目前微信小程序可以分8个包,每个包的最大存储是2M,也就是说你文件总体的大小不能超过16M,每个包的大…

前端开发_HTML

简介 CSS用于美化内容 HTML用于摆放内容 可以理解为HTML是基础&#xff0c;CSS是工具 HTML定义 HTML 超文本标记语言——HyperText Markup Language 超文本——链接 标记——标签&#xff0c;即带尖括号的文本 标签语法 双标签 开始标签&#xff1a; <xxx> 即尖…

模糊C均值聚类(Fuzzy C-means clustering,FCM)的基本概念,详细流程以及广泛应用!

文章目录 1.基本概念2. FCM的详细流程3.FCM的应用 1.基本概念 模糊C均值聚类&#xff08;Fuzzy C-means clustering&#xff0c;FCM&#xff09;是一种软聚类方法&#xff0c;它允许数据点属于多个聚类中心&#xff0c;每个聚类中心都有一个权重。与传统的硬聚类方法&#xff…

hyper-V操作虚拟机ubuntu 22.03

安装hyper-V 点击卸载程序 都勾选上即可 新建虚拟机&#xff0c;选择镜像文件 选择第一代即可 设置内存 配置网络 双击 启动安装虚拟机 输入用户名 zenglg 密码&#xff1a;LuoShuwen123456 按照enter键选中openssh安装 安装中 安装完成 选择重启 输入用户名、密码

回归预测 | MATLAB实现基于LightGBM算法的数据回归预测(多指标,多图)

回归预测 | MATLAB实现基于LightGBM算法的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现基于LightGBM算法的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLA…

《数据结构、算法与应用C++语言描述》-优先级队列-大根堆的C++实现

优先级队列 完整可编译运行代码见&#xff1a;Github::Data-Structures-Algorithms-and-Applications/_25Priority queue 定义 优先级队列&#xff08;priority queue&#xff09;是0个或多个元素的集合&#xff0c;每个元素都有一个优先权或值&#xff0c;对优先级队列执行…

使用Redis实现接口防抖

说明&#xff1a;实际开发中&#xff0c;我们在前端页面上点击了一个按钮&#xff0c;访问了一个接口&#xff0c;这时因为网络波动或者其他原因&#xff0c;页面上没有反应&#xff0c;用户可能会在短时间内再次点击一次或者用户以为没有点到&#xff0c;很快的又点了一次。导…