一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

16張圖詳解計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議(萬(wàn)字)

 wanglh5555 2022-10-12 發(fā)布于四川

來(lái)自:CSDN,作者:LiangJGo

鏈接:https://blog.csdn.net/LiangJGo/article/details/90080011

入網(wǎng)絡(luò)協(xié)議,以圖文并茂的方式細(xì)說(shuō)網(wǎng)絡(luò)技術(shù)細(xì)節(jié)。


OSI七層協(xié)議

1.物理層
很久很久以前,那時(shí)候還沒(méi)有現(xiàn)在的外星人超級(jí)電腦,或者華為的P30。比較調(diào)皮的小明想要把自己機(jī)器上寫好的一些個(gè)人游戲心得(如何玩好王者農(nóng)藥)發(fā)給小紅(?;ǎ?,希望博得芳心。小明個(gè)人比較勤,游戲總結(jié)心得總結(jié)的比較詳細(xì)(大概有100M)。但是到底怎么才能從自己的機(jī)器上傳給小紅的機(jī)器呢,進(jìn)過(guò)一番打聽(tīng),他發(fā)現(xiàn)遠(yuǎn)在太平洋另一端的科學(xué)家已經(jīng)發(fā)明了一種技術(shù) 物理層,專門用來(lái)解決小明這種單身狗問(wèn)題。該層主要定義物理設(shè)備標(biāo)準(zhǔn),如網(wǎng)線的接口類型、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉(zhuǎn)化為電流強(qiáng)弱來(lái)進(jìn)行傳輸,到達(dá)目的地后在轉(zhuǎn)化為1、0,也就是我們常說(shuō)的數(shù)模轉(zhuǎn)換與模數(shù)轉(zhuǎn)換)。這一層的數(shù)據(jù)叫做比特。

他很興奮,通過(guò)一個(gè)月的努力終于搭建起了這個(gè)物理層。

2.數(shù)據(jù)鏈路層:

然而上天卻好像和小明開(kāi)了一個(gè)玩笑,樓下的小潤(rùn)發(fā)超市的網(wǎng)線、光纖最近賣光了,但是這個(gè)物理層傳輸數(shù)據(jù)只能通過(guò)網(wǎng)線傳輸。到底怎么辦。

此時(shí),他體內(nèi)的雄性激素促使著他的大腦以光速運(yùn)轉(zhuǎn)。終于他餓了,無(wú)奈得走去學(xué)校飯?zhí)萌龢浅月槔睜C。此時(shí)聽(tīng)到隔壁坐著的那位王叔叔(老王)說(shuō),科學(xué)家已經(jīng)發(fā)明了一種技術(shù)可以通過(guò)無(wú)線電來(lái)傳輸。What?這不是完美解決了自己的困擾嗎。小明連忙對(duì)隔壁老王說(shuō)謝謝,老王留下了幸福的淚水!

右通過(guò)一番努力查資料,小明發(fā)現(xiàn):種技術(shù)可以通過(guò)電線我能發(fā)數(shù)據(jù)流,也可以通過(guò)其它介質(zhì)來(lái)傳輸。然后還要保證了傳輸過(guò)去的比特流是正確的,有糾錯(cuò)功能。定義了如何讓格式化數(shù)據(jù)以進(jìn)行傳輸,以及如何讓控制對(duì)物理介質(zhì)的訪問(wèn)。這一層通常還提供錯(cuò)誤檢測(cè)和糾正,以確保數(shù)據(jù)的可靠傳輸。

小明把層技術(shù)稱為:數(shù)據(jù)鏈路層

3.網(wǎng)絡(luò)層:

由于小明家離小紅家比較遠(yuǎn),無(wú)線電信號(hào)無(wú)法傳輸?shù)侥睦?,但是這完全難不到小明。他通過(guò)在離小紅家的路上搭建了多個(gè)節(jié)點(diǎn)(路由器,交換機(jī)),用于信號(hào)的傳輸。但是由于他有時(shí)候被雄性激素沖昏了頭腦,搭建的信號(hào)節(jié)點(diǎn)有點(diǎn)亂,而且很多。那他又想用最短的路徑來(lái)傳輸怎么辦呢?在小明沮喪走回家的時(shí)候已深夜,他看見(jiàn)今天看到的那位王叔叔匆匆的從自己家走出來(lái),他連忙拉住王叔叔,向他訴說(shuō)自己的煩惱,希望王叔叔能給自己一些幫助。當(dāng)小明說(shuō)完后,王叔叔從緊張變?yōu)楹吞@,和小明說(shuō):其實(shí)已經(jīng)有人發(fā)明了網(wǎng)絡(luò)層。即路由器,交換機(jī)那些具有尋址功能的設(shè)備所實(shí)現(xiàn)的功能。這一層定義的是IP地址,通過(guò)IP地址尋址。所以產(chǎn)生了IP協(xié)議。該層能選擇最佳路徑,這就是路由要做的事。

4.傳輸層
為了趁熱打鐵,小明通宵查資料來(lái)學(xué)習(xí)相關(guān)信息,并且簡(jiǎn)單搭建好網(wǎng)絡(luò)層,開(kāi)始傳輸數(shù)據(jù),趁著傳輸過(guò)程好好睡一覺(jué)。當(dāng)他起來(lái)的時(shí)候,噩夢(mèng)才剛剛開(kāi)始,因?yàn)樗麄鬏數(shù)臄?shù)據(jù)太大(100M)只傳輸了一部分,而且斷斷續(xù)續(xù)的,有一部分?jǐn)?shù)據(jù)根本傳不出去。那怎么辦?

“加一層傳輸層!”:王叔叔在樓下大聲喊著,“資料在你媽媽的床頭柜”,王叔叔繼續(xù)說(shuō)。小明連忙找到資料,上面寫著:“

發(fā)正確的發(fā)比特流數(shù)據(jù)到另一臺(tái)計(jì)算機(jī)了,但是當(dāng)我發(fā)大量數(shù)據(jù)時(shí)候,可能需要好長(zhǎng)時(shí)間,例如一個(gè)視頻格式的,網(wǎng)絡(luò)會(huì)中斷好多次(事實(shí)上,即使有了物理層和數(shù)據(jù)鏈路層,網(wǎng)絡(luò)還是經(jīng)常中斷,只是中斷的時(shí)間是毫秒級(jí)別的)。

那么,我還須要保證傳輸大量文件時(shí)的準(zhǔn)確性。于是,我要對(duì)發(fā)出去的數(shù)據(jù)進(jìn)行封裝。就像發(fā)快遞一樣,一個(gè)個(gè)地發(fā)。

例如TCP,是用于發(fā)大量數(shù)據(jù)的,我發(fā)了1萬(wàn)個(gè)包出去,另一臺(tái)電腦就要告訴我是否接受到了1萬(wàn)個(gè)包,如果缺了3個(gè)包,就告訴我是第1001,234,8888個(gè)包丟了,那我再發(fā)一次。這樣,就能保證對(duì)方把這個(gè)視頻完整接收了。

例如UDP,是用于發(fā)送少量數(shù)據(jù)的。我發(fā)20個(gè)包出去,一般不會(huì)丟包,所以,我不管你收到多少個(gè)。在多人互動(dòng)游戲,也經(jīng)常用UDP協(xié)議,因?yàn)橐话愣际呛?jiǎn)單的信息,而且有廣播的需求。如果用TCP,效率就很低,因?yàn)樗鼤?huì)不停地告訴主機(jī)我收到了20個(gè)包,或者我收到了18個(gè)包,再發(fā)我兩個(gè)!如果同時(shí)有1萬(wàn)臺(tái)計(jì)算機(jī)都這樣做,那么用TCP反而會(huì)降低效率,還不如用UDP,主機(jī)發(fā)出去就算了,丟幾個(gè)包你就卡一下,算了,下次再發(fā)包你再更新。

TCP協(xié)議是會(huì)綁定IP和端口的協(xié)議,下面會(huì)介紹IP協(xié)議?!?/span>

通過(guò)如此這般的操作,他!小明同學(xué)終于把自己100M的游戲心得發(fā)送給了小紅。

