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