news 2026/4/27 1:35:56

TCP协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TCP协议

文章目录

  • TCP的特点
    • TCP的主要特点
      • 面向字节流
  • TCP如何实现可靠传输
    • 停止等待协议
      • 工作方式
      • 差错处理
      • 流水线传输
    • 连续ARQ协议
      • 发送窗口滑动
      • 累积确认
  • TCP报文首部格式

TCP的特点

TCP的主要特点

  • 面向连接:通信前需建立连接,通信后需释放连接
  • 点对点通信:每条TCP连接只有两个端点
  • 可靠交付:确保数据正确、完整、有序到达
  • 全双工通信:双方可同时发送和接收数据
  • 面向字节流:数据被视为无结构的字节序列
    • TCP 中的“流”(stream) 指的是流入或流出进程的字节序列
    • 面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流

面向字节流

  • TCP将应用层交下来的数据看作字节流
  • 不保留应用层数据的边界
  • 接收方可能一次收到多个应用层数据块,也可能一个数据块分多次收到

TCP如何实现可靠传输

  • 理想传输条件的特点
    • 传输信道不产生差错
    • 不管发送方以多快的速度发送数据, 接收方总是来得及处理收到的数据
    • 在理想传输条件下,不需要采取任何措施就能够实现可靠传输
    • 但实际网络都不具备理想传输条件,必须使用一些可靠传输协议 ,在不可靠的传输信道实现可靠传输

停止等待协议

工作方式

  • 每发送完一个分组就停止发送, 等待对方的确认
  • 在收到确认后再发送下一个分组
  • 全双工通信的双方既是发送方也是接收方
  • 假设仅考虑 A 发送数据, 而 B 接收数据并发送确认 ,因此 A 叫做发送方, 而 B 叫做接收方

差错处理

流水线传输

  • 提高传输效率

连续ARQ协议

发送窗口滑动

  • 发送窗口滑动:发送方每收到一个确认, 就把发送窗口向前滑动一个分组的位置

累积确认

  • 累积确认:接收方对按序到达的最后一个分组发送确认, 表示:到这个分组为止的所有分组都已正确收到了

TCP报文首部格式

  • 源端口和目的端口
    • 源端口和目的端口各占 2 字节
    • 端口是传输层与应用层的服务接口
  • 序号
    • 序号占 4 字节。
    • TCP 连接中传送的数据流中的每一个字节都有一个序号
    • 序号字段的值则指的是本报文段所发送的数据的第一个字节的序号
  • 确认号
    • 占 4 字节, 是期望收到对方的下一个报文段的数据的第一个字节的序号
  • 数据偏移
    • 即首部长度,占 4 位, 指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远
    • 单位是 32 位字( 以 4 字节为计算单位)
  • 保留
    • 占 6 位 ,保留为今后使用 ,但目前应置为 0
  • 紧急 URG
    • 控制位
    • 当 URG = 1 时, 表明紧急指针字段有效, 告诉系统此报文段中有紧急数据, 应尽快传送 (相当于高优先级的数据)
  • 确认 ACK
    • 控制位
    • 只有当 ACK =1 时, 确认号字段才有效
    • 当 ACK =0 时, 确认号无效
  • 推送 PSH (PuSH)
    • 控制位
    • 接收 TCP 收到 PSH = 1 的报文段后, 就尽快( 即 “推送” 向前) 交付接收应用进程, 而不再等到整个缓存都填满后再交付
  • 复位 RST (ReSeT)
    • 控制位
    • 当 RST=1 时, 表明 TCP 连接中出现严重差错( 如主机崩溃或其他原因), 必须释放连接, 然后再重新建立运输连接
  • 同步 SYN (SYNchronization)
    • 控制位
    • 同步 SYN = 1 表示这是一个连接请求或连接接受报文
      • 当 SYN = 1 ,ACK = 0 时, 表明这是一个连接请求报文段
      • 当 SYN = 1 ,ACK = 1 时, 表明这是一个连接接受报文段
  • 终止 FIN (FINish)
    • 控制位
    • 用来释放一个连接
    • FIN=1 表明此报文段的发送端的数据已发送完毕, 并要求释放运输连接
  • 窗口
    • 占 2 字节
    • 窗口值告诉对方:从本报文段首部中的确认号算起, 接收方目前允许对方发送的数据量( 以字节为单位)
  • 检验和
    * 占 2 字节
    * 检验和字段检验的范围包括首部和数据这两部分
  • 紧急指针
    • 占 2 字节
    • 在 URG = 1时, 指出本报文段中的紧急数据的字节数( 紧急数据结束后就是普通数据), 指出了紧急数据的末尾在报文段中的位置
  • 选项
    • 长度可变, 最长可达 40 字节
      • 最大报文段长度 MSS
      • 窗口扩大
      • 时间戳
  • 填充
    • 使整个 TCP 首部长度是 4 字节的整数倍
  • 最大报文段长度 MSS
    • 最大报文段长度 MSS (Maximum Segment Size) 是每个 TCP 报文段中的数据字段的最大长度MSS
    • 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节 。”
  • 窗口扩大
    • TCP 窗口字段长度= 16 位, 最大窗口大小 = 64 K 字节
    • 对于传播时延和带宽都很大的网络, 为获得高吞吐率较, 需要更大的窗口
  • 时间戳
    • 序号重复时, 为了使接收方能够把新报文段和迟到很久的旧报文段区分开, 可以在报文段中加上时间戳
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:50:28