5.會(huì)話層(解除與建立與別的接口的聯(lián)系)

然而,小紅根本不玩游戲。得知這個(gè)消息后,小明楞逼了。但是他沒(méi)有放棄,而是把自己猜到小紅喜歡的信息都發(fā)給他,但是小明每發(fā)一次,難道我每次都要調(diào)用TCP去打包,然后調(diào)用IP協(xié)議去找路由,這一來(lái)一回就是一天,那怎么辦呢?

他又翻了翻王叔叔的筆記本資料,寫著:會(huì)話層可以幫助我們建立和管理應(yīng)用程序之間的通信,封裝了調(diào)用TCP去打包,然后調(diào)用IP協(xié)議去找路由等操作,如此一來(lái),他只需要十幾二十分鐘就能夠成功搭建好傳輸數(shù)據(jù)的機(jī)器。

6.表示層(數(shù)據(jù)格式化,代碼轉(zhuǎn)換,數(shù)據(jù)加密)

有一次,小明傳了一份數(shù)據(jù),是關(guān)于如何選購(gòu)化妝品的文章,小紅對(duì)此非常感興趣,但是當(dāng)小紅想用自己的window開(kāi)該文件時(shí)發(fā)現(xiàn)根本無(wú)法打開(kāi),后來(lái)小紅在下課的時(shí)候和小明說(shuō)自己無(wú)法打開(kāi)這個(gè)文件,小明想自己用Linux系統(tǒng)明明完整地發(fā)送給了小紅啊,那就奇怪了,但是出于耍帥,小明只是輕輕地說(shuō)“我放學(xué)后再發(fā)你一份!”。

這時(shí)雖然小明不知道是出了什么問(wèn)題,但是他堅(jiān)信老王叔叔的資料筆記會(huì)有答案的。

果然!上清清楚楚的寫著:“現(xiàn)在我能保證應(yīng)用程序自動(dòng)收發(fā)包和尋址了。但是我要用Linux給window發(fā)包,兩個(gè)系統(tǒng)語(yǔ)法不一致,就像安裝包一樣,exe是不能在linux下用的,shell在window下也是不能直接運(yùn)行的。于是需要表示層(presentation),幫我們解決不同系統(tǒng)之間的通信語(yǔ)法問(wèn)題?!?/span>

小明立即用了一個(gè)通宵手動(dòng)搭好了表示層,傳輸了一份完美的文件給小紅。

7.應(yīng)用層(文件傳輸,電子郵件,文件服務(wù),虛擬終端)

官方OSI說(shuō)明圖
圖片


TCP/IP協(xié)議

TCP/IP協(xié)議是由七層模型簡(jiǎn)化成四層而來(lái)。(TPC/IP協(xié)議其實(shí)泛指了四層模型中的全部協(xié)議,區(qū)別開(kāi)TCP協(xié)議,IP協(xié)議)

  • 七層有底向上分別是:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層、應(yīng)用層。
  • 簡(jiǎn)化后的四層分別是:主機(jī)到網(wǎng)絡(luò)層(比特)、網(wǎng)絡(luò)層(數(shù)據(jù)幀)、傳輸層(數(shù)據(jù)包)、應(yīng)用層(數(shù)據(jù)段)。
每一層對(duì)于上一層來(lái)講是透明的,上層只需要使用下層提供的接口,并不關(guān)心下層是如何實(shí)現(xiàn)的。

與OSI七層協(xié)議的對(duì)比:
圖片

傳輸層:

網(wǎng)絡(luò)層是主機(jī)與主機(jī)之間的通訊,而傳輸層則是進(jìn)程之間的通訊。

為何要有傳輸層?
應(yīng)為進(jìn)程是資源分配的基本單位,計(jì)算機(jī)之間的信息傳輸也只是一臺(tái)計(jì)算機(jī)的進(jìn)程傳輸?shù)搅硗庖慌_(tái)計(jì)算機(jī)的進(jìn)程中。

一臺(tái)計(jì)算機(jī)如何找到另外一臺(tái)計(jì)算機(jī)呢?
那就是通過(guò)IP協(xié)議來(lái)完成的(復(fù)用,多個(gè)進(jìn)程都可以把信息通過(guò)傳輸層到IP層,再傳輸?shù)搅硗庖慌_(tái)計(jì)算機(jī)中)。

