网络协议概述

网络协议是计算机网络中为进行数据交换而建立的规则、标准或约定的集合,相当于计算机世界的”交通规则”。它规定了:

  1. 数据传输格式(数据如何打包)

  2. 传输时序(何时发送/接收)

  3. 错误处理机制(出错时怎么办)

  4. 通信控制流程(对话的顺序)

    OSI七层模型(理论模型)

    层次 名称 功能 典型协议
    7 应用层 用户接口 HTTP/FTP/SMTP
    6 表示层 数据格式转换 JPEG/ASCII
    5 会话层 建立/维护会话 SSL/TLS
    4 传输层 端到端连接 TCP/UDP
    3 网络层 寻址和路由 IP/ICMP
    2 数据链路层 物理寻址 Ethernet/PPP
    1 物理层 比特流传输 RJ45/光纤

    TCP/IP四层模型(实际标准)

    层次 对应协议 主要功能
    应用层 HTTP/HTTPS/FTP/DNS 应用程序通信
    传输层 TCP/UDP 可靠/不可靠传输
    网络层 IP/ICMP/ARP 路由和寻址
    网络接口层 Ethernet/Wi-Fi 物理传输

OSI模型

image-20250615165634255

物理层:定义网络设备之间的物理连接标准,是网络通信的物质基础。用于传输比特率,以及数据的接收

数据链路层:在物理层之上建立相邻节点间的数据传输链路,确保数据在物理介质上的可靠传输。(Mac)

  • 帧封装与拆解:将比特流组合成 “帧”(Frame),包含源和目标 MAC 地址(硬件地址)。
  • 错误检测与纠正:通过 CRC(循环冗余校验)等机制检测传输错误,必要时请求重传。
  • 流量控制:控制数据传输速率,避免接收方因过载而丢失数据。
  • 介质访问控制(MAC):管理多个设备对共享物理介质的访问(如以太网的 CSMA/CD 协议)

网络层:负责网络中数据包的路由和寻址,实现不同网络之间的通信。同时增加标头,包含本网络的IP和目标网络的IP

  • 路由选择:根据网络拓扑结构,选择最佳路径将数据包从源主机发送到目标主机。
  • 寻址:使用 IP 地址(逻辑地址)标识网络中的设备,解决跨网络通信问题。
  • 数据包分片与重组:当数据包大小超过传输介质的最大传输单元(MTU)时,对其进行分片,并在目标端重组。
  • 拥塞控制:监控网络流量,避免网络拥塞。

传输层:为应用程序提供端到端的通信服务,确保数据的可靠传输或高效传输。同时增加标头,包含接收方的端口信息和发送方的端口信息(Port)

  • 建立端到端连接:通过端口号(Port)标识不同的应用程序(如 HTTP 用 80 端口,FTP 用 21 端口)。
  • 可靠传输与不可靠传输:
    • TCP(传输控制协议):面向连接,提供可靠传输(确认、重传、流量控制、拥塞控制)。
    • UDP(用户数据报协议):无连接,传输效率高但不保证可靠性(如视频流、DNS 查询)。
  • 数据分段与重组:将上层数据分割成适合传输的段(Segment),并在接收端重组。

会话层:管理应用程序之间的会话连接,负责会话的建立、维护和断开

  • 会话建立与管理:在应用程序之间建立逻辑连接(如客户端与服务器的通信会话)。
  • 会话同步:在数据传输中插入检查点,确保故障时可从最近的检查点恢复,避免重复传输。
  • 会话控制:决定通信的方向(单工、半双工、全双工),并处理会话的中断和恢复

表示层:负责数据的格式转换、加密和解密、压缩和还原,确保不同系统之间的数据兼容性。

  • 数据格式转换:将应用层的数据转换为适合网络传输的格式(如 ASCII、UTF-8、JPEG、MP3 等)。
  • 加密与解密:对数据进行加密保护(如 SSL/TLS),或在接收端解密。
  • 压缩与解压缩:减少数据传输量,提高传输效率(如 GZIP 压缩)。

