對,我就是騙你進來的。嘿嘿嘿... 既然來了就看看再走嘛html
做爲一個學通訊出身的前端,說道http、tcp什麼的,算是到了個人領域了。(我會告訴你我上課淨睡覺了,啥也沒學到嗎?)此次給你們講講http,提升水平、豐富知識。(要不是爲了面試,誰會管什麼ttp呀,對我是就這麼膚淺)前端
要說http就繞不開tcp,TCP協議對應於傳輸層,而HTTP協議對應於應用層,從本質上來講,兩者沒有可比性。可是,http是基於tcp協議的。web
TCP三次握手和四次揮手?面試
被問爛了的問題了,這裏不詳細講了,三次握手:瀏覽器
四次揮手:緩存
還不懂的童鞋,去找別人的文章好好看看!服務器
TCP和UDP的區別?微信
仔細閱讀上面傳輸層裏寫的內容,懂了嗎?(不懂?不懂背下來啊,混蛋!) markdown
Http協議是創建在TCP協議基礎之上的,當瀏覽器須要從服務器獲取網頁數據的時候,會發出一次Http請求。Http會經過TCP創建起一個到服務器的鏈接通道,當本次請求須要的數據完畢後,Http會當即將TCP鏈接斷開,這個過程是很短的。因此Http鏈接是一種短鏈接,是一種無狀態的鏈接。網絡
所謂的無狀態,是指瀏覽器每次向服務器發起請求的時候,不是經過一個鏈接,而是每次都創建一個新的鏈接。若是是一個鏈接的話,服務器進程中就能保持住這個鏈接而且在內存中記住一些信息狀態。而每次請求結束後,鏈接就關閉,相關的內容就釋放了,因此記不住任何狀態,成爲無狀態鏈接。
無恥盜圖
發送端在層與層間傳輸數據時,沒通過一層都會被加上首部信息,接收端每通過一層都會刪除一條首部
HTTP的英文全稱?
開玩笑的,這個顯然不是重點,可是不排除有人會去問,仍是要知道的: 超文本傳輸協議(HyperText Transfer Protocol)
狀態碼?
狀態碼就那些,經常使用的記住就好了:
2XX 成功
3XX 重定向
4XX 客戶端錯誤
5XX 服務器錯誤
HTTP協議格式?
HTTP的請求和響應的消息協議是同樣的,分爲三個部分,起始行、消息頭和消息體。這三個部分以CRLF做爲分隔符。最後一個消息頭有兩個CRLF,用來表示消息頭部的結束。
HTTP請求的起始行稱爲請求行,形如GET /index.html HTTP/1.1
HTTP響應的起始行稱爲狀態行,形如200 ok
消息頭部有不少鍵值對組成,多個鍵值對之間使用CRLF做爲分隔符,也能夠徹底沒有鍵值對。形如Content-Encoding: gzip 消息體是一個字符串,字符串的長度是由消息頭部的Content-Length鍵指定的。若是沒有Content-Length字段說明沒有消息體,譬如GET請求就是沒有消息體的,POST請求的消息體通常用來放置表單數據。GET請求的響應返回的頁面內容也是放在消息體裏面的。咱們平時調用API返回的JSON內容都是放在消息體裏面的。
HTTP的無狀態性?
所謂HTTP協議的無狀態性是指服務器的協議層無需爲不一樣的請求之間創建任何相關關係,它特指的是協議層的無狀態性。可是這並不表明創建在HTTP協議之上的應用程序就沒法維持狀態。應用層能夠經過會話Session來跟蹤用戶請求之間的相關性,服務器會爲每一個會話對象綁定一個惟一的會話ID,瀏覽器能夠將會話ID記錄在本地緩存LocalStorage或者Cookie,在後續的請求都帶上這個會話ID,服務器就能夠爲每一個請求找到相應的會話狀態。
輸入url到頁面加載都發生了什麼事情?(最最常問的來了)
仍是要注重一下版權的,本文部份內容來源於大佬碼洞,更全更深刻的知識在那裏,還不快去關注,而後感謝大佬對個人寬容。