2021-02-01 分類: 網(wǎng)站建設(shè)
TCP/IP網(wǎng)絡(luò)模型
TCP/IP模型是互聯(lián)網(wǎng)的基礎(chǔ),它是一系列網(wǎng)絡(luò)協(xié)議的總稱。這些協(xié)議可以劃分為四層,分別為鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
在網(wǎng)絡(luò)體系結(jié)構(gòu)中網(wǎng)絡(luò)通信的建立必須是在通信雙方的對(duì)等層進(jìn)行,不能交錯(cuò)。 在整個(gè)數(shù)據(jù)傳輸過程中,數(shù)據(jù)在發(fā)送端時(shí)經(jīng)過各層時(shí)都要附加上相應(yīng)層的協(xié)議頭和協(xié)議尾(僅數(shù)據(jù)鏈路層需要封裝協(xié)議尾)部分,也就是要對(duì)數(shù)據(jù)進(jìn)行協(xié)議封裝,以標(biāo)識(shí)對(duì)應(yīng)層所用的通信協(xié)議。
OSI七層模型
當(dāng)然在理論上,還有一個(gè)OSI七層模型:物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會(huì)話層、表示層和應(yīng)用層。這是一個(gè)理想模型,由于其復(fù)雜性并沒有被大家廣泛采用。
鏈路層
1 以太網(wǎng)和802封裝
以太網(wǎng)封裝是以RFC894定義的 而802封裝則是RFC1042定義的 主機(jī)需求RFC要求: (1)必須支持以太網(wǎng)封裝 (2)應(yīng)該支持與RFC894混合的RFC1042封裝 (3)或許可以發(fā)送RFC1042封裝的分組
2 SLIP
適用于RS-232和高速調(diào)制解調(diào)器接入網(wǎng)絡(luò) (1)以0xC0結(jié)束 (2)對(duì)報(bào)文中的0xC0和ESC字符進(jìn)行轉(zhuǎn)義 缺點(diǎn):沒有辦法通知本端IP到對(duì)端;沒有類型字段;沒有校驗(yàn)和
3 CSLIP
將SLIP報(bào)文中的20字節(jié)IP首部和20字節(jié)TCP首部壓縮為3或5字節(jié)
4 PPP協(xié)議
修正了SLIP協(xié)議的缺陷,支持多種協(xié)議類型;帶數(shù)據(jù)校驗(yàn)和;報(bào)文首部壓縮;雙方可以進(jìn)行IP地址動(dòng)態(tài)協(xié)商(使用IP協(xié)議);鏈路控制協(xié)議可以對(duì)多個(gè)鏈路選項(xiàng)進(jìn)行設(shè)置。
5 環(huán)回接口
用于同一臺(tái)主機(jī)上的程序通過TCP/IP通信。 傳給環(huán)回的數(shù)據(jù)均作為輸入; 傳給該主機(jī)IP地址的數(shù)據(jù)也是送到環(huán)回接口; 廣播和多播數(shù)據(jù)先復(fù)制一份到環(huán)回接口,再送到以太網(wǎng)上。
6 MTU
對(duì)數(shù)據(jù)幀長(zhǎng)度的大限制,如果數(shù)據(jù)分組長(zhǎng)度大于這個(gè)數(shù)值,需要在IP層對(duì)其分片。 注意:發(fā)往以太網(wǎng)的數(shù)據(jù)要考慮路徑MTU
IP網(wǎng)際協(xié)議
IP是TCP/IP中最為核心的協(xié)議,所有的TCP、UDP、ICMP等協(xié)議均以IP數(shù)據(jù)報(bào)的格式傳輸。IP協(xié)議提供不可靠、無連接的服務(wù),它不保證數(shù)據(jù)報(bào)一定可以送達(dá)目的,也不保證數(shù)據(jù)報(bào)的先后次序。
IP首部格式為
注:網(wǎng)絡(luò)字節(jié)序:32bit傳輸?shù)拇涡驗(yàn)?-7bit, 8-15bit, 16-23bit, 24-31bit(即big endian字節(jié)序)
IP路由
IP路由選擇是逐跳進(jìn)行的。IP并不知道到達(dá)任何目的的完整路徑(當(dāng)然,除了那些與主機(jī)直接相連的)。所有的IP路由選擇只為數(shù)據(jù)報(bào)傳輸提供下一站路由器的I P地址。它假定下一站路由器比發(fā)送主機(jī)更接近目的,而且下一站路由器與該主機(jī)是直接相連的。
IP路由選擇主要完成以下這些功能:
1) 搜索路由表,尋找能與目的IP地址完全匹配的表目(網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)都要匹配)。如果找到,則把報(bào)文發(fā)送給該表目指定的下一站路由器或直接連接的網(wǎng)絡(luò)接口(取決于標(biāo)志字段的值)。 2) 搜索路由表,尋找能與目的網(wǎng)絡(luò)號(hào)相匹配的表目。如果找到,則把報(bào)文發(fā)送給該表目指定的下一站路由器或直接連接的網(wǎng)絡(luò)接口(取決于標(biāo)志字段的值)。目的網(wǎng)絡(luò)上的所有主機(jī)都可以通過這個(gè)表目來處置。例如,一個(gè)以太網(wǎng)上的所有主機(jī)都是通過這種表目進(jìn)行尋徑的。這種搜索網(wǎng)絡(luò)的匹配方法必須考慮可能的子網(wǎng)掩碼。關(guān)于這一點(diǎn)我們?cè)谙乱还?jié)中進(jìn)行討論。 3) 搜索路由表,尋找標(biāo)為“默認(rèn)”的表目。如果找到,則把報(bào)文發(fā)送給該表目指定的下一站路由器。
如果上面這些步驟都沒有成功,那么該數(shù)據(jù)報(bào)就不能被傳送。如果不能傳送的數(shù)據(jù)報(bào)來自本機(jī),那么一般會(huì)向生成數(shù)據(jù)報(bào)的應(yīng)用程序返回一個(gè)“主機(jī)不可達(dá)”或“網(wǎng)絡(luò)不可達(dá)”的錯(cuò)誤。
IP路由選擇是通過逐跳來實(shí)現(xiàn)的。數(shù)據(jù)報(bào)在各站的傳輸過程中目的IP地址始終不變,但是封裝和目的鏈路層地址在每一站都可以改變。大多數(shù)的主機(jī)和許多路由器對(duì)于非本地網(wǎng)絡(luò)的數(shù)據(jù)報(bào)都使用默認(rèn)的下一站路由器。
IP路由選擇機(jī)制的兩個(gè)特征: (1)完整主機(jī)地址匹配在網(wǎng)絡(luò)號(hào)匹配之前執(zhí)行 (2)為網(wǎng)絡(luò)指定路由,而不必為每個(gè)主機(jī)指定路由
IP地址和MAC地址分類
按IP地址范圍劃分
按照通訊模式劃分
單播是對(duì)特定的主機(jī)進(jìn)行數(shù)據(jù)傳送。如給某一個(gè)主機(jī)發(fā)送IP數(shù)據(jù)包,鏈路層頭部是非常具體的目的地址,對(duì)于以太網(wǎng)來 說,就是網(wǎng)卡的MAC地址。廣播和多播僅應(yīng)用于UDP,它們對(duì)需將報(bào)文同時(shí)傳往多個(gè)接收者的應(yīng)用來說十分重要。
子網(wǎng)掩碼
子網(wǎng)掩碼用來確定多少bit用于網(wǎng)絡(luò)號(hào)和多少bit用于主機(jī)號(hào)。
給定IP地址和子網(wǎng)掩碼以后,主機(jī)就可以確定IP數(shù)據(jù)報(bào)的目的是: (1)本子網(wǎng)上的主機(jī); (2)本網(wǎng)絡(luò)中其他子網(wǎng)中的主機(jī); (3)其他網(wǎng)絡(luò)上的主機(jī)。
如果知道本機(jī)的IP地址,那么就知道它是否為A類、B類或C類地址(從IP地址的高位可以得知),也就知道網(wǎng)絡(luò)號(hào)和子網(wǎng)號(hào)之間的分界線。而根據(jù)子網(wǎng)掩碼就可知道子網(wǎng)號(hào)與主機(jī)號(hào)之間的分界線。
封裝
以太網(wǎng)數(shù)據(jù)幀的物理特性是其長(zhǎng)度必須在46~1500字節(jié)之間,而數(shù)據(jù)幀在進(jìn)入每一層協(xié)議棧的時(shí)候均會(huì)做一些封裝。
而更具體的以太網(wǎng)幀格式為
分用
當(dāng)目的主機(jī)收到一個(gè)以太網(wǎng)幀時(shí),就在協(xié)議棧中從底向上升,同時(shí)去掉各層協(xié)議加上的報(bào)文首部。每層協(xié)議盒都要去檢查報(bào)文首部的協(xié)議標(biāo)識(shí),以確定接收數(shù)據(jù)的上層協(xié)議。這個(gè)過程稱作分用。
分段 (fragmentation)
老的內(nèi)核通常在IP層處理IP分段,IP層可以接收0~64KB的數(shù)據(jù)。因此,當(dāng)數(shù)據(jù)IP packet大于PMTU時(shí),就必須把數(shù)據(jù)分成多個(gè)IP分段。 較新的內(nèi)核中,L4會(huì)嘗試進(jìn)行分段:L4不會(huì)再把超過PMTU的緩沖區(qū)直接傳給IP層,而是傳遞一組和PMTU相匹配的緩沖區(qū)。這樣,IP層只需要給每個(gè)分段增加IP報(bào)頭。但是這并不意味著IP層就不做分段的工作了,一些情況下,IP層還會(huì)進(jìn)行分段操作。
第一個(gè)表格中:
第二個(gè)表格中:
需要注意的是,只有第一個(gè)包帶有原始包的完整 IPv4 + TCP/UDP 信息,后續(xù)的分包只有 IPv4 信息。
分包帶來的問題:
MTU
一個(gè)網(wǎng)絡(luò)接口的 MTU 是它一次所能傳輸?shù)拇髷?shù)據(jù)塊的大小。任何超過MTU的數(shù)據(jù)塊都會(huì)在傳輸前分成小的傳輸單元。MTU 有兩個(gè)測(cè)量層次:網(wǎng)絡(luò)層和鏈路層。比如,網(wǎng)絡(luò)層上標(biāo)準(zhǔn)的因特網(wǎng) MTU 是 1500 bytes,而在連接層上是 1518 字節(jié)。沒有特別說的時(shí)候,往往指的是網(wǎng)絡(luò)層的MTU。
要增加一個(gè)網(wǎng)絡(luò)接口 MTU 的常見原因是增加高速因特網(wǎng)的吞吐量。標(biāo)準(zhǔn)因特網(wǎng) MTU 使用 1500byte是為了和 10M 和 100M 網(wǎng)絡(luò)后向兼容,但是,在目前1G和 10G網(wǎng)絡(luò)中遠(yuǎn)遠(yuǎn)不夠。新式的網(wǎng)絡(luò)設(shè)備可以處理更大的MTU,但是,MTU需要顯式設(shè)置。這種更大MTU的幀叫做“巨幀”,通常 9000 byte 是比較普遍的。
相對(duì)地,一些可能得需要減少M(fèi)TU的原因:
MTU 不能和目前任何 Internet 網(wǎng)絡(luò)協(xié)議混在一起,但是,可以使用一個(gè)路由器將不同 MTU 的網(wǎng)段連在一起。
TCP fragmentation
每個(gè)TCP數(shù)據(jù)包(segment)的大小受MSS(TCP_MAXSEG選項(xiàng))限制。大報(bào)文段長(zhǎng)度 ( MSS )表示 TCP 傳往另一端的大塊數(shù)據(jù)的長(zhǎng)度。當(dāng)一個(gè)連接建立時(shí)(SYN packet), 連接的雙方都要通告各自的MSS。
一般說來,如果沒有分段發(fā)生, MSS還是越大越好。報(bào)文段越大允許每個(gè)報(bào)文段傳送的數(shù)據(jù)就越多,相對(duì)IP和TCP首部有更高的網(wǎng)絡(luò)利用率。當(dāng)TCP發(fā)送一個(gè)SYN時(shí),或者是因?yàn)橐粋€(gè)本地應(yīng)用進(jìn)程想發(fā)起一個(gè)連接,或者是因?yàn)榱硪欢说?a target="_blank">主機(jī)收到了一個(gè)連接請(qǐng)求,它能將MSS值設(shè)置為外出接口上的MTU長(zhǎng)度減去固定的IP首部(20 bytes)和TCP首部長(zhǎng)度(20 bytes)。對(duì)于一個(gè)以太網(wǎng),MSS值可達(dá)1460字節(jié)(詳細(xì)參考tcp_sendmsg)。
TCP/SCTP會(huì)將數(shù)據(jù)按MTU進(jìn)行切片,然后3層的工作只需要給傳遞下來的切片加上 ip頭就可以了(也就是說調(diào)用這個(gè)函數(shù)的時(shí)候,其實(shí)4層已經(jīng)切好片了)。
Segmentation offload
現(xiàn)在很多網(wǎng)卡本身支持?jǐn)?shù)據(jù)分片,這樣,上層L4/L3就可以不用進(jìn)行分片(大64KB),而由NIC來完成,從而提高網(wǎng)絡(luò)性能。
PMTU (Path Maximum Transmission Unit Discovery)
PMTU 的用途是動(dòng)態(tài)的確定從發(fā)送端到接收端整個(gè)路徑上的最小 MTU,從而避免分包。注意,PMTU 只支持 TCP,對(duì)其他協(xié)議比如 UDP 無效。而且,如果發(fā)送方已經(jīng)開啟了 PMTU,那么它發(fā)送的所有 TCP/IP 包的 DF 標(biāo)志都被設(shè)置為 1 即不再允許分包。當(dāng)網(wǎng)絡(luò)路徑上某個(gè)路由器發(fā)現(xiàn)發(fā)送者的包因?yàn)槌^前面轉(zhuǎn)發(fā)路徑的 MTU 而無法發(fā)送時(shí),它向發(fā)送者返回一個(gè) ICMP "Destination Unreachable" 消息,其中包含了那個(gè) MTU,然后發(fā)送者就會(huì)在它的路由表中將該mtu值保存下來,再使用較小的 MTU 重新發(fā)出新的較小的包。
例子1:超過 MTU,DF = 0 => 路由器分包、發(fā)送,接收主機(jī)組裝
例子2:超過,DF = 1 => PMTU,發(fā)送者重新以小包發(fā)送
網(wǎng)頁題目:什么是TCP/IP網(wǎng)絡(luò)模型詳解
瀏覽地址:http://www.rwnh.cn/news13/98513.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站制作、網(wǎng)站策劃、手機(jī)網(wǎng)站建設(shè)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容