应用层:直接为用户提供应用服务,是用户与网络交互的接口。

  • 定义应用协议:规定应用程序如何通过网络传输数据(如文件传输、电子邮件、网页浏览等(FTP,HTTP,SMTP))。
  • 用户接口:为用户提供直观的操作界面(如浏览器、邮件客户端)。
  • 数据处理:根据应用需求对数据进行处理(如文件编辑、邮件撰写)。

image-20250618145142629

TCP/IP协议

层次 功能 核心协议 常见设备
应用层 为用户应用提供接口,处理具体应用逻辑(如网页浏览、文件传输)。 HTTP/HTTPS、FTP、SMTP、DNS、SSH 等 客户端程序、服务器
传输层 提供端到端的数据传输,确保数据可靠或高效传输。 TCP、UDP ——
网络层(IP 层) 负责网络间的路由和寻址,实现不同网络的互联。 IP、ICMP、ARP、RIP、OSPF 等 路由器、三层交换机
网络接口层(链路层 + 物理层) 处理物理介质上的数据传输,定义硬件接口和电气特性。 Ethernet、Wi-Fi、PPP、SLIP 等 网卡、交换机、网线
1.网络层协议:IP(互联网协议)
  • 作用:定义数据包的格式和寻址规则,是 TCP/IP 的 “网络身份证”。
  • 核心功能:
    • IP 地址寻址:通过 32 位 IPv4 地址(如 192.168.1.1)或 128 位 IPv6 地址标识网络设备,实现跨网络路由。
    • 数据包分片:当数据超过传输介质 MTU(最大传输单元)时,将数据包拆分为更小的片段,并在目标端重组。
  • 辅助协议:
    • ARP(地址解析协议):将 IP 地址转换为 MAC 地址(硬件地址),实现同一网段内的通信。
    • ICMP(互联网控制报文协议):用于网络故障检测(如 Ping 命令)和拥塞控制(如 TTL 超时通知)。
    • 路由协议:RIP(距离向量路由)、OSPF(开放最短路径优先)等,用于路由器间传递路由信息。
2. 传输层协议:TCP 与 UDP
  • TCP(传输控制协议):面向连接的可靠传输

    • 核心特性:

      • 三次握手建立连接:客户端与服务器通过 SYN、SYN+ACK、ACK 三次报文确认连接(如浏览器访问网页时的初始连接)。

      • 可靠传输机制

        • 确认与重传:接收方通过 ACK 确认收到数据,发送方超时未收到确认则重传。
        • 流量控制:通过滑动窗口(Window Size)动态调整发送速率,避免接收方过载。
        • 拥塞控制:慢启动、拥塞避免、快速重传等算法,防止网络拥塞(如 TCP Reno、CUBIC 算法)。
      • 数据分段与重组:将应用层数据分割为 TCP 段(Segment),并按顺序重组。

    • 应用场景:对可靠性要求高的场景,如 HTTP/HTTPS(网页)、SMTP(邮件)、FTP(文件传输)、SSH(远程登录)。

  • UDP(用户数据报协议):无连接的高效传输

    • 核心特性:
      • 无连接:无需建立连接即可发送数据,延迟低(如直播、游戏数据传输)。
      • 不可靠传输:不保证数据到达、不重传、不排序,需应用层自行处理错误。
      • 轻量级:头部仅 8 字节(TCP 头部 20 字节),传输效率高。
    • 应用场景:对实时性要求高的场景,如 DNS 查询、VoIP(语音通话)、视频流(RTSP、RTP)、在线游戏(UDP Hole Punching)。
