OSI 七层网络模型OSIOpen Systems Interconnection七层网络参考模型是一种用于描述计算机网络通信的框架将网络通信划分为七个不同的层次每个层次负责不同的功能。----------------------------------------------------------------------------------------------------- | OSI 层级 | 功能 | 协议 | ----------------------------------------------------------------------------------------------------- | 7. 应用层 | 用户界面、应用服务 | HTTP、FTP、DNS | | | | | ----------------------------------------------------------------------------------------------------- | 6. 表示层 | 数据转换、加密、压缩 | SSL/TLS、JPEG、GIF | | | | ASCII、Unicode 等 | ----------------------------------------------------------------------------------------------------- | 5. 会话层 | 建立、管理和终止会话 | RPC、SQL 等 | | | | | ----------------------------------------------------------------------------------------------------- | 4. 传输层 | 分段、流量控制、错误检测和恢复(保证信息的可靠传输)| TCP、UDP 等 | ----------------------------------------------------------------------------------------------------- | 3. 网络层 | 路由、寻址、路径选择(在网络中找到对方) | IP 路由器等 | ----------------------------------------------------------------------------------------------------- | 2. 数据链路层 | 帧封装、物理地址、错误检测和修复(在子网中找到对方)| 以太网、Wi-Fi、MAC、交换机 | | | | | ----------------------------------------------------------------------------------------------------- | 1. 物理层 | 物理媒介、信号传递(用信号表示上述东西) | 以太网电缆、光纤等 | -----------------------------------------------------------------------------------------------------物理层物理层是网络模型的最底层负责传输原始比特流以及在物理媒介上发送和接收数据。它涉及电压、电流、物理连接、传输速率等方面的规范。在这一层数据仅以比特形式传输没有任何逻辑结构。物理层的设备有网卡网线集线器中继器等。这一层获取他们对应的传送信号电压等转换成二进制数但是数据还未组织仅作为原始的电气电压。处理单位为bit传输的是比特流。物理层信道有线信道明线平行架设在电线杆上的架空线路。传输损耗低但是易受外界环境干扰。对称电缆由多对双绞线组成的线缆。同轴电缆以低损耗的方式传输模拟信号和数字信号。如电视广播系统、长途电话传输系统以及局域网互联等。光纤由玻璃或塑料制成的纤维利用光在这些纤维中以全反射原理传输的光传导工具。无线信道以辐射无线电波为传输方式。主要有地波传输天波传输和视距传输。例如卫星通讯电台广播。数据链路层数据链路层负责将原始比特流转化为帧以便在物理媒介上传输。它还处理物理层可能出现的错误并提供一些基本的流量控制和错误检测功能。MACMedia Access Control子层控制着数据在共享媒介上的访问。MAC地址每个网卡的唯一标识明确发送者和接收者直到数据内容和进行分组通过广播的形式传播局域网的所有计算机都能收到消息。可以通过ipconfig -all进行查看网络层网络层负责数据包的路由和转发以便在不同的网络之间进行通信。它决定了数据的最佳路径以及如何处理可能的拥塞。IPInternet Protocol是在这一层工作的协议它赋予设备唯一的IP地址。采用IP协议目前从 IPv4 过渡到 IPv6 。两个作用寻址对网络层而言使用IP地址来唯一标识互联网上的设备网络层依靠IP地址进行相互通信类似于数据链路层的MAC地址。路由在同一个网络中的内部通信并不需要网络层设备仅仅靠数据链路层就可以完成相互通信对于不同的网络之间相互通信则必须借助路由器等三层设备。传输层传输层提供端到端的通信定义端口号负责数据的分段、传输控制和流量管理。它可以实现可靠的数据传输如TCP或者无连接的数据传输如UDP并为应用程序提供数据的完整性和顺序性。可以把 TCP 比作打电话电话接通、通话、结束挂断整个过程都是可靠的也可以把 UDP 比作写信对方能否收到信发出的顺序等都是不可靠的。这一层常被称为数据段。TCP 是面向连接的协议是可靠的因为TCP会进行三次握手四次挥手但是这样会降低速度。UDP 具有较好的实时性效率比TCP高。UDP是没有三次握手四次挥手的故此不稳定但是速度快常用于直播游戏。会话层会话层管理不同设备之间的会话并确保数据的同步和传输。它负责建立、维护和终止应用程序之间的通信会话并处理错误恢复和数据同步。会话层包含了一种称为检查点Checkpoint 的机制来维持可靠会话。检查点定义了一个最接近成功通信的点并且定义了当发生内容丢失或损坏时需要回滚以便恢复丢失或损坏数据的点即断点下载的原理。表示层表示层处理数据的格式转换解码编码、加密和压缩以便不同系统上的应用程序可以互相通信。它确保数据的语法和语义正确使得应用程序能够正确解释和显示接收到的数据。应用层应用层是网络模型的最顶层直接与用户应用程序交互。它包含了各种应用程序如Web浏览器、电子邮件客户端等。在这一层用户可以进行各种网络活动如浏览网页、发送电子邮件等。还或者例如ajax调用接口发送http请求域名系统DNSwebSocket长连接SSH协议。常被称为报文。OSI七层模型中数据从发送方开始从应用层逐层封装直到物理层然后在接收方从物理层开始在逐层解封装使得不同的设备和应用程序能够在网络上进行通信。面试回答五层网络模型 面试回答网络要解决的问题是两个程序之间如何交换数据。物理层网线、光纤。传输比特流。数据链路层控制网络层和物理层的通信。主要将网络层接收到的数据分割成特定可被物理层传输的帧对比特流的封装。用于 Mac 地址确定代表设备有交换机。网络层决定如何将数据从发送发路由到接收方。作用是 分配 IP 地址代表设备是家用路由器。传输层为应用程序提供端到端的服务。建立主机到主机的通信。TCP、UDP。操作系统内核。应用层应用程序解读传输层的数据。规定使用到的协议如 HTTP 等。四层五层七层TCP 和 UDP 的区别总结TCP面向连接如打电话要先拨号建立连接提供可靠的服务具有顺序保证、重传机制、拥塞控制UDP是无连接的即发送数据之前不需要建立连接UDP尽最大努力交付即不保证可靠交付。UDP具有较好的实时性速度较快工作效率比TCP高适用于对高速传输和实时性有较高的通信或广播通信。UDP直播、游戏TCP网页。每一条TCP连接只能是一对一的客户端—服务端UDP支持一对一一对多多对一和多对多的交互通信。UDP分组首部开销小占据空间小TCP首部开销大20字节UDP的首部开销小只有8个字节。TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流数据的分解组装一点点发送接收UDP是面向报文的一次交付一个完整的报文报文不可分割报文是UDP数据报处理的最小单位。UDP适合一次性传输较小数据的网络应用如 DNS, SNMP (专业的网管比如服务器、路由器、交换机统一管理、排查错误等等)等。TCP 牺牲性能换可靠性UDP 牺牲可靠性换性能。UDP 连接建立UDP 是无连接协议它不需要握手。通信时客户端直接将数据报文发给服务端服务端如果能收到就处理收不到也不会通知。没有连接的概念也就没有所谓的“建立连接”。UDP 的特点传输前不需要建立连接速度快。不保证可靠传输可能丢包、乱序、重复。常用于实时性强的场景视频会议、语音通话、在线游戏。总结对比特性TCP三次握手UDP无连接是否建立连接需要三次握手不需要直接发可靠性保证可靠传输有序、不丢包、不重复不可靠可能丢包、乱序开销大建立/断开连接需要额外控制报文小直接发送适用场景文件传输、网页访问、邮件视频直播、语音通话、游戏报文的封装过程封装Encapsulation应用层数据在发送时逐层加头有时也加尾直到物理层发送比特流。解封装Decapsulation接收方逐层剥去头部还原出数据。报文封装的流程以HTTP 请求为例应用层HTTP生成应用数据例如GET /index.html HTTP/1.1 Host: www.example.com称为报文Message。传输层TCP加上 TCP 头源端口、目的端口、序号、校验和。单元称为段Segment。网络层IP加上 IP 头源 IP、目的 IP、TTL、协议号。单元称为包Packet。数据链路层Ethernet加上 MAC 头源 MAC、目的 MAC和尾部FCS。单元称为帧Frame。物理层转换为比特流010101…在介质上传输。封装过程结构图发送方应用层 [HTTP数据] ↓ 传输层 [TCP头 | HTTP数据] ↓ 网络层 [IP头 | TCP头 | HTTP数据] ↓ 链路层 [MAC头 | IP头 | TCP头 | HTTP数据 | FCS] ↓ 物理层 —— 010101010...TCP 可靠性的核心机制1️⃣ 序列号Sequence Number每个数据包都有编号包1 → 包2 → 包3保证顺序防止乱序2️⃣ 确认应答ACK发送方 → 数据 接收方 → ACK没收到 ACK → 重传3️⃣ 超时重传Retransmission发送 → 等待 ACK → 超时 → 重发保证不丢数据4️⃣ 滑动窗口Flow Control控制发送速度发送窗口大小 接收能力防止对方处理不过来5️⃣ 拥塞控制Congestion Control避免网络被打爆慢启动拥塞避免快重传快恢复6️⃣ 三次握手建立连接确保双方都能收发数据TCP 通过序列号、确认应答、超时重传、滑动窗口和拥塞控制等机制保证数据可靠、有序地传输。能不能让 UDP 变可靠可以在应用层实现可靠机制。本质就是把 TCP 的机制自己实现一遍1️⃣ 加序列号packet 1, 2, 3...2️⃣ ACK 确认收到 → 回 ACK 没收到 → 重发3️⃣ 超时重传没 ACK → 再发4️⃣ 顺序重排乱序 → 排序5️⃣ 流量控制 控制发送速度比如经典的实际应用 QUIC协议HTTP/3基于 UDP自己实现可靠性 WebRTC实时音视频可选可靠 / 不可靠QUIC 就是在 UDP 之上实现了类似 TCP 的可靠传输机制并解决了 TCP 的队头阻塞问题。一句话总结为什么计算机网络要分层设计计算机网络采用分层设计是为了降低网络系统的复杂度让每一层只负责特定功能各层之间通过标准接口协作。这样做的好处是便于开发、维护和扩展某一层发生变化时通常不会影响其他层。