面試官問到TCP/IP怎麼回答才過關

Fenglinlin發表於2018-06-07

眾所周知,關於TCP/IP,互網網興起時,就已經跟網際網路人的生活息息相關, 那麼作為一名前端開發者來說,對於TCP/IP的知識,是否需要深度理解,作者可以毫無疑問的告訴你,有關TCP/IP的知識,你真的需要知道並深入瞭解。

對於一位前端開發者來說,更是有必要了解,現在各大名廠,面試必問,那接下來,我們就來看看,TCP/IP的哪些知識我們需要掌握並該知道要怎麼回答。

面試官問到TCP/IP怎麼回答才過關

問題總結:

面試官:關於tcp/ip你知道哪些?

小S:你說具體一些嗎?

面試官: osi七層模型與TCP/IP五層模型

小S:一張圖,就足夠說明它們

面試官問到TCP/IP怎麼回答才過關
面試官:說說TCP/IP的三次握手與四次揮手吧

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

面試官問到TCP/IP怎麼回答才過關

  • 為了方便描述我們將主動發起請求的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:四次揮手是這樣的:

面試官問到TCP/IP怎麼回答才過關

  • 第一次揮手:客戶端向伺服器傳送一個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則是不可靠通道

結語

不要小看這幾個問題,雖然是百度一搜,答案千篇一律,但是請問問自己,是不是都能夠表述清楚,並且讓別人也理解呢,所以,想要過關的小夥伴,加油吧,相信你已經知道該怎回答了。

相關文章