那如何找到另外一臺(tái)計(jì)算機(jī)的進(jìn)程(pid)?
那就是用端口(分用,到達(dá)另外一臺(tái)計(jì)算機(jī)后還要通過(guò)端口號(hào)找到對(duì)應(yīng)進(jìn)程)。

傳輸層主要有兩種協(xié)議:UDP和TCP

一、UDP協(xié)議
特點(diǎn):
  • 無(wú)連接,傳輸數(shù)據(jù)時(shí)不需要建立連接,減小開(kāi)銷
  • 盡最大努力交付,不確??煽拷桓?/span>
  • 面向報(bào)文
  • 沒(méi)有擁塞控制、確保信息實(shí)時(shí)性
  • 支持一對(duì)一,一對(duì)多,多對(duì)一,多對(duì)多
  • 首部開(kāi)銷小,只有8個(gè)字節(jié)


UDP的首部格式(UDP頭):
  • 源端口,發(fā)送方的端口
  • 目標(biāo)端口,接收方的端口
  • 長(zhǎng)度,首部長(zhǎng)度 + 用戶數(shù)據(jù)包的長(zhǎng)度(可以沒(méi)有數(shù)據(jù)包,所用最小值為8)
  • 檢驗(yàn)和,檢查UDP用戶數(shù)據(jù)傳輸中是否與錯(cuò),有錯(cuò)就丟棄(檢查首部長(zhǎng)度 + 用戶數(shù)據(jù)包)

圖片

二、TCP協(xié)議
A、特點(diǎn):
  • 面向連接的協(xié)議。數(shù)據(jù)傳輸之前都要建立連接(三次揮手),數(shù)據(jù)傳輸結(jié)束都要釋放連接(四次揮手)
  • 一條TCP連接只能有兩個(gè)端點(diǎn),端點(diǎn)是socket(結(jié)構(gòu) IP地址:端口號(hào)),并非主機(jī)或進(jìn)程。
  • 可靠交付
  • 全雙工通信(一端既可以做發(fā)送方也可以做接收方)
  • 面向字節(jié)流

B、為何TCP是可靠的呢?
其實(shí)TCP是依賴停止 等待協(xié)議和連續(xù)ARQ 協(xié)議+滑動(dòng)窗口協(xié)議才達(dá)到可靠的目的
a、等待協(xié)議
  • 特點(diǎn):資源利用率非常低
  • 工作原理:客戶發(fā)送一次數(shù)據(jù)到服務(wù)端,必須等到服務(wù)端響應(yīng)后才發(fā)第二次數(shù)據(jù),中間的等待時(shí)間RTT占了大部分時(shí)間,中間如果出現(xiàn)差錯(cuò)(超時(shí)或確認(rèn)丟失)都需要從新傳輸。
b、連續(xù)ARQ協(xié)議
  • 連續(xù)ARQ協(xié)議工作原理:維持一個(gè)發(fā)送窗口(記錄了當(dāng)前可以發(fā)送的數(shù)據(jù)包數(shù)量n),在窗口內(nèi)的數(shù)據(jù)都可以連續(xù)發(fā)送出去,服務(wù)器只在接收完一個(gè)發(fā)送窗口的數(shù)據(jù)后才回響應(yīng)(累計(jì)確認(rèn)),發(fā)送端接收到響應(yīng)就把發(fā)送窗口移動(dòng)n位,開(kāi)始新一輪數(shù)據(jù)發(fā)送。

以上只是簡(jiǎn)單了解TCP協(xié)議的發(fā)送流程,如果要清楚發(fā)送細(xì)節(jié),必須知道TCP報(bào)文首部

TCP報(bào)文段的首部格式

雖然說(shuō)TCP是面向字節(jié)流的,但是TCP傳輸?shù)臄?shù)據(jù)單元卻是報(bào)文段,報(bào)文段由首部和數(shù)據(jù)兩部分組成,如圖:

圖片

