Http協(xié)議再理解(一)經(jīng)典模型、三次握手魁兼、四次揮手

一焕妙、網(wǎng)絡(luò)協(xié)議分層--經(jīng)典五層模型

各層作用請參見:https://www.cnblogs.com/qishui/p/5428938.html

物理層:定義物理設(shè)備之間如何傳輸數(shù)據(jù)

數(shù)據(jù)鏈路層:在通信的實體間建立數(shù)據(jù)鏈路鏈接

網(wǎng)絡(luò)層:為數(shù)據(jù)在節(jié)點之間的傳輸創(chuàng)建邏輯鏈路

傳輸層:向用戶提供可靠的端到端的服務(wù)缩搅,傳輸層通過封裝向高層屏蔽了下層數(shù)據(jù)通信的細節(jié)

應(yīng)用層:為應(yīng)用軟件提供了很多服務(wù),構(gòu)建于tcp協(xié)議之上驱显,屏蔽了網(wǎng)絡(luò)傳輸相關(guān)的細節(jié)

二、Http三次握手和四次揮手

前置:1瞳抓、Http請求是基于Tcp connection這個鏈接的

? ? ? ? ? ?2埃疫、位碼即tcp標(biāo)志位,有6種標(biāo)示:

? ? ? ? ? ? ? ? ? ? ?SYN(synchronous建立聯(lián)機) 、ACK(acknowledgement 確認)挨下、 PSH(push傳送)

? ? ? ? ? ? ? ? ? ? ?FIN(finish結(jié)束)熔恢、RST(reset重置)、 URG(urgent緊急)

? ? ? ? ? ? ? ? ? ? Sequence number(順序號碼)?

? ? ? ? ? ? ? ? ? ? ?Acknowledge number(確認號碼)

(一)三次握手:

第一次握手:主機A發(fā)送位碼為syn=1,隨機產(chǎn)生seq number=1234567的數(shù)據(jù)包到服務(wù)器臭笆,主機B由SYN=1知道叙淌,A要求建立聯(lián)機秤掌;

第二次握手:主機B收到請求后要確認聯(lián)機信息,向A發(fā)送ack number=(主機A的seq+1),syn=1,ack=1,隨機產(chǎn)生seq=7654321的包鹰霍;

第三次握手:主機A收到后檢查ack number是否正確闻鉴,即第一次發(fā)送的seq number+1,以及位碼ack是否為1,若正確茂洒,主機A會再發(fā)送ack number=(主機B的seq+1),ack=1孟岛,主機B收到后確認seq值與ack=1則連接建立成功。

注:為什么要采用三次握手督勺,兩次不行嗎渠羞?

(二)四次揮手:

第一次揮手:TCP發(fā)送一個FIN(結(jié)束),用來關(guān)閉客戶到服務(wù)端的連接智哀。

第二次揮手:服務(wù)端收到這個FIN次询,他發(fā)回一個ACK(確認),確認收到序號為收到序號+1瓷叫,和SYN一樣屯吊,一個FIN將占用一個序號。TCP服務(wù)器通知高層的應(yīng)用進程摹菠,客戶端向服務(wù)器的方向就釋放了盒卸,這時候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了次氨,但是服務(wù)器若發(fā)送數(shù)據(jù)蔽介,客戶端依然要接受。(服務(wù)器端繼續(xù)發(fā)送未發(fā)送完的數(shù)據(jù))

第三次揮手:服務(wù)端發(fā)送一個FIN(結(jié)束)到客戶端糟需,服務(wù)端關(guān)閉客戶端的連接屉佳。

第四次揮手:客戶端發(fā)送ACK(確認)報文確認,并將確認的序號+1洲押,這樣關(guān)閉完成武花。

注:1、那么為什么是4次揮手呢杈帐?tcp握手的時候為何ACK(確認)和SYN(建立連接)是一起發(fā)送体箕。揮手的時候為什么是分開的時候發(fā)送呢?

因為當(dāng)Server端收到Client端的SYN連接請求報文后挑童,可以直接發(fā)送SYN+ACK報文累铅。其中ACK報文是用來應(yīng)答的,SYN報文是用來同步的站叼。但是關(guān)閉連接時娃兽,當(dāng)Server端收到FIN報文時,很可能并不會立即關(guān)閉 SOCKET尽楔,所以只能先回復(fù)一個ACK報文投储,告訴Client端第练,"你發(fā)的FIN報文我收到了"。只有等到我Server端所有的報文都發(fā)送完了玛荞,我才能發(fā)送FIN報文娇掏,因此不能一起發(fā)送。故需要四步握手勋眯。

2婴梧、為什么客戶端最后還要等待2MSL?

第一客蹋,保證客戶端發(fā)送的最后一個ACK報文能夠到達服務(wù)器塞蹭,因為這個ACK報文可能丟失,站在服務(wù)器的角度看來讶坯,我已經(jīng)發(fā)送了FIN+ACK報文請求斷開了浮还,客戶端還沒有給我回應(yīng),應(yīng)該是我發(fā)送的請求斷開報文它沒有收到闽巩,于是服務(wù)器又會重新發(fā)送一次,而客戶端就能在這個2MSL時間段內(nèi)收到這個重傳的報文担汤,接著給出回應(yīng)報文涎跨,并且會重啟2MSL計時器。

