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

5.1.1 通信->TCP IP协议簇标准(IETF RFC 791 793):TCP(Transmission Control Protocol)、IP(Internet Protocol)

RFC 791(IPv4 协议)RFC 793(TCP 协议)是 TCP/IP 协议簇的核心基石,分别定义了网络层传输层的标准规范,二者协同构建了互联网可靠通信的基础

协议总览与定位

RFC 791 —— Internet Protocol (IP / IPv4)

  • 发布时间:1981 年 9 月IETF Datatracker
  • 作者:Jon PostelIETF Datatracker
  • 协议层级网络层(OSI 第三层)
  • 核心定位:定义无连接、不可靠的网际数据报传输服务,负责寻址、路由、分片与重组
  • 核心作用:屏蔽底层网络差异,实现跨网络的数据包交付,是互联网的 “邮政系统”

RFC 793 —— Transmission Control Protocol (TCP)

  • 发布时间:1981 年 9 月IETF Datatracker
  • 作者:Jon PostelIETF Datatracker
  • 协议层级传输层(OSI 第四层)
  • 核心定位:定义面向连接、可靠的端到端字节流服务
  • 核心作用:在不可靠的 IP 层之上,通过确认、重传、排序、流量控制保障数据完整、有序、无差错传输

RFC 791 IPv4 协议详解

核心设计原则

  • 无连接(Connectionless):每个数据报独立路由,不建立、维护连接状态
  • 不可靠(Unreliable):不保证送达、不保证顺序、不检测重复
  • 尽力而为(Best-Effort):仅当资源耗尽或网络不可达时丢弃包
  • 支持异构网络:通过 ** 分片(Fragmentation)** 适配不同 MTU 的网络

IPv4 数据报格式(头部 20~60 字节)

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

关键字段解析RFC Editor:

  • Version(4 位):版本号,IPv4=0100

  • IHL(4 位):头部长度,单位 4 字节,最小值 5(20 字节)

  • Total Length(16 位):整个数据报总长度(头部 + 数据),最大 65535 字节

  • Identification(16 位):标识,同一数据报的所有分片共享此 ID

  • Flags(3 位)

    • 比特 0:保留,必须为 0
    • 比特 1(DF):Don’t Fragment(禁止分片)
    • 比特 2(MF):More Fragments(更多分片,最后一片为 0)
  • Fragment Offset(13 位):分片偏移,单位 8 字节,指示分片在原数据报的位置

  • TTL(8 位):生存时间,每经路由减 1,为 0 则丢弃,防环路

  • Protocol(8 位):指示上层协议,TCP=6,UDP=17,ICMP=1

  • Header Checksum(16 位):仅校验头部,不校验数据区

  • Source/Destination Address(32 位):源 / 目标 IP 地址

核心机制

  • 寻址与路由:32 位 IP 地址(网络号 + 主机号),路由器查表转发

  • 分片与重组

    • 分片:当数据报 > 出口 MTU 且 DF=0 时,路由器拆分RFC Editor
    • 重组:目标主机根据 ID、MF、Offset 重组RFC Editor
  • 差错处理:出错时向源发送 ICMP 差错报文(超时、目标不可达等)

RFC 793 TCP 协议详解

核心设计原则

  • 面向连接(Connection-Oriented):传输前必须通过三次握手建立连接
  • 全双工(Full-Duplex):连接两端可同时收发
  • 可靠交付(Reliable):数据无丢失、无重复、无差错、按序到达
  • 字节流(Byte Stream):无边界,以字节为单位编号,而非消息
  • 流量控制(Flow Control):接收方通过滑动窗口控制发送速率

TCP 报文段格式(头部 20~60 字节)

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

关键字段解析RFC Editor:

  • Source/Destination Port(16 位):源 / 目标端口号,标识应用进程

  • Sequence Number(32 位):序列号,本报文第一个字节的编号

  • Acknowledgment Number(32 位):确认号,期望接收的下一字节编号(ACK=1 时有效)

  • Data Offset(4 位):头部长度,单位 4 字节,最小 5(20 字节)

  • Control Flags(6 位)

    • URG:紧急指针有效
    • ACK:确认号有效(连接建立后必须置 1)
    • PSH:推送,立即交付应用层
    • RST:重置连接
    • SYN:同步序列号(建连)
    • FIN:结束连接
  • Window(16 位):接收窗口大小,流量控制核心,通告可接收字节数

  • Checksum(16 位):校验头部 + 数据 + 伪 IP 头,强校验

  • Urgent Pointer(16 位):指向紧急数据末尾

核心机制

