Q:OSI網絡七層模型。
javascript
Q:http協議的狀態碼有哪些?含義是什麼?
200,服務器已成功處理了請求。
302,重定向。
400,錯誤請求。
401,未受權,請求要求身份驗證。
403,禁止,服務器拒絕請求。
404,未找到,服務器找不到請求的網頁。
405,方法禁用,禁用請求中指定的方法。
500,服務器內部錯誤,服務器遇到錯誤,沒法完成請求。
Q:http1.0和http1.1的區別是什麼?
HTTP/1.0中瀏覽器與服務器只保持短暫的鏈接,鏈接沒法複用。也就是說每一個TCP鏈接只能發送一個請求。發送數據完畢,鏈接就關閉,若是還要請求其餘資源,就必須再新建一個鏈接。
HTTP/1.1相比較於HTTP/1.0來講,最主要的改進就是引入了持久鏈接。所謂的持久鏈接即TCP鏈接默認不關閉,能夠被多個請求複用。
HTTP/1.1版還引入了管道機制(pipelining),即在同一個TCP鏈接裏面,客戶端能夠同時發送多個請求。
Q:http1.x 和http2.0的區別?
HTTP2.0和HTTP1.X相比的新特性
(1)新的二進制格式(Binary Format),HTTP1.x的解析是基於文本。基於文本協議的格式解析存在自然缺陷,文本的表現形式有多樣性,要作到健壯性考慮的場景必然不少,二進制則不一樣,只認0和1的組合。基於這種考慮HTTP2.0的協議解析決定採用二進制格式,實現方便且健壯。
(2)多路複用(MultiPlexing),即鏈接共享,即每個request都是是用做鏈接共享機制的。一個request對應一個id,這樣一個鏈接上能夠有多個request,每一個鏈接的request能夠隨機的混雜在一塊兒,接收方能夠根據request的 id將request再歸屬到各自不一樣的服務端請求裏面。
(3)header壓縮,如上文中所言,對前面提到過HTTP1.x的header帶有大量信息,並且每次都要重複發送,HTTP2.0使用encoder來減小須要傳輸的header大小,通信雙方各自cache一份header fields表,既避免了重複header的傳輸,又減少了須要傳輸的大小。
(4)服務端推送(server push),同SPDY同樣,HTTP2.0也具備server push功能。
Q:Http的請求報文的報文頭,有哪些參數?
請求方法Get/Post/Put/Delete等,請求URL,Http版本,ContentType,Host
Q:Https與Http的一些區別?
HTTPS協議須要到CA申請證書,通常免費證書不多,須要交費。
HTTP協議運行在TCP之上,全部傳輸的內容都是明文,HTTPS運行在SSL/TLS之上,SSL/TLS運行在TCP之上,全部傳輸的內容都通過加密的。
HTTP和HTTPS使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。
HTTPS能夠有效的防止運營商劫持,解決了防劫持的一個大問題。
Q:Get和Post的區別 ?
(1)post更安全(不會做爲url的一部分,不會被緩存、保存在服務器日誌、以及瀏覽器瀏覽記錄中)
(2)post發送的數據更大(get有url長度限制)
(3)post能發送更多的數據類型(get只能發送ASCII字符)
(4)post比get慢
(5)post用於修改和寫入數據,get通常用於搜索排序和篩選之類的操做(淘寶,支付寶的搜索查詢都是get提交),目的是資源的獲取,讀取數據
Q:一次完整的Http請求是怎樣的?
DNS域名解析 –> 發起TCP的三次握手 –> 創建TCP鏈接後發起http請求 –> 服務器響應http請求,瀏覽器獲得html代碼 –> 瀏覽器解析html代碼,並請求html代碼中的資源(如javascript、css、圖片等) –> 瀏覽器對頁面進行渲染呈現給用戶
Q:講一下會話。
由於Http是無狀態機制,須要會話Session來保存狀態。Session有SessionId,還有會話時長。
Q:Session和Cookie的區別是什麼?
(1)存在的位置:
cookie 存在於客戶端,臨時文件夾中; session存在於服務器的內存中,一個session域對象爲一個用戶瀏覽器服務
(2)安全性:
cookie是以明文的方式存放在客戶端的,安全性低,能夠經過一個加密算法進行加密後存放; session存放於服務器的內存中,因此安全性好
(3)網絡傳輸量:
cookie會傳遞消息給服務器; session自己存放於服務器,不會有傳送流量
(4)生命週期(以20分鐘爲例):
cookie的生命週期是累計的,從建立時,就開始計時,20分鐘後,cookie生命週期結束;
session的生命週期是間隔的,從建立時,開始計時如在20分鐘,沒有訪問session,那麼session生命週期被銷燬。可是,若是在20分鐘內(如在第19分鐘時)訪問過session,那麼,將從新計算session的生命週期。關機會形成session生命週期的結束,可是對cookie沒有影響。
(5)訪問範圍:
cookie爲多個用戶瀏覽器共享; session爲一個用戶瀏覽器獨享
Q:講一下Http緩存。
Q:講一下Http長鏈接和短鏈接。css
Q:Tcp三次握手。
Q:Tcp四次握手。html
Q:Tcp和Udp的區別?
是否鏈接:Tcp面向鏈接,Udp面向非鏈接
傳輸可靠性:Tcp可靠,Udp不可靠
應用場合: Tcp傳輸大量數據,Udp少許數據
速度:Tcp速度慢 , Udp速度快
模式:Tcp面向字節流,Udp是面向報文的java
Q:NIO、AIO、BIO有什麼區別?
同步阻塞的BIO、同步非阻塞的NIO、異步非阻塞的AIO。
Q:NIO和IO有什麼區別?
IO是多線程的,阻塞的。NIO,是同步的非阻塞IO。
IO面向Stream(流),而NIO面向Buffer(緩衝區)。
IO是多個線程的,不存在Selector。而Java NIO的Selector(選擇器)容許一個單獨的線程來監視多個Channel(輸入通道)。
Q:講一下NIO
NIO,同步非阻塞,IO多路複用。
NIO包括Channel、Select、Buffer這些。
Selector容許單線程處理多個 Channel。面試
Q:講一下Netty。
Q:講一下Netty的線程模型。
參考資料:
搞定計算機網絡面試
Http請求/響應報文算法