> 技术文档 > TCP/IP 协议基础总结_tcpip4层模型

TCP/IP 协议基础总结_tcpip4层模型


• 网络模型

OSI参考模型 OSI参考模型各层功能 TCP/IP网络模型 TCP/IP协议

OSI 参考模型由国际标准化组织(ISO)于 1984 年提出,目标是 解决不同厂商网络设备的兼容性问题,通过分层设计将复杂的网络通信拆解为独立模块,让各层专注于特定功能,便于协议开发、故障排查和技术迭代。

1. 应用层(第 7 层)
  • 功能:直接为应用程序提供网络服务,是90用户 / 应用 “最直观接触” 的层。
  • 典型协议 / 场景Web(万维网)、NFS(网络文件系统)、RPC(远程过程调用)
  • 核心逻辑:无需关心底层传输细节,专注 “应用间通信需求”(如浏览器发起 HTTP 请求)。
2. 表示层(第 6 层)
  • 功能:处理数据的表示形式,确保发送方和接收方 “理解相同的数据格式”。
  • 关键操作:加密 / 解密(如 HTTPS 的 TLS)、压缩 / 解压缩(如图片压缩传输)、格式转换(ASCII→Unicode、JSON→XML)。
  • 现实映射:虽然实际 TCP/IP 协议中,这层功能常被合并到应用层(如 TLS 在 HTTP 和 TCP 之间),但 OSI 模型中它独立存在,强调 “数据格式标准化” 的必要性。
3. 会话层(第 5 层)
  • 功能:管理应用程序之间的 “会话”(即通信连接的建立、维护、断开)。
  • 典型场景
    • 建立会话:如远程桌面(RDP)登录时协商连接;
    • 维护会话:如数据库事务的 “会话保持”(确保操作连续);
4. 传输层(第 4 层)
  • 功能提供端到端的可靠通信(主机 A 的进程←→主机 B 的进程)。            – 分段上层数据             – 提供面向连接或无连接的服务             – 建立端到端连接,维护连接状态             – 可靠传输、流量控制             – 常见协议:TCP、UDP、IPX协议族的SPX
  • 关键协议
    • TCP(传输控制协议):可靠传输(确认、重传、流量控制),用于 HTTP、FTP 等;
    • UDP(用户数据报协议):高效传输(无确认、无重传),用于视频通话、直播等。
  • 核心标识:通过端口号区分不同应用。
5. 网络层(第 3 层)
  • 功能:负责网络寻址和路由选择。
  • 关键操作
    • 寻址:通过IP 地址(如 192.168.1.100)标识主机;
    • 路由:选择最优路径(如路由器通过 OSPF/BGP 协议计算转发路径)。
  • 典型协议:IP(网际协议)、ICMP(网络控制消息,如 ping)、ARP(IP→MAC 地址解析)。
  • 额外补充:   ---可路由协议:可跨越三层设备进行路由转发的协议,如IP、IPX。    ---不可路由协议:不可跨越三层设备,也不能进行路由转发的协议 ,如NETBEUI。   ---路由协议:在路由器之间传递路由信息并计算路由,为可路由协 议选择转发路径的协                                 议,如RIP、OSPF、BGP。
6. 数据链路层(第 2 层)
  • 功能:告诉接收方的 “数据链路层”,帧里的数据部分属于哪个上层协议(标识上层数据)、同一链路(广播域)内定位目标设备(寻址)、CRC 校验(差错验证)、控制相邻设备间的发送速率(流量控制)、把上层(网络层)的 “数据包”(如 IP 包)封装成 “帧”(编帧和识别帧)。
  • 关键操作
    • 帧封装:添加 MAC 地址(网卡物理地址)、差错检测(如 CRC 校验);
    • 链路管理:以太网(Ethernet)、VLAN(虚拟局域网)等协议。
7. 物理层(第 1 层)
  • 功能:最底层,定义电压、接口、线缆、传输距离等。
  • 涉及对象:网线(双绞线、光纤)、网卡、集线器、物理接口标准(如 RJ45、光模块)。

 

• 对等通信

  • 七层模型(应用 / 表示 / 会话 / 传输 / 网络 / 数据链路 / 物理层 ),两台主机同层为 “对等层”;
  • 规则:同层用相同协议(如双方应用层靠 APDU 交互 )、下层为上层提供服务(如网络层依赖数据链路层传帧 );
  • PDU(协议数据单元):各层数据单元名称不同(应用层 APDU、传输层 Segment… 物理层 Bit ),体现数据 “封装 - 解封装” 流程。

 

三种网络分层模型

IP协议特点

IP 是无连接的,传输前无需建立连接;

提供尽力而为服务,超转发能力时丢弃;

数据包独立路由、传送无序;

传输不可靠,可靠性由上层协议(如TCP)解决。 

IP包头结构 

1. 版本(4 位)

  • 标识 IP 协议版本(如 0100 代表 IPv40110 代表 IPv6 )。
  • 作用:让接收方识别协议版本,确保解析方式一致。

2. 包头长度(4 位)

  • 单位是 32 位字(4 字节
  • 作用:IP 头部可能含 “选项” 字段(长度可变),此值 ×4 = 实际头部字节数(如值为5 → 5×4=20 字节,即无选项的标准头部)。

3. 服务类型(8 位)

  • 包含 优先级、延迟、吞吐量、可靠性 等标识。
  • 作用:实现 QoS(服务质量),让路由器优先转发特定类型数据包(如视频流)。

4. 报文长度(16 位)

  • 表示 整个 IP 数据包的总长度(头部 + 数据),单位是字节。
  • 范围:0~65535(16 位最大取值),但实际受链路 MTU 限制(如以太网默认 MTU=1500,超过会分片)。

5. 标识符(16 位)

  • 用于 分片重组:同一原始数据包的分片,会被标记相同的标识符。
  • 作用:接收方通过标识符,识别 “哪些分片属于同一个原始包”。

6. 标志位(3 位)

  • 常用两位:
    • DF(Don’t Fragment,不分片)DF=1 时,数据包不能被分片,若超过 MTU 则直接丢弃;
    • MF(More Fragments,还有分片)MF=1 时,表示后面还有分片,MF=0 表示最后一个分片。
  • 作用:控制数据包是否分片,及告知接收方 “是否还有后续分片”。

7. 分段偏移量(13 位)

  • 表示 分片在原始数据包中的位置,单位是 8 字节(即分片数据部分需是 8 字节的整数倍)。
  • 作用:接收方按偏移量重组分片(如偏移量0是第一个分片,10表示该分片从原始包的第 80 字节开始)。

8. 存活时间(TTL,8 位)

  • 数据包在网络中能经过的 最大 “跳数”(每经过一个路由器转发,TTL 减 1)。
  • 作用:防止数据包在网络中形成环路(TTL 减到0时,路由器直接丢弃)。

9. 协议(8 位)

  • 标识 上层协议类型(告知接收方 “数据包交给哪个协议处理”)。
  • 常见值:6(TCP)、17(UDP)、1(ICMP)、41(IPv6 隧道)等。

10. 包头校验和(16 位)

  • 仅校验 IP 头部(数据部分不校验),用于检测头部传输错误。
  • 工作方式:发送方计算头部校验和,接收方重新计算对比,不一致则丢弃数据包。

11. 源 IP 地址 & 目标 IP 地址(各 32 位)

  • 发送方和接收方的 IP 地址(如 192.168.1.100 二进制占 32 位)。
  • 作用:网络层寻址核心,路由器通过目标 IP 决定转发路径,接收方通过源 IP 识别数据来源。

12. 选项(可变长)

  • 可选字段(非必须)。
  • 实际场景:最大段大小(MSS,Maximum Segment Size)等

13. 填充

  • 因 “选项” 长度可变,用 0 填充,确保 整个 IP 头部长度是 32 位的整数倍(保证数据部分字节对齐,提升处理效率)。

 

MTU与IP分片

• MTU(最大传输单元) – 链路层MTU:链路层能传的最大的帧,含链路层头部。 – 网络层MTU:网络层能传的最大的包,含网络层头部。命令含义 – Cisco设备在数据包进入接口和从接口发出时都检查MTU。 – MTU命令:最大二层净载荷长度,默认值为1500字节。二层净荷载长度(Payload Length) 指 帧中 “实际要传输的有效数据部分” 的字节数,即 除去帧头(MAC头 )和帧尾(FCS)的网络层数据包。

 

路由器IP分片 

– 数据包大于入接口MTU,Cisco设备将丢弃该包– 数据包大于出接口MTU • 该包的DF=1时,丢弃该包;该的DF=0时,将该包分片。 • IP分片只在目标主机上重组。

TCP协议概述

TCPTransmission Control Protocol,传输控制协议) 是面向连接的,传输需经建立连接、传输数据、断开连接三阶段支持全双工通信,能双向同时传输提供有序、可靠传输(含校验和、超时重传),通过滑动窗口实现流量控制,适合可靠性要求高的应用。 

TCP包头结构

1. 源端口(16 位) + 目标端口(16 位)

作用:标识 通信的应用进程(区分同一主机的不同服务 / 应用)。

2. 序号(32 位)

  •  字节号 – TCP把要在一个连接上发送的数据都按字节编号。通信双方的编 号是相互独立的,编号不一定要从0开始,TCP选择0~(2的32次 方-1)之间的一个随即数作为第1个字节的编号。
  • 序号 – TCP把要在一个连接上发送的数据分成若干报文段,然后给每个 报文段指派一个序号,序号就是该报文段第一个字节的编号 

3. 确认号(32 位)

  • 作用:告知对方期望收到的下一个字节序号,实现可靠确认
  • 逻辑:
    • 若接收方成功收到序号 1000~1099 的数据,会回复 确认号=1100(表示 “已收到到 1099,期待 1100 开始的新数据”);
    • 发送方根据确认号判断 “哪些数据已被接收”,未确认则超时重传。

