登录/注册

TCP通信协议 你了解多少?

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

更多

好的,我们来详细聊聊TCP(传输控制协议)。它是互联网协议族(TCP/IP)中一个极其核心的协议,位于传输层(OSI模型的第4层),主要为运行在不同主机上的应用程序提供可靠的、面向连接的、基于字节流的端到端通信服务。

以下是TCP的关键特性和工作机制:

  1. 可靠性

    • 核心目标: 确保数据包从发送方完整、无误、按序地送达接收方。这是TCP区别于UDP(用户数据报协议)的关键。
    • 实现机制:
      • 确认应答: 接收方收到数据后,必须向发送方发送一个ACK (Acknowledgement) 确认包。
      • 超时重传: 发送方发出数据包后会启动一个计时器。如果在规定时间内没有收到对应的ACK,它会认为数据包丢失并重新发送该数据包。
      • 序列号: 每个发送的字节都被分配一个唯一的序列号。接收方利用序列号检测丢失的数据包(序列号出现缺口)和对数据包进行排序,确保最终交付给应用程序的数据是顺序正确的字节流。
      • 校验和: 在每个TCP报文段(Segment)中包含一个校验和字段。接收方会重新计算校验和,如果与收到的值不匹配,说明数据在传输中受损,该报文段会被丢弃,随后触发发送方的超时重传。这确保了数据的完整性
  2. 面向连接

    • 在正式通信前,通信双方必须建立一条逻辑连接通路。这个过程通过三次握手完成:
      • SYN: 客户端发送一个SYN包(设置SYN标志位为1,并包含一个初始序列号ISN_c)给服务器,请求建立连接。
      • SYN-ACK: 服务器收到后,如果同意连接,会回复一个SYN-ACK包(设置SYN和ACK标志位为1,包含服务器自己的初始序列号ISN_s,并对客户端的ISN_c进行确认ACK = ISN_c + 1)。
      • ACK: 客户端收到SYN-ACK后,再向服务器发送一个ACK包(设置ACK标志位为1,确认号ACK = ISN_s + 1)。
      • 完成三次握手后,连接建立成功,双方可以开始传输数据。
    • 通信结束后,需要优雅地断开连接,这个过程通过四次挥手完成:
      • FIN: 主动关闭方(假设为客户端)发送一个FIN包(设置FIN标志位为1),表示自己不再发送数据,但还可以接收数据。
      • ACK: 被动关闭方(服务器)收到FIN后,发送一个ACK包进行确认。
      • FIN: 服务器处理完所有待发送数据后,也会发送一个自己的FIN包给客户端。
      • ACK: 客户端收到服务器的FIN包后,发送一个ACK包进行确认。此时连接关闭。
  3. 基于字节流

    • TCP将应用程序下发的数据视为一个连续的、无结构的字节流。TCP自己不维护消息边界。
    • 发送方TCP可以将多次写入操作的数据组合成一个大的TCP报文段发送(粘包可能发生的原因之一)。
    • 接收方TCP将接收到的数据视为一个字节流存入接收缓冲区,应用程序读取时,可能一次读取到多个发送端写入操作的数据组合,也可能一次只读取到部分数据(需要应用程序自己解析消息边界,例如使用固定长度、分隔符或包含消息长度的协议头来解决粘包拆包问题)。
  4. 流量控制

    • 目的: 防止发送方发送数据太快导致接收方来不及处理而溢出接收缓冲区。
    • 机制:滑动窗口协议
      • 接收方在每个ACK包中会通告自己的接收窗口大小Window Size)。这个值表示接收方当前还能接收多少数据(接收缓冲区的可用空间)。
      • 发送方根据接收方通告的窗口大小动态调整自己可以发送但未被确认的数据总量(即发送窗口大小)。
      • 如果接收方通告窗口为0,发送方必须暂停发送(直到接收方发送一个新的ACK通告非零窗口)。
  5. 拥塞控制

    • 目的: 防止因网络路径上路由器或链路过载而导致整个网络性能急剧下降(即避免拥塞崩溃)。
    • 核心思想: TCP发送方通过持续探测网络状况,动态调整自己的发送速率(拥塞窗口大小),以匹配网络的可用带宽。
    • 主要算法和状态:
      • 慢启动: 连接建立初期或从拥塞中恢复时,拥塞窗口cwnd从一个很小的值(如1个MSS - 最大报文段长度)开始,每收到一个ACK,cwnd就指数增长(加倍),直到达到一个阈值或发生丢包。
      • 拥塞避免:cwnd增长到一个阈值(慢启动阈值ssthresh)后,进入拥塞避免阶段,cwnd开始线性增长(每RTT增加约1个MSS)。
      • 快速重传: 当发送方收到3个重复的ACK(表明有中间数据包丢失,但后续包已到达)时,不等超时器到期就立刻重传丢失的数据包。
      • 快速恢复: 在触发快速重传后,TCP不将cwnd降到1重新慢启动(这是超时重发后的策略),而是将cwnd减半并进入拥塞避免阶段(线性增长),以减少网络拥塞程度并快速恢复性能。RFC 5681和后续的RFC有更详细定义。

