天天看點

【Java面試題】計算機網絡知識點總結1、計算機網絡體系結構圖1.1、傳輸層 TCP 和 UDP 的差別和作用?

計算機網絡知識點總結

  • 1、計算機網絡體系結構圖
  • 1.1、傳輸層 TCP 和 UDP 的差別和作用?
    • 1.2、面向連接配接 和 面向無連接配接 的差別?
    • 1.3、基于TCP和UDP的有哪些協定?
    • 1.4、TCP和UDP協定的使用場景
    • 1.5、TCP 協定如何保證可靠傳輸?
    • 1.6、TCP 三次握⼿和四次揮⼿
    • 1.7、為什麼要三次握手
      • 1.7.1、為什麼Server要傳回 SYN資料包?
      • 1.7.2、Server傳回 SYN資料包後,為啥還要傳 ACK?
    • 1.8、斷開一個TCP連接配接需要四次揮手
      • 1.8.1、為什麼要四次揮⼿
    • 1.9、什麼是ARQ協定

1、計算機網絡體系結構圖

【Java面試題】計算機網絡知識點總結1、計算機網絡體系結構圖1.1、傳輸層 TCP 和 UDP 的差別和作用?
按照由下往上的順序,逐一解釋。

首先我們先了解下每一層的作用和對應的網絡協定。

對應層 作用 對應的網絡協定/硬體
應用層 提供使用者服務,具體功能由應用程式實作 SMTP、HTTP、DNS、…
表示層 使用者對資料的壓縮、加密 JPEG、MPEG、ASII、…
會話層 用于建立使用者級的連接配接,選擇适當的傳輸服務 SQL、RPC、…
傳輸層 使用者端到端的可靠資料傳輸 TCP、UDP、…
網絡層 進行路由選擇,網絡互連 ARP、IP、ICMP、IGMP、…
資料鍊路層 進行資料交換,将要傳輸的資料轉換為二進制形式 網卡、網橋、交換機
實體層 提供資料傳輸的硬體保證,網卡接口,傳輸媒體 中繼器、集線器、網關

1.1、傳輸層 TCP 和 UDP 的差別和作用?

  • TCP是

    面向連

    接的,

    可靠的資料流傳輸

    ;而UDP提供的是

    無連接配接

    的、

    不可靠

    的資料流傳輸。
  • TCP保證資料的正确性,UDP可能丢包;TCP保證資料的順序,而UDP不保證。
  • TCP傳輸資料機關是TCP封包段;UDP傳輸資料機關是使用者資料封包。
  • TCP注重資料安全性,傳輸效率較慢;UDP不保證資料安全性,因為不需要連接配接等待,少了許多操作,是以效率較快。
協定類型 是否面向連接配接 傳輸可靠性 傳輸形式 傳輸效率 所需資源 應用場景 首部位元組
TCP 面向連接配接 可靠 位元組流 要求通信資料可靠(如檔案傳輸、郵件傳輸) 20-60
UDP 無連接配接 不可靠 使用者資料封包段 要求通信速度高,實時性(如域名轉化、QQ語音、視訊) 8(由4個字段組成)

1.2、面向連接配接 和 面向無連接配接 的差別?

  • 面向連接配接的服務:通信雙方在進行通信之前,要預先在雙方建立一個完整的可以彼此溝通的通道,在通信過程中,整個連接配接的情況是一直可以被實時監控和管理的。
  • 面向無連接配接的服務:通信雙方不需要預先建立一個聯絡兩個通信節點的連接配接,需要通信的時候,發送節點就可以往網絡上發送消息,讓資訊自主的在網絡上去傳,一般在傳輸過程中不監控。

1.3、基于TCP和UDP的有哪些協定?

基于TCP協定:

  • HTTP:Web伺服器傳輸超文本到本地浏覽器的傳送協定。
  • SMTP:簡單郵件傳輸協定,使用者發送郵件,服務端開放的是25端口号。
  • FTP:檔案純屬協定,使用21端口。

基于UDP協定:

  • DNS:域名解析服務,将域名位址轉換為IP位址,DNS用的是53号端口。

1.4、TCP和UDP協定的使用場景

  • TCP:當時網絡通訊品質有要求的時候,比如:整個資料喲啊準确無誤的傳輸給對方,常使用基于TCP協定的HTTP、HTTPS、FTP等檔案傳輸協定。
  • UDP:當強調傳輸性能,而不要求傳輸的完整性和可靠性時,常使用UDP協定傳輸,如:QQ語言、QQ視訊等。

