HTTP TCP協(xié)議的理解與總結(jié)
我們都知道軟件架構(gòu)模式 分為2種,分為C/S(安裝客戶端)和 ?B/S(ip地址訪問(wèn))。區(qū)別:TCP/IP 安全正压,功能強(qiáng)大,不方便要安裝客戶端责球;而HTTP方便焦履,只要瀏覽器。那么我們就會(huì)想到TCP HTTP 協(xié)議之間有哪些的區(qū)別與聯(lián)系之處呢雏逾?小編帶大家一起來(lái)學(xué)習(xí)裁良。
一、什么是HTTP TCP協(xié)議校套?
①HTTP協(xié)議即超文本傳送協(xié)議(Hypertext?Transfer?Protocol?)价脾,是應(yīng)用層協(xié)議,定義的是傳輸數(shù)據(jù)的內(nèi)容的規(guī)范笛匙。HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用層協(xié)議侨把。
HTTP連接最顯著的特點(diǎn):
1)客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng)犀变,在請(qǐng)求結(jié)束后,會(huì)主動(dòng)釋放連接秋柄。從建立連接到關(guān)閉連接的過(guò)程稱為“一次連接”获枝。
2)它是TCP協(xié)議族中的一種,默認(rèn)使用 TCP 80端口骇笔。
3)在HTTP?1.0中省店,客戶端的每次請(qǐng)求都要求建立一次單獨(dú)的連接,在處理完本次請(qǐng)求后笨触,就自動(dòng)釋放連接懦傍。-------一次連接接收一個(gè)請(qǐng)求
4)在HTTP?1.1中則可以在一次連接中處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以重疊進(jìn)行芦劣,不需要等待一個(gè)請(qǐng)求結(jié)束后再發(fā)送下一個(gè)請(qǐng)求粗俱。-----------一次連接可以接受多個(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)斷開怜姿。
②TCP是傳輸層協(xié)議,定義數(shù)據(jù)傳輸和連接方式的規(guī)范疼燥。握手過(guò)程中傳送的包里不包含數(shù)據(jù)沧卢,三次握手完畢后,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)醉者。
“網(wǎng)絡(luò)是路但狭,TCP是跑在路上的車,HTTP是車上的人撬即×⒋牛”
二、HTTP TCP協(xié)議的工作原理剥槐?
第一:從傳輸層唱歧,先說(shuō)下TCP連接,我們要和服務(wù)端連接TCP連接,需要通過(guò)三次連接颅崩,包括:請(qǐng)求几于,確認(rèn),建立連接沿后。即傳說(shuō)中的“三次握手協(xié)議”沿彭。
第一次:C發(fā)送一個(gè)請(qǐng)求連接的位碼SYN和一個(gè)隨機(jī)產(chǎn)生的序列號(hào)給Seq,然后S收到了這些數(shù)據(jù)尖滚。
第二次:S收到了這個(gè)請(qǐng)求連接的位碼喉刘,啊呀,有人向我發(fā)出請(qǐng)求了么漆弄,那我要不要接受他的請(qǐng)求睦裳,得實(shí)現(xiàn)確認(rèn)一下,于是置逻,發(fā)送了一個(gè)確認(rèn)碼?ACN(seq+1)推沸,和SYN备绽,Seq給C券坞,然后C收到了,這個(gè)是第二次連接肺素。
第三次:C收到了確認(rèn)的碼和之前發(fā)送的SYN一比較恨锚,偶喲,對(duì)上了么倍靡,于是他又發(fā)送了一個(gè)ACN(SEQ+1)給S猴伶,S收到以后就確定建立連接,至此塌西,TCP連接建立完成他挎。
簡(jiǎn)單就是:請(qǐng)求,確認(rèn)捡需,連接办桨。
第二:從實(shí)際上的數(shù)據(jù)應(yīng)用來(lái)說(shuō)HTTP:
在前面客戶端和應(yīng)用服務(wù)器建立TCP連接之后,就需要用http協(xié)議來(lái)傳送數(shù)據(jù)了站辉,HTTP協(xié)議簡(jiǎn)單來(lái)說(shuō)呢撞,還是請(qǐng)求,確認(rèn)饰剥,連接殊霞。
總體就是C發(fā)送一個(gè)HTTP請(qǐng)求給S,S收到了這個(gè)http請(qǐng)求汰蓉,然后返回給Chttp響應(yīng)绷蹲,然后C的中間件或者說(shuō)瀏覽器把這些數(shù)據(jù)渲染成為了網(wǎng)頁(yè),展示在用戶面前顾孽。
第一:發(fā)送一個(gè)http請(qǐng)求給S瘸右,這個(gè)請(qǐng)求包括請(qǐng)求頭和請(qǐng)求內(nèi)容:
request?header:
包括了娇跟,1.請(qǐng)求的方法是POST/GET,請(qǐng)求的URL,http協(xié)議版本2.請(qǐng)求的數(shù)據(jù)太颤,和編碼方式3是否有cookie和cooies苞俘,是否緩存等。
post和get請(qǐng)求方式的區(qū)別是龄章,get把請(qǐng)求內(nèi)容放在URL后面吃谣,但是URL長(zhǎng)度有限制。而post是以表單的形勢(shì)做裙,適合要輸入密碼之類的岗憋,因?yàn)椴辉赨RL中顯示,所以比較安全锚贱。
request?body:
即請(qǐng)求的內(nèi)容.
第二:S收到了http請(qǐng)求仔戈,然后根據(jù)請(qǐng)求頭,返回http響應(yīng)拧廊。
response?header:包括了1.cookies或者sessions2.狀態(tài)嗎3.內(nèi)容大小等
response?body:
即響應(yīng)的內(nèi)容监徘,包括,JS什么的吧碾。
第三凰盔,C收到了以后,就由瀏覽器完成一系列的渲染倦春,包括執(zhí)行JS腳本等户敬。
三、HTTP TCP協(xié)議的聯(lián)系睁本?
TCP是底層通訊協(xié)議尿庐,傳輸層協(xié)議,定義的是數(shù)據(jù)傳輸和連接方式的規(guī)范
HTTP是應(yīng)用層協(xié)議呢堰,定義的是傳輸數(shù)據(jù)的內(nèi)容的規(guī)范
HTTP協(xié)議中的數(shù)據(jù)是利用TCP協(xié)議傳輸?shù)某灾С諬TTP也就一定支持TCP
TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。
TCP/IP實(shí)際上是一組協(xié)議暮胧,它包括上百個(gè)各種功能的協(xié)議锐借,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等往衷,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議钞翔。通常說(shuō)TCP/IP是Internet協(xié)議族,而不單單是TCP和IP席舍。
總結(jié):客戶端通過(guò)http協(xié)議向服務(wù)器端發(fā)送數(shù)據(jù)請(qǐng)求布轿,?http是要基于TCP連接基礎(chǔ)上的,說(shuō)明請(qǐng)求前會(huì)通過(guò)TCP來(lái)建立一個(gè)連接。簡(jiǎn)單的說(shuō)汰扭,TCP就是單純建立連接稠肘,簡(jiǎn)單的傳輸;HTTP是有數(shù)據(jù)的萝毛,這個(gè)數(shù)據(jù)通過(guò)TCP傳輸项阴。