Tcp协议

TCP的首部结构

这里写图片描述
源端口:16 bit
目的端口:16 bit

序列号:32 bit (本报文段数据第一个字节的序号)

确认号:32 bit

数据偏移:4 bit (该报文头部与数据部分的距离,以32位字为单位)
保留:6 bit
URG: 1 bit (为1时,表示此报文端紧急,有较高优先级)
ACK: 1 bit (为1时,确认号字段有效)
PSH(PUSH): 1 bit (为1时,尽快交给应用层)
RST: 1 bit
SYN: 1 bit (为1时,为连接请求报文或连接接受报文)
FIN: 1 bit (为1时,表示发送端要求释放连接)
窗口:16 bit (接收缓冲区的空闲空间)

校验和:16 bit
紧急指针:16 bit (URG为1时有效,紧急数据相对序列号字段值的偏移)

选项和填充:32 bit

TCP 首部如果不计选项字段,通常是20个字节

三次握手:

客户端发送SYN(seq=x)报文->SYN_SEND
服务端接收后发送ACK(ack=x+1)+SYN(seq=y)->SYN_RECV
客户端接收后发送ACK(ack=y+1)->ESTABLISH

四次挥手:

客户端发送FIN->FIN_WAIT1
服务器端接收后返回ACK->CLOSE_WAIT;客户端收到后进入FIN_WAIT2
此时服务端还可以给客户端传送数据,但是客户端有一个超时结束连接的设置
服务端没有数据传送后返回FIN->LAST_ACK
客户端收到后进入TIME_WAIT状态,并且返回一个ACK,并且等待2MSL(Maximum Segment Lifetime),即两个报文段的最长生命周期,其值又由网络层的TTL决定,为的是能在最后一个ACK丢失后能够重传。最后进入CLOSED
服务端收到ACK后进入CLOSED

这里写图片描述

TCP的一些策略

在TCP中,为了确保稳定、可靠的传输,使用了四个定时器:
(1)重传定时器,溢出时没有收到ACK,则重新发送。
(2)坚持(persist)定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。在接收端给出的rwnd为0时发送端开始计时,到达时间点后向接收端发送一个字节的探测报文,如果rwnd还是为0,则重置计时器继续等待。
(3)保活(keepalive)定时器可检测到一个空闲连接的另一端何时崩溃或重启。
(4)2MSL定时器测量一个连接处于TIME_WA IT状态的时间。

慢开始和拥塞控制:
设置一个cwnd(拥塞控制窗口),一般等于发送窗口,一开始使用慢开始算法,即以指数增长cwnd大小,直到到达ssthresh(慢开始门限),则采用+1的方式增长,如果监测到了网络拥塞,则将ssthresh设定为当前cwnd的一半,重新开始慢算法。

这里写图片描述

快恢复:
与拥塞控制一样,只是当发送方连续三次收到包丢失后,需要将ssthresh(慢开始门限)减半并直接将窗口设置到该值,采用+1的方式进行增长。

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值