(1) 连接管理(三次握手、四次挥手)

  • 三次握手(建立)

    1. 客户端 → 服务器:SYN=1, Seq=x(SYN_SENT)
    2. 服务器 → 客户端:SYN=1, ACK=1, Ack=x+1, Seq=y(SYN_RCVD)
    3. 客户端 → 服务器:ACK=1, Ack=y+1(ESTABLISHED)
  • 四次挥手(关闭)

    1. 主动方 → 被动方:FIN=1, Seq=u(FIN_WAIT_1)
    2. 被动方 → 主动方:ACK=1, Ack=u+1(CLOSE_WAIT)
    3. 被动方 → 主动方:FIN=1, Seq=v(LAST_ACK)
    4. 主动方 → 被动方:ACK=1, Ack=v+1(TIME_WAIT → CLOSED)

(2) 可靠性保障

  • 累计确认(Cumulative ACK):Ack=N 表示 N 前所有字节已收
  • 超时重传:未确认则重传,RTT 动态计算超时时间
  • 去重与排序:序列号过滤重复,按序重组

(3) 流量控制(滑动窗口)

  • 接收方在 ACK 中通告Window大小
  • 发送方已发送但未确认字节数 ≤ 接收窗口
  • 防止发送方溢出接收方缓冲区

(4) 有限状态机(FSM)

  • 定义 11 种状态:CLOSED, LISTEN, SYN_SENT, SYN_RCVD, ESTABLISHED,

    FIN_WAIT_1, FIN_WAIT_2, CLOSE_WAIT, CLOSING, LAST_ACK, TIME_WAIT

  • 所有操作严格按状态迁移规则执行

RFC 791 / 793 关系与协议栈

  • 分层协作:TCP 依赖 IP 提供主机间投递;IP 承载 TCP/UDP 等传输层协议

  • 典型封装:应用数据 → TCP 头 → IP 头 → 链路帧头

  • 互补定位

    • IP:连通性(跨网送达)
    • TCP:可靠性(端到端保障)

历史地位与扩展

  • RFC 791:IPv4 基础,被 RFC 6864 等更新,未被废弃IETF Datatracker

  • RFC 793:TCP 基础,被 RFC 1122、3168(ECN)、2018(SACK)等扩展,核心未变IETF Datatracker

  • 局限与演进

    • IPv4:32 位地址耗尽 →IPv6 (RFC 2460)
    • TCP:效率、队头阻塞 →QUIC (基于 UDP)

总结

  • RFC 791(IP)是互联网的骨架,解决 “发往哪、怎么转发
  • RFC 793(TCP)是互联网的血脉,解决 “可靠传、有序收
  • 二者共同构成 TCP/IP 协议簇的核心,支撑了 40 余年全球互联网的底层通信,是计算机网络领域最经典、影响最深远的标准
http://www.jsqmd.com/news/506332/

相关文章:

  • Windows下Gradle环境搭建全攻略:从安装到第一个构建项目(避坑指南)
  • LumiPixel Canvas Quest移动端落地:Flutter开发图像生成App实战
  • 2026年工业水性涂料加工厂哪家好用,看看口碑排名就知道 - 工业品网
  • 掌握内存的艺术:Python生成器与 yield 完全解析
  • ViGEmBus虚拟控制器驱动技术全解析:从核心价值到深度实践
  • ASTM D4169 DC4标准全解析:适用包装与测试项目详解
  • ai coding工具共性(三)Rules
  • flask: 使用shell执行代码中的函数
  • 支付宝方案-----采用国际版支付宝+无ICP+国内客户+聚合支付
  • 基于PID的双轮平衡车设计与实现
  • 基于 UniMRCP 的 ASR 插件开发详解:架构、API 与代码
  • STM32中断优先级科普:以F103为例,从零吃透NVIC分组与实战配置
  • 雷军回应小米大模型火了,罗福莉宣布新模型将开源
  • 2026年03月19日全球AI前沿动态
  • “双碳” 目标下气体分析新动态:固定污染源气体分析仪品牌生产商与高口碑产品推荐 - 品牌推荐大师1
  • 将QWT 6.1.6库文件集成到Qt项目中的两种实用方法:全局安装 vs 项目内嵌
  • 小白入门:FUTURE POLICE语音分析结果MySQL存储三步走
  • DownKyi:B站视频资源管理的场景化解决方案
  • 实木软体家具全搞定!合肥这家绝绝子宝藏店别错过 - 界川
  • XUnity Auto Translator终极指南:5分钟让外语游戏变母语体验
  • 从手机到智能手表:ROM、RAM和FLASH在消费电子产品中的实际应用对比
  • 2026类器官打印设备国产和进口品牌推荐 - 品牌排行榜
  • TRAE使用体验(2):playwright UI自动化
  • AIGC联动节点材质神器:一张图秒转次世代国风刺绣丝绸PBR资产
  • DownKyi:让B站视频下载效率提升300%的开源利器
  • LLM架构(2): Embedding(嵌入)实战与可视化
  • Android 10+免Root修改开机动画?MT管理器隐藏技巧大公开
  • 643794
  • 高频面试题:口径变了,历史数据断层如何处理?
  • 计算机网络面试必问:从OSI七层到TCP三次握手,一次搞懂核心概念