【图说互联网面试笔试必考知识点】之排序算法复杂度/TCP/IP三次握手
2017-04-03 15:42
423 查看
话不多说,放图!
1.排序算法
2 图解TCP/IP三/四次握手过程(结合状态码理解)
【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
1.排序算法
2 图解TCP/IP三/四次握手过程(结合状态码理解)
【注意】 在TIME_WAIT状态中,如果TCP client端最后一次发送的ACK丢失了,它将重新发送。TIME_WAIT状态中所需要的时间是依赖于实现方法的。典型的值为30秒、1分钟和2分钟。等待之后连接正式关闭,并且所有的资源(包括端口号)都被释放。
【问题1】为什么连接的时候是三次握手,关闭的时候却是四次握手?
答:因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。
【问题2】为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?
答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。
相关文章推荐
- 转[互联网面试笔试汇总C/C++-27] 为什么TCP链接要三次握手而不是两次握手-雅虎
- [互联网面试笔试汇总C/C++-27] 为什么TCP链接要三次握手而不是两次握手-雅虎
- [互联网面试笔试汇总C/C++-25] TCP三次握手及四次挥手详细图解
- 为什么tcp建立连接是三次握手而不是两次握手或者四次握手?(笔试面试常考)
- 从抓包的角度来分析tcp建立时的三次握手(好几次笔试面试,都有tcp三次握手)
- TCP/IP三次握手详解
- 转 TCP/IP三次握手过程
- 三次握手(TCP/IP可靠传输)
- TCP/IP的三次握手
- TCP/IP的三次握手连接和四次握手关闭
- TCP/IP三次握手详解
- TCP/IP的三次握手连接和四次挥手关闭
- TCP/IP的三次握手
- TCP/IP 三次握手过程
- TCP/IP的三次握手建立连接
- TCP/IP三次握手(摘抄)
- TCP/IP的三次握手