1.HTTP 狀態碼 400、401、403 的含義
(1)400狀態碼:請求無效
產生原因:
前端提交數據的字段名稱和字段類型與后臺的實體沒有保持一致
前端提交到后臺的數據應該是json字符串類型,但是前端沒有將對象JSON.stringify轉化成字符串。
解決方法:
對照字段的名稱,保持一致性
將obj對象通過JSON.stringify實現序列化
(2)401狀態碼:當前請求需要用戶驗證
(3)403狀態碼:伺服器已經得到請求,但是拒絕執行
2.什么是 CSRF 攻擊,如何避免
CSRF:Cross-Site Request Forgery(中文:跨站請求偽造),可以理解為攻擊者盜用了你的身份,以你的名義發送惡意請求,比如:以你名義發送郵件、發消息、購買商品,虛擬貨幣轉賬等。
防御手段:驗證請求來源地址; 關鍵操作添加驗證碼; 在請求地址添加 token 并驗證。
3.請你解釋一下TCP為什么可靠一些
三次握手,超時重傳,滑動窗口,擁塞控制。
4.forward 和 redirect 的區別
forward 是轉發 和 redirect 是重定向:
地址欄 url 顯示:foward url 不會發生改變,redirect url 會發生改變;
數據共享:forward 可以共享 request 里的數據,redirect 不能共享;
效率:forward 比 redirect 效率高。
5.WebSocket的實現和應用
(1)什么是WebSocket
WebSocket是HTML5中的協議,支持持久連續,http協議不支持持久性連接。Http1.0和HTTP1.1都不支持持久性的鏈接,HTTP1.1中的keep-alive,將多個http請求合并為1個
(2)WebSocket是什么樣的協議,具體有什么優點
HTTP的生命周期通過Request來界定,也就是Request一個Response,那么在Http1.0協議中,這次Http請求就結束了。在Http1.1中進行了改進,是的有一個connection:Keep-alive,也就是說,在一個Http連接中,可以發送多個Request,接收多個Response。但是必須記住,在Http中一個Request只能對應有一個Response,而且這個Response是被動的,不能主動發起。
WebSocket是基于Http協議的,或者說借用了Http協議來完成一部分握手,在握手階段與Http是相同的。我們來看一個websocket握手協議的實現,基本是2個屬性,upgrade,connection。
6.請你說一下http協議會話結束標志怎么截出來
看tcp連接是否有斷開的四部揮手階段。
7.HTTP具體有哪些請求頭是跟緩存相關的
緩存分為兩種:強緩存和協商緩存,根據響應的header內容來決定。
強緩存相關字段有expires,cache-control。如果cache-control與expires同時存在的話,cache-control的優先級高于expires。
協商緩存相關字段有Last-Modified/If-Modified-Since,Etag/If-None-Match
8.請你講講http1.1和1.0的區別
主要區別主要體現在:
緩存處理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為緩存判斷的標準,HTTP1.1則引入了更多的緩存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。
帶寬優化及網絡連接的使用,HTTP1.0中,存在一些浪費帶寬的現象,例如客戶端只是需要某個對象的一部分,而伺服器卻將整個對象送過來了,并且不支持斷點續傳功能,HTTP1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即返回碼是206(Partial Content),這樣就方便了開發者自由的選擇以便于充分利用帶寬和連接。
錯誤通知的管理,在HTTP1.1中新增了24個錯誤狀態響應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生沖突;410(Gone)表示伺服器上的某個資源被永久性的刪除。
Host頭處理,在HTTP1.0中認為每臺伺服器都綁定一個唯一的IP地址,因此,請求消息中的URL并沒有傳遞主機名(hostname)。但隨著虛擬主機技術的發展,在一臺物理伺服器上可以存在多個虛擬主機(Multi-homed Web Servers),并且它們共享一個IP地址。HTTP1.1的請求消息和響應消息都應支持Host頭域,且請求消息中如果沒有Host頭域會報告一個錯誤(400 Bad Request)。
長連接,HTTP 1.1支持長連接(PersistentConnection)和請求的流水線(Pipelining)處理,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲,在HTTP1.1中默認開啟Connection: keep-alive,一定程度上彌補了HTTP1.0每次請求都要創建連接的缺點。
9.請簡單解釋一下,arp協議和arp攻擊。
地址解析協議。ARP攻擊的第一步就是ARP欺騙。由上述“ARP協議的工作過程”我們知道,ARP協議基本沒有對網絡的安全性做任何思考,當時人們考慮的重點是如何保證網絡通信能夠正確和快速的完成——ARP協議工作的前提是默認了其所在的網絡是一個善良的網絡,每臺主機在向網絡中發送應答信號時都是使用的真實身份。不過后來,人們發現ARP應答中的IP地址和MAC地址中的信息是可以偽造的,并不一定是自己的真實IP地址和MAC地址,由此,ARP欺騙就產生了。
10.HTTP HEAD請求的含義
head:類似于get請求,只不過返回的響應中沒有具體的內容,用戶獲取報頭
options:允許客戶端查看伺服器的性能,比如說伺服器支持的請求方式等等。
11.請回答一下HTTP和HTTPS的區別,以及HTTPS有什么缺點
HTTP協議和HTTPS協議區別如下:
(1)HTTP協議是以明文的方式在網絡中傳輸數據,而HTTPS協議傳輸的數據則是經過TLS加密后的,HTTPS具有更高的安全性
(2)HTTPS在TCP三次握手階段之后,還需要進行SSL 的handshake,協商加密使用的對稱加密密鑰
(3)HTTPS協議需要服務端申請證書,瀏覽器端安裝對應的根證書
(4)HTTP協議端口是80,HTTPS協議端口是443
HTTPS優點:
HTTPS傳輸數據過程中使用密鑰進行加密,所以安全性更高
HTTPS協議可以認證用戶和伺服器,確保數據發送到正確的用戶和伺服器
HTTPS缺點:
HTTPS握手階段延時較高:由于在進行HTTP會話之前還需要進行SSL握手,因此HTTPS協議握手階段延時增加
HTTPS部署成本高:一方面HTTPS協議需要使用證書來驗證自身的安全性,所以需要購買CA證書;另一方面由于采用HTTPS協議需要進行加解密的計算,占用CPU資源較多,需要的伺服器配置或數目高
12.請問你有沒有基于做過socket的開發具體網絡層的操作該怎么做(其實也是問網絡編程的基本步驟)
服務端:socket-bind-listen-accept
客戶端:socket-connect
13.ip報文經過一個路由器改變哪些字段
源和目的的IP地址,源和目的的MAC地址以及TTL值。
14.HTTP2.0 有哪些特性
(1)內容安全,應為http2.0是基于https的,天然具有安全特性,通過http2.0的特性可以避免單純使用https的性能下降
(2)二進制格式,http1.X的解析是基于文本的,http2.0將所有的傳輸信息分割為更小的消息和幀,并對他們采用二進制格式編碼,基于二進制可以讓協議有更多的擴展性,比如引入了幀來傳輸數據和指令
(3)多路復用,這個功能相當于是長連接的增強,每個request請求可以隨機的混雜在一起,接收方可以根據request的id將request再歸屬到各自不同的服務端請求里面,另外多路復用中也支持了流的優先級,允許客戶端告訴伺服器那些內容是更優先級的資源,可以優先傳輸。
15.HTTP狀態碼 304 的含義什么時候用304
304:如果客戶端發送了一個帶條件的GET 請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)并沒有改變,則伺服器應當返回這個304狀態碼。
16.請說明一下http和https的區別
https協議要申請證書到ca,需要一定經濟成本;2) http是明文傳輸,https是加密的安全傳輸;3) 連接的端口不一樣,http是80,https是443;4)http連接很簡單,沒有狀態;https是ssl加密的傳輸,身份認證的網絡協議,相對http傳輸比較安全。
17.你知道TCP協議、IP協議、HTTP協議分別在哪一層嗎
考察點:網絡七層模型
運輸層,網絡層,應用層。
七層結構:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層
tcp屬于傳輸層;http屬于應用層。
18.HTTP常見的請求方法
get、post,這兩個用的是最多的,還有很多比如patch、delete、put、options等等
19.請你說一下阻塞,非阻塞,同步,異步
阻塞和非阻塞:調用者在事件沒有發生的時候,一直在等待事件發生,不能去處理別的任務這是阻塞。調用者在事件沒有發生的時候,可以去處理別的任務這是非阻塞。
同步和異步:調用者必須循環自去查看事件有沒有發生,這種情況是同步。調用者不用自己去查看事件有沒有發生,而是等待著注冊在事件上的回調函數通知自己,這種情況是異步
20.搜索baidu,會用到計算機網絡中的什么層每層是干什么的
瀏覽器中輸入URL
瀏覽器要將URL解析為IP地址,解析域名就要用到DNS協議,首先主機會查詢DNS的緩存,如果沒有就給本地DNS發送查詢請求。DNS查詢分為兩種方式,一種是遞歸查詢,一種是迭代查詢。如果是迭代查詢,本地的DNS伺服器,向根域名伺服器發送查詢請求,根域名伺服器告知該域名的一級域名伺服器,然后本地伺服器給該一級域名伺服器發送查詢請求,然后依次類推直到查詢到該域名的IP地址。DNS伺服器是基于UDP的,因此會用到UDP協議。
得到IP地址后,瀏覽器就要與伺服器建立一個http連接。因此要用到http協議,http協議報文格式上面已經提到。http生成一個get請求報文,將該報文傳給TCP層處理,所以還會用到TCP協議。如果采用https還會使用https協議先對http數據進行加密。TCP層如果有需要先將HTTP數據包分片,分片依據路徑MTU和MSS。TCP的數據包然后會發送給IP層,用到IP協議。IP層通過路由選路,一跳一跳發送到目的地址。當然在一個網段內的尋址是通過以太網協議實現(也可以是其他物理層協議,比如PPP,SLIP),以太網協議需要直到目的IP地址的物理地址,有需要ARP協議。
其中:
(1)DNS協議,http協議,https協議屬于應用層
應用層是體系結構中的最高層。應用層確定進程之間通信的性質以滿足用戶的需要。這里的進程就是指正在運行的程序。應用層不僅要提供應用進程所需要的信息交換和遠地操作,而且還要作為互相作用的應用進程的用戶代理,來完成一些為進行語義上有意義的信息交換所必須的功能。應用層直接為用戶的應用進程提供服務。
(2)TCP/UDP屬于傳輸層
傳輸層的任務就是負責主機中兩個進程之間的通信。因特網的傳輸層可使用兩種不同協議:即面向連接的傳輸控制協議TCP,和無連接的用戶數據報協議UDP。面向連接的服務能夠提供可靠的交付,但無連接服務則不保證提供可靠的交付,它只是“盡最大努力交付”。這兩種服務方式都很有用,備有其優缺點。在分組交換網內的各個交換結點機都沒有傳輸層。
(3)IP協議,ARP協議屬于網絡層
網絡層負責為分組交換網上的不同主機提供通信。在發送數據時,網絡層將運輸層產生的報文段或用戶數據報封裝成分組或包進行傳送。在TCP/IP體系中,分組也叫作IP數據報,或簡稱為數據報。網絡層的另一個任務就是要選擇合適的路由,使源主機運輸層所傳下來的分組能夠交付到目的主機。
(4)數據鏈路層
當發送數據時,數據鏈路層的任務是將在網絡層交下來的IP數據報組裝成幀,在兩個相鄰結點間的鏈路上傳送以幀為單位的數據。每一幀包括數據和必要的控制信息(如同步信息、地址信息、差錯控制、以及流量控制信息等)。控制信息使接收端能夠知道—個幀從哪個比特開始和到哪個比特結束。控制信息還使接收端能夠檢測到所收到的幀中有無差錯。
(5)物理層
物理層的任務就是透明地傳送比特流。在物理層上所傳數據的單位是比特。傳遞信息所利用的一些物理媒體,如雙絞線、同軸電纜、光纜等,并不在物理層之內而是在物理層的下面。因此也有人把物理媒體當做第0層。
本文由培訓無憂網千鋒IT培訓專屬課程顧問老師整理發布,更多相關課程請關注培訓無憂網web前端培訓或添加老師微信:15033336050
注:尊重原創文章,轉載請注明出處和鏈接 http://m.dedgn.cn/news-id-2829.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注web前端頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050