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

01_网络分层模型

一、OSI 七层网络模型

所谓七层就是基于 URL 等应用层信息的负载均衡,四层就是基于 IP + 端口的负载均衡,同样的还有基于二层 MAC 地址,三层 IP 地址的负载均衡。

而 OSI(Open System Interconnection,开放式通信互联) 是由 ISO(International Organization for Standardization,国际标准化组织) 制定的标准模型。

如图是一张经典的OSI 七层网络模型

image

如图,每一层都有对应的网络设备:

image

从上到下分别是:

  1. 应用层:就是指特定的应用层协议,比如 HTTP、远程文件协议 FTP、邮件协议POP3、远程登录协议SSH 等
  2. 表示层:负责数据处理转换:包含数据格式、编码解码、加密解密等
  3. 会话层:负责建立和维护不同主机之间的通信连接
  4. 传输层:主机进程之间的数据传输服务,注意,这里的进程间实际就是指传输层需要端口号来识别进程
  5. 网络层: 主机端到端的路由和寻址(这一层寻址是依靠 IP 地址)
  6. 数据链路层:负责管理相邻节点之间的数据通信:包括 数据封装成帧、MAC 寻址、流量控制、差错控制
  7. 物理层:数据通信的光电物理特性、时钟同步、传输比特流等

二、TCP/IP 四层模型

TCP/IP 四层协议栈是一个包含多种网络通信协议的集合,主要包括两个核心协议:TCP(传输控制协议) IP(网际协议)

TCP/IP 四层模型如下图:

image

OSI 七层模型和 TCP/IP 四层协议与层级的区别(OSI vs TCP/IP):

OSI七层模型 TCP/IP四层模型 代表协议 核心功能
应用层 应用层 HTTP/HTTPS、DNS、FTP、SMTP、SSH 面向用户交互,应用程序间通信
表示层 应用层 SSL/TLS、JPEG、ASCII、加密算法 数据格式转换、加密解密、压缩解压
会话层 应用层 RPC、NetBIOS、Socket API 建立/管理/终止会话连接
传输层 传输层 TCP、UDP、SCTP 端到端连接管理、流量控制、可靠性传输
网络层 网络层 IP、ICMP、ARP、OSPF、BGP 逻辑寻址、路由选择、跨网络数据传输
数据链路层 网络接口层 Ethernet、PPP、MAC、VLAN、STP 物理寻址、帧传输、错误检测、局域网数据交换
物理层 网络接口层 RS-232、RJ45、光纤、无线电磁波 比特流传输、物理介质规范、电气信号转换

OSI 模型的最上面三层(应用层、表示层和会话层)在 TCP/IP 中归为一个应用层;而数据链路层和物理层被归类为网络接口层(Network Interface)

三、网络协议封装和解包

进行网络传输时,数据包会按照 TCP/IP 协议栈,对上一层发来的数据进行逐层处理;然后加上该层的协议头,再发送给下一层,这个过程就叫做封装(encapsulation)。

TCP/IP 数据包封装示意图:

image

接下来我们以一个 HTTP 请求发送为例,自上而下简单说一下各层都在干什么。

(1)应用层(Application Layer)

应用层位于网络模型顶端,直接与用户交互,提供网络应用服务。

这一层包含了我们日常使用的各种协议,如用于网页浏览的HTTP、文件传输的FTP、邮件服务的SMTP、域名解析的DNS以及远程登录的Telnet和SSH等,以及支付宝、微信等各种 APP 自定义的私有协议都属于这一层。

  • HTTP/HTTPS:网页浏览的基石(80/443端口)
  • DNS:互联网的“电话簿”(53端口)
  • SMTP/POP3:电子邮件的发件箱和收件箱(25/110端口)

应用层的主要职责是格式化信息,比如HTTP协议的报文结构(请求头/响应头 + Body),并确保通过传输层把数据发送出去。

应用层的数据包叫做 报文(Message)

(2)传输层 (Transport Layer)

传输层负责端到端的通信控制,主要包括两种传输协议:面向连接的TCP(传输控制协议)和无连接的UDP(用户数据报协议)。

TCP 提供可靠的数据传输,通过建立连接、序列号、重传、拥塞控制等机制确保数据的完整性和正确顺序;

而 UDP 则提供更快但不保证可靠性的数据传输方式。(无序、无连接);

传输层会在应用程序数据前面增加了 TCP/UDP 头部(源端口,目的端口),以及其它控制信息。

传输层的数据包叫做 段(Segment)

TCP 通信的双方,会在通信开始互相协商一个最大分段大小(Maximum Segment Size),即 MSS。

MSS值通常为 MTU(链路层限制的单个数据包最大传输字节) 减去 IP 和 TCP 头部空间(各20字节),标准MSS值约为 536 字节。

UDP 则不会对上层数据包进行分片。

TCP/UDP 对比图

(3)网络层( Internet Layer)

实际上传输层并不真的负责数据“传输”,真正负责数据传送的是网络层 IP 协议。

网络层处理数据包的路由和转发,确定数据从源到目的地的最佳路径。

