hdml指的是什么接口
293
2022-10-15
TCP/IP 协议
TCP/IP 协议链路层:对0、1进行分组、定义数据帧、确认主机的地理位置进行传输网络层:定义ip地址,确认主机所在的网络位置,通过ip进行Mac寻址,对外网数据包进行路由转发传输层:定义端口,确认本机上应用程序的身份并将数据包又给对应的应用程序。应用层:定义数据格式,并按照对应的的格式解读数据
这边常出现的面试题:
一、为什么连接的时候时三次握手,关闭的时候却是四次挥手?解答:因为Server端受到的Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文使用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端受到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,通知Client端FIN报文Server端已经接收到了。但是Server端也并不能立即关闭连接,需要等待Server端的所有报文都发送完成后,Server才能发送FIN报文,因此SYN与ACK在Server端不能一并发送,所以需要四次挥手。
二、为什么TIME_WAIT(等待状态)需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?解答:虽然按道理,四个报文都发送完毕,我们可以直接进入CLOSE状态了,但是我们必须假象网络是不可靠的,这样能真正的符合现实,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。在Client发送出最后的ACK回复,但该ACK可能丢失。Server端如果没有受到ACK,将不断重复的发送FIN片段。所以Client不能立关闭,它必须确认Server接收到了ACK。Client会在发送出ACK之后进入到TIME_WAIT状态。Client会设置一个计时器,等待2MSL的时间。如果在该时间内再次收到FIN,那么Client会重发ACK并再次等待2MSL。而这里的2MSL是两倍的MSL(一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间)。如果知道2MSL,Client都没有再次收到FIN,那么Client会推断ACK已经成功接收,则结束TCP连接。
四、如果已经建立了连接,但是客户端突然出现故障了怎么办?在这种情况下,设计TCP/IP的人员同时在TCP设有一个保活计时器,显然,客户端如果出现了故障,服务器不能一直的等待下去,造成资源的浪费,所以服务器每一次收到客户端的请求都会重新复位这个计时器,时间通常是设置为2小时,若两小时后都没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。如若一连发送了10个探测报文任然没有反应,服务器就认为客户端出现了故障,紧接着就是关闭连接。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~