《TCP/IP详解 卷一》第12章 TCP初步介绍

目录

[12.1 引言](#12.1 引言)

[12.1.1 ARQ和重传](#12.1.1 ARQ和重传)

[12.1.2 滑动窗口](#12.1.2 滑动窗口)

[12.1.3 变量窗口:流量控制和拥塞控制](#12.1.3 变量窗口:流量控制和拥塞控制)

[12.1.4 设置重传的超时值](#12.1.4 设置重传的超时值)

[12.2 TCP的引入](#12.2 TCP的引入)

[12.2.1 TCP服务模型](#12.2.1 TCP服务模型)

[12.2.2 TCP可靠性](#12.2.2 TCP可靠性)

[12.3 TCP头部和封装](#12.3 TCP头部和封装)

[12.4 总结](#12.4 总结)


12.1 引言

关于TCP详细内容,原书有5个章节,本章是初步介绍。

IP和UDP没有差错纠正功能。

差错校正码:添加冗余比特,以恢复真实信息。

12.1.1 ARQ和重传

ARQ:自动重传请求协议,许多通信协议使用,如TCP。

即超时没收到ACK的话,重传数据。

序列号(Sequence Number):

TCP头中字段,对TCP数据流中的每个字节进行编号。

作用:

按顺序重组数据。

数据丢失或重复检测。

流量控制。

拥塞控制。

12.1.2 滑动窗口

滑动窗口分为:

接收窗口

发送窗口

接收方根据缓冲空间设置合适接收窗口大小,并将窗口值通知给发送方。

发送方根据接收方的接收窗口大小调整发送窗口大小,控制发送速率,避免接收方缓存溢出。

一个发送窗口包括:

已发送并收到确认的报文。(此时可释放本地报文副本)

已发送但未收到确认的报文。

尚未发送。

12.1.3 变量窗口:流量控制和拥塞控制

流量控制方式:

  1. 基于速率

方法:给发送方指定最大发送速率。

使用场景:流应用程序,广播,组播。

  1. 基于窗口

窗口大小随时变动。

接收方通过TCP窗口通告/窗口更新向发送方告知的发送窗口大小。

窗口更新和ACK可由同一报文携带。

12.1.4 设置重传的超时值

RTO:重传超时(Retransmission Timeout)

RTT:往返时间(Round-Trip Time)

RTO值通常通过一组RTT以及估计偏差来计算。

RTO略大于RTT均值。

12.2 TCP的引入

12.2.1 TCP服务模型

TCP是面向连接的,字节流。

字节流的意思:

封包不是一个一个独立的。

通信两端的所有数据都按字节编号,可看成一个流。

因为无消息边界,导致粘包,所以需要应用程序自己添加记录标志,用于从完整数据中分离一小段独立数据。

12.2.2 TCP可靠性

TCP序列号:

表示当前分组的第一个字节在整个数据流的偏移。

对UDP,应用程序每次write/send就产生一个UDP数据

而TCP不会,write/send数据会被分段或合并成一个或多个TCP段。

TCP丢弃无效校验和报文

TCP不会为每个报文段设置一个重传计时器。而是一个发送窗口的数据只设置一个计时器。

ACK延迟累积发送:

接收方不会立即对每个接收的数据发送确认,而是等一定时间,将所有ACK合并成一个ACK发送。

12.3 TCP头部和封装

报文格式:

源端口:

目的端口:

序列号:

本次传输数据在整个数据流中位置,用字节表示。初始的序列号是随机数。

确认号:

表示期望接收的下一个包的序列号,之前的数据已确认收到。

头部长度:

TCP头长度。头最长60字节,默认是最小的20字节

标志位:

CWR:

拥塞窗口减小,告知发送方降低它的发送速率。

ECE:

ECN回显,向指示对方网络拥塞。

URG:

是否包含紧急数据,如有,紧急指针字段有效,使用少。

ACK:

确认号字段是否有效。

PSH:

暗示接收方应尽快将数据传给应用程序。

RST:

重置连接(常因为错误)

SYN:

用于发起TCP连接。

FIN:

用于关闭连接。

窗口大小:

向对方通告自己的接收窗口大小。

TCP校验和:

对整个TCP报文段的校验,包括TCP头和数据。

紧急指针:

URG标志为1时,代表一个偏移量,该偏移处有紧急数据。

选项:

提供额外配置信息。

常见选项:

时间戳:

MSS:表示希望接收的报文段最大值。三次握手时通过该值。

SACK:向发送方指示哪些段已成功接收,发送方只重传丢失部分,而不是整个段。

窗口缩放:包含一个缩放因子,按比例放大窗口值,以适应高速网络。

数据字段:

可选。不带数据字段的报文:

SYN,FIN,纯ACK,RST等

可在数据报文中顺带ACK,也可只发ACK不带数据。

12.4 总结

相关推荐
辉视官方31 分钟前
2026深圳校园安全新方案 | SIP网络广播对讲系统,提升应急响应与智能教学水平
网络·安全
振浩微433射频芯片31 分钟前
告别“遥控失灵”:如何评估国产433芯片在智能家居领域的可靠性?
网络·单片机·嵌入式硬件·物联网·智能家居
pengyi87101534 分钟前
HTTP代理抓包核心原理,全面读懂请求与响应数据逻辑
网络·网络协议·http
云边云科技_云网融合1 小时前
@WAN SASE 1.0 全新起航,重新定义企业网络安全边界
网络·安全·web安全
小辰记事本1 小时前
从零读懂网卡内部架构:一条数据包的硬件之旅
网络·网络协议·架构·rdma
智慧光迅AINOPOL1 小时前
如何实现全光网的简单运维
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案
这是谁的博客?1 小时前
Python 异步编程核心原理与实践深度解析
java·网络·python·协程·asyncio·异步编程
2401_873479401 小时前
跨境电商如何评估用户IP真实性?用高精度IP地址查询+IP离线库实现
网络·tcp/ip·ip
minji...1 小时前
Linux 网络基础之网络IP层(十二)路由、路由表,分片和组装
linux·网络·tcp/ip·智能路由器·路由表·ip分片
Chengbei112 小时前
对标PentestGPT!新一代去中心化集群式AI全自动渗透测试工具
网络·人工智能·网络安全·去中心化·区块链·系统安全