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

《TCP协议基础》

目录

引言

一、TCP是什么?

二、TCP的核心特性

1. 三次握手建立连接

2. 可靠数据传输

3. 四次挥手断开连接

三、TCP报文结构

五、TCP的优缺点

结语


引言

TCP(传输控制协议)是互联网中最核心的协议之一,它像一位尽职尽责的邮差,确保我们的数据能够准确无误地送达目的地。本文将用通俗易懂的方式介绍TCP协议的基本原理和工作机制。

一、TCP是什么?

TCP协议的全称是传输控制协议(Transmission Control Protocol),属于OSI七层模型中的传输层协议,核心特点可概括为:面向连接的、基于字节流的可靠性协议。以下从核心特性和关键功能两方面展开说明:

TCP协议的核心特性

1. 面向连接的传输层协议

  1. 连接先行:传输数据前必须通过“三次握手”建立连接,数据传输完成后通过“四次挥手”断开连接,如同打电话“先接通、再通话、最后挂断”。
  2. 点对点连接:每条TCP连接严格基于发送方和接收方的“点对点”通信,一对一传输,不支持广播或多播。

2. 基于字节流的传输层协议

  1. 字节流传输:TCP将应用层发送的数据视为“无结构的字节流”(而非固定大小的数据包),传输时会根据网络情况将字节流分割为大小不等的报文段(Segment),接收方再重组为完整字节流。
  2. 流式传输优势:无需应用层手动拆分数据,TCP自动处理数据分片与重组,简化上层应用逻辑。

流量控制

滑动窗口机制:接收方通过“窗口大小”字段告知发送方“当前可接收的最大字节数”,避免发送方因发送过快导致接收方缓冲区溢出(类似“快递箱满了,先别送了”)。

二、TCP的核心特性

1. 三次握手建立连接

TCP使用"三次握手"建立连接:

  1. 客户端发送SYN=1, seq=x(我想和你通话)
  2. 服务端回复SYN=1, ACK=1, seq=y, ack=x+1(我收到了,我也准备好通话了)
  3. 客户端发送ACK=1, seq=x+1, ack=y+1(好的,我们开始吧)

这个过程确保双方都准备好通信,并同步初始序列号。

2. 可靠数据传输

确认应答(ACK):接收方收到数据后,会发送“确认报文”告知发送方“数据已接收”。

超时重传:若发送方未在规定时间内收到ACK,自动重发数据,避免丢失。

序列号与重排序:为每个字节编号,接收方通过序列号将乱序到达的报文段重新排序,确保数据顺序正确。校验和:通过校验字段检测数据传输中的差错, corrupted 数据会被丢弃并触发重传。

3. 四次挥手断开连接

断开连接需要"四次挥手":

  1. 主动方发送FIN=1(我说完了)
  2. 被动方回复ACK(好的,我知道了)
  3. 被动方发送FIN=1(我也说完了)
  4. 主动方回复ACK(好的,再见)

三、TCP报文结构

TCP头部长度不固定(最小20字节,最大60字节,含选项字段),核心字段按功能可分为:地址标识、数据定位、控制指令、传输管理四大类。

源端口(Source Port)/ 目的端口(Destination Port)

长度:各16位(共4字节)

功能:标识发送方和接收方的应用程序(如HTTP用80端口,HTTPS用443端口)。

类比:类似快递单上的"发件人电话"和"收件人电话",确保数据能精准送达对应的应用(而非设备)。

序列号(Sequence Number)

长度:32位(4字节)

功能:标记本报文段第一个字节的编号(TCP将数据视为字节流,每个字节都有唯一编号)。

举例:若序列号为1000,且报文携带500字节数据,则这些字节的编号范围是1000~1499。

类比:快递包裹上的"起始页码",方便接收方按顺序拼接完整数据(如同按页码整理书籍)。

确认号(Acknowledgment Number)

长度:32位(4字节)

功能:接收方告诉发送方"下一个期望收到的字节编号"(仅当ACK控制位为1时有效)。

举例:若接收方已收到编号1~1499的字节,则确认号为1500,表示"我已准备好接收从1500开始的字节"。

类比:收件人回复"已收到前1499页,请发第1500页起的内容"。

数据偏移(Data Offset)

长度:4位(0.5字节)

功能:表示TCP头部的长度(单位:32位,即4字节),用于区分"头部"和"数据部分"的边界。

计算:若数据偏移值为5,则头部长度=5×4=20字节(最小头部);值为15时,头部长度=15×4=60字节(含选项字段的最大头部)。

控制位(Control Bits)

长度:6位(共6个标志位,URG/ACK/PSH/RST/SYN/FIN),每一位代表一种控制指令。

URG(紧急指针有效):标记报文段中存在"紧急数据"(需优先处理,如中断信号)。ACK(确认有效):表示"确认号"字段有效(几乎所有数据传输阶段都置1,仅初始握手时可能为0)。
PSH(推送功能):通知接收方"立即将数据提交给应用层",无需等待缓冲区满(如实时聊天消息)。

RST(重置连接):强制断开异常连接(如连接已失效,需重新建立)。

SYN(同步序列号):用于"三次握手"建立连接,请求同步双方的序列号。

FIN(结束连接):用于"四次挥手"断开连接,表示"我方数据已发送完毕"

4. 传输管理类:效率与安全的"调节器"