1.源端口和目標(biāo)端口(各占兩字節(jié))

2.序號(hào)(占4字節(jié)):TCP連接傳輸?shù)臄?shù)據(jù)每一個(gè)字節(jié)都有一個(gè)序號(hào),而一個(gè)報(bào)文段可能會(huì)有多個(gè)字節(jié)的數(shù)據(jù),這個(gè)序號(hào)指的是TCP報(bào)文段中起始的序號(hào),下一個(gè)報(bào)文段的序號(hào)則是該序號(hào)加上報(bào)文數(shù)據(jù)長(zhǎng)度(三次握手和四次揮手時(shí)說(shuō)的SYN或ACK會(huì)消耗一個(gè)序號(hào)就是指該序號(hào))

3.確認(rèn)號(hào)(占4字節(jié)):因?yàn)橐淮螖?shù)據(jù)傳輸會(huì)分成多個(gè)報(bào)文段,接收方接收完一次報(bào)文段后如果要發(fā)送確認(rèn)(有可能不用確認(rèn),因?yàn)槭墙邮胀臧l(fā)送窗口的報(bào)文段才確認(rèn)的),則會(huì)攜帶一個(gè)確認(rèn)號(hào),表示接收方想要接收的下一個(gè)報(bào)文的序號(hào)

4.數(shù)據(jù)偏移(占4字位):數(shù)據(jù)部分的起始位置離報(bào)文段起始位置的距離,就是報(bào)文首部的長(zhǎng)度,單位是4字節(jié),所以4位能表示最大值是十進(jìn)制的15,就是15 x 4字節(jié) = 60字節(jié),TCP報(bào)文首部最大長(zhǎng)度為60字節(jié)

5.保留(占6位):未被使用,全置為0

6.緊急URG:當(dāng)URG=1時(shí)緊急數(shù)據(jù)才有效。注意,這里URG并不是緊急數(shù)據(jù),只是一個(gè)標(biāo)志,標(biāo)志著緊急數(shù)據(jù)是否有效

7.確認(rèn)ACK:當(dāng)ACK=1時(shí)確認(rèn)號(hào)才有效,當(dāng)建立連接后全部傳輸?shù)膱?bào)文都要把ACK設(shè)置為1

8.推送PSH:接收方機(jī)器會(huì)有一個(gè)接收,當(dāng)接收緩存慢了才回把接收到的數(shù)據(jù)交付到接收應(yīng)用進(jìn)程中,而如果發(fā)送端把報(bào)文的PSH設(shè)為1,接收方接收到該報(bào)文會(huì)立即交付到應(yīng)用的進(jìn)程中

9.復(fù)位RST:兩個(gè)作用,1、當(dāng)RST=1時(shí),表示TCP連接中出現(xiàn)嚴(yán)重差錯(cuò),必須釋放連接,然后重新建立運(yùn)輸連接。2、當(dāng)RST=1時(shí),拒絕一個(gè)非法的報(bào)文段或拒絕打開(kāi)一個(gè)連接。

10.同步SYN:用于同步序號(hào)(告訴另外一方,他們之間從該序號(hào)開(kāi)始傳輸報(bào)文段),當(dāng)SYN=1,ACK=0表示這時(shí)一個(gè)連接請(qǐng)求報(bào)文。

11.終止FIN:用于釋放一個(gè)連接。當(dāng)FIN=1時(shí),表明此報(bào)文的發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢,并要求釋放運(yùn)輸連接。

12.窗口(占2字節(jié)),是一個(gè)接收窗口,接收方允許發(fā)送方發(fā)送的數(shù)據(jù)量

13.檢驗(yàn)和(占2字節(jié)):檢驗(yàn)接收過(guò)來(lái)的報(bào)文段(報(bào)文首部和用戶數(shù)據(jù))是否有誤

14.緊急指針(占2字節(jié)):當(dāng)URG=1時(shí)才有效,指出緊急數(shù)據(jù)未尾位置(開(kāi)始位置是整個(gè)報(bào)文段中用戶數(shù)據(jù)的開(kāi)頭)

15.選項(xiàng),長(zhǎng)度可變,最長(zhǎng)40字節(jié)

