1、http 響應碼 301 和 302 代表的是什麼?有什麼區別?
301:永久重定向;302:暫時重定向。
2、dns流程是什麼
dns伺服器裡存著一張表,表中放著網域名稱和ip位址,網域名稱和ip位址以對映關係儲存。
1.先向本地dns快取檢視有沒有該網域名稱對應的ip位址,有直接跳出,沒有接著往下
2.向根dns伺服器詢問網域名稱對應的ip位址(根dns伺服器會讓他去查詢頂級dns伺服器)
3.向頂級dns伺服器詢問網域名稱對應的ip位址(頂級dns伺服器會讓他去查詢權威dns伺服器)
4.向權威dns伺服器詢問網域名稱對應的ip位址(權威dns伺服器會讓他去查詢二級dns伺服器)
5.向二級dns伺服器詢問網域名稱對應的ip位址(二級dns伺服器會返回對應的ip位址)
6.接收到ip位址後,會先把ip和網域名稱對應關係儲存到本地dns快取,以便下次方便訪問
3、簡述 tcp 和 udp的區別?
tcp 面向連線,udp 面向非連線即傳送資料前不需要建立鏈結;
tcp 提供可靠的服務(資料傳輸),udp 無法保證;
tcp 面向位元組流,udp 面向報文;
tcp 資料傳輸慢,udp 資料傳輸快
4、tcp三次握手和四次揮手?
(1)三次握手:
客戶端傳送帶有 syn=1, seq=x 的資料報給服務端;服務端接收並傳送 syn=1, ack=1,seq=y,ack=x+1的資料報給客戶端; 客戶端接收並傳送 ack=1,seq=x+1,ack=y+1的資料報給服務端。
(2)四次揮手:
客戶端傳送帶有 fin=1,seq=x 的資料報給伺服器;伺服器接收並傳送 ack=1,seq=y,ack=x+1 的資料報給客戶端;服務端傳送 fin=1,ack=1,seq=u,ack=x+1 的資料報給客戶端;客戶端接收並傳送 ack=1,seq=x+1,ack=u+1 的資料報給服務端。
5、為什麼tcp是三次握手?不可以兩次?
如果採用兩次握手,那麼只要伺服器發出確認資料報就會建立連線,但由於客戶端此時並未響應伺服器端的請求,那此時伺服器端就會一直在等待客戶端,這樣伺服器端就白白浪費了一定的資源。若採用三次握手,伺服器端沒有收到來自客戶端的再此確認,則就會知道客戶端並沒有要求建立請求,就不會浪費伺服器的資源。
7、為什麼建立連線是3次,斷開連線4次?
這是由於 tcp 的半關閉造成的。因為 tcp 連線是全雙工的(即資料可在兩個方向上同時傳遞)所以進行關閉時每個方向上都要單獨進行關閉。這個單方向的關閉就叫半關閉。當一方完成它的資料傳送任務,就傳送乙個fin來向另一方通告將要終止這個 方向的連線。
8、在瀏覽器輸入url並回車後發生了什麼?
(1)瀏覽器解析url,將url解析成網域名稱、埠、引數等;
(2)根據網域名稱解析ip位址,依次從瀏覽器、系統、路由器快取中查詢該位址,沒有的話則傳送 udp 資料報給 dns,在 dns 快取中查詢,如果沒有則遞迴查詢(從跟網域名稱伺服器 到頂級網域名稱伺服器再到極限網域名稱伺服器依次搜尋對應目標網域名稱ip);
(3)瀏覽器和客戶端通過握手建立連線;
(4)請求和傳輸資料;
(5)瀏覽器渲染頁面。
9、get 和 post 請求有哪些區別?
get 請求會被瀏覽器主動快取,而 post 不會。
get 傳遞引數有大小限制,而 post 沒有。
post 引數傳輸更安全,get 的引數會明文限制在 url 上,post 不會。
10、tcp的粘包/拆包原因及其解決方法是什麼?
tcp是基於位元組流的,雖然應用層和tcp傳輸層之間的資料互動是大小不等的資料塊,但是tcp把這些資料塊僅僅看成一連串無結構的位元組流,沒有邊界。另外從tcp的幀結構也可以看出,在tcp的首部沒有表示資料長度的字段。常見的發生原因:
(1)要傳送的資料大於tcp傳送緩衝區剩餘空間大小,將會發生拆包。
(2)待傳送資料大於mss(最大報文長度),tcp在傳輸前將進行拆包。
(3)要傳送的資料小於tcp傳送緩衝區的大小,tcp將多次寫入緩衝區的資料一次傳送出去,將會發生粘包。
(4)接收資料端的應用層沒有及時讀取接收緩衝區中的資料,將發生粘包。
解決問題的關鍵在於如何給每個資料報新增邊界資訊,常用的方法有:
(1)傳送端給每個資料報新增包首部,首部中應該至少包含資料報的長度,這樣接收端在接收到資料後,通過讀取包首部的長度字段,便知道每乙個資料報的實際長度了。
(2)傳送端將每個資料報封裝為固定長度(不夠的可以通過補0填充),這樣接收端每次從接收緩衝區中讀取固定長度的資料就自然而然的把每個資料報拆分開來。
(3)可以在資料報之間設定邊界,如新增特殊符號,這樣,接收端通過這個邊界就可以將不同的資料報拆分開。
11、四次揮手釋放連線時,等待2msl的意義?
(1)為了保證a傳送的只有乙個ack報文段能夠到達b。這個ack報文段有可能丟失,因而使處在last-ack狀態的b收不到對已傳送的fin和ack報文段的確認。b會超時重傳這個fin和ack報文段,而a就能在2msl時間內收到這個重傳的ack+fin報文段。接著a重傳一次確認。
(2)防止上面提到的已失效的連線請求報文段出現在本連線中,a在傳送完最有乙個ack報文段後,再經過2msl,就可以使本連線持續的時間內所產生的所有報文段都從網路中消失。
12、tcp如何保證可靠傳輸的?
(1)超時重傳:超過時間無應答重傳;
(2)滑動視窗:視窗用來快取位元組流,接收方和傳送方都有,傳送方傳送的資料報中包含了視窗大小,使得兩邊視窗一致;
(3)流量控制;控制傳送方的傳送速度;
(4)擁塞控制:如果網路出現擁塞,分組將會丟失,此時傳送方會繼續重傳,從而導致網路擁塞程度更高。因此當出現擁塞時,應當 控制傳送方的速率。這一點和流量控制很像,但是出發點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制 是為了降低整個網路的擁塞程度。
13、http 狀態碼
14、短連線、長連線、websocket
(1)短連線:http 1.0,client 與 server 每傳送一次http請求,都建立一次連線,任務斷則關閉;
(2)長連線:http 1.1,client 與 server 建立一次http連線,後續需要連線時則用此連線;
(3)websocket:http公升級,因為長短連線都是需要 client 通過 request ,server 才會 response;而 websocket 則只需一次http請求, server 就可以主動推送訊息;比起輪詢,減少了資源消耗。
15、websocket的連線過程?
先進性三次握手建立tcp連線;然後傳送一次特殊的請求頭包含 connection:upgrade upgrade:websocket 的 http 請求;建立連線,響應碼為 101.
16、websocket與socket的區別?
socket並不是乙個協議,而是為了方便使用tcp或udp而抽象出來的一層,是位於應用層和傳輸控制層之間的一組介面。而websocket的話的是乙個網路層協議。
17、http和https?
http和https都是應用層協議。https加了ssl,安全性比http高;http的埠是80埠,https埠是443.
18、ssl在哪個層?
應用層和傳輸層之間。
網路協議相關面試題
1.簡述 osi 七層協議。應用層與其它計算機進行通訊的乙個應用,它是對應應用程式的通訊服務的。例 telnet,http,ftp,nfs,smtp等。表示層這一層的主要功能是定義資料格式及加密。示例 加密,ascii等。會話層它定義了如何開始 控制和結束乙個會話,包括對多個雙向訊息的控制和管理。示...
面試題相關
一些位址 osi七層功能及協議 資料鏈路層是如何定址的?傳送方 已知接收方ip arp 接收方mac位址 交換機尋找該mac位址所在埠,把幀往這個埠 mac通過rarp轉為ip位址。可靠通訊是靠哪一層來完成的?網路層 tcp協議 100base t 100mbps,baseband,雙絞線對。簡而言...
網路面試題
http協議2.0和1.1的區別 tomcat的一次訪問過程,怎麼實現檔案斷點續傳 如何理解冪等?專案中介面的冪等是如何做的?冪等是指多次執行,影響相同。比如大多數post操作,重複提交訂單等,最終只會有乙個訂單生成成功。還有一種情況就是訊息,由於大多數mq之保證at least once,所以訊息...