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

五元组+协议分层:拆解网络通信的底层密码

一、网络发展史

1.1、独立模式

独立模式:计算机之间相互独立。

1.2、网络互联 

1.2.1、概念

随着时代的发展,越来越需要计算机之间进行相互通信和共享资源,于是有了网络互联

网络互联:将多个独立的计算机网络通过特定的技术和协议连接起来,形成一个更大范围的网络系统,使得不同网络中的设备能够相互通信和共享资源。

数据共享本质是网络数据传输(网络通信),即计算机通过网络来传输数据。

根据覆盖范围,网络可分为 局域网(LAN)与 广域网(WAN)

1.2.2、局域网(LAN)
  • 定义本地私有网络,覆盖范围小(如家庭、办公室,校园),主机间可直接通信(内网),但未连接的局域网之间无法互通。

局域网的组建网络的方式

(1)基于网线直连

(2)基于集线器组建 

(3)基于交换机组建

(4)基于交换机和路由器组建

 

1.2.3、广域网(WAN)
  • 定义通过路由器连接多个局域网,覆盖城市、国家甚至全球范围。互联网(Internet)是最大的公共广域网,广域网内部的局域网属于其子网。

二、网络通信基础

        网络互联的目的是进行网络通信,即网络数据传输,再具体一点为:网络主机中的不同进程间基于网络传输数据。

        那么中组件的网络中,如何判断数据是从哪台主机传输到那台主机上呢?这时候需要使用IP地址来标识。

2.1、IP地址

概念

        IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址,即:用于定位主机的网络地址,可以理解为:主机的“数字身份证”。

格式: 

        32位二进制数,以点分十进制表示(如 172.16.254.1),范围从0.0.0.0到255.255.255.255 。

类比:如同快递单上的“收货地址”,确保数据包准确送达目标主机。

2.2、端口号 

概念

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

范围

        0~65535,其中0~1023为系统保留端口(如SSH:22、HTTPS:443)。

类比:类似快递单上的“收件人姓名”,区分同一地址的不同住户。

 2.3、协议

问题

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

        网络通信传输的数据类型可能有多种:文本、图片、视频等,同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”,如何标识发送的数据是文本类型,及文本的编码格呢?

        基于网络数据传输,需要使用协议来规定双方的数据格式。 

概念

        协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备,都必须共同遵从的一组约定、规则

        如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。

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

为什么需要协议

        就好比我要和一位网友见面,我需要知道我们的衣服分别是什么颜色的,或者我俩手里各拿一朵玫瑰花,用来判别是不是网友。

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

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

        如何让不同厂商生产出的计算机能够相互顺畅的通信?这时候就要有头部厂商约定共同的标准,大家都来遵守,这就是网络协议。 

2.4、五元组

        在TCP/IP协议中,五元组是唯一标识一次网络通信的五大要素,如同快递单上的关键信息,确保数据从起点到终点的精准交付。

        可以在cmd中,输入netstat -ano ,查看网络数据传输中的五元组信息 

        如果需要过滤(一般是通过端口号或进程PID过滤),可以使用netstat - ano | findstr 过滤字符串

 2.5、协议分层

        网络协议的分层设计,如同建筑中的分层结构,各层独立运作又协同配合,提升扩展性与维护性。

为什么要分层?

  • 网络通信本身是一件非常复杂的问题;
  • 如果只使用一个协议,来完成网络方方面面的问题,就使得这个协议非常的庞大和复杂

分层后优势

  • 标准化接口:定义层间交互规范(如传输层为应用层提供Socket API)

  • 解耦设计:各层独立实现,修改一层不影响其他层

 2.5.1、OSI七层模型

OSI(Open System Interconnect),即 开放式系统互连

• OSI 七层网络模型是⼀个逻辑上的定义和规范:把网络从逻辑上分为了7层。

• OSI 七层模型是⼀种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传 输;

主要有以下七层:

 OSI 七层模型既复杂又不实用:所以 OSI 七层模型没有落地、实现。

实际组建网络时,只是以 OSI 七层模型设计中的部分分层,也即是以下 TCP/IP 五层(或四层)模型来实现。

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

 物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型

