《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 总结

相关推荐
EasyDSS42 分钟前
视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
大数据·网络·网络协议·音视频
rufeike1 小时前
UDP协议理解
网络·网络协议·udp
江理不变情2 小时前
海思ISP调试记录
网络·接口隔离原则
世界尽头与你2 小时前
【安全扫描器原理】网络扫描算法
网络·安全
GKoSon2 小时前
加入RPC shell指令 温箱长时间监控
网络·网络协议·rpc
hgdlip3 小时前
关闭IP属地显示会影响账号的正常使用吗
网络·网络协议·tcp/ip·ip属地
Zz_waiting.4 小时前
网络原理 - 7(TCP - 4)
网络·网络协议·tcp/ip
RECRUITGUY4 小时前
用交换机连接两台电脑,电脑A读取/写电脑B的数据
服务器·网络·负载均衡
zheshiyangyang4 小时前
HTTP相关
网络·网络协议·http
@Aurora.5 小时前
【项目日记(三)】
linux·服务器·网络