1.OSI模型

OSI的实现过程

1. 发送端(高 → 低)

  • 应用层:用户产生数据(如 HTTP 请求)。

  • 表示层:数据格式转换、加密、压缩。

  • 会话层:建立和管理会话。

  • 传输层:加上端口号,形成 TCP/UDP 段。

  • 网络层:加上源/目的 IP 地址,形成 IP 包。

  • 数据链路层:加上源/目的 MAC 地址,形成帧。

  • 物理层:把帧转换为电信号或光信号,在介质上传输。

👉 这是一个逐层 封装 的过程,从高层到低层。

2. 接收端(低 → 高)

  • 物理层:接收电信号,恢复比特流。

  • 数据链路层:识别帧边界,检查 MAC 地址。

  • 网络层:解析 IP 地址,找到目标主机。

  • 传输层:检查端口号,交付给对应应用进程。

  • 会话层/表示层:恢复会话、解密、解压缩。

  • 应用层:最终交给用户应用程序。

👉 这是一个逐层 解封装 的过程,从低层到高层。

3. 总结

  • 发送端:高到低 → 封装数据

  • 接收端:低到高 → 解封装数据

  • OSI 模型的分层设计保证了每一层只关心自己的功能,上层调用下层服务,下层为上层提供支持

1.物理层:顾名思义,使用现实物理设备传输,例如:电线,光缆,电磁波传输。单位是bit(比特),高电平是1,低电平是0,传输高低电平,代表10。

2.数据链路层:将数据封装成帧,加上MAC物理地址,每个不同的网卡有全球唯一的MAC地址,使用交换机将两台计算机连接,就可以实现通信,一台计算机向交换机发送数据时,交换机就知道发送端计算机的MAC地址, 如果交换机之前就记录了目标端计算机的MAC地址,就可以直接将帧数据发送到目标端计算机,如果交换机的MAC地址表没有记录目标端的MAC地址,就将帧数据广播,目标端计算机收到后会响应给交换机,而非目标端计算机不会响应。另外差错纠正和流量控制也是数据链路层控制。

关于交换机的转发具体细节

  • A 封装数据帧

    • A 在应用层生成数据(比如一封邮件)。

    • 经过传输层 → 网络层 → 数据链路层,最终形成 以太网帧

    • 帧里包含:

      • 源 MAC 地址(A 的网卡地址)

      • 目的 MAC 地址(B 的网卡地址)

      • 数据载荷(邮件内容等)

  • A 将数据帧发送到交换机

    • A 的网卡把数据帧放到物理介质(网线)上。

    • 交换机端口收到这个数据帧。

  • 交换机查找 MAC 地址表

    • 交换机维护一个 MAC 地址表(端口 ↔ MAC 地址映射)。

    • 如果交换机已经学习过 B 的 MAC 地址在哪个端口:

      • 交换机直接把数据帧转发到 B 所在的端口。

    • 如果交换机还不知道 B 的 MAC 地址:

      • 交换机会 泛洪(Flood),把数据帧复制并发送到除源端口外的所有端口。

      • B 收到并响应,交换机学习到 B 的 MAC 地址。

  • B 接收数据帧

    • B 的网卡检查目的 MAC 地址,发现是自己的,就接收并上传到操作系统协议栈。

    • 数据逐层解封装,最终交给应用层(比如邮件客户端)。

  • 交换机学习过程

    • 在转发过程中,交换机也会记录:

      • A 的 MAC 地址 → 来自哪个端口

      • B 的 MAC 地址 → 来自哪个端口

    • 这样以后 A 再发给 B,就能直接单播,不需要泛洪。

第一次 A 发给 B:交换机不知道 B 的位置 → 泛洪 → B 收到 → 回复 → 交换机学习到 B 的 MAC 地址。

第二次 A 发给 B:交换机已经知道 B 的位置 → 直接单播到 B 的端口。

如果 A 发给 C:同样的过程,交换机查表 → 转发。

3.网络层:只使用MAC地址实现远端通信是不现实的,因此我们使用虚拟地址IP地址,将数据加上源和目的IP地址封装成包,路由器根据包的地址进行转发,地址管理和路由选择就是这一层的核心,端对端

4.传输层:实现服务端里不同进程和客户端里不同进程的传输和管理,端口对端口,流量控制和错误控制。

传输层

TCP可以分成多分段发送

5.会话层:客户端和服务器在开始通信前,需要先建立一个会话。维持会话的状态,确保双方能持续交换数据。可以处理身份验证、权限控制等。例如管理登录:网站保持登录状态,同步服务:记录上次观看时刻。

6.表示层:编码和解码,HTTPS(SSL/TSL),压缩和解压缩

7.应用层:应用数据,即报文

2.客户端到服务端通信

通信过程

应用层产生报文

报文——+源端口+目标端口——>段

段——+源IP+目标IP——>包

包——+客户端MAC+目标MAC(填广播地址)——>帧

ARP(Address Resolution Protocol,地址解析协议):IP 地址 → MAC 地址映射:网络层使用 IP 地址,但真正的数据传输在链路层依赖 MAC 地址。ARP 就是负责把目标 IP 地址转换成对应的 MAC 地址。例如:当客户端不知道客户端网关MAC地址时,但是知道客户端IP地址

客户端将封装好的帧数据(客户端IP+网关IP+客户端MAC+广播MAC)发送到交换机,交换机广播出去,客户端网关收到后记录MAC地址,再拆封帧数据得到包数据,记录源IP,将源MAC地址和源IP地址关联为一台主机,客户端网关把自己的IP地址和MAC地址封装成帧,原路返回,客户端就知道客户端网关的MAC地址了

好的,那么现在我们知道如何通过IP地址找到目标的MAC地址,即 通过IP找到该计算机,那么我们开始了,我们想要使客户端的报文能传到服务器,客户端知道服务端IP地址,

  1. 当客户端和服务端同一局域网内,客户端可以通过ARP协议通过IP地址直接找到服务端MAC地址进行通信,直接跳到跳,帧数据。

  2. 当客户端和服务端不在同一局域网内,客户端将源IP、服务器IP、源MAC和默认网关MAC封装成帧,如图上发送给交换机,交换机发送到客户端网关,客户端网关拆封后得到包数据和服务器IP,网关发现该IP是在另一个网络中的,随后进行路由转发该包数据,最终到达目标网关,若服务器网关知道该服务器MAC地址则直接封装成帧转发,若不知道就通过ARP协议找到该服务器后再封装成帧转发,目标服务器收到来自服务器网关的帧数据后,拆封得到段,用目标端口实现报文,回去同理。

是超级管理员哦