TCP
要說(shuō)http就繞不開(kāi)tcp,TCP協(xié)議對(duì)應(yīng)于傳輸層,而HTTP協(xié)議對(duì)應(yīng)于應(yīng)用層,從本質(zhì)上來(lái)說(shuō),二者沒(méi)有可比性。但是,http是基于tcp協(xié)議的。
TCP/IP 協(xié)議分層模型
使用 IP 協(xié)議,IP 協(xié)議基于 IP 轉(zhuǎn)發(fā)分包數(shù)據(jù)
IP 協(xié)議是個(gè)不可靠協(xié)議,不會(huì)重發(fā)
IP 協(xié)議發(fā)送失敗會(huì)使用ICMP協(xié)議通知失敗
ARP 解析 IP 中的MAC 地址,MAC 地址由網(wǎng)卡出廠提供
IP 還隱含鏈路層的功能,不管雙方底層的鏈路層是啥,都能通信
物理層將二進(jìn)制的0和1和電壓高低,光的閃滅和電波的強(qiáng)弱信號(hào)進(jìn)行轉(zhuǎn)換
鏈路層代表驅(qū)動(dòng)
網(wǎng)絡(luò)層
傳輸層
通用的 TCP 和 UDP 協(xié)議
TCP 協(xié)議面向有連接,能正確處理丟包,傳輸順序錯(cuò)亂的問(wèn)題,但是為了建立與斷開(kāi)連接,需要至少7次的發(fā)包收包,資源浪費(fèi)
UDP 面向無(wú)連接,不管對(duì)方有沒(méi)有收到,如果要得到通知,需要通過(guò)應(yīng)用層
會(huì)話層以上分層
TCP/IP 分層中,會(huì)話層,表示層,應(yīng)用層集中在一起
網(wǎng)絡(luò)管理通過(guò)SNMP協(xié)議
劃重點(diǎn)了啊(面試最常問(wèn)的?。?/p>
TCP三次握手和四次揮手?
被問(wèn)爛了的問(wèn)題了,這里不詳細(xì)講了,三次握手:
客戶端–發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)包–一次握手–服務(wù)端
服務(wù)端–發(fā)送帶有SYN/ACK標(biāo)志的數(shù)據(jù)包–二次握手–客戶端
客戶端–發(fā)送帶有帶有ACK標(biāo)志的數(shù)據(jù)包–三次握手–服務(wù)端
四次揮手:
客戶端-發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送
服務(wù)器-收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1 。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)
服務(wù)器-關(guān)閉與客戶端的連接,發(fā)送一個(gè)FIN給客戶端
客戶端-發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1
還不懂的童鞋,去找別人的文章好好看看!
TCP和UDP的區(qū)別?
仔細(xì)閱讀上面?zhèn)鬏攲永飳懙膬?nèi)容,懂了嗎?(不懂?不懂背下來(lái)啊,***!)
我們微信聊天時(shí)候經(jīng)常會(huì)有這種情況。
是不是感同身受,這種情況就是對(duì)方用了TCP協(xié)議來(lái)聊天,要經(jīng)過(guò)--在嗎?--在--巴拉巴拉,才能成功的傳遞信息。而如果對(duì)方使用UDP,則會(huì)有事直接說(shuō),不管我收沒(méi)收到。(以后找我請(qǐng)用UDP協(xié)議,著急直接打電話?。?/p>
HTTP
Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)的時(shí)候,會(huì)發(fā)出一次Http請(qǐng)求。Http會(huì)通過(guò)TCP建立起一個(gè)到服務(wù)器的連接通道,當(dāng)本次請(qǐng)求需要的數(shù)據(jù)完畢后,Http會(huì)立即將TCP連接斷開(kāi),這個(gè)過(guò)程是很短的。所以Http連接是一種短連接,是一種無(wú)狀態(tài)的連接。
所謂的無(wú)狀態(tài),是指瀏覽器每次向服務(wù)器發(fā)起請(qǐng)求的時(shí)候,不是通過(guò)一個(gè)連接,而是每次都建立一個(gè)新的連接。如果是一個(gè)連接的話,服務(wù)器進(jìn)程中就能保持住這個(gè)連接并且在內(nèi)存中記住一些信息狀態(tài)。而每次請(qǐng)求結(jié)束后,連接就關(guān)閉,相關(guān)的內(nèi)容就釋放了,所以記不住任何狀態(tài),成為無(wú)狀態(tài)連接。
http傳輸流

