通信协议:TCP知识总结

一、TCP简介

tcp是一种面向连接的传输层的协议,主要有以下几个特点:

  1. tcp是面向连接的运输层协议
  2. 每条tcp连接只有两个端点,tcp只能是点对点的
  3. tcp提供可靠交付的服务
  4. tcp是全双工通信,发送方和接收方
  5. 面向字节流的
二、要点
1.慢开始、拥塞避免、快重传、快恢复

慢开始:在一个传输轮次下(一个RTT),拥塞窗口(cwnd)就加一倍。在开始的时候要设置一个慢开始门限。

拥塞避免:这个阶段是让cwnd窗口进行缓慢的增大,经过一个RTT就把发送方的cwnd增加1,而不是像慢开始那样成倍的增加。在拥塞避免阶段发生超时时,慢开始门限值减为超时时刻cwnd值的一半,比如发生超时时cwnd值为10,超时后,慢开始门限值减半为5,但是拥塞窗口值设为初值1(这个和快恢复有区别)

快重传:快重传是为了应对在传输过程中某些包丢失的情况,这个情况下网络并没有发生拥塞,但是由于某种原因,传输的包丢失了,这样再使用超时的处理方法就不是很合适,因此有了快重传算法,快重传算法是为了让发送端更快更早的知道报文段的丢失,快重传算法要求接收端不要等待自己发送数据时进行捎带确认,而是要立即发送确认,即使收到了失序的报文段,也要发出已收到报文段的重复确认,例如下图:
在这里插入图片描述

快恢复:在接收端一连收到3个重复的ack时,发送端就知道有报文段丢失了,于是启动快恢复算法,快恢复算法将慢开始门限值减半,然后设置拥塞窗口值为慢开始门限值;

下面是拥塞控制流程图
在这里插入图片描述

2.链路间的拥塞控制:

主动队列管理AQM,主动队列管理是在网络层的路由器处的一种拥塞控制方法,AQM早秋比较流行的一种RED(随机早期检测方法 random early detection),RED在路由器中维护了两个参数,最小门限和最大门限:

  1. 若平均队列长度小于最小门限,把新到的分组放入到队列中进行排队
  2. 若平均队列长度大于最大门限,把新到达的分组进行丢弃
  3. 若平均队列长度在最小门限和最大门限之间,按照某一个丢弃概率p将收到的分组进行丢弃(这个体现了随机丢弃)
3.TCP的三次握手:

在这里插入图片描述

假定A运行的是客户端程序,B运行的是服务端程序,最初都是处于CLOSE状态。
在这里插入图片描述
在这里插入图片描述

总结:

  1. A->B SYN = 1 seq = y A的状态为SYN-SEND
  2. B->A SYN = 1, ACK = 1,ack = y+1,seq = x B的状态为SYN-RCVD,A的状态为ESTABLISHED
  3. A->B ACK = 1,ack = x+1,seq = y+1 B的状态为ESTABLISHED
  4. SYN报文段需要消耗一个序号

为什么最后A需要向B发送确认?

当过时的SYN到达B时,B没有办法确认是否A需要建立连接,主要是为了防止B单方面建立连接,但是A不想建立连接的情况

4.TCP的四次挥手

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结:

在A释放连接的情况下:

  1. A -> B FIN=1,seq=u A的状态变成FIN-WAIT1状态
  2. B -> A ACK=1,ack=u+1, B的状态变为CLOSE-WAIT,A收到确认后状态变为FIN-WAIT2,在这种状态下,B还是可以向A发送数据,(这里有一点需要注意,当B继续发送数据后,B的seq增加,但是ack不增加,这是因为A没有数据了,虽然A在发送确认消息,但是如果确认消息没有数据,就不消耗序号,所以这段时间B发送的消息的ack一直是u+1)
  3. B ->A FIN=1,ACK=1,seq=w,ack=u+1,B的状态变为LAST-ACK
  4. A->B ACK=1,seq=u+1,ack=w+1, A发送消息后状态变为TIME-WAIT,B收到消息后状态变为CLOSED
  5. A在发送确认报文后,需要等待两个MSL(Maximum segment lifetime 最长报文寿命)

问:为什么A最后需要等待2MSL?

答:1.可以保证最后A发送的确认消息B可以收到

​ 2.可以让AB连接过程中产生的报文段在网络中消失

感兴趣的朋友可以关注下面的公众号,每天分享一点知识,成长看得见,感谢支持!!在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值