2022-02-07 計(jì)算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識(shí)

計(jì)算機(jī)網(wǎng)絡(luò)?https://www.runoob.com/w3cnote/summary-of-network.html#_label11

網(wǎng)絡(luò)協(xié)議是為計(jì)算機(jī)網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)交換而建立的規(guī)則、標(biāo)準(zhǔn)或者說(shuō)是約定的集合。

1.?計(jì)算機(jī)網(wǎng)絡(luò) 七層模型

網(wǎng)絡(luò)標(biāo)準(zhǔn)層次模型

自頂向下:應(yīng)用層财骨、表示層念搬、會(huì)話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層罩抗。

應(yīng)用層:處理網(wǎng)絡(luò)應(yīng)用。

表示層:數(shù)據(jù)表示灿椅。

會(huì)話層:互連主機(jī)通信套蒂。

傳輸層:端到端連接钞支。舉例:TCP、UDP

網(wǎng)絡(luò)層:尋址和最短路徑操刀。舉例:IP

數(shù)據(jù)鏈路層:接入介質(zhì)烁挟。

物理層:二進(jìn)制傳輸。







HTTP協(xié)議

超文本傳輸協(xié)議(HTTP骨坑,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議撼嗓。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)。  HTTP?協(xié)議包括哪些請(qǐng)求欢唾?

GET:請(qǐng)求讀取由URL所標(biāo)志的信息且警。

POST:給服務(wù)器添加信息(如注釋)。

PUT:在給定的URL下存儲(chǔ)一個(gè)文檔礁遣。

DELETE:刪除給定的URL所標(biāo)志的資源斑芜。

  HTTP?中,?POST??GET?的區(qū)別

1)Get是從服務(wù)器上獲取數(shù)據(jù)亡脸,Post是向服務(wù)器傳送數(shù)據(jù)押搪。

2)Get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的Action屬性所指向的URL中树酪,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng)浅碾,在URL中可以看到。

3)Get傳送的數(shù)據(jù)量小续语,不能大于2KB垂谢;Post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制疮茄。

4)根據(jù)HTTP規(guī)范滥朱,GET用于信息獲取,而且應(yīng)該是安全的和冪等的力试。

I. 所謂安全的意味著該操作用于獲取信息而非修改信息徙邻。換句話說(shuō),GET請(qǐng)求一般不應(yīng)產(chǎn)生副作用畸裳。就是說(shuō)缰犁,它僅僅是獲取資源信息,就像數(shù)據(jù)庫(kù)查詢一樣怖糊,不會(huì)修改帅容,增加數(shù)據(jù),不會(huì)影響資源的狀態(tài)伍伤。

II.冪等的意味著對(duì)同一URL的多個(gè)請(qǐng)求應(yīng)該返回同樣的結(jié)果并徘。





TCP協(xié)議

TCP三次握手


PS:TCP協(xié)議中,主動(dòng)發(fā)起請(qǐng)求的一端稱為『客戶端』扰魂,被動(dòng)連接的一端稱為『服務(wù)端』麦乞。不管是客戶端還是服務(wù)端蕴茴,TCP連接建立完后都能發(fā)送和接收數(shù)據(jù)。

起初路幸,服務(wù)器和客戶端都為CLOSED狀態(tài)荐开。在通信開始前,雙方都得創(chuàng)建各自的傳輸控制塊(TCB)简肴。 服務(wù)器創(chuàng)建完TCB后便進(jìn)入LISTEN狀態(tài)晃听,此時(shí)準(zhǔn)備接收客戶端發(fā)來(lái)的連接請(qǐng)求。

第一次握手

客戶端向服務(wù)端發(fā)送連接請(qǐng)求報(bào)文段砰识。該報(bào)文段的頭部中SYN=1能扒,ACK=0,seq=x辫狼。請(qǐng)求發(fā)送后初斑,客戶端便進(jìn)入SYN-SENT狀態(tài)。

PS1:SYN=1膨处,ACK=0表示該報(bào)文段為連接請(qǐng)求報(bào)文见秤。