發(fā)送端在層與層間傳輸數(shù)據(jù)時(shí),沒(méi)經(jīng)過(guò)一層都會(huì)被加上首部信息,接收端每經(jīng)過(guò)一層都會(huì)刪除一條首部
又來(lái)劃重點(diǎn)了啊
HTTP的英文全稱?
開(kāi)玩笑的,這個(gè)顯然不是重點(diǎn),但是不排除有人會(huì)去問(wèn),還是要知道的:超文本傳輸協(xié)議(HyperText Transfer Protocol)
狀態(tài)碼?
狀態(tài)碼就那些,常用的記住就行了:
2XX 成功
200 OK,表示從客戶端發(fā)來(lái)的請(qǐng)求在服務(wù)器端被正確處理
204 No content,表示請(qǐng)求成功,但響應(yīng)報(bào)文不含實(shí)體的主體部分
206 Partial Content,進(jìn)行范圍請(qǐng)求
3XX 重定向
301 moved permanently,永久性重定向,表示資源已被分配了新的 URL
302 found,臨時(shí)性重定向,表示資源臨時(shí)被分配了新的 URL
303 see other,表示資源存在著另一個(gè) URL,應(yīng)使用 GET 方法丁香獲取資源
304 not modified,表示服務(wù)器允許訪問(wèn)資源,但因發(fā)生請(qǐng)求未滿足條件的情況
307 temporary redirect,臨時(shí)重定向,和302含義相同
4XX 客戶端錯(cuò)誤
400 bad request,請(qǐng)求報(bào)文存在語(yǔ)法錯(cuò)誤
401 unauthorized,表示發(fā)送的請(qǐng)求需要有通過(guò) HTTP 認(rèn)證的認(rèn)證信息
403 forbidden,表示對(duì)請(qǐng)求資源的訪問(wèn)被服務(wù)器拒絕
404 not found,表示在服務(wù)器上沒(méi)有找到請(qǐng)求的資源
5XX 服務(wù)器錯(cuò)誤
500 internal sever error,表示服務(wù)器端在執(zhí)行請(qǐng)求時(shí)發(fā)生了錯(cuò)誤
503 service unavailable,表明服務(wù)器暫時(shí)處于超負(fù)載或正在停機(jī)維護(hù),無(wú)法處理請(qǐng)求
HTTP協(xié)議格式?
HTTP的請(qǐng)求和響應(yīng)的消息協(xié)議是一樣的,分為三個(gè)部分,起始行、消息頭和消息體。這三個(gè)部分以CRLF作為分隔符。最后一個(gè)消息頭有兩個(gè)CRLF,用來(lái)表示消息頭部的結(jié)束。

HTTP請(qǐng)求的起始行稱為請(qǐng)求行,形如GET /index.html HTTP/1.1
HTTP響應(yīng)的起始行稱為狀態(tài)行,形如200 ok
消息頭部有很多鍵值對(duì)組成,多個(gè)鍵值對(duì)之間使用CRLF作為分隔符,也可以完全沒(méi)有鍵值對(duì)。形如Content-Encoding: gzip消息體是一個(gè)字符串,字符串的長(zhǎng)度是由消息頭部的Content-Length鍵指定的。如果沒(méi)有Content-Length字段說(shuō)明沒(méi)有消息體,譬如GET請(qǐng)求就是沒(méi)有消息體的,POST請(qǐng)求的消息體一般用來(lái)放置表單數(shù)據(jù)。GET請(qǐng)求的響應(yīng)返回的頁(yè)面內(nèi)容也是放在消息體里面的。我們平時(shí)調(diào)用API返回的JSON內(nèi)容都是放在消息體里面的。
HTTP的無(wú)狀態(tài)性?
所謂HTTP協(xié)議的無(wú)狀態(tài)性是指服務(wù)器的協(xié)議層無(wú)需為不同的請(qǐng)求之間建立任何相關(guān)關(guān)系,它特指的是協(xié)議層的無(wú)狀態(tài)性。但是這并不代表建立在HTTP協(xié)議之上的應(yīng)用程序就無(wú)法維持狀態(tài)。應(yīng)用層可以通過(guò)會(huì)話Session來(lái)跟蹤用戶請(qǐng)求之間的相關(guān)性,服務(wù)器會(huì)為每個(gè)會(huì)話對(duì)象綁定一個(gè)唯一的會(huì)話ID,瀏覽器可以將會(huì)話ID記錄在本地緩存LocalStorage或者Cookie,在后續(xù)的請(qǐng)求都帶上這個(gè)會(huì)話ID,服務(wù)器就可以為每個(gè)請(qǐng)求找到相應(yīng)的會(huì)話狀態(tài)。
輸入url到頁(yè)面加載都發(fā)生了什么事情?(最最常問(wèn)的來(lái)了)
輸入地址
瀏覽器查找域名的 IP 地址這一步包括 DNS 具體的查找過(guò)程,包括:瀏覽器緩存->系統(tǒng)緩存->路由器緩存...
瀏覽器向 web 服務(wù)器發(fā)送一個(gè) HTTP 請(qǐng)求
服務(wù)器的永久重定向響應(yīng)
瀏覽器跟蹤重定向地址
服務(wù)器處理請(qǐng)求
服務(wù)器返回一個(gè) HTTP 響應(yīng)
瀏覽器顯示 HTML
瀏覽器發(fā)送請(qǐng)求獲取嵌入在 HTML 中的資源(如圖片、音頻、視頻、CSS、JS等等)
瀏覽器發(fā)送異步請(qǐng)求
-
IP協(xié)議
+關(guān)注
關(guān)注
3文章
85瀏覽量
22412 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
10077瀏覽量
90820 -
HTTP
+關(guān)注
關(guān)注
0文章
531瀏覽量
34820 -
TCP
+關(guān)注
關(guān)注
8文章
1417瀏覽量
82984
原文標(biāo)題:一份TCP、HTTP面試指南,??键c(diǎn)都給你了
文章出處:【微信號(hào):通信弱電交流學(xué)習(xí),微信公眾號(hào):通信弱電交流學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
關(guān)于TCP/IP協(xié)議的知識(shí)總結(jié)
TCP/IP、Http、Socket的區(qū)別
科普電涌的知識(shí)
【學(xué)習(xí)打卡】OpenHarmony的HTTP和TCP介紹
《TCP-IP詳解_卷3_TCP事務(wù)協(xié)議,HTTP,NNTP
tcp和http的區(qū)別在哪里
http和tcp/ip、http https之間的關(guān)系和區(qū)別
HTTP 3.0為何要徹底放棄TCP呢?
基于Http和Tcp協(xié)議自主實(shí)現(xiàn)的WebServer

關(guān)于TCP、HTTP的知識(shí)科普
評(píng)論