­

電腦網路·感覺Java研發電腦網路只要會者幾道就夠了其他很少考

  • 2020 年 2 月 18 日
  • 筆記

如果對您有幫助,麻煩右邊點個贊哦~~

如有錯誤歡迎指出哦

考頻由高到低

  • 三次握手的過程?為什麼3次,不能是2或者4?
  • 四次握手過程? 有什麼問題?
    • 問題:syn flood攻擊
  • 面向連接和面向非連接的比較;
    • 面向連接通訊前會先建立連接,受監控,安全, 可靠;面向非連接反之,發送想發資訊就可以發,速度更快
  • TCP和UDP的比較
    • TCP面向連接,UDP面向非連接
    • TCP傳輸單位稱為TCP報文段,UDP傳輸單位稱為用戶數據報。
    • TCP對應的協議:
      • HTTP 80 HTTPS 8080
        • FTP 21 SSH 22 telnet 23
        • mysql 3306
        • SMTP 25 郵件傳送協議 POPS 110 郵件接收協議
    • UDP對應的協議:
      • DNS 53

三次握手

【運維方向優先】a. 請描述TCP協議3次握手建立連接的過程。b. 為什麼協議設計是3次握手連接建立而不是2次或4次,如果2次有什麼問題,如果4次有什麼問題?

非常重要,一定要背熟

a .

b. 握手達到3次使得兩邊都確認了通道的兩個方向都是連通的,因為自己發出的包都得到了對方的回應,並且交換了初始資訊(各自的包序號,窗口大小等),從而認為連接建立是合適的。

2次握手的話不足以保證通道雙向正常,導致雙方認知不一致,服務端會消耗不必要的資源(服務端認為連接建立,創建並維持連接狀態數據,但因為單方向不通,確認包未被客戶端收到,客戶端認為連接不成功),同時還會存在安全問題被利用做攻擊(不斷發SYNC讓服務端不斷增加連接資源)。

4次握手的話,不比3次能提供更多的資訊,多一次round-trip增大了連接建立的時間開銷。

