計網面試題

1.tcp和udp區別

  • TCP 是面向連接的、可靠的、有序的、速度慢的協議;

    UDP 是無連接的、不可靠的、無序的、速度快的協議。

  • TCP 開銷比 UDP 大,TCP 頭部需要 20 字節,
    UDP 頭部只要 8 個字節。

  • TCP 無界有擁塞控制

    UDP 有界無擁塞控制。

2.get和post的區別

GET參數通過URL傳遞,POST放在Request body中。

GET請求在URL中傳送的參數是有長度限制的,而POST麼有。

對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。

GET在瀏覽器回退時是無害的,而POST會再次提交請求。

GET產生的URL地址可以被Bookmark,而POST不可以。

GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

GET請求只能進行url編碼,而POST支持多種編碼方式。

GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。

GET比POST更不安全,因爲參數直接暴露在URL上,所以不能用來傳遞敏感信息。


3.在瀏覽器中輸入url地址 ->> 顯示主頁的過程

通過域名查找IP(DNS), 給服務器發http請求, 服務器處理請求, 返回一個響應, 然後瀏覽器加載這些響應;

  1. DNS解析
  2. TCP連接
  3. 發送HTTP請求
  4. 服務器處理請求並返回HTTP報文
  5. 瀏覽器解析渲染頁面
  6. 連接結束

4.三次握手四次揮手

三次握手

  • 客戶端–發送帶有 SYN 標誌的數據包–一次握手–服務端
  • 服務端–發送帶有 SYN/ACK 標誌的數據包–二次握手–客戶端
  • 客戶端–發送帶有帶有 ACK 標誌的數據包–三次握手–服務端

四次揮手(一般是客戶端主動關閉, 否則服務器端會有大量socket處於time_wait狀態)

  1. 客戶端-發送一個 FIN,用來關閉客戶端到服務器的數據傳送
  2. 服務器-收到這個 FIN,它發回一 個 ACK,確認序號爲收到的序號加1 。和 SYN 一樣,一個 FIN 將佔用一個序號
  3. 服務器-關閉與客戶端的連接,發送一個FIN給客戶端
  4. 客戶端-發回 ACK 報文確認,並將確認序號設置爲收到序號加1

Time_wait和Close_wait

根據TCP協議定義的3次握手斷開連接規定,發起socket主動關閉的一方 socket將進入TIME_WAIT狀態。TIME_WAIT狀態將持續2個MSL(Max Segment Lifetime),在Windows下默認爲4分鐘,即240秒。TIME_WAIT狀態下的socket不能被回收使用. 具體現象是對於一個處理大量短連接的服務器,如果是由服務器主動關閉客戶端的連接,將導致服務器端存在大量的處於TIME_WAIT狀態的socket, 甚至比處於Established狀態下的socket多的多,嚴重影響服務器的處理能力,甚至耗盡可用的socket,停止服務。

5.流量控制, 擁塞控制

滑動窗口法 => [流量控制+可靠性]
在這裏插入圖片描述

  • #1已收到ack確認的數據。

  • #2發還沒收到ack的。

  • #3在窗口中還沒有發出的(接收方還有空間)。

  • #4窗口以外的數據(接收方沒空間)

    (使用Nagle算法, 不用每次只發一個數據, 每次發一個小分塊)

擁塞控制主要是四個算法:

  • 1)慢啓動,(cwnd從1開始, 每次x2, 指數增長, 直到慢開始門限爲止->轉入擁塞避免)
  • 2)擁塞避免算法,(每經過一次發包確認的往返時間, 擁塞窗口+1, 線性增長)
  • 3)擁塞發生,(cwnd置1, 慢開始門限減半, 重新開始慢啓動)
  • 4)快速恢復(丟包之後, 慢開始門限減半, cwnd/=2, 進入擁塞避免)

6.http和https的區別

1、https協議需要到ca申請證書,免費證書較少,因而需要一定費用。

2、http是超文本傳輸協議,明文傳輸,https則是具有安全性的ssl加密傳輸協議。

3、http是80端口, https是443端口;

4、HTTPS是由SSL+HTTP構建, 可加密傳輸、身份認證,更安全。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章