第二崭歧,防止類似與“三次握手”中提到了的“已經(jīng)失效的連接請求報文段”出現(xiàn)在本連接中隅很。客戶端發(fā)送完最后一個確認報文后率碾,在這個2MSL時間中叔营,就可以使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報文段都從網(wǎng)絡(luò)中消失。這樣新的連接中不會出現(xiàn)舊連接的請求報文所宰。

三绒尊、TCP和UDP的區(qū)別 ?

1、TCP面向連接(如打電話要先撥號建立連接)仔粥;UDP是無連接的婴谱,即發(fā)送數(shù)據(jù)之前不需要建立連接??

(連接和無連接)

2、TCP提供可靠的服務(wù)躯泰。即通過TCP連接傳送的數(shù)據(jù)谭羔,無差錯,不丟失麦向,不重復(fù)瘟裸,且按序到達;

? ? ?UDP盡最大努力交付,即不保證可靠交付

(可靠和不可靠)

3诵竭、TCP面向字節(jié)流话告,實際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流兼搏;UDP是面向報文的

? ? UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應(yīng)用很有用超棺,如IP電話向族,實時視頻會議等)

(字節(jié)流和報文加擁塞)

4、每一條TCP連接只能是點到點的; UDP支持一對一棠绘,一對多件相,多對一和多對多的交互通信

(一對一和一對多)

5、TCP首部開銷20字節(jié);UDP的首部開銷小氧苍,只有8個字節(jié)

(開銷問題)

6夜矗、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道


簡單再了解

1让虐、簡單快速:客戶向服務(wù)器請求服務(wù)時紊撕,只需傳送請求方法和路徑。請求方法常用的有GET赡突、HEAD对扶、POST。每種方法規(guī)定了客戶與服務(wù)器聯(lián)系的類型不同惭缰。由于HTTP協(xié)議簡單浪南,使得HTTP服務(wù)器的程序規(guī)模小,因而通信速度很快漱受。

2络凿、靈活:HTTP允許傳輸任意類型的數(shù)據(jù)對象。正在傳輸?shù)念愋陀蒀ontent-Type加以標(biāo)記昂羡。

3.無連接:無連接的含義是限制每次連接只處理一個請求絮记。服務(wù)器處理完客戶的請求,并收到客戶的應(yīng)答后虐先,即斷開連接怨愤。采用這種方式可以節(jié)省傳輸時間。

4.無狀態(tài):HTTP協(xié)議是無狀態(tài)協(xié)議赴穗。無狀態(tài)是指協(xié)議對于事務(wù)處理沒有記憶能力憔四。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息,則它必須重傳般眉,這樣可能導(dǎo)致每次連接傳送的數(shù)據(jù)量增大了赵。另一方面,在服務(wù)器不需要先前信息時它的應(yīng)答就較快甸赃。

5柿汛、支持B/S及C/S模式。



參考:http://www.cnblogs.com/ranyonsue/p/5984001.html

? ? ? ? ??https://www.cnblogs.com/qdhxhz/p/8470997.html

? ? ? ? ?https://blog.csdn.net/qq_18425655/article/details/52163228

? ? ? ? ?https://blog.csdn.net/qzcsu/article/details/72861891

? ? ? ? https://blog.csdn.net/yanxinrui0027/article/details/70243665

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市络断,隨后出現(xiàn)的幾起案子裁替,更是在濱河造成了極大的恐慌,老刑警劉巖貌笨,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弱判,死亡現(xiàn)場離奇詭異,居然都是意外死亡锥惋,警方通過查閱死者的電腦和手機昌腰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來膀跌,“玉大人遭商,你說我怎么就攤上這事⊥鄙耍” “怎么了劫流?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丛忆。 經(jīng)常有香客問我祠汇,道長,這世上最難降的妖魔是什么熄诡? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任座哩,我火速辦了婚禮,結(jié)果婚禮上粮彤,老公的妹妹穿的比我還像新娘。我一直安慰自己姜骡,他們只是感情好导坟,可當(dāng)我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著圈澈,像睡著了一般惫周。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上康栈,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天递递,我揣著相機與錄音,去河邊找鬼啥么。 笑死登舞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的悬荣。 我是一名探鬼主播菠秒,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼氯迂!你這毒婦竟也來了践叠?” 一聲冷哼從身側(cè)響起言缤,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎禁灼,沒想到半個月后管挟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡弄捕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年僻孝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片察藐。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡皮璧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出分飞,到底是詐尸還是另有隱情悴务,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布譬猫,位于F島的核電站讯檐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏染服。R本人自食惡果不足惜别洪,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望柳刮。 院中可真熱鬧挖垛,春花似錦、人聲如沸秉颗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚕甥。三九已至哪替,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菇怀,已是汗流浹背凭舶。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爱沟,地道東北人帅霜。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像呼伸,于是被迫代替她去往敵國和親义屏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,901評論 2 355