(GET)請注意,查詢字串(名稱/值對)是在 GET 請求的 URL 中傳送的:/test/demo_form.asp?name1=value1&name2=value2
GET 請求可被快取
GET 請求保留在瀏覽器歷史記錄中
GET 請求可被收藏為書籤
GET 請求不應在處理敏感資料時使用
GET 請求有長度限制
GET 請求只應當用於取回資料POST 方法(POST)請注意,查詢字串(名稱/值對)是在 POST 請求的 HTTP 訊息主體中傳送的:POST /test/demo_form.asp HTTP/1.1Host: w3schools.comname1=value1&name2=value2
POST 請求不會被快取
POST 請求不會保留在瀏覽器歷史記錄中
POST 不能被收藏為書籤
POST 請求對資料長度沒有要求
既使用TCP又使用UDP
大家覺得本次面試題總結的寫得不錯的朋友,大家可以轉發+關注,然後掃描下方二維條碼獲取更多面試題以及答案— 掃描新增暗號:【CSDN】
一個冪等操作的特點是其任意多次執行所產生的影響均與一次執行的影響相同。冪等函數,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函數。這些函數不會影響系統狀態,也不用擔心重複執行會對系統造成改變。例如,「getUsername()和setTrue()」函數就是一個冪等函數.
Cookies是一種能夠讓網站伺服器把少量資料儲存到使用者端的硬碟或記憶體,或是從使用者端的硬碟讀取資料的一種技術。Cookies是當你瀏覽某網站時,由Web伺服器置於你硬碟上的一個非常小的文字檔案,它可以記錄你的使用者ID、密碼、瀏覽過的網頁、停留的時間等資訊。session: 當使用者請求來自應用程式的 Web 頁時,如果該使用者還沒有對談,則 Web 伺服器將自動建立一個 Session 物件。當對談過期或被放棄後,伺服器將終止該對談。cookie機制:採用的是在使用者端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們看到由於伺服器端保持狀態的方案在使用者端也需要儲存一個標識,所以session機制可能需要藉助cookie機制來達到儲存標識的目的。
Session是伺服器用來跟蹤使用者的一種手段,每個Session都有一個唯一標識:session ID。當伺服器建立了Session時,給使用者端傳送的響應報文包含了Set-cookie欄位,其中有一個名為sid的鍵值對,這個鍵值Session ID。使用者端收到後就把Cookie儲存瀏覽器,並且之後傳送的請求報表都包含SessionID。HTTP就是通過Session和Cookie這兩個傳送一起合作來實現跟蹤使用者狀態,Session用於伺服器端,Cookie用於使用者端
第一次握手:建立連線時,使用者端傳送syn包(syn=j)到伺服器,並進入SYN_SEND狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也傳送一個SYN包(syn=k),即SYN+ACK包,此時伺服器進入SYN_RECV狀態;
第三次握手:使用者端收到伺服器的SYN+ACK包,向伺服器傳送確認包ACK(ack=k+1),此包傳送完畢,使用者端和伺服器進入ESTABLISHED狀態,完成三次握手。
完成三次握手,使用者端與伺服器開始傳送資料
TIME_WAIT的狀態就是主動斷開的一方(這裡是使用者端),傳送完最後一次ACK之後進入的狀態。並且持續時間還挺長的。使用者端TIME_WAIT持續2倍MSL時長,在linux體系中大概是60s,轉換成CLOSE狀態
TIME_WAIT 是主動關閉連結時形成的,等待2MSL時間,約4分鐘。主要是防止最後一個ACK丟失。 由於TIME_WAIT 的時間會非常長,因此server端應儘量減少主動關閉連線
CLOSE_WAIT是被動關閉連線是形成的。根據TCP狀態機,伺服器端收到使用者端傳送的FIN,則按照TCP實現傳送ACK,因此進入CLOSE_WAIT狀態。但如果伺服器端不執行close(),就不能由CLOSE_WAIT遷移到LAST_ACK,則系統中會存在很多CLOSE_WAIT狀態的連線。此時,可能是系統忙於處理讀、寫操作,而未將已收到FIN的連線,進行close。此時,recv/read已收到FIN的連線socket,會返回0。
假設最終的ACK丟失,server將重發FIN,client必須維護TCP狀態資訊以便可以重發最終的ACK,否則會傳送RST,結果server認為發生錯誤。TCP實現必須可靠地終止連線的兩個方向(全雙工關閉),client必須進入 TIME_WAIT 狀態,因為client可能面 臨重發最終ACK的情形。
如果 TIME_WAIT 狀態保持時間不足夠長(比如小於2MSL),第一個連線就正常終止了。第二個擁有相同相關五元組的連線出現,而第一個連線的重複報文到達,干擾了第二個連線。TCP實現必須防止某個連線的重複報文在連線終止後出現,所以讓TIME_WAIT狀態保持時間足夠長(2MSL),連線相應方向上的TCP報文要麼完全響應完畢,要麼被 丟棄。建立第二個連線的時候,不會混淆。
如果伺服器出了異常,百分之八九十都是下面兩種情況:
1.伺服器保持了大量TIME_WAIT狀態
2.伺服器保持了大量CLOSE_WAIT狀態,簡單來說CLOSE_WAIT數目過大是由於被動關閉連線處理不當導致的。
域名解析 --> 發起TCP的3次握手 --> 建立TCP連線後發起http請求 --> 伺服器響應http請求,瀏覽器得到html程式碼 --> 瀏覽器解析html程式碼,並請求html程式碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給使用者
一、基於http協定的長連線
二、發心跳包。每隔幾秒就發一個封包過去
HTTP協定是Hyper Text Transfer Protocol(超文字傳輸協定)的縮寫,是用於從全球資訊網(WWW:World Wide Web )伺服器傳輸超文字到本地瀏覽器的傳送協定。
特點
簡單快速:客戶向伺服器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與伺服器聯絡的型別不同。由於HTTP協定簡單,使得HTTP伺服器的程式規模小,因而通訊速度很快。
靈活:HTTP允許傳輸任意型別的資料物件。正在傳輸的型別由Content-Type加以標記。
無連線:無連線的含義是限制每次連線只處理一個請求。伺服器處理完客戶的請求,並收到客戶的應答後,即斷開連線。採用這種方式可以節省傳輸時間。
無狀態:HTTP協定是無狀態協定。無狀態是指協定對於事務處理沒有記憶能力。缺少狀態意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。另一方面,在伺服器不需要先前資訊時它的應答就較快。
支援B/S及C/S模式。
請求訊息Request
響應訊息Response
狀態碼
http的方法
URI,是uniform resource identifier,統一資源識別符號,用來唯一的標識一個資源。Web上可用的每種資源如HTML檔案、影象、視訊片段、程式等都是一個來URI來定位的
URI一般由三部組成:
URL是uniform resource locator,統一資源定位器,它是一種具體的URI,即URL可以用來標識一個資源,而且還指明瞭如何locate這個資源。URL是Internet上用來描述資訊資源的字串,主要用在各種WWW客戶程式和伺服器程式上,特別是著名的Mosaic。採用URL可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的地址和目錄等。
URL一般由三部組成:
https實際就是在TCP層與http層之間加入了SSL/TLS來為上層的安全保駕護航,主要用到對稱加密、非對稱加密、證書,等技術進行使用者端與伺服器的資料加密傳輸,最終達到保證整個通訊的安全性。
PS:如果覺得我的分享不錯,歡迎大家隨手點贊、轉發。
以上便是此次分享的面試題以及答案,如果覺得還不過癮,大家可以關注我的公眾號-【Java爛豬皮】,裡面有往期的面試題以及最新的面試分享,關注後回覆:【666】即可免費獲取更多的Java架構進階vip學習資料