PS2:x為本次TCP通信的字節(jié)流的初始序號(hào)。

TCP規(guī)定:SYN=1的報(bào)文段不能有數(shù)據(jù)部分真椿,但要消耗掉一個(gè)序號(hào)鹃答。

第二次握手

服務(wù)端收到連接請(qǐng)求報(bào)文段后,如果同意連接突硝,則會(huì)發(fā)送一個(gè)應(yīng)答:SYN=1测摔,ACK=1,seq=y解恰,ack=x+1锋八。 該應(yīng)答發(fā)送完成后便進(jìn)入SYN-RCVD狀態(tài)。

PS1:SYN=1护盈,ACK=1表示該報(bào)文段為連接同意的應(yīng)答報(bào)文挟纱。

PS2:seq=y表示服務(wù)端作為發(fā)送者時(shí),發(fā)送字節(jié)流的初始序號(hào)腐宋。

PS3:ack=x+1表示服務(wù)端希望下一個(gè)數(shù)據(jù)報(bào)發(fā)送序號(hào)從x+1開始的字節(jié)紊服。

第三次握手

當(dāng)客戶端收到連接同意的應(yīng)答后,還要向服務(wù)端發(fā)送一個(gè)確認(rèn)報(bào)文段脏款,表示:服務(wù)端發(fā)來(lái)的連接同意應(yīng)答已經(jīng)成功收到围苫。 該報(bào)文段的頭部為:ACK=1,seq=x+1撤师,ack=y+1剂府。 客戶端發(fā)完這個(gè)報(bào)文段后便進(jìn)入ESTABLISHED狀態(tài),服務(wù)端收到這個(gè)應(yīng)答后也進(jìn)入ESTABLISHED狀態(tài)剃盾,此時(shí)連接的建立完成腺占!

為什么連接建立需要三次握手淤袜,而不是兩次握手?

防止失效的連接請(qǐng)求報(bào)文段被服務(wù)端接收衰伯,從而產(chǎn)生錯(cuò)誤铡羡。

PS:失效的連接請(qǐng)求:若客戶端向服務(wù)端發(fā)送的連接請(qǐng)求丟失,客戶端等待應(yīng)答超時(shí)后就會(huì)再次發(fā)送連接請(qǐng)求意鲸,此時(shí)烦周,上一個(gè)連接請(qǐng)求就是『失效的』。

若建立連接只需兩次握手怎顾,客戶端并沒(méi)有太大的變化读慎,仍然需要獲得服務(wù)端的應(yīng)答后才進(jìn)入ESTABLISHED狀態(tài),而服務(wù)端在收到連接請(qǐng)求后就進(jìn)入ESTABLISHED狀態(tài)槐雾。此時(shí)如果網(wǎng)絡(luò)擁塞夭委,客戶端發(fā)送的連接請(qǐng)求遲遲到不了服務(wù)端,客戶端便超時(shí)重發(fā)請(qǐng)求募强,如果服務(wù)端正確接收并確認(rèn)應(yīng)答株灸,雙方便開始通信,通信結(jié)束后釋放連接擎值。此時(shí)慌烧,如果那個(gè)失效的連接請(qǐng)求抵達(dá)了服務(wù)端,由于只有兩次握手幅恋,服務(wù)端收到請(qǐng)求就會(huì)進(jìn)入ESTABLISHED狀態(tài)杏死,等待發(fā)送數(shù)據(jù)或主動(dòng)發(fā)送數(shù)據(jù)泵肄。但此時(shí)的客戶端早已進(jìn)入CLOSED狀態(tài)捆交,服務(wù)端將會(huì)一直等待下去,這樣浪費(fèi)服務(wù)端連接資源腐巢。

TCP四次揮手


TCP連接的釋放一共需要四步品追,因此稱為『四次揮手』。 我們知道冯丙,TCP連接是雙向的肉瓦,因此在四次揮手中,前兩次揮手用于斷開一個(gè)方向的連接胃惜,后兩次揮手用于斷開另一方向的連接泞莉。

第一次揮手