4. 报头长度(4 位)

  • 单位是 32 位字(4 字节)
  • 作用:TCP 头部可能含 “选项”(长度可变),此值 ×4 = 实际头部字节数(如值为 5 → 5×4=20 字节,即无选项的标准头部)。

5. 预留(6 位)

  • 保留给未来扩展使用,当前强制填 0,避免协议冲突。

6. 编码位(6 位,控制标志)

TCP 核心控制位,决定连接状态和数据处理逻辑,常用标志:

标志位 含义(缩写) 作用 URG 紧急(Urgent) 紧急标志;紧急指针有效位,与16位紧急指针配合使用。 ACK 确认(Acknowledgment) 置 1 时 “确认号” 字段有效,用于回复已接收数据(三次握手中的 ACK 包) PSH 推送(Push) 要求接收方立即将数据交给用户进程(应用层)不要停留在缓存中 ,等待更多的数据。 RST 重置(Reset) 复位标志;为1时,请求重新建立TCP连接。 SYN 同步(Synchronize) 同步标志;为1时,请求建立连接。建立连接时同步序号(三次握手的 SYN 包,用于协商 ISN) FIN 结束(Finish) 结束标志;为1时,请求断开连接。主动关闭连接时发送(四次挥手的 FIN 包,告知对方 “无数据发送了”)

7. 窗口(16 位)

  • 表示 接收方的空闲缓冲区大小(单位:字节),用于流量控制
  • 逻辑:
    • 接收方通过 “窗口字段” 告知发送方 “我还能收多少数据”(接收窗口的大小是多少);
    • 发送方的发送窗口不能超过此值,避免接收方缓冲区溢出(结合拥塞窗口实现动态调控)。

8. 校验和(16 位)

  • 检查 TCP 头部 + 数据 的完整性(发送方计算校验和,接收方验证)。
  • 特点:覆盖数据部分(区别于 IP 头部仅校验头部)。

9. 紧急指针(16 位)

  • 仅当 URG 标志置 1 时有效,指示紧急数据在 TCP 段中的偏移量
  • 作用:让紧急数据部分优先被处理,无需等待整个段传输完成。

 

10. 选项(0 或 32 位等可变长)

  • 非必须字段。
  • 常见选项:MSS(最大段大小):协商 TCP 段的最大数据长度(避免 IP 分片);

11. 数据(不固定长度)

  • 承载应用层数据(如 HTTP 请求体、文件内容),长度 = 整个 TCP 段长度 - 头部长度。

TCP工作机制

三次握手机制

TCP连接建立——TCP MSS

TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该 参数在三次握手时发给对方。

– 网络设备干预TCP MSS协商,可解决大TCP报文不通问题。

TCP工作机制

1. 传输确认机制

  • 核心逻辑:用 序列号(Sequence Number) 和 确认号(Acknowledgment Number) 实现。
    • 发送方给每个数据段的首字节编号(序列号),标记字节流位置;
    • 接收方收到数据后,回复 确认号 = 已收数据最后字节的序号 + 1,告知发送方 “期望下一个字节的序号”;
    • 发送方通过确认号判断数据是否被接收,未确认则触发重传。
  • 作用:保证数据有序、不丢、不重复,是 TCP 可靠传输的基础。

2. 超时重传机制

  • 核心逻辑:发送方发数据后,若超时未收到确认,则重传该数据段。触发条件:数据丢失或确认丢失时,通过超时强制重传,兜底保障可靠性。
  • 作用:应对网络丢包,确保数据最终送达。

3. 双向传输机制

  • 核心逻辑:TCP 连接是全双工的,双方同时维护独立的发送 / 接收缓冲区序列号空间
    • 连接建立后,客户端和服务器可同时双向发送数据(如客户端发请求时,服务器可同时回响应);
    • 每个方向的数据流有自己的序列号、确认号和窗口,互不干扰。
  • 作用:支持 “同时收发”,提升通信效率(如视频通话双向传数据)。

4. 四次断开机制

  • 核心逻辑:关闭连接需双向独立关闭,流程分四步(以客户端主动断开为例):
    1. 客户端发 FIN:客户端发送 FIN 包,请求关闭 “客户端→服务器” 方向,进入 FIN_WAIT_1 状态;
    2. 服务器回 ACK:服务器回 ACK 包,确认关闭方向 1,进入 CLOSE_WAIT 状态;
    3. 服务器发 FIN:服务器若无需再发数据,发送 FIN 包,请求关闭 “服务器→客户端” 方向,进入 LAST_ACK 状态;
    4. 客户端回 ACK:客户端回 ACK 包,确认关闭方向 2,进入 TIME_WAIT 状态(等待超时确保对方收到 ACK),最终连接完全关闭。
  • 作用:保证双向数据都传输完毕后再断开,避免数据丢失。
  • 补充:将第二步和第三步同时进行则为三次挥手(断开)

5.滑动窗口机制

     • TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收 窗口),共4个窗口。     • TCP通过强制发送方和接收方不断调整窗口大小,来实现流量 控制。     • 出现拥塞,窗口减半;     • 传输稳定,窗口慢慢变大。