tcp为什么要三次握手 以及 为什么是四次挥手

所有的东西难道不是一句请求一句回答就能办到的事情么??

nono!

tcp为什么要三次握手

“a传给b一个syn包,因为网络的问题延迟了,那么a就会重新传一个,b收到了之后就算连接好了,

但是如果那个延迟的syn包到达了b,b就会认为这是一次新的连接,会等待这个新连接传来数据

但事实是这个只是一个被丢弃的连接,永远不会和b有结果,

所以第三次的握手就是为了确认这个连接的真假”

为什么是四次挥手

首先客户端会有两个fin_wait状态,第一次是为了等服务端的对连接请求的回应,

第二次是为了让服务端把数据传完,

传完之后呢,显然不能完事

time_wait的作用

有一个细节就是服务端能不能收到客户端的ack,如果收不到会重新发fin包,这个时候客户端要是closed就不好了

这是理由之一。

还有一个是客户端与服务端之间会有很多被丢弃的包,因为种种原因没有到达客户端,总不能下次连接的时候又出现趴,那不是就混乱了么,所以time_wait=2sml 这个是一个包在网络里面最长的存活时间,过了这个时间就不能在作妖了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容