目录
一、TCP windows窗口的作用
二、TCP报文首部格式
三、TCP的MSS
四、TCP可靠传输
五、TCP特点
六、TCP序号的作用
七、UDP报文首部格式
八、UDP的特点
(个人学习笔记,不喜勿喷,不正确的还请指正)
窗口就是指无需等待应答而可以继续发送数据的最大值。TCP报文中16位窗口大小(65535B),表明我接收方电气概念可用缓存空间大小。用于TCP的流量控制,提高传输效率。
Window:一口气(连续几个包加起来)表示接收方缓存的大小。一口气发送一定量的数据而不需要得到确认,即在我回复ACK之前,你一口气最多可以发送的数据(可能是多个报文)。
Window窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。(有点小,可选项字段,叫做窗口扩大因子)
CWND拥塞窗口控制
Source port 源端口
Destination port 目的端口 端口代表某个应用程序的进程号
Sequence Number 序列号 代表报文的序号
Acknowledgment Number 确认号 接收端对发送端报文进行确认的序号
Data Offset 报文数据偏移
Reserved 保留位
Flag位 URG ACK PSH RST SYN FIN
Window 窗口大小(接收端接收数据的大小,低于窗口大小的数据可以直接发送)
Checksum 校验和
Urgent Pointer 紧急指针(表示重要数据优先传递)
TCP MSS是什么意思?
作用:尽可能保证数据不分片,提高传输效率
MSS:Max segment size 属于可选字段,双方都在通信的第一个报文(发:SYN报文 接:SYN+ACK报文)指明本端所能接收的单个报文的最大长度的报文段(类似MTU)。后续报文就没有该字段了。
UDP容易分片,但TCP很少会分片,因为TCP有MSS,MSS在三次握手时进行协商,有了MSS后,当APP给的数据太大,TCP会自动将数据拆小(mss大小)然后在发送,因此TCP很少会分片。
MSS:一个包(单个包的TCP数据部分的大小 一般是1460字节)类似MTU。只有前两个包才会携带MSS。MSS属于可选项部分。
MSS指的是TCP数据部分的大小(纯data部分)一般等于MTU(1500)-20(IP头)-20(tcp头)=1460字节
TCP可靠传输是什么意思:
超过window size接收方丢弃报文,然后回复ACK3重新发送
TCP可靠性的体现:
TCP特点:
TCP Flag 位含义
作用:标识当前TCP报文的特殊作用
Fin位:发送端完成发送任务,并要求释放连接
RST位:重建连接标识,有错误,需释放连接然后重建
ACK位:确认需要有效
SYN位:同步序号 用来发起一个连接请求
PSH位:尽快将报文交给APP,而不必等待缓冲区满
URG位:紧急指针位 置1时标识Urgent Pointer字段有效,紧急指针有效标识,它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
Urgent Pointer字段:紧急指针,只有当URG标志置1时紧急指针才有效,TCP的紧急方式是发送端向另一端发送紧急数据的一中方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
TCP如何判断拥塞
TCP如何进行流量控制
流量控制的目的:
两个窗口(接收方和发送方的窗口):窗口大小直接反应传送报文的速率,俩窗口取最小值,最小值发送。
接收方通告窗口wndows(报文里体现)
发送方拥塞窗口cwnd(congestion window)(报文里不体现)
发送速率刚开始是很小的,然后慢启动算法生成缓慢上升的速率(虽然叫慢启动,但是是指数型增长,增长速度很快)[如果直接发送大流量包,对方不一定收到,会浪费带宽]
超时重传,有可能是中间丢包了,就会重新降低速率到门限的速率重传
如果有重复发送了ACK的场景下(发生拥塞),就会重新降低到CWND的一半速率+3个报文段重传,
TCP序号的作用:确保报文传输的可靠性
TCP里报文里有两个序号:①发送序号 ②确认序号
发送序号:使用序号对每个字节进行计数,序号是32bit整数,序号达到2'32后又从0开始,发送序号指的是本报文段所发送的数据的第一个字节的序号
确认序号:期望收到对方的下一个报文段的数据的第一个字节的序号,即上次已成功收到的数据字节号+1,只有ACK标识为1,此段才有效。
Source port 源端口
Destination port 目的端口 端口代表某个应用程序的进程号
Length 长度(UDP的包头+负载的Data的总长度)
Checksum 校验和
Data Offset 报文数据偏移
UDP特点: