阅读 10465

面试官问到TCP/IP怎么回答才过关

众所周知,关于TCP/IP,互网网兴起时,就已经跟互联网人的生活息息相关, 那么作为一名前端开发者来说,对于TCP/IP的知识,是否需要深度理解,作者可以毫无疑问的告诉你,有关TCP/IP的知识,你真的需要知道并深入了解。

对于一位前端开发者来说,更是有必要了解,现在各大名厂,面试必问,那接下来,我们就来看看,TCP/IP的哪些知识我们需要掌握并该知道要怎么回答。

问题总结:

面试官:关于tcp/ip你知道哪些?

小S:你说具体一些吗?

面试官: osi七层模型与TCP/IP五层模型

小S:一张图,就足够说明它们

面试官:说说TCP/IP的三次握手与四次挥手吧

小S:以下是三次握手的描述

  • 为了方便描述我们将主动发起请求的172.16.50.72:65076 主机称为客户端,将返回数据的主机172.16.17.94:8080称为服务器。
  • 第一次握手: 建立连接。客户端发送连接请求,发送SYN报文,将seq设置为0。然后,客户端进入SYN_SEND状态,等待服务器的确认。
  • 第二次握手: 服务器收到客户端的SYN报文段。需要对这个SYN报文段进行确认,发送ACK报文,将ack设置为1。同时,自己还要发送SYN请求信息,将seq为0。服务器端将上述所有信息一并发送给客户端,此时服务器进入SYN_RECV状态。
  • 第三次握手: 客户端收到服务器的ACK和SYN报文后,进行确认,然后将ack设置为1,seq设置为1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

小S:四次挥手是这样的:

  • 第一次挥手:客户端向服务器发送一个FIN报文段,将设置seq为160和ack为112,;此时,客户端进入 FIN_WAIT_1状态,这表示客户端没有数据要发送服务器了,请求关闭连接;
  • 第二次挥手:服务器收到了客户端发送的FIN报文段,向客户端回一个ACK报文段,ack设置为1,seq设置为112;服务器进入了CLOSE_WAIT状态,客户端收到服务器返回的ACK报文后,进入FIN_WAIT_2状态;
  • 第三次挥手:服务器会观察自己是否还有数据没有发送给客户端,如果有,先把数据发送给客户端,再发送FIN报文;如果没有,那么服务器直接发送FIN报文给客户端。请求关闭连接,同时服务器进入LAST_ACK状态;
  • 第四次挥手:客户端收到服务器发送的FIN报文段,向服务器发送ACK报文段,将seq设置为161,将ack设置为113,然后客户端进入TIME_WAIT状态;服务器收到客户端的ACK报文段以后,就关闭连接;此时,客户端等待2MSL后依然没有收到回复,则证明Server端已正常关闭,客户端也可以关闭连接了。

面试官:接下来再说说,TCP与UDP的区别吧

小S:.....

  • 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  • 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
  • 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的

例,TCP连接就像是打电话,两者之间必须有一条不间断的通路,数据不到达对方,对方就一直在等待,除非对方直接挂断电话。先说的话先到,后说的后到,有顺序。

  • 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  • 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
  • 6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

结语

不要小看这几个问题,虽然是百度一搜,答案千篇一律,但是请问问自己,是不是都能够表述清楚,并且让别人也理解呢,所以,想要过关的小伙伴,加油吧,相信你已经知道该怎回答了。

文章分类
前端