面试秒杀OSI七层模型与三握四挥

1.三次握手和四次挥手。

SYN是建立连接请求报文,FIN结束报文。

ACK 是“确认”的缩写。ACK 数据包是任何确认收到一条消息或一系列数据包的 TCP 数据包

何为三次握手?第一次握手是客户端发送SYN,服务端接收,服务端得出客户端的发送能力和服务端的接收能力都正常;第二次握手是服务端发送SYN+ACK,客户端接收,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常,但是此时服务器并不能确认客户端的接收能力是否正常;第三次握手客户端发送ACK,服务器接收,服务端才能得出客户端发送接收能力正常,服务端自己发送接收能力也都正常。

为什么握手是三次,而不是两次或者四次?

答:两次不安全,四次没必要。tcp通信需要确保双方都具有数据收发的能力,得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。两次握手后,客户端得知:服务端接收和发送正常,客户端发送和接收也都正常;但是服务器得知:客户端发送正常,服务端接收正常,只有通过第三次握手服务端才可以确定自己发送和客户端的接收也正常。

三次握手可以携带数据吗?

:第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。假设第一次可以携带数据,如果有人恶意攻击服务器,每次都在第一次握手中的SYN报文放入大量数据,重复发送大量SYN报文,此时服务器会花费大量内存空间来缓冲这些报文,服务器就更容易被攻击了。

四次挥手:客户端主动调用close时,向服务端发送结束报文段FIN报,同时进入FIN_WAIT1状态;服务器会收到结束报文段FIN报,服务器返回确认报文段ACK并进入CLOSE_WAIT状态,此时如果服务端有数据要发送的话,客户端依然需要接收。客户端收到服务器对结束报文段的确认,就会进入到FIN_WAIT2状态,开始等待服务器的结束报文段;服务器端数据发送完毕后,当服务器真正调用close关闭连接时,会向客户端发送结束报文段FIN包,此时服务器进入LAST_ACK状态,等待最后一个ACK的带来;客户端收到服务器发来的结束报文段, 进入TIME_WAIT, 并发出送确认报文段ACK;服务器收到了对结束报文段确认的ACK,进入CLOSED状态,断开连接。而客户端要等待2MSL的时间,才会进入到CLOSED状态

为什么握手是三次,而挥手时需要四次呢?

答:其实在TCP握手的时候,接收端将SYN包和ACK确认包合并到一个包中发送的,所以减少了一次包的发送。对于四次挥手,由于TCP是全双工通信,主动关闭方发送FIN请求不代表完全断开连接,只能表示主动关闭方不再发送数据了。而接收方可能还要发送数据,就不能立即关闭服务器端到客户端的数据通道,所以就不能将服务端的FIN包和对客户端的ACK包合并发送,只能先确认ACK,等服务器无需发送数据时在发送FIN包,所以四次挥手时需要四次数据包的交互

TIME_WAIT状态有什么作用,为什么主动关闭方没有直接进入CLOSED状态释放资源?

答:如果主动关闭方进入CLOSED状态后,被动关闭方发送FIN包后没有得到ACK确认,超时后就会重传一个FIN包。如果客户端没有TIME_WAIT状态而直接进入CLOSED状态释放资源,下次启动新的客户端就可能使用了与之前客户端相同的地址信息,有两个危害,第一种是这个刚启动的新的客户端绑定地址成功时,就会收到了一个重传的FIN包,对新连接就会造成影响。第二种是如果该新客户端向相同的服务端发送SYN连接请求,但是此时服务端处于LAST_ACK状态,要求收到的是ACK而不是SYN,因此就会发送RST重新建立请求。

为什么TIME_WAIT状态需要经过2MSL才能进入CLOASE状态?

答:MSL指的是报文在网络中最大生存时间。在客户端发送对服务端的FIN确认包ACK后,这个ACK包有可能到达不了,服务器端如果接收不到ACK包就会重新发送FIN包。所以客户端发送ACK后需要留出2MSL时间(ACK到达服务器器+服务器发送FIN重传包,一来一回)等待确认服务器端缺失收到了ACK包。也就是说客户端如果等待2MSL时间也没收到服务器端重传的FIN包,则就可以确认服务器已经收到客户端发送的ACK包。

2.OSI七层模型

应用层:网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS.

表示层:数据的表示、安全、压缩。确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。

会话层:建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话.

传输层:定义传输数据的协议端口号,以及流控和差错校验,协议有TCP UDP.

网络层:进行逻辑地址寻址,实现不同网络之间的路径选择,协议有ICMP IGMP IP等.

数据链路层:在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路。

物理层:建立、维护、断开物理连接。

7应用层:(http/https): 应用层是OSI参考模型的最高层它是计算机用户,以及各种应用程序和网络之间的接口将人类语言转换为机器识别的编码。

6表示层:(表示层执行三个基本功能:翻译、压缩和加密/解密将编码转换为二进制,也就是封装数据和格式化数据。

5会话层:负责两个计算机之间的正常通信,建立连接,保持,关闭,断开

4传输层(tcp/udp):通过TCPUDP对会话层与网络层提供传输服务。传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作。(选择交通工具)

3网络层(IP,ICMP IGMP):传输层将数据段传递到网络层。网络层用为该数据包选择路由。在网络层进行的IP寻址称为逻辑寻址,网络中的每台计算机都有一个唯一的IP地址。网络层为每个网段分配发送方和接收方的IP地址,形成一个IP数据包。(寻址,找路)

2数据链路层:将网络层传递的数据报封装成帧,在处于同一个数据数据链路节点的两个设备之间传输负责设备之间数据帧的传送和识别。(走路)

1物理层:应用层的数据已经通过传输层进行了分割,分割成了网络层的数据包,现在是一种二进制序列,在物理层将这些二进制序列转换成信号并在本地媒体上传输。它可以是铜缆情况下的电信号,也可以是光缆情况下的光信号,也可以是空气情况下的无线电信号。

Ps:输完成后到另一台主机再由物理层向应用层转化为最初的抽象语言被用户接收。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值