TCP: 传输控制协议

TCP: 传输控制协议

本系列文章旨在巩固网络编程理论知识,后续将结合实际开展深入理解的文章。

TCP的服务

T C P和U D P都使用相同的网络层(I P),T C P却向应用层提供与U D P完全不同的服务。

T C P提供一种面向连接的、可靠的字节流服务。

  • 面向连接意味着两个使用T C P的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个T C P连接。
  • T C P通过一系列方式来提供可靠性
    • 超时及重传策略
    • 保序
    • 流量控制
  • T C P不在字节流中插入记录标识符,将这称为字节流服务(byte stream service)。

TCP 的首部

T C P数据被封装在一个I P数据报中:

下图为T C P首部的数据格式。如果不计任选字段,它通常是2 0个字节。

  1. 每个T C P段都包含源端和目的端的端口号 ,用于寻找发端和收端应用进程。这两个值加上I P首部中的源端I P地址 和目的端I P地址唯一确定一个T C P连接。即,四元组(s:ip+port, t:ip+port)唯一确定一个TCP连接。有时,一个I P地址和一个端口号也称为一个插口( s o c k e t)。

  2. 序号用来标识TCP报文段中的数据字节流,它表示在这个报文段中的的第一个数据字节。如果将字节流看作在两个应用程序间的单向流动,则 T C P用序号对每个字节进行计数。序号是32 bit的无符号数,序号到达2^32-1后又从0开始。

  3. 同步SYN:同步SYN=1表示这是一个连接请求或连接接受报文

  4. 既然每个传输的字节都被计数,确认序号:占4字节,表示接收方期望收到的下一个字节的序列号。因此,确认序号应当是上次已成功收到数据字节序号加 1。只有ACK=1时,确认序号字段才有效。

  5. 发送A C K无需任何代价,因为32 bit的确认序号字段和A C K标志一样,总是T C P首部的一部分。因此,我们看到一旦一个连接建立起来,这个字段总是被设置, A C K标志也总是被设置为1

  6. 推送PSH:接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程

  7. 复位RST:当RST=1时,表明TCP连接中出现严重差错

  8. T C P的流量控制由连接的每一端通过声明的窗口大小来提供

  9. 终止FIN:用来释放一个连接

  10. 检验和:占2字节,检验和覆盖了整个的T C P报文段:T C P首部和T C P数据。这是一个强制性的字段,由发端计算和存储,并由收端进行验证。

  11. 紧急指针:占16位,指出在本报文段中紧急数据共有多少个字节

  12. 选项:长度可变,包括最大报文段长度MSS等

注意:确认序号ack和标志位中的ACK不是一个东西哦!

小结

T C P将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据; T C P提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。

相关推荐
隐擎fox9 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
binqian10 小时前
【linux】OpenSSH升级文档
linux·运维·网络
Bruce_Liuxiaowei10 小时前
2026年9月第2周网络安全形势周报
网络·安全·web安全·网络安全·漏洞评级
和裕10 小时前
蜂窝板 vs 七层瓦楞重型纸箱:大件工业设备运输性能与成本全对比
大数据·运维·网络·人工智能·算法
Jae den10 小时前
网络延迟为什么会影响游戏和实时业务?
网络·游戏
水域安全老周10 小时前
水趣钓鱼救生衣专利拆解:两级锁紧如何解决落水人衣分离
java·前端·网络
IT摆渡者10 小时前
1panel 配置申请手动解析网站SSL证书
服务器·网络协议·ssl
易岳群11 小时前
物联网 MQTT 方案:服务端如何通过 MQTT 生命周期维护客户端设备状态
物联网·网络协议
制造业的搬运工11 小时前
智能家居工控PCB可靠性检测规范与制程管控实践
大数据·网络·人工智能·制造·pcb工艺
想要入门的程序猿11 小时前
回调函数学习
java·网络·学习