@TOC


什么是网络协议?

  1. 其实网络协议和我们平时生活中的协议是样的也是一种约定
  2. 就好比我们看谍战片的时候的密码本 我将信息按照密码本写好 你再按照密码本翻译 就是一个协议
  3. 计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息,就需要约定好双方的数据格式.

网络协议为什么要分层?

  1. 分层能够避免某个协议过于庞大复杂
  2. 分层之后 协议之间 解耦合 就是上层协议不需要理解下层协议的细节实现 相当于封装
  3. 分层之后 任意层次的协议都可以灵活的替换 方便协议的更新

认识IP地址

  1. IP协议有两个版本, IPv4和IPv6
  2. IP地址是在IP协议中, 用来标识网络中不同主机的地址
  3. 对于IPv4来说, IP地址是一个4字节, 32位的整数
  4. 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255

认识MAC地址

  1. MAC地址用来识别数据链路层中相连的节点
  2. 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
  3. 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

协议分层

网络通信这个过程,其实很复杂,里面有很多很多细节。
如果我们就只通过一个协议,来约定所有的细节,这个协议就会非常庞大而复杂!
这就非常的不友好!!!
更好的办法,就是把这个庞大而复杂的协议,拆分成多个小的,更简单的协议。
每个协议负责一部分工作。

这个就跟写代码一样!
写一个复杂的程序的时候,不要指望着,一个文件把所有的代码都装进去。
而是将这个代码拆分成多个更小的,更简单的文件,每个文件负责一部分工作。

写代码,我们不可能把所有代码都写在一起,我们需要拆成多个部分,多个模块,多个类和方法。
协议也是一样!你把这么复杂的一个东西,用一个协议去表达,不合适。
所以,需要它拆成多个协议, 这样我们就能更好的去维护,也可以更好的进行理解。
还可以灵活的来替换里面的部分内容。

image-20220625151451961


OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
  1. 应用层为操作系统或网络应用恒旭提供访问服务的接口
  2. 表示层提供数据格式和转换服务
  3. 会话层建立端的连接并提供访问验证和会话管理
  4. 传输层提供应用程序之间的逻辑通信
  5. 网络层为数据在结点之间传递创建逻辑联络 并分组转发数据
  6. 链路层在通信之间建立链路连接
  7. 物理层为数据端设备提供原始比特流传输的通络

image-20220625151604538

注意:

注意!上述这种模型只是存在与教科书中。
在真实的网络中,一般没有这样去实现的,因为它太麻烦了。


TCP/IP 五层(四层)模型

  • TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇
  • TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求
  1. 应用层负责和应用程序直接打交道(实际开发过程中用到最多的地方 甚至需要自己去设计应用层协议)
  2. 传输层负责端到端之间的传输 (他只关注起点和终点)
  3. 网络层负责点到点之间的传输(需要规划传输的路径)
  4. 数据链路层负责相邻之间点具体的如何去传输
  5. 物理层负责形成在网络通信的基础硬件设施上通过基站和光纤等具体的传输

简单举个例子来说:

  • 对于一台主机 它的操作系统内核实现了从应用层到物理的层五层 功能
  • 对于一台路由器 他实现了网络层到物理层的功能
  • 对于一台交换机 他实现了数据链路层到物理层的功能
  • 对于集线器 他只实现了物理层

image-20220625152023949

对比两个模型

image-20220625152115997


网络分层:封装 和 分用

这一组概念,就描述了不同分层的协议之间,是如何相互配合的。

在这里插入图片描述

举例: 发送消息

  1. 先来看一下发送信息的过程。

image-20220625152811772

数据从上网往下,从上层协议,交给下层协议,由下层协议进行封装,构成该层协议的报文。依次类推,直到 物理层,才真正进行传输数据。
这一套操作,称为 “封装”。

到了刚才的那一步,此时,我们的数据就已经离开了当前主机,前往了下一个设备。
下一个设备,可能是路由器/交换机/其他设备。
总之,A 和 B 之间 大概率不是相连的,中间会有很多个路由器和交换机来负责数据的转发。
中间过程暂且不谈!
主要先看 数据 到达 B 之后的表现!

  1. 数据 到达 B 之后的表现

image-20220625153652267

至此,我们就完成了一个消息的发送和接收的解析过程。
这个从上往下解析的过程,就称为“分用”。
分用,就是封装的逆过程。

注:

封装,是从上往下,数据依次被加上了协议报头。(包快递)
分用,是从下往上,数据依次被去掉了协议报头。(拆快递)


如果中间有交换机和路由器呢???

image-20220625154450201

image-20220625160129567