那到底TCP是如何實(shí)現(xiàn)可靠傳輸?shù)哪兀?/span>


TCP可靠傳輸?shù)膶?shí)現(xiàn)

一、通過(guò)滑動(dòng)窗口來(lái)發(fā)送數(shù)據(jù)
圖片
  • 發(fā)送窗口有兩部分組成,已發(fā)送的報(bào)文段 和 能夠發(fā)送但未發(fā)送的報(bào)文段(等待已發(fā)送報(bào)文段全部接收完發(fā)回來(lái)的確認(rèn)就可以發(fā)送了)
  • 當(dāng)收到確認(rèn)后發(fā)送窗口會(huì)向右移動(dòng)到7位置,作為窗口的起始位置。
  • 發(fā)送窗口,發(fā)送窗口有可能會(huì)收縮(因?yàn)榻邮沾翱谟锌赡芤驗(yàn)榻邮站彺娌粔蚨冃。?/span>

二、超時(shí)重傳時(shí)間的選擇
采用一個(gè)根據(jù)RTT動(dòng)態(tài)計(jì)算的時(shí)間,并不是直接采用一個(gè)固定的時(shí)間
RTT:發(fā)送一個(gè)報(bào)文段到收到對(duì)應(yīng)的ACK所花費(fèi)的時(shí)間
RTO:超時(shí)重傳時(shí)間
RTTs是一個(gè)加權(quán)平均RTT時(shí)間
RTTd是RTTs偏差的加權(quán)平均
RTO = RTTs + 4 * RTTd
如果發(fā)生了重傳 ,這次的RTT會(huì)讓RTTs會(huì)變大,此時(shí)是不會(huì)用該RTT來(lái)計(jì)算RTTs的

三、確認(rèn)SACK
是一個(gè)TCP報(bào)文首部的選項(xiàng)。
當(dāng)數(shù)據(jù)傳輸過(guò)程中,接收方可能會(huì)未按順收到部分報(bào)文段,此時(shí)序號(hào)告訴發(fā)送方從新傳輸這些報(bào)文段,SACK選項(xiàng)就是用于告訴發(fā)送方需要傳輸那些報(bào)文段的


TCP傳輸連接管理

連接的三個(gè)階段:建立連接、數(shù)據(jù)傳輸、連接釋放
在建立連接的過(guò)程中要解決三個(gè)問(wèn)題:
1、使每一方都知道對(duì)方的存在
2、協(xié)商一些參數(shù)
3、能夠運(yùn)輸實(shí)體資源

主動(dòng)建立連接的一端叫客戶端,被動(dòng)等待連接建立的一方叫服務(wù)器


連接建立(三次握手)

圖片
每次發(fā)送一個(gè)seq時(shí),都會(huì)消耗一個(gè)序號(hào),所以會(huì)發(fā)現(xiàn)在確認(rèn)時(shí),ack總等于另一端請(qǐng)求的seq+1

為何需要第三次握手?

假設(shè)沒(méi)有第三次握手(即A再次確認(rèn))
在很久很久以前,A發(fā)了一個(gè)連接請(qǐng)求給B,但是網(wǎng)絡(luò)滯留的原因,請(qǐng)求沒(méi)有到達(dá)B,所以B也沒(méi)有確認(rèn)返回給A,所以A右發(fā)送了一個(gè)連接請(qǐng)求給B,此時(shí)B收到了連接請(qǐng)求并返回了一個(gè)確認(rèn)給A,此時(shí)連端開(kāi)始愉快的數(shù)據(jù)傳輸之旅。當(dāng)傳輸結(jié)束時(shí),分別斷開(kāi)連接,各自干各自的活兒。但是過(guò)了一段時(shí)間,之間滯留在網(wǎng)絡(luò)中的A發(fā)出的連接請(qǐng)求到達(dá)了B中,B以為A又要傳輸數(shù)據(jù),便右回了一個(gè)確認(rèn)給A,但是A并不需要輸出傳輸,也沒(méi)有理會(huì)這個(gè)確認(rèn),而B(niǎo)卻在傻傻等待A傳輸數(shù)據(jù),這個(gè)就會(huì)浪費(fèi)B的資源。
但是如果有第三次A的確認(rèn),A這個(gè)滯留的連接傳給B,B返回一個(gè)確認(rèn),但是A不想傳輸數(shù)據(jù)了,便沒(méi)有回一個(gè)確認(rèn)給B(第三次握手),B沒(méi)有收到該確認(rèn)也不會(huì)等待A傳輸數(shù)據(jù)。