CSS 简介

CSS 简介 引言 层叠样式表(Cascading Style Sheets,简称CSS)是用于描述HTML或XML文档样式的样式表语言。它是一种用于网页设计的样式表语言,与HTML语言紧密相关,但独立于HTML。CSS能够将HTML文档的结构与表现分离,使得网页设计更加灵活和高效。 CSS 的起源与发展 CSS…

作者头像 李华
网站建设 2026/4/26 2:43:37

【Java开发】办公通讯软件端到端消息分发与提示技术深度解析

【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…

作者头像 李华
网站建设 2026/4/18 15:55:21

基于深度学习YOLOv12的红细胞、白细胞和血小板检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本项目开发了一个基于YOLOv12深度学习算法的智能血细胞检测系统,能够自动识别和分类血液样本中的红细胞(RBC)、白细胞(WBC)和血小板(Platelets)。系统采用包含874张标注图像的专业数据集(训练集765张、验证集73张、测试集36张)…

作者头像 李华
网站建设 2026/4/18 1:34:46

基于深度学习YOLOv12的水下鱼类检测系统(YOLOv12+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本项目基于YOLOv12深度学习框架开发了一套水下鱼类检测系统,专注于高效、准确地识别水下环境中的鱼类目标。系统采用轻量化的YOLOv12模型进行实时检测,并集成用户友好的UI界面,支持登录注册功能,便于多用户管理与数…

作者头像 李华
网站建设 2026/4/18 18:50:33

基于深度学习YOLOv11的条形码检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本项目基于最新的YOLOv11深度学习算法,开发了一套高效、精准的条形码检测系统,结合用户友好的UI界面和完整的登录注册功能,适用于零售、物流、仓储等场景的自动化识别需求。系统采用YOLOv11作为核心检测模型,通过在Y…

作者头像 李华
网站建设 2026/4/23 12:23:18

基于深度学习YOLOv11的手机识别检测系统(YOLOv11+YOLO数据集+UI界面+登录注册界面+Python项目源码+模型)

一、项目介绍 本文介绍了一种基于深度学习目标检测算法YOLOv11的手机识别检测系统,该系统通过YOLOv11模型实现了高精度的手机目标检测,并集成了用户友好的UI界面与登录注册功能。系统以Python为核心开发语言,包含完整的项目源码、预训练模型…

作者头像 李华