当前位置: 首页 > news >正文

【EE初阶 - 网络原理】网络通信

文章目录

  • 网络通信基础
    • (一) IP地址
      • 格式
      • 特殊IP
    • (二)端口号
      • 概念
      • 格式
    • (三) 协议
      • 概念
      • 为什么需要协议?
      • 知名协议的默认端口
    • (四) 五元组
    • (五) 协议分层
      • **OSI 七层网络模型**
      • **TCP/IP 五层(或四层) 模型**
      • 网络设备所在分层
    • (六) 封装和分用
      • 封装
      • 分用
      • 交换机路由器的封装分用

网络通信基础

(一) IP地址

IP地址 主要用于 标识网络主机 和 其他网络设备(比如路由器)的网络地址,简答来说:IP地址用于定位主机的网络地址

就像我们寄快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地

格式

IP地址是32位的二进制数,通常被分割为4个"8位二进制数"(也就是4个字节)

如: 01100100.00000100.00000101.00000110

通常使用"点分十进制"表示 如:a.b.c.d (其中a,b,c,d都是0 - 255之间的十进制整数)
如: 100.2.3.4

特殊IP

127.* 的 IP地址用于本机环回 (loop back)测试,通常是 127.0.0.1
本机环回主要是用于本机到本机的网络通信 (系统内部为了性能,不会走网络的方式传输)
对于开发网络通信的程序 (即网络编程) , 常见的开发方式就是本机到本机的网络通信

IP地址解决了网络通信时定位网络主机的问题,但是,传输到目的主机后,由哪个进程来接收数据呢?-----这就需要端口号来进行标识

(二)端口号

概念

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据和接收数据的进程 简单来说: 端口号用于定位主机中的进程

类似寄快递时,不止需要收货地址(IP地址),也需要制定收货人的手机号(端口号),来联系收货人

格式

端口号是0 - 65535 范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送和接收网络数据

注意:两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号

可以简单理解为,一个手机号只能绑定一个人,但是一个人可以绑定多个手机号

问题:
有了IP地址和端口号,可以定位网络中唯一的一个进程,但是,网络通信是给予二进制的0/1数据来传输,我们该如何告诉对方发送的数据是什么样的呢?

网络通信传输的类型可能有很多种: 例如,图片,视频,文本等等
同一个类型的数据,格式也可能不同,比如 发送一个文本字符串 “你好!”

该如何标识发送的数据为文本类型 ,以及文本的编码格式呢? ----- 基于网络数据传输,需要使用协议来规定双方的数据格式

(三) 协议

概念

协议,网络协议的简称,网络协议是网络通信(即网络数据传输) 经过的所有网络设备都必须遵从的约定,规则.
比如,如何建立连接,如何互相识别等 只有遵守这个约定,计算机之间才能相互通信交流

协议,最终体现为在网络上传输的数据包的格式

由三要素组成:

  1. 语法:数据与控制信息的结构或格式
    类似于打电话时,双方要使用同样的语言:如 普通话
  2. 语义: 需要发出何种控制信息,完成何种动作以及做出何种响应
    语义主要用来说明通信双方应当怎么做,用于协调与参差处理控制信息
    类似于打电话时,说话的内容 吃了吗? —害没呢.
  3. 时序:事件实现顺序的详细说明
    时序定义了何时进行通信,先讲什么,后讲什么,讲话的速度
    比如,采用同步传输还是异步传输

为什么需要协议?

计算机之间的传输媒介是 光信号 和 电信号 通过"频率" 和 “强弱” 来表示0/1这样的信息
要传递各种不同的信息,就需要约定好双方的数据格式

  • 计算机生产厂商很多
  • 计算机操作系统,也有很多
  • 计算机网络硬件设备,还是有很多

如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? ----就需要有人站出来,约定一个共同的标准,大家都来遵守, 这就是 网络协议

知名协议的默认端口

系统端口范围是 0 - 65535 其中:0 - 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议

比如

  • 22端口 : 预留给 SSH服务器绑定SSH协议
  • 21端口 : 预留给 FTP服务器绑定FTP协议
  • 23端口 : 预留给 TeInet服务器绑定TeInet协议
  • 80端口 : 预留给 HTTP服务器绑定HTTP协议
  • 443端口 : 预留给 HTTPS服务器绑定HTTPS协议

补充:以上只是说明 0-1023 范围的知名端口号用于绑定知名协议,某个服务器也可以使用其他 1024 - 65535 范围内的端口来绑定知名协议

就比如,VIP客户可以坐在包房,也可以坐在其他普通作为

(四) 五元组

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

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

1. 源IP :寄件人地址
2. 源端口号 : 寄件人
3. 目的IP : 收件人地址
4. 目的端口号 : 收件人
5. 协议 : 顺丰快递

(五) 协议分层

网络通信,是个非常复杂的过程,有很多的问题,很多细节要处理,如果只用一个协议就把所有的问题解决,就会造成这个协议复杂无比