連接釋放(四次揮手)

圖片
第一次揮手:客戶端發(fā)送連接,F(xiàn)IN=1標(biāo)志著A已經(jīng)完成了數(shù)據(jù)的發(fā)送。

第二次揮手:B回了一個(gè)確認(rèn),此時(shí)A與B的發(fā)送連接就斷開(kāi)了。

第三次揮手:因?yàn)門CP連接是全雙工通信的,B還保留著一個(gè)對(duì)A大發(fā)送連接,如果等到B也不需要發(fā)送數(shù)據(jù)給A時(shí),B會(huì)發(fā)送一個(gè)連接給A,seq等于一個(gè)大于或等于v的值(因?yàn)锳與B斷開(kāi)發(fā)送連接到B與A斷開(kāi)發(fā)送連接期間有可能B向A發(fā)送了數(shù)據(jù),就是消耗序號(hào))。

第四次揮手:當(dāng)A收到B的連接時(shí),要回一個(gè)響應(yīng)給B,但是此時(shí)會(huì)有一個(gè)2MSL長(zhǎng)的等待時(shí)間,時(shí)間一過(guò),就真正的斷開(kāi)與B的全部連接了。

為什么需要2MSL的等待時(shí)間?

MSL:最長(zhǎng)報(bào)文壽命
當(dāng)A發(fā)送確認(rèn)給A后,如果此時(shí)出現(xiàn)了一些狀況(連接被丟棄等),確認(rèn)無(wú)法到達(dá)B中,B會(huì)重新發(fā)送一個(gè)連接給A,但是A就停止了,B就一直等待(其實(shí)有一個(gè)?;顣r(shí)間)。
如果有了這個(gè)等待時(shí)間,就算A的ACK確認(rèn)丟失了,B也會(huì)再?gòu)男掳l(fā)送一個(gè)連接給A,A接收到該連接后,會(huì)從新計(jì)算等待時(shí)間。A會(huì)再確認(rèn)一次


應(yīng)用層

一、HTTP協(xié)議
特點(diǎn):
  • 支持客戶端 / 服務(wù)器模式
  • 簡(jiǎn)單快速
  • 靈活
  • 無(wú)連接,在完成一次請(qǐng)求獲得響應(yīng)后就會(huì)斷開(kāi)
  • 無(wú)狀態(tài),沒(méi)有記憶的,請(qǐng)求完一次后,就結(jié)束了,后面如果要再獲得數(shù)據(jù)必須從新請(qǐng)求

請(qǐng)求報(bào)文的結(jié)構(gòu)
圖片
請(qǐng)求頭部:用于設(shè)置請(qǐng)求的的一些參數(shù)如:ContentType
請(qǐng)求空行:就算請(qǐng)求數(shù)據(jù)為空,都要有空行,表示請(qǐng)求首部的結(jié)束

從瀏覽器地址欄鍵入U(xiǎn)RL,回車后會(huì)盡力的流程:
  • DNS解析
  • TCP連接
  • 發(fā)送HTTP請(qǐng)求
  • 服務(wù)器處理請(qǐng)求,并返回HTTP報(bào)文
  • 瀏覽器解析渲染頁(yè)面
  • 連接結(jié)束
  • GET請(qǐng)求與POST請(qǐng)求的區(qū)別

HTTP報(bào)文層面:GET請(qǐng)求信息放在URL中,POST放在報(bào)文體中
數(shù)據(jù)庫(kù)層面:GET符合冪等性和安全性,POST不符合
其他層面:GET可以被緩存、儲(chǔ)存,而POST不行

Cookie和Session的區(qū)別