1.5、TCP 協定如何保證可靠傳輸?

  1. 應用資料分割:将應用資料分割成TCP認為最适合發送的資料塊。
  2. 對資料包編号:TCP對發送的每一個包進行編号,接收方對資料包進行排序,把有序資料傳送給應用層。
  3. 校驗和:TCP将保持它首部和資料的校驗和。這是一個端到端的校驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到資料段的校驗和有差錯,TCP将丢棄這個封包段和不确認收到此封包段。
  4. 流量控制:TCP連接配接的每一方都有固定大小的緩沖空間,TCP的接收端隻允許發送端發送接收端緩沖區中能接納的資料。當接收方來不及處理發送方的資料,能提示發送方降低發送的速率,防止包丢失。TCP使用的流量控制協定是可變大小的滑動視窗協定(TCP利用滑動視窗實作流量)。
  5. 擁塞控制:當網絡擁擠時,減少資料的發送。
  6. ARQ協定:也是為了實作可靠傳輸的,它的基本原理就是每發送完一個分組就停止發送,等待對方确認。在收到确認後在發送下一個分組。
  7. 逾時重傳:當TCP發送一個封包段後,它啟動一個定時器,等待目的端确認收到這個封包段。如果不能及時收到一個确認,将重新發送這個封包段。

1.6、TCP 三次握⼿和四次揮⼿

為了準确⽆誤地把資料送達⽬标處,TCP協定采⽤了三次握⼿政策。

我們使用動漫圖解的方式解釋三次握手:

【Java面試題】計算機網絡知識點總結1、計算機網絡體系結構圖1.1、傳輸層 TCP 和 UDP 的差別和作用?

簡單示意圖:

【Java面試題】計算機網絡知識點總結1、計算機網絡體系結構圖1.1、傳輸層 TCP 和 UDP 的差別和作用?

簡單概括上述圖解的流程:

  1. 用戶端發送帶有SYN标志的資料包,服務接收資料包,一次握手;
  2. 服務端發送帶有SYN/ACK标志的資料包,用戶端接收資料包,二次握手;
  3. 用戶端發送帶有ACK标志的資料包,服務端接收資料包,三次握手。

1.7、為什麼要三次握手

三次握手的目的就是建立可靠的通信信道,說到通信,簡單來說就是資料的發送與接收,而三次握手就是為了保證雙方都确認自己與對方的發送與接收是正常的。

  • 第一次握手:Client什麼都不能确認;Server确認了對方發送正常,自己也接收正常。
  • 第二次握手:Client确認了:自己發送正常、對方接收和發送正常、自己接收正常;Server确認了:對方發送正常、自己接收正常。
  • 第三次握手:Client确認了:自己發送正常、對方接收和發送正常、自己接收正常;Server确認了:自己發送正常、對方接收和發送正常、自己接收正常。

是以三次握⼿就能确認雙發收發功能都正常,缺⼀不可。

1.7.1、為什麼Server要傳回 SYN資料包?

接收端傳回發送端發送的SYN是為了告訴發送端,我接收到的消息确實就是你發送的信号。

SYN資料包:

SYN是TCP/IP建立連接配接時使用的握手信号。在Client和Server之間建立正常的TCP網絡連接配接時,客戶機首先發送一個SYN消息,伺服器使用SYN-ACK應答表示接收到了這個消息,最後客戶機再以ACK(ACK就是Server發送給Client的一種傳輸控制字元,用于确認接收的資料準确無誤)消息響應。這樣在Client和Server之間才能建立起可靠的TCP連接配接,資料才可以在Client和Server之間安全傳遞。

1.7.2、Server傳回 SYN資料包後,為啥還要傳 ACK?

雙方通信無誤必須是兩者互相發送資訊都無誤。發送方傳送了SYN資料包信号,證明Client端到Server端的通道沒有問題,但是接收方到發送方的通道還需要ACK信号來驗證。

簡單來說,就是發送方和接收方都有自己的一個确認信号。

1.8、斷開一個TCP連接配接需要四次揮手

【Java面試題】計算機網絡知識點總結1、計算機網絡體系結構圖1.1、傳輸層 TCP 和 UDP 的差別和作用?

斷開一個TCP連接配接則需要四次揮手:

  • 用戶端發送一個FIN。用來關閉用戶端到伺服器的資料傳送;
  • 伺服器收到這個FIN,它發回一個ACK,确認序号為收到的序号加1,和SYN一樣,一個FIN将占用一個序号;
  • 伺服器關閉與用戶端的連接配接,發送一個FIN給用戶端;
  • 用戶端發回ACK封包确認,并将确認序号設定為收到序号加1。

1.8.1、為什麼要四次揮⼿

任何一方都可以在資料傳送結束後發出連接配接釋放的通知,待對方确認後進入半關閉狀态。當另一方也沒有資料在發送的時候,則發出連接配接釋放通知,對方确認後就完全關閉了TCP連接配接。

舉個通俗的例子:

A和B打電話,通話即将結束後,A說“我沒啥要說的了”,B回答說“我知道了”,但是B可能還有要說,A不能要求B直接跟着自己的節奏直接結束通話,而是要等B說完他想說的話,等B說“好了,我說完了,挂着吧”,A回答“知道了”,這樣通話才算結束。

1.9、什麼是ARQ協定

自動重傳請求(Automatic Repeat-reQuest ,ARQ) 是OSI模型中資料鍊路層和傳輸層的錯誤糾正協定之一。它通過使用确認和逾時這兩個機制,在不可靠服務的基礎上實作可靠的資訊傳輸。如果發送方在發送一段時間之内沒有收到确認幀,它通常會重新發送,ARQ包括停止

等待ARQ協定

連續ARQ協定

繼續閱讀