若A認(rèn)為數(shù)據(jù)發(fā)送完成,則它需要向B發(fā)送連接釋放請(qǐng)求船殉。該請(qǐng)求只有報(bào)文頭鲫趁,頭中攜帶的主要參數(shù)為: FIN=1,seq=u利虫。此時(shí)挨厚,A將進(jìn)入FIN-WAIT-1狀態(tài)堡僻。

PS1:FIN=1表示該報(bào)文段是一個(gè)連接釋放請(qǐng)求。

PS2:seq=u疫剃,u-1是A向B發(fā)送的最后一個(gè)字節(jié)的序號(hào)钉疫。

第二次揮手

B收到連接釋放請(qǐng)求后,會(huì)通知相應(yīng)的應(yīng)用程序巢价,告訴它A向B這個(gè)方向的連接已經(jīng)釋放牲阁。此時(shí)B進(jìn)入CLOSE-WAIT狀態(tài),并向A發(fā)送連接釋放的應(yīng)答壤躲,其報(bào)文頭包含: ACK=1咨油,seq=v,ack=u+1柒爵。

PS1:ACK=1:除TCP連接請(qǐng)求報(bào)文段以外役电,TCP通信過(guò)程中所有數(shù)據(jù)報(bào)的ACK都為1,表示應(yīng)答棉胀。

PS2:seq=v法瑟,v-1是B向A發(fā)送的最后一個(gè)字節(jié)的序號(hào)。

PS3:ack=u+1表示希望收到從第u+1個(gè)字節(jié)開始的報(bào)文段唁奢,并且已經(jīng)成功接收了前u個(gè)字節(jié)霎挟。

A收到該應(yīng)答,進(jìn)入FIN-WAIT-2狀態(tài)麻掸,等待B發(fā)送連接釋放請(qǐng)求酥夭。

第二次揮手完成后,A到B方向的連接已經(jīng)釋放脊奋,B不會(huì)再接收數(shù)據(jù)熬北,A也不會(huì)再發(fā)送數(shù)據(jù)。但B到A方向的連接仍然存在诚隙,B可以繼續(xù)向A發(fā)送數(shù)據(jù)讶隐。

第三次揮手

當(dāng)B向A發(fā)完所有數(shù)據(jù)后,向A發(fā)送連接釋放請(qǐng)求久又,請(qǐng)求頭:FIN=1巫延,ACK=1,seq=w地消,ack=u+1炉峰。B便進(jìn)入LAST-ACK狀態(tài)。

第四次揮手

A收到釋放請(qǐng)求后脉执,向B發(fā)送確認(rèn)應(yīng)答疼阔,此時(shí)A進(jìn)入TIME-WAIT狀態(tài)。該狀態(tài)會(huì)持續(xù)2MSL時(shí)間适瓦,若該時(shí)間段內(nèi)沒(méi)有B的重發(fā)請(qǐng)求的話竿开,就進(jìn)入CLOSED狀態(tài)谱仪,撤銷TCB。當(dāng)B收到確認(rèn)應(yīng)答后否彩,也便進(jìn)入CLOSED狀態(tài)疯攒,撤銷TCB。

為什么A要先進(jìn)入TIME-WAIT狀態(tài)列荔,等待2MSL時(shí)間后才進(jìn)入CLOSED狀態(tài)敬尺?

為了保證B能收到A的確認(rèn)應(yīng)答。 若A發(fā)完確認(rèn)應(yīng)答后直接進(jìn)入CLOSED狀態(tài)贴浙,那么如果該應(yīng)答丟失砂吞,B等待超時(shí)后就會(huì)重新發(fā)送連接釋放請(qǐng)求,但此時(shí)A已經(jīng)關(guān)閉了崎溃,不會(huì)作出任何響應(yīng)蜻直,因此B永遠(yuǎn)無(wú)法正常關(guān)閉。



在瀏覽器中輸入?http://www.baidu.com/?后執(zhí)行的全部過(guò)程袁串。(一次完整的http請(qǐng)求過(guò)程)