為什么會(huì)有這兩種技術(shù)?
  • 在使用一些需要登錄的網(wǎng)站時(shí),每次訪問(wèn),都會(huì)需要驗(yàn)證個(gè)人信息,即登錄。這樣做比較繁瑣,能否將個(gè)人的賬號(hào)和密碼存起來(lái),訪問(wèn)的時(shí)候直接用存取來(lái)的個(gè)人信息進(jìn)行驗(yàn)證呢?解決這個(gè)問(wèn)題的就是Cookie和Session
  • Cookie:通過(guò)客戶端(瀏覽器)來(lái)緩存?zhèn)€人信息。當(dāng)用戶第一次登錄時(shí),服務(wù)器會(huì)將個(gè)人信息放在了響應(yīng)中, 瀏覽器接收到響應(yīng)時(shí)候會(huì)將個(gè)人信息以Cookie的形式訪問(wèn)瀏覽器中保存起來(lái),在下一次訪問(wèn)服務(wù)器的時(shí)候會(huì)帶上該Cookie,Cookie中有個(gè)人信息,服務(wù)器能解析出來(lái),所以不同再次登錄驗(yàn)證了。(不夠安全,對(duì)服務(wù)器的開(kāi)銷小)
    圖片
  • Session通過(guò)服務(wù)端來(lái)緩存信息,根據(jù)請(qǐng)求中是否包含Session id的字段,如果不存在則創(chuàng)建一個(gè),并返回給瀏覽器緩存起來(lái)。如果存在則通過(guò)該Session id在服務(wù)器存儲(chǔ)中獲得對(duì)應(yīng)的Session信息,直接驗(yàn)證。(安全,服務(wù)器的開(kāi)銷變大)
圖片

HTTP與HTTPS的區(qū)別:

1、HTTPS需要到CA申請(qǐng)證書,HTTP不需要
2、HTTPS密文傳輸、HTTP明文傳輸
3、連接方式不同,HTTPS默認(rèn)使用443端口,HTTP使用80端口
4、HTTPS = HTTP + 加密+認(rèn)證+完整性保護(hù),較HTTP安全

其實(shí)也不一定就安全,原因是用戶不會(huì)再訪問(wèn)時(shí)候加上http:// 或 https://, 瀏覽器就默認(rèn)會(huì)加上http://,然后通過(guò)轉(zhuǎn)發(fā)的方式轉(zhuǎn)成https:// 這個(gè)過(guò)程http就有可能會(huì)被劫持了。

此時(shí)會(huì)用到一個(gè)技術(shù) HSTS(HTTP Strict Transort Security)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日韩精品亚洲精品国产精品| 国产欧美精品对白性色| 日韩精品一区二区三区射精| 国产精品流白浆无遮挡| 午夜福利网午夜福利网| 97人妻精品一区二区三区男同| 激情丁香激情五月婷婷| 中文字幕禁断介一区二区| 夫妻激情视频一区二区三区| 亚洲香艳网久久五月婷婷| 国产乱人伦精品一区二区三区四区| 亚洲国产色婷婷久久精品| 国产成人午夜在线视频| 风韵人妻丰满熟妇老熟女av| 国产精品一区二区丝袜| 中国少妇精品偷拍视频| 中文字幕欧美视频二区| 日韩精品免费一区二区三区| 99一级特黄色性生活片| 中文字幕日韩无套内射| 91蜜臀精品一区二区三区| 国产成人精品99在线观看| 暴力三级a特黄在线观看| 国产一区二区不卡在线播放| 青青久久亚洲婷婷中文网| 草草夜色精品国产噜噜竹菊| 人妻少妇系列中文字幕| 日本人妻精品有码字幕| 亚洲中文字幕在线综合视频| 亚洲精品伦理熟女国产一区二区 | 美女露小粉嫩91精品久久久| 视频一区二区 国产精品| 亚洲一级在线免费观看| 国产一区二区熟女精品免费| 亚洲一区二区三区在线免费| 好吊日在线观看免费视频| 国产永久免费高清在线精品| 亚洲欧美国产网爆精品| 人妻乱近亲奸中文字幕| 色偷偷偷拍视频在线观看| 欧美中文字幕一区在线|