【学习笔记】【TCP三次握手和四次挥手】

TCP属于网络协议中的传输层

TCP头格式在这里插入图片描述

1.包的序列号 :为了解决发送中乱序问题。每个包谁先发谁后发。
2.确认序列号:再次确认包发送的顺序
3.RST:重新连接
4.SYN:发送请求
5.FIN:结束
6.ACK:回复

三次握手

在这里插入图片描述
例子:
男生 :我喜欢你,和我交往吧
女生 :好的,我知道了(对男生的答复)。我们交往吧(女生自己发送的一个请求)
男生:好的。(对女生“我们交往吧”一个回复)

男生和女生两者都是一个发送请求一个回应。
为什么不能两次握手或者4次握手?

A发送请求给B。B答复。 此时A可能还没等到B答复就已经挂了。也或者B发送的这个包在半路丢了。还有一种情况是,如果A发送的包没有接收到B回复,则A会一直发送包。在A发送包给B,B有一个请求回复给A了,但是A这个时候已经挂了。但是A之前发送的包绕了一个大圈回到了B,B以为这是A刚刚发送的请求包,于是B在回复给A。但是这个链接是不能通的,A已经挂了此时。
这样三次握手双方都有一发一回。如果四次的话也可以。四十次也可以,这样下去就没完没了。所以只要双放有去有回就可以啦

首先 A和B处于close的状态,此时B处于一个监听某个端口的状态。当A发送一个SYN给B后,A便处于SYN—SENT的状态,此时B接受到消息后,发送一个SYN和ACK给A。此时B处于一个SYN-RCVD状态。 当A接受到B发送的SYN和ACK后,回复给B一个ACK 。此时A处于ESTABLISHED状态。B接受到消息后也处于ESTABLISHED状态

四次挥手

在这里插入图片描述
例子:
男生:我们分手吧
女生:好的我知道,等我收拾好行李发消息给你
** 女生在收拾行李(一个小时后)**
女生:收拾好了,我们分手吧
男生:好的(此时双发约定2个月的过渡期,才可以找新欢)

A和B处于连接状态(ESTABLISHED),首先A发送一个FIN(分手吧)给B,此时A处于FIN_WAIT1状态,B接受到A发送的FIN后,回复A一个ACK(好的我知道,等我收拾好行李发消息给你)后,B便处于close-WAIT状态。A接受到B发送的ACK后,A处于一个FIN_WAIT2状态。B再次发送一个ACK(我收拾好了)和FIN(分手吧)给A后,B处于last_wait状态。A发送一个ACK(好的)。此时A其实可以走了找别的新欢。但是万一这个最后一个ACK B没有收到呢?因此便规定了 A需要等一段时间time_wait 的状态。这个等多长时间呢,长到 等到发送(收拾好了,我们分手吧)还没有收到A的回复。B就会重新发送。然后A回复给B(好的)。这个时间足够A的(好的)信息到达B。TCP规定需要等2MSL。MSL 是 Maximum Segment Lifetime,报文最大生存时间

如果A发送最后一个ACK给B后,直接跑路还有一个问题:A这个端口就空了。这个端口被别的应用给用了。B发送给A的包还有的在路上。当这个新应用接受到路上的这个包。虽然包的序号是重新生成的,可以辨别出来不是新应用需要的。但是为保险一点。所以需要等2msl。这个时间足以让那些路上的包死翘翘。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值