3. 应用层协议:用户与网络的接口
  • HTTP/HTTPS(超文本传输协议):
    • HTTP:客户端(浏览器)向服务器请求网页资源,无加密(如访问http://example.com)。
    • HTTPS:基于 HTTP+SSL/TLS 加密,确保数据传输安全(如网购、登录时的https://前缀)。
  • FTP(文件传输协议):用于文件上传和下载,分为控制连接(21 端口)和数据连接(20 端口),明文传输(SFTP 为加密版本)。
  • SMTP/POP3/IMAP(电子邮件协议):
    • SMTP:发送邮件(端口 25);POP3/IMAP:接收邮件(端口 110/143)。
  • DNS(域名系统):将域名(如www.baidu.com)解析为 IP 地址,通过 UDP 53 端口通信。
  • SSH(安全外壳协议):加密的远程登录协议,替代明文的 Telnet,常用于服务器管理。

TCP/IP 数据传输流程:从发送到接收

以浏览器访问网页为例,数据传输过程如下:

  1. 应用层:浏览器生成 HTTP 请求(如 GET /index.html)。
  2. 传输层:HTTP 数据封装为 TCP 段,指定目标端口(HTTP 默认 80,HTTPS 默认 443),通过三次握手建立连接。
  3. 网络层:TCP 段封装为 IP 数据包,添加源 IP(客户端)和目标 IP(服务器),通过路由协议选择路径。
  4. 网络接口层:IP 数据包封装为以太网帧(添加 MAC 地址),通过物理介质(网线 / 无线)发送。
  5. 接收端逆向处理:服务器从物理层逐层解封装,最终将 HTTP 响应返回给浏览器。

TCP/UDP

TCP

  • TCP:面向连接的、可靠的传输协议,适用于对数据完整性要求高的场景(如文件传输、网页浏览)。
    • 一对一:只能是一对一进行连接。
    • 面向连接的:两者间必须建立连接才可以进行通信
    • 可靠性高:消息传输失败会重新发送,不允许丢包
    • 有序的:消息是按照顺序进行发送的
核心特性:可靠、有序、重传机制
  • 面向连接(三次握手建立连接)

    通信前需通过 “三次握手” 确认双方状态,确保连接可靠:

    1. 客户端发送 SYN 包(请求连接);
    2. 服务器返回 SYN+ACK 包(确认请求并发起连接);
    3. 客户端返回 ACK 包(确认连接建立)。
  • 数据可靠性机制

    • 确认应答(ACK):接收方收到数据后返回 ACK 确认,发送方未收到则重传。
    • 序列号(Sequence Number):为每个字节编号,确保数据按序组装,丢失时可定位重传。
    • 滑动窗口(Sliding Window):动态控制发送方数据发送量,避免接收方缓冲区溢出,实现流量控制。
    • 拥塞控制:通过慢启动、拥塞避免、快速重传等算法,防止网络拥堵(如 TCP Reno、CUBIC 等版本)。
  • 面向字节流:将数据视为连续的字节流,无固定消息边界(需应用层自行处理分包)。

image-20250618151843781

image-20250618151820415

UDP

  • UDP:无连接的、不可靠的传输协议,适用于对实时性要求高的场景(如音视频流、在线游戏)。
    • 无连接:不需要进行连接即可发送消息
    • 可靠性低:消息可能在传输的过程中丢失,丢失后不会重新发送
    • 传输效率高:由于它的可靠性滴且无需进行连接,所以传输效率高
    • n对n:由于无连接性,可以运行UDP进行n对n的消息传递
核心特性:无连接、低延迟、不可靠
  • 无连接(无需握手):直接发送数据报,无需提前建立连接,适合实时性需求。
  • 不可靠传输:
    • 无 ACK 确认、无重传机制,数据可能丢失或乱序。
    • 无流量控制和拥塞控制,可能导致网络拥堵(需应用层自行处理)。
  • 面向数据报:每个 UDP 数据包(Datagram)包含固定长度的头部(8 字节)和数据,有明确边界。
维度 TCP UDP
连接性 面向连接(三次握手) 无连接(直接发送)
可靠性 可靠(重传、确认、排序) 不可靠(无重传、可能丢包)
传输效率 开销大(头部 20 字节 + 控制机制) 开销小(头部 8 字节,无额外控制)
延迟 高(连接建立 / 重传耗时) 低(无连接 / 无重传,实时性强)
适用场景 文件传输、网页、邮件等可靠场景 音视频、游戏、DNS 等实时场景
头部长度 20 字节(固定)+ 可选字段 8 字节(固定)
流量控制 支持(滑动窗口) 不支持
拥塞控制 支持(慢启动、拥塞避免) 不支持