TCP/IP协议中的三次握手和四次分手

哲学上的认知事物阐述。

相信大家会去搜这方面内容,说明大家已经知道了这个协议的重要性。因此直接进入正题,哲学中的认识论里面对人类认知事物过程的阐述是这样的。


含义:客观事物在人脑中的反映
特点:认识是不断变化发展的
根本任务:经过感性认识上升到理性认识,透过现象抓住事物的本质和规律 
实现前提:占有丰富的感性材料,运用科学的思维方式。

感性上认知三次握手和四次分手。

那么我先从感性上对三次握手和四次分手作分别介绍。举两个栗子。
三次握手
栗子1:
先上一个图,让脑海中有个感性且实际认识。

这里写图片描述

下面开始解释这个图片:
情景:这个图片是在描述两个人打电话的过程。

甲打通了电话,询问乙能听到自己说话不,这即是第一次握手。

乙回答了甲的问题,说自己能够听到,并且为了确认甲是否能立即开始通话,进行了对甲的提问:”能开始说话了吗?”确认甲没有问题。(这个提问是为了防止,甲临时由于其他事情耽搁,不能立刻开始通话)这即是第二次握手。

甲回答了乙“能开始说话了”,通信信道正常,通信可以开始了。这即是第三次握手。

为什么是三次握手?

这个疑问我开始也有,只需要认真琢磨琢磨还是不难想到的,个人见解是这样,第一二次握手是为了保证信道正常,能够进行通信,第三次握手即是为了排除通信发起方被临时中断,而导致已发送的通信请求让通信另外一方一直等待,浪费资源的情况。整个过程就相当于双方互相试探的情形,既然你试探了我,那我接收你的试探并且我也要试探你一次,你出于礼貌,还是得回应对方的试探。究其原因,三次握手就是在不可靠信道上,想进行可靠传输的理论最小通信次数。

四次分手
还是先来一个脑海中感性且直观的栗子。

这里写图片描述

解释如下:
情景:男生和女生谈分手。

男生突然给女的说分手,原因就不在我们讨论范围之内了。这就是第一次分手。

女生也是很理性,没有过多纠缠,接受了这个结果,但是她还有分手前的事情要做,于是回复男生,她同意分手请求,但是需要让他等待她删完照片,(实际过程中就可能是一些未发完的数据包需要时间去发完)。这就是第二次分手。这个过程中,男生是出于分手等待状态的,等待女生删完照片。这即是第二次分手。

女生删完了照片,向男生也正式发起了同意分手请求,即是FIN请求,同意分手,并且关闭了自己和男生之间的连接。这即是第三次分手。

男生收到了女生的同意分手,向女生发送了告别的话语,并且等待2MSL,以确定女生真的已经关闭连接了,然后在2MSL时间之后关闭自己连接。这里的2MSL就是2倍的“报文最大生存时间”。这即是第四次分手。

以上即是对三次握手和四次分手的感性认识部分了,可能还是有些迷糊,下面我们就进行理性认识。

三次握手和四次分手的理性认识

需要的知识储备
ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的报文的ACK必须为1

SYN(SYNchronization) : 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文。对方若同意建立连接,则应在响应报文中使SYN=1和ACK=1. 因此, SYN置1就表示这是一个连接请求或连接接受报文。

FIN (finis)即完,终结的意思, 用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

seq:序列号,连接以后传输数据用的字段。

MSL:Maximum Segment Lifetime,译为“报文最大生存时间”。

进入正题之二:
三次握手的理性解释
这是一个三次握手的正儿八经的图解:
这里写图片描述

下面开始挨个分析每次握手:
第一次握手:主机1向主机2发送一个建立连接请求,将SYN置为1,并且发送了一个序列号seq = x,并且主机1进入SYN_SENT状态。

第二次握手:主机2收到了主机1发送的建立连接请求,且允许和主机1建立连接,于是回复了主机1的确认数据包,ACK = x+1,(为什么是x+1而不是x+2呢?解释是这样,规定是这样,确认自己收到了信息就回复收到信息序列号+1即可),并且向主机1发送建立连接请求SYN,和序列号seq = y,并且主机2进入SYN_RECVED状态。

第三次握手:主机1收到了主机2的SYN请求,为了让主机2知道自己真的收到了请求,于是发送确认数据包回复server端 ACK = y + 1,之后主机1和主机2都进入ESTABLISHED状态。

可以这么理解,seq就是你发送的数据,ACK是为了让别人知道你收到了别人发你数据,而回复的确认数据包。

四次分手的理性解释
正儿八经的四次分手图解:
这里写图片描述

看着图来挨个解释:
第一次分手:主机1向主机2发送FIN请求数据包(请求断开连接数据包),并且发送了一个序列号seq = x,接着进入FIN_WAIT_1(没有收到确认回复的请求断开连接等待状态)。
第二次分手:主机2收到了主机1发来的断开连接请求,但是自己还有些发向主机1的数据包没有放送完,于是只是回复了主机1自己收到你的请求了,希望你等待我确认回复你断开连接之后,才断开连接,于是就只发了确认收到请求数据包ACK = x +1 ,进入CLOSE_WAIT状态。主机1则进入FIN_WAIT_2状态(和FIN_WAIT_1状态区别就是:这个状态下的主机1是已经收到了主机2同意回复之后的主机1)。
第三次分手:主机2的数据包发送完了,于是发送给正在等待主机2回复断开连接FIN数据包的主机1,一个请求断开连接请求,并且发送了一个序列号seq = y + 1,之后主机2就关闭连接了进入LAST_ACK状态(就是断开连接了)。
第四次分手:主机1收到了主机2发送的FIN请求,回复主机2数据包,ACK = y + 2 以表示自己收到了断开连接请求了,(虽然主机2已经关了),进入TIME_WAIT()状态,等待2MSL时间没有收到主机2数据包后,自己也关闭连接。

好了,这样三次握手和四次分手就完成了。总之,这个tcp/ip协议需要我们好好琢磨,毕竟他这么厉害。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值