一、網(wǎng)絡(luò)協(xié)議層次
二、數(shù)據(jù)在網(wǎng)絡(luò)體系中的流向
1.應(yīng)用層
????應(yīng)用層的數(shù)據(jù)就是我們寫的代碼的內(nèi)容。比如我要傳一個(gè)字符串 “hello wolrd” 到目的主機(jī),那么報(bào)文M就表示的是 hello world 的二進(jìn)制(0 1)形式。
????應(yīng)用層就是我們主機(jī)的應(yīng)用程序的那一層。比如你用 visual studio運(yùn)行了你寫好的代碼程序,正在運(yùn)行的代碼程序就叫作應(yīng)用程序。對(duì)于windows來說,單運(yùn)行visual studio這個(gè)軟件也叫作應(yīng)用程序。visual studio這種軟件底層也是寫好的代碼和控件,你運(yùn)行這個(gè)軟件,也就是運(yùn)行了這個(gè)代碼程序。
2.傳輸層(運(yùn)輸層)
????運(yùn)輸層是建立 “端口到端口” 的通信。主要以TCP/UDP協(xié)議為主。當(dāng)數(shù)據(jù)(M)從 應(yīng)用層 到 運(yùn)輸層 后,為 報(bào)文M 添加 Ht 頭部。這個(gè)頭部以TCP協(xié)議為例。結(jié)構(gòu)為:
????也就是說,Ht 頭部共20個(gè)字節(jié)(一般情況下是沒有可選長(zhǎng)度字段和填充字段的),其中端口號(hào)字段(4字節(jié))實(shí)現(xiàn)了 “端口到端口” 的通信,通過抓包數(shù)據(jù):
????如果傳輸層采用UDP協(xié)議,UDP的頭部結(jié)構(gòu)總共8個(gè)字節(jié),UDP協(xié)議會(huì)為報(bào)文M增加一個(gè)8字節(jié)的頭部 Ht 組成傳輸層的數(shù)據(jù)段 Ht + M
3.網(wǎng)絡(luò)層
????網(wǎng)絡(luò)層建立 “主機(jī)到主機(jī)” 的通信。傳輸層的 數(shù)據(jù)段 Ht + M 到達(dá)網(wǎng)絡(luò)層之后,網(wǎng)絡(luò)層將添加IP協(xié)議數(shù)據(jù)報(bào)頭 Hn 一起組成 數(shù)據(jù)報(bào) Hn + Ht + M 傳到數(shù)據(jù)鏈路層。一般情況下也是20個(gè)字節(jié),可選字段和填充字段一般不設(shè)置。
????網(wǎng)絡(luò)層包括著名的網(wǎng)際協(xié)議(IP協(xié)議),該協(xié)議定義了在數(shù)據(jù)報(bào)中的各個(gè)字段以及端系統(tǒng)和路由器如何作用于這些字段。IP僅有一個(gè),所有具有網(wǎng)絡(luò)層的因特網(wǎng)組件必須運(yùn)行IPo因特網(wǎng)的網(wǎng)絡(luò)層也包括決定路由的路由選擇協(xié)議,它根據(jù)該路由將數(shù)據(jù)報(bào)從源傳輸?shù)侥康牡?。盡管網(wǎng)絡(luò)層包括了網(wǎng)際協(xié)議和一些路由選擇協(xié)議,但通常把它簡(jiǎn)單地稱為IP層,這反映了IP是將因特網(wǎng)連接在一起的黏合劑這樣的事實(shí)。
4.數(shù)據(jù)鏈路層
????數(shù)據(jù)鏈路層主要是將網(wǎng)絡(luò)層的傳下來的數(shù)據(jù)加上數(shù)據(jù)鏈路層的頭部 Hi 封裝成 幀 Hi + Hn + Ht + M。數(shù)據(jù)鏈路層的頭部數(shù)據(jù)共 14個(gè)字節(jié) 加上 幀尾添加的FCS字段 4個(gè)字節(jié)一起組成一個(gè)完整的一幀。這幅圖有一點(diǎn)小問題,目的地址指的是目的MAC地址,不是ip地址,ip地址是網(wǎng)絡(luò)層的頭部字段。源地址同理。
????這里可以看到數(shù)據(jù)鏈路層將幀傳到 物理層,物理層添加的頭部一共8個(gè)字節(jié):前同步碼(7 字節(jié))+幀定界符(1 字節(jié))。
????從這張圖可以看出,幀的數(shù)據(jù)部分必須要在 46個(gè)字節(jié) ~ 1500字節(jié)之間。1500個(gè)字節(jié)是因?yàn)镸TU(最大傳輸傳輸單元)的限制。那為啥最少還要限制要46個(gè)字節(jié)(算上幀頭幀尾一共64字節(jié))?
????假設(shè)當(dāng)主機(jī)A、B都要向C發(fā)送數(shù)據(jù)。我們知道主機(jī)C是不能同時(shí)recv(同一端點(diǎn)的同一信道上)兩方發(fā)來的數(shù)據(jù)的,只能接受一方的send。當(dāng)A檢測(cè)到網(wǎng)絡(luò)是空閑的,開始發(fā)數(shù)據(jù)包到C,盡力傳輸,當(dāng)數(shù)據(jù)包還沒有到達(dá)C時(shí),B也監(jiān)測(cè)到網(wǎng)絡(luò)是空閑的,開始發(fā)數(shù)據(jù)包,這時(shí)就會(huì)發(fā)生碰撞,B首先發(fā)現(xiàn)發(fā)生碰撞,開始發(fā)送碰撞信號(hào),所謂碰撞信號(hào),就是連續(xù)的01010101或者10101010,十六進(jìn)制就是55或AA。這個(gè)碰撞信號(hào)會(huì)返回到A,如果碰撞信號(hào)到達(dá)A時(shí),A還沒有發(fā)完這個(gè)數(shù)據(jù)包,A就知道這個(gè)數(shù)據(jù)包發(fā)生了錯(cuò)誤(這個(gè)錯(cuò)誤用疊加數(shù)據(jù)解釋比較好理解),就會(huì)重傳這個(gè)數(shù)據(jù)包。但如果碰撞信號(hào)返回到A時(shí),數(shù)據(jù)包已經(jīng)發(fā)完,則A不會(huì)重傳這個(gè)數(shù)據(jù)包。
????要保證以太網(wǎng)的重傳,必須保證A收到碰撞信號(hào)的時(shí)候,數(shù)據(jù)包沒有傳完,要實(shí)現(xiàn)這一要求,A和B之間的距離很關(guān)鍵,也就是說信號(hào)在A和B之間傳輸?shù)膩砘貢r(shí)間必須控制在一定范圍之內(nèi)。IEEE定義了這個(gè)標(biāo)準(zhǔn),一個(gè)碰撞域內(nèi),最遠(yuǎn)的兩臺(tái)機(jī)器之間的round-trip time 要小于512bit time.(來回時(shí)間小于512位時(shí),所謂位時(shí)就是傳輸一個(gè)比特需要的時(shí)間)。這也是我們常說的一個(gè)碰撞域的直徑。
????512個(gè)位時(shí),也就是64字節(jié)的傳輸時(shí)間,如果以太網(wǎng)數(shù)據(jù)包大于或等于64個(gè)字節(jié),就能保證碰撞信號(hào)到達(dá)A的時(shí)候,數(shù)據(jù)包還沒有傳完。這就是為什么以太網(wǎng)要最小64個(gè)字節(jié),同樣,在正常的情況下,碰撞信號(hào)應(yīng)該出現(xiàn)在64個(gè)字節(jié)之內(nèi),這是正常的以太網(wǎng)碰撞,如果碰撞信號(hào)出現(xiàn)在64個(gè)字節(jié)之后,叫 late collision。這是不正常的。
????總結(jié):最小數(shù)據(jù)幀的設(shè)計(jì)原因和以太網(wǎng)電纜長(zhǎng)度有關(guān),為的是讓兩個(gè)相距最遠(yuǎn)的站點(diǎn)能夠感知到雙方的數(shù)據(jù)發(fā)生了碰撞;最遠(yuǎn)兩端數(shù)據(jù)的往返時(shí)間就是爭(zhēng)用期,以太網(wǎng)的爭(zhēng)用期是51.2微妙,正好發(fā)送64byte數(shù)據(jù)文章來源:http://www.zghlxwxcb.cn/news/detail-777283.html
三、總結(jié)
????通過 二標(biāo)題 中的網(wǎng)絡(luò)數(shù)據(jù)流向可以知道。數(shù)據(jù)流向哪一層時(shí)就要添加或者去掉哪一層的頭部。傳輸層頭部字段有端口號(hào),到達(dá)下一層網(wǎng)絡(luò)層就有了ip地址,再流到數(shù)據(jù)鏈路層就有了MAC地址。一步步尋址,最終找到對(duì)應(yīng)的目的主機(jī)。并往上一層層去掉頭部還原應(yīng)用層我們r(jià)ecv到的原始數(shù)據(jù)。本文還加了抓包圖,可以對(duì)照抓包的數(shù)據(jù)一個(gè)個(gè)字段看,可以發(fā)現(xiàn)每一個(gè)字段的值和抓包的16進(jìn)制值(換算)是一致的。文章來源地址http://www.zghlxwxcb.cn/news/detail-777283.html
到了這里,關(guān)于【計(jì)算機(jī)網(wǎng)絡(luò)】網(wǎng)絡(luò)協(xié)議五層模型下的各層數(shù)據(jù)傳輸?shù)慕Y(jié)構(gòu)(以TCP包為例)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!