于是就有了 协议拆分 ,把协议拆分成多个协议 ,但是在后续的发展中发现拆分出来的协议解决的问题都差不多,因此就再把协议分成很多类,就是协议分层 (每一层都有很多协议,这些协议做的工作都差不多)

当前我们学习的网络结构就是协议分层之后的产物

协议拆分并分层后,有什么好处?

  1. 下层协议给上层提供服务,上层调用下层协议 (封装)
    实现上层协议的人,不用考虑下层协议的细节
  2. 解耦合 :可以把同一层协议替换成其他协议 ,对于其他层次的协议来说,基本是无感知的
    类似于打电话 我们只需要有语言协议即可,并不需要了解电话协议,也互不影响

分层,只有相邻的两层协议之间可以进行交互,上层协议可以调用下层协议,下层协议可以给上层提供服务(协议之间的交互,不能跨层进行)

封装:上层协议不不要了解下层协议的细节
解耦合:分层之后,灵活的替换其中的某一层,对于整体的工作过程影响很小

当前有两种分层方式:

  1. OSI 七层网络模型 (理论上存在,实际上没有这么实现的)
  2. TCP/IP 五层(或四层) 模型

OSI 七层网络模型

在这里插入图片描述

TCP/IP 五层(或四层) 模型

在这里插入图片描述

  • 应用层: 负责应用程序间沟通,如简单的电子邮件传输(SMTP),文件传输协议(FTP) 网络远程访问协议(TeInet) 等。我们的网络编程主要针对应用层(数据传输过去之后,具体怎么使用)
  • 传输层负责两台主机之间的数据传输,如传输控制协议(TCP) 能够确保数据可靠的从源主机发送到目标主机 (两个点之间的通信,不考虑路径规划**
  • 网络层: 负责地址管理和路由器选择.例如:在IP协议中 通过IP地址来标识一台主机,并通过 路由表的方式规划出两台主机之间的数据传输的线路(路由).路由器工作在网络层 (两个点之间的路径规划)
  • 数据链路层: 负责设备之间的数据帧的传送和识别.例如 网卡设备的驱动,帧同步(就是从网线上检测到什么信号算是新帧的开始),冲突检测(如果检测到冲突就自动重发),数据差错校验等工作,有以太网,令牌环网,无线LAN等标准.交换机工作在数据链路层 (两个相邻结点之间如何传输)
  • 物理层: 负责光/电信号的传递方式,比如现在的以太网通常用网线(双绞线) ,电缆,光线,现在的WiFi无线网使用的电磁波都属于物理层的概念;物理层的能力决定了最大的传输速率,传输距离,抗干扰性. 集线器工作在物理层 (网络通行的基础)

注意:其中只有应用层是程序可以写代码处理的,其他都是有 操作系统 和 硬件设备 来处理的

网络编程 的 主要工作就是写应用层代码,来处理应用层的协议数据

物理层我们考虑比较少,因此有时候称为 TCP/IP四层模型

网络设备所在分层

  • 主机:操作系统内核时间了从传输层到物理层的内容
  • 路由器: 实现了从网络层到物理层
  • 交换机: 实现了从数据链路层到物理层
  • 集线器: 实现了物理层

注意:我们这里谈到的是传统意义上的 交换机 和 路由器 也称为二层交换机(工作在TCP/IP五层模型的下两层),三层路由器(工作在TCP/IP五层模型的下三层)

实际上现在的路由器和交换机越来越强大,彼此之间有许多功能的重叠;交换机和路由器功能都是用来组建局域网

(六) 封装和分用

封装

封装描述了网络是如何传输数据的

例如我们使用QQ发消息,使用主机A发送消息

  1. 应用层 : QQ应用程序 把用户输入的数据整理成应用层数据报(本质上就是字符串拼接,构成更完整信息更多的数据,再进行传输)
    在这里插入图片描述
    接下来 就需要把这个数据报交给传输层(操作系统内核)
    2. 传输层: 根据当前使用的传输层协议,给应用层数据报进行进一步组装
    应用层调用 传输层提供的接口(API) socket API 把数据交给传输层
    在这里插入图片描述
    接下来 继续把这个数据段交给网络层处理
  2. 网络层: 传输层构造好数据之后,继续调用网络层的API 把传输层的数据段交给网络层
    网络层最主要的协议:IP协议
    在这里插入图片描述
    IP协议本身不关心载荷内容是啥
    TCP协议也不关心载荷内容是啥
    协议类型,不只是一份数据,有很多层~~
    其中IP报头中会记录当前传输层使用的是哪个协议
    传输层报头中也会记录应用层使用的是哪个协议(准确来说是数据交给哪个应用程序)
    数据链路层报头 也会记录 网络层使用的是哪个协议
  3. 数据链路层: IP协议继续调用 数据链路层的API ,把IP数据包 交给数据链路层
    数据链路层 核心协议:以太网,在网络层数据包基础上进一步加工~~
    直到目前为止,数据还在当前主机上转悠,还没出门呢~~
    在这里插入图片描述
    构造成一个以太网数据帧,再把这个数据交给物理层
    5. 物理层:以太网继续把数据交给硬件设备(网卡)
    网卡会把上述二进制数据,最终一 光信号/电信号/电磁波信号 传播出去
    数据终于出门了~~

上述从上到下 依次添加报头的过程,就称为封装
主机B收到数据的时候,就是封装的"逆过程称为分用,就是把每一层协议对应的协议报头解析出来,并去掉报头

分用

分用,数据到达接收方主机,逐层进行解析

  1. 物理层
    数据到达接收方网卡, 光电信号,网卡把光电信号还原成二进制
    把二进制数据交给上层数据链路层
    网线/光纤来的数据 数据链路层 => 以太网
    物理层数据信号咋来的,都是和数据链路层直接相关的~~
  2. 数据链路层
    按照以太网协议进行解析
    把报头和报尾取出来,剩下的在和,往上传递给网络层
    在这里插入图片描述
    以太网的帧头中就有专门的属性,描述了网络层使用哪个协议
    3.网络层
    按照IP协议的格式解析,再把载荷数据交给传输层
    在这里插入图片描述
    同样的,IP报头中也有专门的属性,描述了传输层使用哪个协议
    4.传输层
    按照TCP协议来解析,取出载荷,交给应用层
    在这里插入图片描述
    传输层报头中,通过目的端口号,告知我们数据交给哪个应用程序
    5.应用层
    QQ应用程序,解析应用层数据,拿到关键信息,展示到界面,给出提示
    在这里插入图片描述
    不同的应用程序,自然使用不同的应用层协议来解析

虽说上述过程,看起来挺复杂的,但是对于计算机而言,这是个极快的过程~~

交换机路由器的封装分用

封装分用不仅仅是出现在主机上,也出现在传输过程中,包括交换机和路由器中

  • 经典路路由器,是封装分用到网络层
  • 经典交换机,是封装分用到数据链路层

交换机
主机的数据 => 交换机收到之后,物理层解析,数据链路层解析(没有网络层了)
重新构造出新的以太网数据帧,发给下一个设备
数据链路层中,得到的以太网数据帧的帧头,信息足以支持交换机进行下一步工作
交换机是工作在数据链路层
这就是交换机的二层转发

路由器
主机数据 => 路由器收到后,物理层,数据链路层,网络层解析(没有传输层)
重新构造出新的网络数据包,构造出以太网数据帧,构造出二进制数据,进行转发~
路由器工作在网络层
这里是路由器的三层转发

是否有设备工作在传输层?-----有的,比如防火墙/网关 是封装分用到传输层的,但是仅做了解即可~~

http://www.dtcms.com/a/431197.html

相关文章:

  • 方案网站有哪些盗用别的公司网站模块
  • 做网站是否要去工商备案做网站群
  • Less resolver error:‘~antd/es/style/themes/index.less‘ wasn‘t found.
  • php网站验证码错误网站改版对用户的影响
  • vue中如何实现异步加载组件
  • 网站地图seo石城网站建设
  • 怎么防止网站被镜像wordpress seo 主题
  • 那些钓鱼网站是怎么做的页面设计上边距在哪里找
  • 中国移动idc建设网站wordpress 导航栏
  • @RequestBody与@PathVariable什么时候加
  • 2011 年真题配套词汇单词笔记(考研真相)
  • “AMQP协议深度解析:消息队列背后的通信魔法”之核心概念与SpringBoot落地实战
  • 网规答题点【summer解析】华为5G空口新技术有F-OFDM和SCMA,F-OFDM是基于OFDM的改进版本,可以 实现空口物理层分片,兼容LTE 4G。
  • 简约智能设备制造公司网站今天东营发生的重大新闻
  • Matrixport DAT与XBIT携DEX赋能生态,共赴新加坡TOKEN2049
  • 做网站需要什么营业执照中国建设企业协会网站首页
  • 微服务项目->在线oj系统(Java-Spring)--增删改(前端)
  • 软件网站开发评估免费拿货的代理商
  • C#基础05-控制语句
  • 网站域名过期还能用吗wordpress主题管理插件
  • 扩展BaseMapper类
  • 秦皇岛建设部网站工程建设信息都在哪个网站发布
  • 多模态分类:图文结合的智能识别与代码实战
  • UE5 - C++项目基础
  • Word和WPS文字表格内的文字无法垂直居中?这样设置
  • 平台设计网站公司电话号码网站建设最好用什么语言
  • 【数组倍数去重】2022-11-26
  • vite插件的使用
  • 惠州网站建设是什么渠道查官网
  • 个人做网站有什么条件网站备案信息填写