网络通信概述

文章目录

  • 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. 分用:数据报到达目的主机后,根据各层协议,层次解析,最终拿到传输的数据

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT学习_16_制作软件安装包

1、准备软件exe及其运行环境 参考:Qt学习_12_一键生成安装包_江湖上都叫我秋博的博客-CSDN博客 这篇博客记录了,如何用window的脚本,一键生成一个可以免安装的软件压缩包,解压缩后,点击exe文件就可以直接运行。 这一…

基于SSM实现的图书管理系统

一、系统架构 前端:jsp | js | css | jquery | layui 后端:spring | springmvc | mybatis 环境:jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 借阅管理 04. 图书管理 05. 读者管理 06. 类型管理…

宽量程双计数器测量方法

如要测量计数器信号的数字频率或周期,可使用双计数器方法测量宽量程信号。该方法适于待测量信号的范围较广且整个范围都需要较高测量精度的情况。关于使用宽量程测量方法提高测量精度的详细信息,见量化误差章节。也可使用该方法测量比计数器时基频率更高…

阿里云RDS标准版(x86) vs 经济版(ARM)性能对比

概述 阿里云数据库在去年云栖大会上发布了基于阿里倚天芯片(ARM架构)的RDS实例,后正式命名为经济版。本文通过标准的sysbench测试,来看看相比与标准版,经济版是否更加“经济”,以帮助开发者选择适合自己的…

什么是API? (应用程序编程接口)

我们经常听到 API 这个专业名称。那么什么是 API 呢? 定义 API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。目的是提供应用程序与开发人员基于某软…

信号收尾.

sigaction 信号捕捉 它也是信号捕捉,不仅能处理普通信号还能处理实时信号,但我们不管实时信号 我们发现函数名和形参中结构体名一样都是sigaction,这在c/c中允许吗? 不建议,但是可以 signo你要捕捉几号信号 输入型参…

《一带繁花一路歌》趣味化讲述“一带一路”故事,生动化展现“文明互鉴”美好图景

2023年,总台《艺览天下》推出“一带一路”10期特别节目《一带繁花一路歌》,节目邀请“一带一路”沿线国家驻华大使等重量级嘉宾,在地标推介、故事分享、现场互动等环节里趣味化讲述“一带一路”故事,生动地展现出“文明互鉴”的美…

互联网上门家政小程序服务小程序

过去,家政门店主要依靠传统地推方式,如贴广告、发传单、亲友推荐等,被动地等待客户上门。这种方式使得拓展客户的效率低下,而且家政服务市场还存在一些问题,如市场竞争混乱、供需不平衡、员工素质参差不齐等&#xff0…

【elementUI】el-tab相关问题

Tabs 标签页 分隔内容上有关联但属于不同类别的数据集合。 <template><el-tabs v-model"activeName" tab-click"handleClick"><el-tab-pane label"用户管理" name"first">用户管理</el-tab-pane><el-tab-p…

uniapp和vue3+ts实现自定义头部导航栏左侧胶囊内容

由于某些原因&#xff0c;可能需要我们自己定义头部导航栏的内容&#xff0c;实现各种设计师画的设计稿&#xff0c;所以就需要这个自定义的组件&#xff0c;实现的内容&#xff1a;自定义标题和左侧胶囊图标内容&#xff0c;也可以自定义搜索内容到里面&#xff0c;实现的效果…

软件测试jmeter基本使用

1安装与配置 1.jdk下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#jdk18-windows&#xff08;压缩包中会给&#xff09; 2.jmeter下载 Apache JMeter - Download Apache JMeter&#xff08;压缩包中有&#xff09; 3.操作教学 打开软件后新…

学生用台灯哪个品牌比较好?2023考研护眼台灯推荐

随着科技时代的到来&#xff0c;人们的生活水平不断提高&#xff0c;也面临着许多问题&#xff0c;近期随着央视报道的全国中小学学生的近视率&#xff0c;护眼台灯再次被众人推上热潮&#xff0c;护眼台灯能够提供柔和自然的光感非常舒适&#xff0c;而且使用起来非常便捷。不…

JavaScript值和引用

前端面试大全JavaScript值和引用 &#x1f31f;经典真题 &#x1f31f;值和引用相关内容 1. 简单值&#xff08;原始值&#xff09; 2. 复杂值&#xff08;引用值&#xff09; 3. 访问方式 4. 比较方式 5. 动态属性 6. 变量赋值 &#x1f31f;真题解答 &#x1f31f;…

v-for和v-if同时使用时的问题:

当在同一个标签上同时使用 v-for 和 v-if 时&#xff0c;可能会导致意外的结果或错误。这是因为Vue的编译规则中&#xff0c;v-for 比 v-if 优先级更高&#xff0c;意味着 v-for 会先执行&#xff0c;然后 v-if 根据条件进行渲染或移除子元素。 在某些情况下&#xff0c;使用 …

ardupilot开发 --- 机载计算机 篇

0. 前言 关于机载计算机&#xff1b; 1. APSync 说到机载计算机Companion computer就不得不提另一个关键词APSync&#xff1b;APSync简化了机载计算机的设置&#xff0c;以便它可以为ArduPilot提供额外的功能&#xff0c;并简化与互联网服务的集成&#xff1b;提供日志下载和…

Linux:docker镜像的创建(5)

1.基于已有镜像创建 步骤&#xff1a; 1.将原始镜像加入容器并运行 2.在原始镜像中部署各种服务 3.退出容器 4.使用下面命令将容器生成新的镜像 现在我们在这个容器里做了一些配置&#xff0c;我们要把他做成自己镜像 docker commit -m "centos7_123" -a "tarr…

基于matlab的图像去噪算法设计与实现

摘 要 随着我们生活水平的提高&#xff0c;科技产品飞速更新换代&#xff0c;在信息传输中&#xff0c;图像传输所占的比重越来越大。但自然噪声会在图像传输时干扰其传输过程&#xff0c;甚至会使图片不能表达其原来的意义。去噪处理就是为了去除图像中的噪声&#xff0c;从而…

[英语学习][4][Word Power Made Easy]的精读与翻译优化

[序言] 今日继续阅读两段原版翻译, 有一点点生硬, 还是耐不住寂寞, 去优化了. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第18页] "And suerl…

【端到端可微1】端到端的训练,使用反向传播,要求过程可微分

文章目录 背景想法&#xff1a; Weighted least-squares fitting方法&#xff1a; Backpropagating through the fitting procedure.温习之前的基础前向传播反向传播 总结 背景 想做一个端到端训练的模型&#xff0c;将最小二乘嵌入其中。因此有了这系列文章。 想法&#xff…

fiddler抓包安卓

一、打断点 1、安卓手机和电脑在同一局域网下&#xff0c;手机连接的网络开启手动代理&#xff0c;ip填写电脑ip&#xff0c;端口填写fiddler中配置的端口。 ip查看&#xff1a; 端口配置&#xff1a;tools-options-connections 2、安装证书&#xff0c;手机浏览器输入电脑ip…