整體流程:

  1. DNS域名解析

  2.?建立TCP連接

  3.?發(fā)送HTTP請(qǐng)求

  4.?服務(wù)器處理請(qǐng)求

  5.?返回響應(yīng)結(jié)果

  6.?關(guān)閉TCP連接

  7.?瀏覽器解析HTML

  8.?瀏覽器布局渲染

使用的協(xié)議:

  DNS概而、TCP、IP囱修、OSPF(IP數(shù)據(jù)包在路由器中赎瑰,路由選擇協(xié)議)、ARP破镰、HTTP

詳細(xì):

1.DNS域名解析

    在瀏覽器輸入網(wǎng)址餐曼,其實(shí)就是要向服務(wù)器請(qǐng)求我們想要的頁(yè)面內(nèi)容,所以瀏覽器首先要確認(rèn)的是域名所對(duì)應(yīng)的服務(wù)器在哪里鲜漩。

    將域名解析成對(duì)應(yīng)的服務(wù)器IP地址這項(xiàng)工作源譬,是由DNS服務(wù)器來(lái)完成的。

    客戶端收到域名地址后宇整,首先去找本地的hosts文件瓶佳,檢查在該文件中是否有相應(yīng)的域名芋膘、IP對(duì)應(yīng)關(guān)系鳞青,如果有,則向其IP地址發(fā)送請(qǐng)求为朋,如果沒(méi)有臂拓,再去找DNS服務(wù)器。

2.建立TCP連接

    三次握手:請(qǐng)求連接(SYN數(shù)據(jù)包)习寸,確認(rèn)信息(SYN/ACK數(shù)據(jù)包)胶惰,握手結(jié)束(ACK數(shù)據(jù)包)

3.發(fā)起http請(qǐng)求

    與服務(wù)器建立了連接后,就可以向服務(wù)器發(fā)起請(qǐng)求了霞溪。

4.服務(wù)器處理請(qǐng)求

    服務(wù)器端收到請(qǐng)求后的由web服務(wù)器(準(zhǔn)確說(shuō)應(yīng)該是http服務(wù)器)處理請(qǐng)求孵滞。

    web服務(wù)器解析用戶請(qǐng)求中捆,知道了需要調(diào)度哪些資源文件,再通過(guò)相應(yīng)的這些資源文件處理用戶請(qǐng)求和參數(shù)坊饶,并調(diào)用數(shù)據(jù)庫(kù)信息泄伪,最后將結(jié)果通過(guò)web服務(wù)器返回給瀏覽器客戶端。

5.返回響應(yīng)結(jié)果

    在http里匿级,有請(qǐng)求就會(huì)有響應(yīng)蟋滴,哪怕是錯(cuò)誤信息。

    在響應(yīng)結(jié)果中都會(huì)有個(gè)一個(gè)http狀態(tài)碼痘绎,如200津函、301、404孤页、500等尔苦。通過(guò)這個(gè)狀態(tài)碼可以知道服務(wù)器端的處理是否正常,并能了解具體的錯(cuò)誤行施。

6.關(guān)閉TCP連接

    為了避免服務(wù)器與客戶端雙方的資源占用和損耗蕉堰,當(dāng)雙方?jīng)]有請(qǐng)求或響應(yīng)傳遞時(shí),任意一方都可以發(fā)起關(guān)閉請(qǐng)求悲龟。四次揮手屋讶。

7.瀏覽器解析HTML

    瀏覽器需要加載解析的不僅僅是HTML,還包括CSS须教、JS皿渗。以及還要加載圖片、視頻等其他媒體資源轻腺。

    瀏覽器通過(guò)解析HTML乐疆,生成DOM樹,解析CSS贬养,生成CSS規(guī)則樹挤土,然后通過(guò)DOM樹和CSS規(guī)則樹生成渲染樹。

    渲染樹與DOM樹不同误算,渲染樹中并沒(méi)有head仰美、display為none等不必顯示的節(jié)點(diǎn)。

8.瀏覽器布局渲染

    根據(jù)渲染樹布局儿礼,計(jì)算CSS樣式咖杂,即每個(gè)節(jié)點(diǎn)在頁(yè)面中的大小和位置等幾何信息。

    HTML默認(rèn)是流式布局的蚊夫,CSS和js會(huì)打破這種布局诉字,改變DOM的外觀樣式以及大小和位置。