总结:

TCP就像一个极其负责、确保安全的邮递系统。它:

  1. 提前预约: 通过三次握手确保对方在线并准备接收。
  2. 编号投递: 给每个包裹(数据包)编号,确保按顺序到达。
  3. 签收回执: 要求收件方签收(ACK),丢件(超时未签收)立即重发。
  4. 速度协商: 根据收件方处理能力(接收窗口)实时调整发送速度,避免压垮对方(流量控制)。
  5. 路况探测: 动态感知网络拥堵状况,自动减速避免堵死道路(拥塞控制)。
  6. 打包组合: 为了效率可能合并小包裹发送(字节流)。
  7. 礼貌道别: 结束通信时通过四次挥手有序关闭连接。

正是这些复杂而精妙的机制,使得TCP成为互联网上绝大多数需要可靠数据传输应用(如网页浏览/HTTP(S)、文件传输/FTP、电子邮件/SMTP/POP3/IMAP、远程终端/SSH等)的基础支柱。

IP地址、端口号、通信协议的相关知识 TCP和UDP通信协议简述

网络编程有三个要素,分别是IP地址、端口号和通信协议。本文主要讲述的是TCP与UDP这两种通信协议,以及编程的实现。首先,我们需要

2023-07-18 11:20:38

通信协议的特点

通信协议的种类和特点目前常见的通信协议主要有:NetBEUI、IPX/SPX、NWLink、TCP/IP,在这几种

2023-05-06 14:57:37

通信协议中的HTTP、TCP、UDP了解多少(上)

TCP HTTP UDP: 都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。

2023-02-13 14:19:52

物联网7大典型通信协议简要介绍

物联网7大典型通信协议简要介绍

资料下载 papalalaboy 2021-11-24 09:50:24

上位机通信协议PPT课件下载

上位机通信协议PPT课件下载

资料下载 王胜海 2021-07-20 09:36:42

通信协议及接口技术汇总综述

通信协议及接口技术汇总综述

资料下载 佚名 2021-06-16 10:31:31

CAN总线通信协议

CAN总线通信协议详细如下。

资料下载 姚小熊27 2021-04-19 16:54:38

通信协议CANOpen堆栈手册资源下载

通信协议CANOpen堆栈手册资源下载

资料下载 洪涛 2021-04-19 09:45:42

到底什么是TCP/IP协议栈,看完这篇就明白!

一谈到TCP/IP协议栈,相信不少小白都处于暴躁的边缘,只懂其一不知其二。没关系,看完这篇你就知道啦!我们先简单

2022-12-09 15:21:16

SPI通信协议讲解相关资料推荐

SPI通信协议讲解SPI通信概念SPI通信SPI 物理层协议层SPI 基

2022-02-17 06:09:07

什么是串口通信?串口通信协议了解

行传输低。2、串口通信协议在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它

2022-02-15 06:54:23

了解一下MODBUS通信协议

目录前言MODBUS协议简介MODBUS通信格式信息帧格式前言近期需要制作一个MODBUS/RTU转MODBUS/TCP 的网关。首先需要

2022-01-14 06:19:02

掌握通信协议的研究方法

从根本出发,从简单开始,逐步加码,从而让你彻底掌握通信协议的研究方法。就是串口uart,因为uart只有物理层,尤其是TTL电平的uart,就是个很简单很直观的物理层

2022-01-13 06:09:58

什么是TCP/IP通信协议

什么是TCP/IP通信协议呢?IP地址有何作用?分为哪几类?

2021-11-01 06:08:31

TCP通信协议-Labview上位机

现在用单片机进行信息采集,通过GPRS模块上传到PC,用Labview做上位机,TCP通信协议,想请教一下,TCP

2019-12-10 08:58:05
7天热门专题 换一换
相关标签