以瀏覽器進行http訪問為例,首先搜尋自身dns快取(一般快取1000條左右,僅快取1分鐘),若有且未過期,結束。
若未找到,則搜尋作業系統的dns快取。
若未找到,嘗試讀取hosts檔案。
若未找到,發起向本地首選dns服務商。dns服務商優先找自身快取,未找到,則找根網域名稱的ip(如com),根網域名稱再逐級查詢(如cnblogs.com),直到找到。
傳送方:應用層(http)-傳輸層(tcp)-網路層(ip)-鏈路層
接收方:鏈路層-網路層(ip)-傳輸層(tcp)-應用層(http伺服器)
處理連線網路的硬體部分。如作業系統中的裝置驅動。
arp協議提供ip-mac位址的對映。
arp採用一問一答的形式,較為簡單。傳送方向arp服務發出請求獲取ip對應的mac位址,並將其快取在arp快取中。傳送方(pc1)需要向arp服務提供自己的ip和mac位址,以及目標的ip位址。arp服務會用這些資訊在lan內進行廣播,其目標主機(pc2)收到該廣播後,會先將pc1的資訊放在自己的arp快取,之後,以單播形式向pc1回應arp返回。
ip協議作用是把資料報傳給對方,因此需要給資料報新增兩個條件:ip位址和mac位址。ip位址指明節點被分配到的位址,可變。mac位址指網絡卡所屬固定位址,通常不變。當通訊雙方不在同一lan時,則無法獲取目標的mac位址。此時,通常是經過多台計算機和網路裝置中轉才能連線到對方。中轉時,利用下一站中轉裝置的mac位址來搜尋下乙個中轉目標。此時會使用arp協議,arp協議可以通過通訊方的ip位址反查出對應的mac位址。
ip協議提供的是不可靠的服務,tcp和udp的每組資料都通過端系統和中間路由器的ip層在網際網路中傳輸。icmp協議是ip協議的附屬協議,ip協議用它來與其他主機或路由器交換報文及其他重要資訊。igmp是組管理協議,udp的多播就利用了igmp。
tcp提供位元組流服務,將大塊資料分割成以報文段segment為單位的資料報進行管理,其目的是更容易傳送大資料。為確保送達,tcp採用三次握手方式,首先傳送帶syn bit的包,對方接收後回傳帶syn bit和ack bit的包表示確認資訊,傳送方再回傳帶ack bit的可帶資料的包開始傳送資料。
傳輸結束後,tcp採用四次握手的方法斷開連線,首先pc1傳送fin報文段,進入fin_wait_1狀態,表示自己沒有資訊發了。pc2收到後回覆乙個ack報文段,同意其關閉連線的請求,pc1進入fin_wait_2狀態。pc2主動向pc1傳送fin報文段請求關閉連線,同時pc2進入last_ack狀態,pc1收到後回覆ack報文段,並進入time_wait狀態,pc2收到pc1的ack報文段則關閉,pc1等待後仍未收到回覆則說明pc2正常關閉,於是pc1也關閉連線。
tcp詳細另開文章,此處略。
http是應用層協議,是無狀態的tcp連線。http報文是面向文字的,每個欄位都是不定長的ascii編碼。
http請求報文格式如下:
請求方法 url 協議版本
n行頭部(欄位名:字段值)
請求資料
請求方法在restful協議中常用get post put delete,其中get和delete不能帶資料
url=《協議》://《主機》:《埠》/《路徑》
http響應報文格式如下:
協議版本 狀態碼 狀態碼描述
n行頭部(欄位名:字段值)
響應正文
http狀態碼大致含義如下: 計算機網路常見問題總結
http 響應碼 301 和 302 代表的是什麼?有什麼區別?forward 和 redirect 的區別?簡述 tcp 和 udp 的區別?tcp 為什麼要三次握手?兩次不行麼?為什麼?說一下 tcp 粘包是怎麼產生的?osi 的七層模型都有哪些?get 和 post 請求有什麼區別?如何實現跨...
計算機網路面試的常見問題
osi 應用層,表示層,會話層,傳輸層,網路層,資料鏈路層,物理層 7層 tcp ip 應用層,傳輸層,網路層,資料鏈路層 4層 每一層的協議如下 分五類,由32bit 4bytes 組成,點分十進位制。e類位址 http特點 無連線 http 1.1之前,由於無狀態特點,每次請求需要通過tcp三次...
計算機網路 HTTP
引子 前兩天看了 http 和 計算機網路 的第5章 運輸層 為了準確無誤地將資料送達目標處,tcp協議採用了 三次握手 three way handshaking 策略。三次握手 three way handshake 或三次聯絡。廣為流傳的譯名 三次 three way 並不準確。這裡的三次是指...