現(xiàn)在假設(shè)如果我們?cè)诳蛻舳耍蛻舳耍g覽器中輸入 http://www.baidu.com, 而 baidu.com 為要訪問(wèn)的服務(wù)器(服務(wù)器)壤圃,下面詳細(xì)分析客戶端為了訪問(wèn)服務(wù)器而執(zhí)行的一系列關(guān)于協(xié)議的操作:

1)客戶端瀏覽器通過(guò)DNS解析到www.baidu.com的IP地址220.181.27.48陵霉,通過(guò)這個(gè)IP地址找到客戶端到服務(wù)器的路徑∥樯客戶端瀏覽器發(fā)起一個(gè)HTTP會(huì)話到220.161.27.48撩匕,然后通過(guò)TCP進(jìn)行封裝數(shù)據(jù)包,輸入到網(wǎng)絡(luò)層墨叛。

2)在客戶端的傳輸層止毕,把HTTP會(huì)話請(qǐng)求分成報(bào)文段,添加源和目的端口漠趁,如服務(wù)器使用80端口監(jiān)聽客戶端的請(qǐng)求扁凛,客戶端由系統(tǒng)隨機(jī)選擇一個(gè)端口如5000,與服務(wù)器進(jìn)行交換闯传,服務(wù)器把相應(yīng)的請(qǐng)求返回給客戶端的5000端口谨朝。然后使用IP層的IP地址查找目的端。

3)客戶端的網(wǎng)絡(luò)層不用關(guān)系應(yīng)用層或者傳輸層的東西甥绿,主要做的是通過(guò)查找路由表確定如何到達(dá)服務(wù)器字币,期間可能經(jīng)過(guò)多個(gè)路由器,這些都是由路由器來(lái)完成的工作共缕,不作過(guò)多的描述洗出,無(wú)非就是通過(guò)查找路由表決定通過(guò)那個(gè)路徑到達(dá)服務(wù)器。

4)客戶端的鏈路層图谷,包通過(guò)鏈路層發(fā)送到路由器翩活,通過(guò)鄰居協(xié)議查找給定IP地址的MAC地址,然后發(fā)送ARP請(qǐng)求查找目的地址便贵,如果得到回應(yīng)后就可以使用ARP的請(qǐng)求應(yīng)答交換的IP數(shù)據(jù)包現(xiàn)在就可以傳輸了菠镇,然后發(fā)送IP數(shù)據(jù)包到達(dá)服務(wù)器的地址。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末承璃,一起剝皮案震驚了整個(gè)濱河市利耍,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盔粹,老刑警劉巖隘梨,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異玻佩,居然都是意外死亡出嘹,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門咬崔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事垮斯±善停” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵兜蠕,是天一觀的道長(zhǎng)扰肌。 經(jīng)常有香客問(wèn)我,道長(zhǎng)熊杨,這世上最難降的妖魔是什么曙旭? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮晶府,結(jié)果婚禮上桂躏,老公的妹妹穿的比我還像新娘凤薛。我一直安慰自己彤委,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布逊移。 她就那樣靜靜地躺著较沪,像睡著了一般鳞绕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尸曼,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天们何,我揣著相機(jī)與錄音,去河邊找鬼控轿。 笑死垂蜗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的解幽。 我是一名探鬼主播贴见,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼躲株!你這毒婦竟也來(lái)了片部?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤霜定,失蹤者是張志新(化名)和其女友劉穎档悠,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體望浩,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡辖所,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磨德。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缘回。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吆视,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酥宴,到底是詐尸還是另有隱情啦吧,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布拙寡,位于F島的核電站授滓,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏肆糕。R本人自食惡果不足惜般堆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诚啃。 院中可真熱鬧淮摔,春花似錦、人聲如沸绍申。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)极阅。三九已至胃碾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筋搏,已是汗流浹背仆百。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奔脐,地道東北人俄周。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像髓迎,于是被迫代替她去往敵國(guó)和親峦朗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容