最近參加面試,有被問(wèn)到關(guān)于HTTP協(xié)議。
所以有簡(jiǎn)單看了一下,做個(gè)大概的介紹,摘抄于大神文章。先來(lái)看幾條小知識(shí)吧。
TCP連接
終端(Terminal)也稱終端設(shè)備,是計(jì)算機(jī)網(wǎng)絡(luò)中處于網(wǎng)絡(luò)最外圍的設(shè)備,主要用于用戶信息的輸入以及處理結(jié)果的輸出等。
客戶端(Client)或稱為用戶端,是指與服務(wù)器相對(duì)應(yīng),為客戶提供本地服務(wù)的程序。
兩者的差別是一個(gè)是設(shè)備(如手機(jī),電腦),一個(gè)是應(yīng)用程序(如QQ,微信)。
TCP(Transmission Control Protocol) 傳輸控制協(xié)議。TCP是主機(jī)對(duì)主機(jī)層(網(wǎng)絡(luò)七層協(xié)議)的傳輸控制協(xié)議,提供可靠的連接服務(wù),采用三次握確認(rèn)建立一個(gè)連接。
6個(gè)交互標(biāo)識(shí)
SYN(synchronous建立聯(lián)機(jī)) ACK(acknowledgement 確認(rèn)) PSH(push傳送) FIN(finish結(jié)束) RST(reset重置) URG(urgent緊急)Sequence number(順序號(hào)碼) Acknowledge number(確認(rèn)號(hào)碼)
三次握確認(rèn)過(guò)程大概解釋為:
第一次握手(客戶端請(qǐng)求聯(lián)機(jī)):客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);
第二次握手(服務(wù)器確認(rèn)并發(fā)回確認(rèn)信息):服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手(客戶端收到被確認(rèn),建立聯(lián)機(jī)):客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。握手完成后,兩臺(tái)主機(jī)開(kāi)始傳輸數(shù)據(jù)了。
理想狀態(tài)下,TCP連接一旦建立,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去。斷開(kāi)連接時(shí)服務(wù)器和客戶端均可以主動(dòng)發(fā)起斷開(kāi)TCP連接的請(qǐng)求,斷開(kāi)過(guò)程需要經(jīng)過(guò)“四次握手”。
HTTP連接
HTTP協(xié)議即超文本傳送協(xié)議(Hypertext Transfer Protocol ),是Web聯(lián)網(wǎng)的基礎(chǔ),也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一,HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用。
HTTP連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),在請(qǐng)求結(jié)束后,會(huì)主動(dòng)釋放連接。從建立連接到關(guān)閉連接的過(guò)程稱為“一次連接”。
1)在HTTP 1.0中,客戶端的每次請(qǐng)求都要求建立一次單獨(dú)的連接,在處理完本次請(qǐng)求后,就自動(dòng)釋放連接。
2)在HTTP 1.1中則可以在一次連接中處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以重疊進(jìn)行,不需要等待一個(gè)請(qǐng)求結(jié)束后再發(fā)送下一個(gè)請(qǐng)求。
由于HTTP在每次請(qǐng)求結(jié)束后都會(huì)主動(dòng)釋放連接,因此HTTP連接是一種“短連接”,要保持客戶端程序的在線狀態(tài),需要不斷地向服務(wù)器發(fā)起連接請(qǐng)求。通常的做法是即時(shí)不需要獲得任何數(shù)據(jù),客戶端也保持每隔一段固定的時(shí)間向服務(wù)器發(fā)送一次“保持連接”的請(qǐng)求,服務(wù)器在收到該請(qǐng)求后對(duì)客戶端進(jìn)行回復(fù),表明知道 客戶端“在線”。若服務(wù)器長(zhǎng)時(shí)間無(wú)法收到客戶端的請(qǐng)求,則認(rèn)為客戶端“下線”,若客戶端長(zhǎng)時(shí)間無(wú)法收到服務(wù)器的回復(fù),則認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開(kāi)。
【文章參考】
百度百科,菜鳥(niǎo)教程,大神文章