其核心协议是IP(互联网协议),负责为传输层数据包添加源 IP 地址和目标 IP 地址信息。

IP 层的数据包叫做包(Packet)。

网络层就是依靠 IP 地址来进行路由的;此外,还包括 ICMP(互联网控制消息协议)用于网络诊断,我们常见的 ping 就是使用 icmp;以及ARP(地址解析协议)和RARP(反向地址解析协议)用于IP地址与物理 MAC 地址之间的转换。

当传输层的数据包,再加上网络层的头部超过 MTU 时,IP 层就会把一个传输层数据包分片,分成几个数据包进行传输。

每个数据包都会包含完整的 IP 头部信息和自己所携带的那部分TCP包,那么分片后,是如何在接收方组装的呢?

是通过分片标识

  • 发送方在进行IP分片时,会给所有来自同一原始IP数据包的分片分配相同的"标识(Identification)"值

每个分片还携带了以下关键信息:

  1. 分片偏移量(Fragment Offset):表示该分片在原始数据包中的位置
  2. 更多分片(More Fragments)标志:除了最后一个分片外,所有分片的MF标志都设为1
  3. 分片本身的数据长度

依靠这些信息,接收方就能按正确的顺序还原原始的传输层数据包了。

但是分片之后,可能部分包会丢掉,IP 层不会对丢包做任何的重传和保证,丢失的分片需由更高层(如TCP)负责重传。

TCP 会主动根据 MSS 大小分片,所以大部分 TCP 数据包是不需要 IP 层分片的,主要是 UDP 的数据包需要 IP 层进行分片。

总的来说:TCP 在传输层根据 MSS 分段,UDP 则依赖网络层根据 MTU 进行 IP 分片

(4)网络接口层 (Network Interface Layer)

作为最底层,网络接口层负责实际的物理连接和数据传输,它定义了如何通过物理介质(如以太网、Wi-Fi、PPP 或 FDDI 等)发送和接收数据帧。

这一层处理硬件相关的通信细节,如信号调制、比特流传输和物理寻址等。

然后又在 IP 数据包前后分别增加了以太网头部和尾部控制信息(源MAC 地址,目的 MAC 地址)

MAC 地址是网络设备的唯一标识符,由网络设备厂商分配。

在局域网内,定位设备就靠 MAC 地址,而网络层是 IP 地址,在网络层和网络接口层之间,通过 ARP 协议来实现 IP 地址查找 MAC 地址。

数据链路层配置的最大传输单元(MTU,Maximum Transmission Unit)规定了最大的 IP 包大小。

在我们最常用的以太网中,MTU 默认值是 1500 字节(这也是 Linux 的默认值)。

MTU 越大,需要的分包也就越少,自然,网络吞吐能力就越好。

(5)解包

当接收方主机接收到数据包时,会按照与封包相反的顺序,从协议栈自下而上逐步进行解包操作:

  1. 先从数据链路层将数据包组装起来,并提取出 IP 层的数据包;
  2. 接着去掉 IP 层的头部,获取传输层的数据包;
  3. 最后再从传输层的数据包中取出应用层的数据。
http://www.hskmm.com/?act=detail&tid=8442

相关文章:

  • SaaS 是什么?一文带你看懂 SaaS 与传统软件的区别
  • FreeCAD-即时入门-全-
  • UOS统信服务器操作系统V20(1070)安装mysql8.0.41(建议安装glibc2.28版本)
  • MyEMS:重新定义人与能源的关系 —— 一场藏在数据里的能源管理革命
  • 刀齿磨损智能检测APP
  • TJOI2007--线段
  • ceph集群的部署
  • 充电桩测试:守护绿色出行的安全密码
  • 如何写好一个缺陷报告?让开发无法拒绝修复的10个要素
  • 不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
  • C#记录类型与集合的深度解析:从默认实现到自定义比较器
  • 安徽京准:NTP时间服务器助力网络数据安全稳定
  • UOS统信服务器操作系统V20(1070)安装mysql5.7.42
  • 响应式问题
  • Python 函数缓存
  • 乐蜂直播购物商城小程序介绍
  • 基于C#实现基恩士PLC通信
  • VIPSHOP 门店会员营销管家:助力实体商家数字化运营
  • Rhino 8.10 中文版下载安装步骤(附详细图文说明)
  • 深入解析:第十四届蓝桥杯青少组C++选拔赛[2022.12.18]第二部分编程题(2、字符翻转)
  • 指令的执行过程
  • ALINX 助力希腊 SpaceDot AcubeSAT 卫星任务,2026 将入太空
  • Ubuntu 安装JDK8
  • 负载均衡层详解part 4
  • 重磅!中国科学引文数据库(CSCD)收录期刊(2025-2026)目录公布!共收录1464种期刊!
  • Flash Attenion算法原理
  • 电流探头消磁失败的原因与解决策略
  • 【算法】双指针(四)-盛最多水的容器 - 实践
  • 程序设计小学期小计
  • 3dma渲染噪点成因排查及优化方案 - 详解