窗口大小(Window Size)

长度:16位(2字节)

功能:接收方通过此字段告诉发送方"当前接收缓冲区的可用空间"(单位:字节),是TCP"流量控制"的核心字段。

举例:若窗口大小为1000字节,表示接收方最多还能接收1000字节数据,发送方需控制发送速率避免缓冲区溢出。

校验和(Checksum)

长度:16位(2字节)

功能:检测报文段在传输过程中是否损坏(如字节翻转、丢失),发送方计算校验和并填入,接收方重新计算并比对,不一致则丢弃报文段并要求重传。

紧急指针(Urgent Pointer)

长度:16位(2字节,仅URG=1时有效)

功能:指向紧急数据的末尾位置,接收方会优先处理紧急数据(如远程登录时的"Ctrl+C"中断指令)。

5. 可选字段(Options,非固定)

长度:0~40字节(需通过"数据偏移"字段判断是否存在)。

四、TCP的应用场景

TCP适合需要可靠传输的场景:

  1. 网页浏览(HTTP/HTTPS)
  2. 文件传输(FTP)
  3. 电子邮件(SMTP/POP3/IMAP)
  4. 远程登录(SSH/Telnet)

五、TCP的优缺点

优点

  1. 可靠性高,数据不易丢失
  2. 顺序保证,数据按发送顺序到达
  3. 流量控制,避免接收方过载
  4. 拥塞控制,避免网络拥堵

缺点

  1. 建立连接需要额外开销
  2. 实时性不如UDP
  3. 头部开销较大(通常20字节)

结语

TCP协议就像互联网世界的可靠快递员,虽然不如UDP那样"轻装上阵",但它确保了我们的重要数据能够安全、完整地到达目的地。理解TCP的工作原理,有助于我们更好地理解网络通信的本质,也能在出现网络问题时更快地定位原因。


文章转载自:

http://GmI8EQvb.Lxmmx.cn
http://LaaQ5IJH.Lxmmx.cn
http://GGUsZd2E.Lxmmx.cn
http://MJh4xnv8.Lxmmx.cn
http://0Dueszjs.Lxmmx.cn
http://7LUUAPYc.Lxmmx.cn
http://kqdsJk6X.Lxmmx.cn
http://pVEN2lVl.Lxmmx.cn
http://pqxYUmqW.Lxmmx.cn
http://dkt4vbx8.Lxmmx.cn
http://XpvlkdTC.Lxmmx.cn
http://GN29ah5N.Lxmmx.cn
http://LTxNKkVA.Lxmmx.cn
http://JVwMrx90.Lxmmx.cn
http://vUtiXfhg.Lxmmx.cn
http://s2SMCu6X.Lxmmx.cn
http://MZSIJiyo.Lxmmx.cn
http://xtEhjRxA.Lxmmx.cn
http://RTh2jm0J.Lxmmx.cn
http://XmzHfCz4.Lxmmx.cn
http://kBivsqSK.Lxmmx.cn
http://DKCYFhxP.Lxmmx.cn
http://AfLZihWr.Lxmmx.cn
http://sctJVPxC.Lxmmx.cn
http://Ex4YzKtf.Lxmmx.cn
http://kqiaUpUv.Lxmmx.cn
http://WYgu9nuh.Lxmmx.cn
http://lqeuc1fZ.Lxmmx.cn
http://DuD6q6k6.Lxmmx.cn
http://ZJnkvh0f.Lxmmx.cn
http://www.dtcms.com/a/377108.html

相关文章:

  • 1234567
  • 【面试向】物联网IoT
  • 快消26届联合利华校招AI测评及第二轮线上认知能力测评SHL笔试真题及评分要求
  • 我在嘉顺达蓝海的安全日常
  • 洞察 2025:中国身份访问安全厂商格局深度剖析
  • LLMOps平台:开源项目LMForge = GPTs + Coze
  • 开源欧拉_网络插件cilium_HA集群_二进制_IPV4IPV6双栈_Kubernetes-1.33.0
  • 101、23种设计模式之享元模式(10/23)
  • Tomcat原理
  • Linux 内核和用户空间
  • Cookie、Session和Token之间的区别
  • 大模型之词嵌入模型实现文本向量化
  • MySQL慢查询
  • 前端如何判断token是否过期
  • 当没有接口文档时,如何使用Jmeter录制和创建脚本
  • 解锁深度学习黑科技:Embedding向量嵌入探秘
  • Java 大视界 -- 基于 Java 的大数据分布式存储在数字图书馆海量资源存储与管理中的应用
  • 6、Python-Pandas数据处理与分析
  • 实现一个优雅的城市选择器组件 - Uniapp实战
  • WebSocket 双向通信实战:SCADA 移动端实时操控响应优化
  • 校园管理系统练习项目源码-前后端分离-【node版】
  • websocket和socket区别
  • Linux驱动如何向应用层提供sysfs操作接口
  • 人工智能学习:Transformer结构中的前馈全连接层
  • 项目需求分析(2)
  • 灌区泵站远程监控物联网网关解决方案
  • 【114B】基于51单片机GSM自动售货机【Keil程序+报告+原理图】
  • 【前言技术拓展Trip one】 芯片自动化和具身智能
  • Windows-Use实战:AI驱动的Windows自动化
  • OpenResty 限流方案对比:lua_shared_dict vs Redis