3、掌握TCP/IP協議族的結構,理解其工作原理。

  • TCP/IP(協議簇)五層協議 (5層):物理層、數據鏈路層、網路層、運輸層、 應用層。
  • 物理層:比特Bit
  • 數據鏈路層:將比特組裝成幀,提供相鄰兩個端點之間的(相鄰的點到點,點不只是是主機,還包括其他設備)
  • 網路層:將數據幀組裝成IP數據包Packet,將包設法從信源經過若干個中間節點傳送到目的設備(信宿)上,點到點通訊。
  • 傳輸層:提供的就是應用程式間的通訊。提供端到端(端指的是埠)的可靠報文傳遞和錯誤恢復(段Segment)
  • 會話層:建立、管理和終止會話(
  • 表示層:對數據進行翻譯、加密和壓縮(表示協議數據單元PPDU)
  • 應用層:提供一組常用的應用程式。
  • 以上可能有錯。
  • 封裝復用思想。 下層向上層提供服務,上層封裝下層的數據結構
  • 在瀏覽器中輸入www.baidu.com後執行的全部過程
    • 鍵盤硬體終端;OS處理中斷,轉換為特定消息放入瀏覽器程式的事件隊列;瀏覽器循環處理該消息,請求網址;
    • 7層網路協議
      • 應用層
        • 提供應用程式。
        • 應用程式解析URL
          • 解析出http協議,如果是Https,會檢查網站是否在安全列表中
          • 非ASCII轉Unicode編碼
          • 在傳輸資訊中加入瀏覽器、地區、cookie等資訊
        • 域名解析的應用層環節
      • 表示層
        • 對數據進行Encode、Decode、加密、解密、壓縮等數據處理。
      • 會話層
      • 傳輸層
        • HTTP基於TCP連接
        • HTTP數據包會嵌入在TCP報文段中
        • 域名解析中的DNS進行地址解析環節
  • 網路層
    • TCP報文段再嵌入IP數據包中
    • 通過查找路由表決定到達伺服器的路徑。
    • ARP協議進行地質解析
  • 鏈路層
    • IP數據packet嵌入到Frame,傳輸Frame
    • 客戶的包通過鏈路層發送到路由器,ARP(地址解析協議)根據給定的伺服器IP地址獲取對應的物理地址
  • 物理層
    • 傳輸bit
  • 傳輸層
  • 網路層
  • 會話層
  • 表示層
    • 將數據decode和解壓縮為HTML,CSS,JS,圖片等資源
  • 應用層
    • 應用程式進行HTML解析、CSS解析、頁面渲染等。

1、客戶端瀏覽器通過DNS解析到www.baidu.com的IP地址220.181.27.48,通過這個IP地址找到客戶端到伺服器的路徑。客戶端瀏覽器發起一個HTTP會話到220.161.27.48,然後通過TCP進行封裝數據包,輸入到網路層。

2、在客戶端的傳輸層,把HTTP會話請求分成報文段,添加源和目的埠,如伺服器使用80埠監聽客戶端的請求,客戶端由系統隨機選擇一個埠如5000,與伺服器進行交換,伺服器把相應的請求返回給客戶端的5000埠。然後使用IP層的IP地址查找目的端。

4、客戶端的鏈路層,包通過鏈路層發送到路由器,通過鄰居協議查找給定IP地址的MAC地址,然後發送ARP請求查找目的地址,如果得到回應後就可以使用ARP的請求應答交換的IP數據包現在就可以傳輸了,然後發送IP數據包到達伺服器的地址。

(拔高)輸入URL後作業系統和電腦網路都發生了什麼?

【運維方向優先】你用瀏覽器打開一個電商網站,準備瀏覽購物。從你輸入完網站的網址敲下Enter鍵,到網站首頁迅速呈現出來的這段時間,你的電腦系統里發生了哪些事情?請根據你所學的電腦知識,儘可能詳細的解釋。(提示:從軟硬體的盡量多的層次考慮和描述。)

參考要點:回答是否從硬體(鍵盤網卡)、OS、TCP協議棧、運行庫、瀏覽器、HTTP、HTML/JS等多層面描述。

參考回答:鍵盤硬體中斷;OS處理中斷,轉換為特定消息放入瀏覽器程式的事件隊列;瀏覽器的消息循環處理該消息,請求網址;OS請求本地域名快取或域名伺服器解析網址中的域名,得到IP;瀏覽器向該IP建立TCP連接(默認80埠);瀏覽器發送GET請求,包含網站的路徑,TCP協議棧組裝為TCP包,通過網卡發送;瀏覽器等待網站回復,進程被OS切換為等待狀態;網站返回的數據到來,網卡產生中斷;OS處理中斷,TCP協議棧將數據讀入buffer;瀏覽器獲得數據,處理HTTP頭,顯示HTML網頁

更多:OS發ARP包獲得網關MAC地址,所有DNS請求、網站TCP等數據包均發向該網關;瀏覽器IO等待期間OS切換運行系統中其他進程;瀏覽器將HTTP頭中解析出的cookie保存到文件系統;根據網頁內容發起更多的HTTP請求獲取圖片、運行內嵌的javascript腳本等;將網頁按照HTTP 頭的指示快取;將網址加入瀏覽歷史保存到文件系統;瀏覽器整個處理過程中,運行庫和OS對記憶體做相應分配釋放,磁碟做相應的IO操作;。。。

*【測試方向優先】你用瀏覽器打開一個網站,卻沒有按預期看到應有的網頁內容。請分析各種可能的原因,如果這些原因表現出來的現象不同,也請描述

參考要點:

人的原因:弄錯網址;拼寫錯誤;未打開網路;。。。

本機原因:瀏覽器版本低不兼容網頁;本機防火牆阻止訪問;中病毒導致瀏覽器工作不正常;。。。

服務端原因:伺服器宕機;伺服器出錯;伺服器高負載無法及時回應;伺服器超負載主動拒絕回應;本機被服務端加入了黑名單;

網路原因:網路不通;網路擁塞;DNS解析失敗;DNS解析到錯誤的IP;。。。

其他環境原因:域名被劫持;訪問被黑客攻擊;。。。

  • 埠及對應的服務?

還沒背會的

  • DNS
    • 默認埠號 53
    • DNS域名解析過程
      • 會以此查詢以下快取和伺服器,直到找到網址對應的IP
        • 瀏覽器快取 –> 本地Hosts文件 –> 路由器快取 –> ISP(互聯網服務提供商)DNS快取 –> 根域名伺服器 –> 頂級域名伺服器 –> 主域名伺服器
        • 在任何環節找到,會把快取
      • 瀏覽器檢查域名是否在瀏覽器快取當中。
      • 如果快取中沒有,就調用庫函數進行查詢。庫函數在進行DNS解析之前,檢查域名是否在本地 Hosts 里。
      • 如果域名在快取和Hosts中都沒有,庫函數會向 DNS 伺服器發送一條 DNS 查詢請求。
      • 查詢本地的DNS伺服器。
      • 首先查詢地址解析協議(ARP)的快取,如果快取命中,則返回結果:目標 IP = MAC地址。如果快取沒有命中,就看看目標 IP 地址是不是在本地路由表中的某個子網內,並使用相關介面。然後查詢選擇的網路介面的MAC地址。
      • 發送ARP請求,路由器或其他硬體會返回結果(結果中包含默認網關的IP地址)。
      • 通過TCP/UDP協議向DNS伺服器發送相應請求。如果本地DNS伺服器沒有找到結果,將會逐層查詢,直到結果(目標伺服器的IP地址)返回。