中兴软件测试过往面试题汇总 您所在的位置:网站首页 中兴校招笔试编程题 中兴软件测试过往面试题汇总

中兴软件测试过往面试题汇总

2024-07-16 13:07| 来源: 网络整理| 查看: 265

1、TCP/IP三次握手四次挥手?

三次握手

TCP建立连接要经过三次握手是为了保证客户端与服务器之间的数据收发过程没有问题。

1、第一次握手:客户端发送连接请求报文段,将 SYN 位置为 1,Seq 为 x;然后,客户端等待服务器的确认;

2、第二次握手:服务器收到客户端的 SYN 报文段,需要对这个 SYN 报文段进行确认,设置 Ack为x+1(Seq +1);同时,自己还要发送 SYN 请求信息,将 SYN 位置为 1,Seq为y;服务器端将上述所有信息放到一个报文段(即 SYN+ACK 报文段)中,一并发送给客户端,此时服务器进入 SYN_RECV 状态;

3、第三次握手:客户端收到服务器的 SYN+ACK 报文段,会确认服务端响应的数据。然后将 Ack设置为 y+1,向服务器发送 ACK 报文段,这个报文段发送完毕以后,客户端和服务器端都进入 ESTABLISHED 状态,完成 TCP 三次握手。

四次挥手

客户端在断开连接的时候会主动发送一个finish包,代表客户端不会再给服务器写数据了,服务器接收到客户端的finish包会马上响应客户端已经知道了客户端想要断开连接了,但是服务器可能还会有一些数据需要发送,在发送完数据后,服务器会再给客户端发送一个finish包表示之后终止发数据,最后客户端会确认服务器的响应结果。

三次握手过程中是否可以携带数据:

第三次握手时是可以携带数据的,但第一二次握手时不可以携带数据。

(1)假如第一次握手可以携带数据的话,那么会放大 SYN 洪泛。如果有人要恶意攻击服务器,每次都在第一次握手中的 SYN 报文中放入大量的数据,然后疯狂重复发送 SYN 报文的话,就会让服务器开辟大量的缓存来接收这些报文,内存会很容易耗尽,从而拒绝服务。

(2) 第三次握手时客户端已经处于 ESTABLISHED 状态,对于客户端来说,他已经建立起连接了,并且已经知道服务器的接收和发送能力是正常的,所以也就可以携带数据了。

如果已经建立了连接,但是客户端突然出现故障了怎么办?

TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

为什么需要TIME_WAIT状态?

(1)重发丢失的ACK报文,保证连接可靠的关闭:

由于网络等原因,无法保证最后一次挥手的 ACK 报文一定能传送给对方,如果 ACK 丢失,对方会超时重传 FIN,主动关闭端会再次响应ACK过去;如果没有 TIME_WAIT 状态,直接关闭,对方重传的FIN报文则被响应一个RST报文,此RST会被动关闭端被解析成错误。同时,服务器就因为接收不到客户端的信息而无法正常关闭。

(2)保证本次连接的重复数据段从网络中消失:

如果存在两个连接,第一个连接正常关闭,第二个相同的连接紧接着建立;如果第一个连接的某些数据仍然滞留在网络中,这些延迟数据在建立新连接之后才到达,则会干扰第二连接,等待 2MSL 可以让上次连接的报文数据消逝在网络中。

2、Linux常用命令

3、抓包

抓包就是将网络传输发送与接收的数据包进行截获、重发、编辑等操作。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有