TCP连接建立三握手

A:主机A的TCP客户进程,B:主机B的TCP服务器进程

最初A、B为CLOSED(关闭)状态,A主动打开连接,B被动打开连接进入LISTEN(收听)状态(被动打开连接不明白,是指从被打开后就一直处于打开后的LISTEN状态吗 )

连接前A,B分别都要创建传输控制块TCB

1.A向B发连接请求报文段,SYN=1,seq=a(这里设序号为a),不携带数据,消耗序号据,本人理解SYN=1,ACK=0报文也叫SYN报文。A进入SYN-SENT(同步已发送)状态。

2.B向A发确认报文段,ACK=1,SYN=1,seq=b(同-设),ack=a+1,不携带数据,消耗序号。B进入SYN-RCVD(同步已建立)状态

3.A对B的确认报文进行确认,ACK=1,seq=a+1,ack=b+1。A进入ESTABLISHED(已建立连接)

可携带数据,也可不带数据,不带则不消耗序号,据理解SYN=0,ACK=1称ACK报文。

不消耗序号指,如A在3中不携带数据,则A发的下一个报文序号仍为a+1.

B收到确认后同进入ESTABLISHED状态

建立连接四握手,效果同,相对于三,把步骤2分步为ACK报文、SYN报文

三次握手的第三次握手必要性:

如只两次握手,现存情况如下

A向B发连接请求,但这一报文,在网络长时间停滞(某种原因)至超时,A重传后,顺利与B连接,传输,关闭连接。但就在这之后A第一次发的请求报文,那个停滞的,终于到达B(说明这个报文寿命不短)。B对报文发出确认,连接即建立,而A,B中只有B认为建立了连接,预留资源,等待A发送数据。浪费了资源。

使用三握,那么B就会在没收到A的确认后知道A并未请求。避免上面情况。

有问题,望指出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值