一、GET 和 POST 到底有什么區(qū)別?
HTTP最早被用來做瀏覽器與服務(wù)器之間交互HTML和表單的通訊協(xié)議;后來又被被廣泛的擴(kuò)充到接口格式的定義上。所以在討論GET和POST區(qū)別的時候,需要現(xiàn)確定下到底是瀏覽器使用的GET/POST還是用HTTP作為接口傳輸協(xié)議的場景。

二、HTTP與TCP/IP區(qū)別(TCP協(xié)議,其他網(wǎng)絡(luò)協(xié)議)
TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸,而HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù)。WEB使用HTTP協(xié)議作應(yīng)用層協(xié)議,以封裝HTTP 文本信息,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)到網(wǎng)絡(luò)上。IP協(xié)議的作用是把TCP分割好的各種數(shù)據(jù)包封裝到IP包里面?zhèn)魉徒o接收方。
三、http1與http2的主要區(qū)別?
1、HTTP 1.1 基于串行文件傳輸數(shù)據(jù),因此這些請求必須是有序的
2、HTTP/2 引入二進(jìn)制數(shù)據(jù)幀和流的概念,其中幀對數(shù)據(jù)進(jìn)行順序標(biāo)識, 瀏覽器可以按照序列對數(shù)據(jù)進(jìn)行合并,
- 二進(jìn)制傳輸:http2采用二進(jìn)制傳輸,相較于文本傳輸?shù)膆ttp1來說更加安全可靠。
- 多路復(fù)用:http1一個連接只能提交一個請求,而http2可以同時處理無數(shù)個請求,可以降低連接的占用數(shù)量,進(jìn)一步提升網(wǎng)絡(luò)的吞吐量。
因此服務(wù)器就可以并行的傳輸數(shù)據(jù)。 - 頭部壓縮:http2通過gzip與compress對頭部進(jìn)行壓縮,并且在客戶端與服務(wù)端各維護(hù)了一份頭部索引表,只需要根據(jù)索引id就可以進(jìn)行頭部信息的傳輸,縮小了頭部容量,間接提升了傳輸效率。
- 服務(wù)端推送:服務(wù)端可以主動推送資源給客戶端,避免客戶端花過多的時間逐個請求資源,這樣可以降低整個請求的響應(yīng)時間。
四、http狀態(tài)碼
2XX 成功
- 200 OK,表示從客戶端發(fā)來的請求在服務(wù)器端被正確處理 ?
- 201 Created 請求已經(jīng)被實現(xiàn),而且有一個新的資源已經(jīng)依據(jù)請求的需要而建立
- 202 Accepted 請求已接受,但是還沒執(zhí)行,不保證完成請求
- 204 No content,表示請求成功,但響應(yīng)報文不含實體的主體部分
- 206 Partial Content,進(jìn)行范圍請求 ?
3XX 重定向
- 301 moved permanently,永久性重定向,表示資源已被分配了新的 URL (瀏覽器)
請求的資源已被永久的移動到新URI,返回信息會包括新的URI,瀏覽器會自動定向到新URI。今后任何新的請求都應(yīng)使用新的URI代替.(新的url放在response headers里的Location中) - 302 found,臨時性重定向,表示資源臨時被分配了新的 URL ?
- 303 see other,表示資源存在著另一個 URL,應(yīng)使用 GET 方法丁香獲取資源
- 304 not modified,表示服務(wù)器允許訪問資源,但因發(fā)生請求未滿足條件的情況
- 307 temporary redirect,臨時重定向,和302含義相同
4XX 客戶端錯誤
- 400 bad request,請求無效 ,客戶端請求的語法錯誤,服務(wù)器無法理解?
前端提交數(shù)據(jù)的字段名稱和字段類型與后臺的實體沒有保持一致
前端提交到后臺的數(shù)據(jù)應(yīng)該是json字符串類型,但是前端沒有將對象JSON.stringify轉(zhuǎn)化成字符串。 - 401 unauthorized,請求要求用戶的身份認(rèn)證 ?
- 403 forbidden,服務(wù)器理解請求客戶端的請求,但是拒絕執(zhí)行此請求 ?
- 404 not found,表示在服務(wù)器上沒有找到請求的資源 ?
- 408 Request timeout, 服務(wù)器等待客戶端發(fā)送的請求時間過長,超時
- 409 Confict, 請求的資源可能引起沖突
5XX 服務(wù)器錯誤
- 500 internal sever error,表示服務(wù)器端在執(zhí)行請求時發(fā)生了錯誤 ?
- 501 Not Implemented 請求超出服務(wù)器能力范圍,例如服務(wù)器不支持當(dāng)前請求所需要的某個功能,或者請求是服務(wù)器不支持的某個方法
- 502 網(wǎng)關(guān)錯誤
- 503 service unavailable,表明服務(wù)器暫時處于超負(fù)載或正在停機(jī)維護(hù),無法處理請求
- 504 Gateway Time-out 充當(dāng)網(wǎng)關(guān)或代理的服務(wù)器,未及時從遠(yuǎn)端服務(wù)器獲取請求
- 505 http version not supported 服務(wù)器不支持,或者拒絕支持在請求中使用的 HTTP 版本
Http的報文結(jié)構(gòu)
(1)HTTP請求報文
一個HTTP請求報文由請求行、請求頭部、空行和請求數(shù)據(jù)4個部分組成,下圖是請求報文的一般格式。

(2)HTTP響應(yīng)也由三個部分組成,分別是:狀態(tài)行、消息報頭、響應(yīng)正文
五.七層網(wǎng)絡(luò)模型
應(yīng)用層
網(wǎng)絡(luò)服務(wù)與最終用戶的一個接口。協(xié)議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
表示層
數(shù)據(jù)的表示、安全、壓縮。(在五層模型里面已經(jīng)合并到了應(yīng)用層)格式有,JPEG、ASCll、EBCDIC、加密格式等
會話層
建立、管理、終止會話。(在五層模型里面已經(jīng)合并到了應(yīng)用層)對應(yīng)主機(jī)進(jìn)程,指本地主機(jī)與遠(yuǎn)程主機(jī)正在進(jìn)行的會話
傳輸層
定義傳輸數(shù)據(jù)的協(xié)議端口號,以及流控和差錯校驗。協(xié)議有:TCP UDP,數(shù)據(jù)包一旦離開網(wǎng)卡即進(jìn)入網(wǎng)絡(luò)傳輸層
網(wǎng)絡(luò)層
進(jìn)行邏輯地址尋址,實現(xiàn)不同網(wǎng)絡(luò)之間的路徑選擇。協(xié)議有:ICMP IGMP IP(IPV4 IPV6)
數(shù)據(jù)鏈路層
建立邏輯連接、進(jìn)行硬件地址尋址、差錯校驗 [3] 等功能。
(由底層網(wǎng)絡(luò)定義協(xié)議)將比特組合成字節(jié)進(jìn)而組合成幀,用MAC地址訪問介質(zhì),錯誤發(fā)現(xiàn)但不能糾正。
物理層
建立、維護(hù)、斷開物理連接。(由底層網(wǎng)絡(luò)定義協(xié)議)