校招面試之——網絡相關

最近校招季,特把本身面試中遇到的問題整理整理,以鞏固本身的知識。web

對於網絡這塊,面試官通常喜歡問的是ISO/OSI參考模型和TCP/IP協議族方面的知識,下面咱們就來看看吧。面試

首先,咱們先給出它們的結構圖服務器

OSI,TCP/IP參考模型圖


OSI,TCP/IP參考模型圖

注意:圖中有一個Hardware層,圖中顯示它和OSI模型中的物理層(Physical)相對應,其實嚴格意義上說,它是不屬於TCP/IP協議族中的一員的,這個層次包括網線的制式,網卡的定義,負責網絡的傳輸。網絡


OSI

Open System Interconnection,即開放式系統互聯。OSI先有模型,後有協議,先有標準,後進行實踐。且OSI只是一種理想的模型,並無真正使用。tcp

TCP/IP

TCP/IP則是先有協議和應用再提出了模型,且是參照的OSI模型。TCP/IP現已被普遍使用,已成爲網絡互聯實際上的標準。svg

TCP:Transmission Control Protocol,傳輸控制協議
IP:Internet Protocol Address,網際協議地址
UDP:User Datagram Protocol,用戶數據報協議xml

TCP/IP協議中各個層次的功能

  • 應用層:爲用戶提供各類須要的服務,例如FTP,Telnet,DNS,SMTP。
  • 傳輸層:爲應用層實體提供端到端的通訊功能。該層定義了兩種主要的協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP提供的是一種可靠的、面向鏈接的數據傳輸服務,UDP提供的是不可靠的、無鏈接的數據傳輸服務。
  • 網際互聯層:主要解決主機到主機的通訊問題。其中最重要的一個協議是IP協議(網際協議),它提供的是一種不可靠、無鏈接的數據報傳輸服務。
  • 網絡接口層:與OSI模型中的數據鏈路層和物理層相對應。

TCP和UDP的區別

TCP提供了一種可靠的數據傳輸服務,TCP是面向鏈接的。利用TCP通訊的兩臺主機首先要經歷一個「撥打電話」的過程,等到通訊準備結束後纔開始傳輸數據,最後結束通話。UDP是直接把數據發出去,而無論對方是否是在收信,就算是UDP沒法送達,也不會產生ICMP差錯報文。排序

一個TCP數據的發送過程

  1. 雙方創建鏈接。
  2. 發送方給給接收方TCP數據報,而後等待對方的確認TCP數據報。若是在必定的時間內沒有收到確認數據報,就從新發送剛纔發送的數據報;若是收到了,就發送下一個數據報。
  3. 接收方等待發送方的數據報,若是獲得數據報並檢驗無誤,就發送ACK(確認)數據報,並等待下一個TCP數據報的到來,直到接收到FIN數據報(發送完成數據報)。
  4. 終止鏈接。

TCP鏈接的創建和終止

  1. 鏈接的創建接口

    在創建鏈接的時候,客戶端首先向服務器申請打開某一端口,而後服務端發回一個ACK報文通知客戶端請求報文收到,客戶端收到確認報文後再次發出確認報文確認剛纔服務端發出的確認報文本身收到。至此,鏈接的創建完成,這也叫作「三次握手」。ip

  2. 結束鏈接

    TCP有一個特別的概念叫作half-close,這個意思是說TCP的鏈接是全雙工鏈接(能夠同時發送和接收)。所以在關閉鏈接的時候,必須關閉傳和送兩個方向上的鏈接。當要結束鏈接的時候,客戶端給服務器一個FIN爲1的TCP報文,而後服務器返回給客戶端一個確認ACK報文,而且發送一個FIN報文,當客戶端回覆ACK報文後,鏈接就結束了。這就是「四次握手」。

TCP協議是如何保證傳輸的可靠性的

  1. 將數據截取爲合理的長度

    應用數據被分割成TCP認爲最適合發送的數據塊,應用數據產生的數據報長度將保持不變。

  2. 超時重發

    當TCP發出一個報文後,它會啓動一個定時器,等待目的端的確認報文發回。若是在定時器時間內沒有收到確認報文,那它就會從新發送這個報文。

  3. 目的端對於收到的報文,作出確認響應

    當目的端收到報文後,它將發送一個確認報文。這個確認不是當即發送,通常會延遲幾分之一秒(要對包做完整校驗)。

  4. 目的端檢驗出包有錯,丟棄報文段,不給出確認響應,等待重傳。

    目的端收到報文後,會對報文的完整性做校驗(主要是防止傳輸過程當中數據的丟失或更改),若是檢驗有差錯,TCP就會捨棄此報文段,而且不會作出確認響應,等待另外一端的重傳。

  5. 對失序數據進行重排交給應用層。

    由於TCP報文是做爲IP數據報(IP提供的是不可靠傳輸)來傳送的,而IP報的的到達順序可能會失序。所以TCP將對收到的數據進行從新排序而後才交給應用層。

  6. 對於重複數據,丟棄重複數據

    因爲IP數據報可能會重複,TCP必須丟棄重複的數據。

  7. TCP能夠進行流量控制,防止較快主機導致較慢主機的緩衝區溢出

    TCP鏈接的每一方都有固定大小的緩衝區,TCP接收端只容許另外一端發送接收端緩衝區能接納的數據。(流量控制協議:可變大小的滑動窗口協議)

相關文章
相關標籤/搜索