2.5.3、网络设备所在分层
  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
  • 对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器,它只实现了物理层
2.5.4、网络分层对应 

        网络数据传输时,经过不同的网络节点(主机、路由器)时,网络分层需要对应。

        以下为同一个网段内的两台主机进行文件传输:

两台计算机通过TCP/IP通讯过程如下 :

         以下为跨网段的主机的文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器:

三、 封装和分用

        数据在网络中传输时,需经历多层协议的封装(发送端)与分用(接收端),确保信息准确传递。

3.1、封装

以“我通过QQ,发送Hello给aokey用户”为例

(1)应用程序获取到用户的输入,构造出一个应用层的数据包(结构化数据,往往有很多属性,且该数据包遵守应用层协议,发送数据的时候,把结构化数据-->字符串/二进制字节流)

 (2)应用程序调用传输层提供的接口(API),把数据交给传输层,传输层拿到数据后,构造出“传输层数据包”

有TCP和UDP两个协议,下篇我们会涉及。此处暂时使用TCP协议~~

TCP报头中属性很多,后面介绍,此处我们知道其中包含源端口和目的端口即可

(3) 传输层构造好数据后,继续调用网络层的API,将数据交给网络层,网络层最注主要的协议为IP协议。

(4) IP协议继续调用数据链路层的API,将IP数据包交给数据链路层,数据链路层核心协议“以太网”,然后进一步加工:

(5) 以太网继续将数据交给硬件设备(网卡),网卡把上述二进制数据,以光信号/电信号/电磁波信号等形式传播出去,此时数据才真的“出门”

从上层到下层,数据都要进一步加工(添加报头),称为封装。

封装过程如下图:

3.2、分用 

数据到达接收方(aokey)的主机,逐层进行解析~~

(1)数据到达接收方(aokey)的网卡,把光信号/电信号/电磁波信号等形式还原成二进制数据,将二进制数据交给上层数据链路层

(2)数据链路层按照以太网协议进行解析,把报头和包尾取出来,剩下的载荷往上传递给网络层

以太网的帧头中有专门的属性,描述了网络层使用了哪个协议

(3)网络层拿到数据后,按照IP协议的格式解析,把载荷数据交给传输层

IP报头中有专门的属性,描述了传输层使用了哪个协议

(4)传输层一样,取出载荷交给应用层

传输层报头中,通过目的端口号,告诉我们要将数据交给哪个应用程序

(5)应用程序,解析应用层数据,拿到关键信息,给出提示

数据分用的过程:

3.3、注意

相关文章:

  • Metal入门,使用Metal实现纹理效果
  • [C++面试] 基础题
  • const修饰指针
  • 【网络篇】TCP协议的三次握手和四次挥手
  • 如何让Wi-Fi设备传输距离达到1100米?涂鸦新方案让通信距离远超传统5倍
  • Go 语言中的 Struct Tag 的用法详解
  • 从零开始:用Python语言基础构建宠物养成游戏:从核心知识到完整实战
  • MySQL 数据库表结构修改与字段添加
  • 常见的游戏服务器架构有哪些?
  • 【MySQL】06.MySQL表的增删查改
  • (1)深度学习基础知识(八股)——常用名词解释
  • gd32e230c8t6 驱动ws2812
  • vue2实现元素拖拽
  • 自由开发者计划 002:创建一个贷款计算器的微信小程序
  • Elasticsearch 写入性能优化有哪些常见手段?
  • 2025版 JavaScript性能优化实战指南从入门到精通
  • 【机器学习基础】机器学习入门核心算法:线性回归(Linear Regression)
  • 用vue canvas画一个能源电表和设备的监测图
  • 《STL--string的使用及其底层实现》
  • (第94天)OGG 微服务搭建 Oracle 19C CDB 架构同步
  • 企业做网页还是网站/关键词seo优化排名公司
  • 哔哩哔哩推广网站/企业微信营销管理软件
  • 美国网页游戏网站/百度搜索风云排行榜
  • 盘石 网站建设/博客网站注册
  • 深圳做微信网站制作/seo百度发包工具
  • python做网站有优势/seo主要是指优化