2023網(wǎng)絡(luò)基礎(chǔ)知識網(wǎng)絡(luò)基本功_第1頁
2023網(wǎng)絡(luò)基礎(chǔ)知識網(wǎng)絡(luò)基本功_第2頁
2023網(wǎng)絡(luò)基礎(chǔ)知識網(wǎng)絡(luò)基本功_第3頁
2023網(wǎng)絡(luò)基礎(chǔ)知識網(wǎng)絡(luò)基本功_第4頁
2023網(wǎng)絡(luò)基礎(chǔ)知識網(wǎng)絡(luò)基本功_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

網(wǎng)絡(luò)基礎(chǔ)知識基本功網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列PAGE2PAGE2目錄介紹 0網(wǎng)絡(luò)基本功(一):細(xì)說網(wǎng)絡(luò)傳輸 1網(wǎng)絡(luò)基本功(二):細(xì)說交換機(jī) 2網(wǎng)絡(luò)基本功(三):細(xì)說VLAN與3網(wǎng)絡(luò)基本功(四):細(xì)說路由(上) 4網(wǎng)絡(luò)基本功(五):細(xì)說路由(下) 5網(wǎng)絡(luò)基本功(六):鏈路聚合 6網(wǎng)絡(luò)基本功(七):細(xì)說IP地址與子網(wǎng) 7網(wǎng)絡(luò)基本功(八):細(xì)說TCP滑動(dòng)窗口 8網(wǎng)絡(luò)基本功(九):細(xì)說TCP重傳 9網(wǎng)絡(luò)基本功(十):細(xì)說TCP確認(rèn)機(jī)制 10網(wǎng)絡(luò)基本功(十一):TCP窗口調(diào)整與流控 網(wǎng)絡(luò)基本功(十二):細(xì)說Linux網(wǎng)絡(luò)配置(上) 12網(wǎng)絡(luò)基本功(十三):細(xì)說Linux網(wǎng)絡(luò)配置(下) 13網(wǎng)絡(luò)基本功(十四):細(xì)說診斷工具ping 14網(wǎng)絡(luò)基本功(十五):細(xì)說網(wǎng)絡(luò)性能監(jiān)測與實(shí)例(上) 15網(wǎng)絡(luò)基本功(十六):細(xì)說網(wǎng)絡(luò)性能監(jiān)測與實(shí)例(下) 16網(wǎng)絡(luò)基本功(十七):細(xì)說tcpdump的妙用(上) 17網(wǎng)絡(luò)基本功(十八):細(xì)說tcpdump的妙用(下) 18網(wǎng)絡(luò)基本功(十九):細(xì)說原理與配置 19網(wǎng)絡(luò)基本功(二十):細(xì)說ICMP和ARP 20網(wǎng)絡(luò)基本功(二十一):細(xì)說HTTP(上) 21網(wǎng)絡(luò)基本功(二十二):細(xì)說HTTP(下) 22網(wǎng)絡(luò)基本功(二十三):Wireshark抓包實(shí)例診斷TCP連接問題 23網(wǎng)絡(luò)基本功(二十四):Wireshark抓包實(shí)例分析TCP重傳 24網(wǎng)絡(luò)基本功(二十五):Wireshark抓包實(shí)例分析TCP重復(fù)ACK與亂序 25網(wǎng)絡(luò)基本功(二十六):Wireshark抓包實(shí)例分析TCP窗口及reset 26網(wǎng)絡(luò)基本功(二十七):Wireshark抓包實(shí)例分析HTTP問題(上) 27網(wǎng)絡(luò)基本功(二十八):Wireshark抓包實(shí)例分析HTTP問題(下) 28網(wǎng)絡(luò)基本功(二十九):Wireshark抓包實(shí)例診斷數(shù)據(jù)庫常見問題 29網(wǎng)絡(luò)基本功(三十):細(xì)說DNS(上) 30網(wǎng)絡(luò)基本功(三十一):細(xì)說DHCP 31網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(一):細(xì)說網(wǎng)絡(luò)傳輸PAGE10網(wǎng)絡(luò)基本功(一):細(xì)說網(wǎng)絡(luò)傳輸PAGE10網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(一):細(xì)說網(wǎng)絡(luò)傳輸常言道:欲練神功,必先練好基本功。之前做了一個(gè)關(guān)于IP路由,默認(rèn)網(wǎng)關(guān)和掩碼的問答貼,做完這個(gè)帖子覺得如果對網(wǎng)絡(luò)知識點(diǎn)做一個(gè)系統(tǒng)的闡述,應(yīng)該會很有幫助。本系列文章著重于講解網(wǎng)絡(luò)管理實(shí)際應(yīng)用中常常涉及的重要知識點(diǎn),盡量以實(shí)用為主。準(zhǔn)備寫的幾個(gè)章節(jié)暫時(shí)有(可能會有增減):網(wǎng)絡(luò)傳輸交換機(jī)VLAN與Trunk路由(上)路由(下)鏈路聚合IP地址與子網(wǎng)NAT原理與配置ICMP與ARPTCP滑動(dòng)窗口TCP重傳TCP確認(rèn)機(jī)制TCP窗口調(diào)整與流控Wireshark抓包實(shí)例診斷TCP連接問題(精)Wireshark抓包實(shí)例診斷TCP重傳(精)Wireshark抓包實(shí)例診斷TCP重復(fù)ACK(精)Wireshark抓包實(shí)例診斷TCP窗口與reset(精)Wireshark抓包實(shí)例診斷HTTP(精)Wireshark抓包實(shí)例診斷數(shù)據(jù)庫問題上)下)DNS(上)(NEW)細(xì)說Linux網(wǎng)絡(luò)配置(上細(xì)說Linux網(wǎng)絡(luò)配置(下常用診斷工具:ping網(wǎng)絡(luò)性能監(jiān)測與實(shí)例(上)網(wǎng)絡(luò)性能監(jiān)測與實(shí)例(下)tcpdump的妙用(上)tcpdump的妙用(下)更多信息首先來看一個(gè)例子:示例:網(wǎng)絡(luò)服務(wù)器向客戶端傳送數(shù)據(jù)的過程:在詳細(xì)闡述網(wǎng)絡(luò)傳輸過程之前,先來看一個(gè)最常見的例子,下圖顯示了一個(gè)網(wǎng)絡(luò)服務(wù)器向客戶端傳送數(shù)據(jù)的完整過程:1\.需要傳送的數(shù)據(jù)是網(wǎng)絡(luò)服務(wù)器的1\.需要傳送的數(shù)據(jù)是網(wǎng)絡(luò)服務(wù)器的HTML頁面。2\.應(yīng)用協(xié)議HTTP報(bào)文頭添加到HTML數(shù)據(jù)之前。報(bào)文頭信息包括:服務(wù)器所使用的HTTP版本,以及表明它包含發(fā)給網(wǎng)3\.HTTP應(yīng)用層協(xié)議將HTML格式的網(wǎng)頁數(shù)據(jù)發(fā)送給傳輸層。TCP傳輸層用于管理網(wǎng)絡(luò)服務(wù)器和客戶端之間的會話。4\.IP信息添加到TCP信息之前。IP指定適當(dāng)?shù)脑春湍康腎P地址。這些信息就構(gòu)成了IP報(bào)文。5\.以太網(wǎng)協(xié)議添加到IP報(bào)文的兩端之后,就形成了數(shù)據(jù)鏈路幀。上述幀發(fā)送至通向網(wǎng)絡(luò)客戶端的路徑上的最近一個(gè)路6\.數(shù)據(jù)通過互聯(lián)網(wǎng)絡(luò)傳輸,互聯(lián)網(wǎng)絡(luò)包含媒介和中間設(shè)備。7\.客戶端接收到包含數(shù)據(jù)的數(shù)據(jù)鏈路幀,處理各層協(xié)議頭,之后以添加時(shí)相反的順序移除協(xié)議頭。首先處理并移除以8\.之后,將網(wǎng)頁信息傳遞給客戶端網(wǎng)頁瀏覽器軟件。數(shù)據(jù)封裝:消息要在網(wǎng)絡(luò)中傳輸,必須對它進(jìn)行編碼,以特定的格式進(jìn)行封裝,同時(shí)需要適當(dāng)?shù)胤庋b以足夠的控制和地址信息,以使它能夠從發(fā)送方移動(dòng)到接收方。消息大小理論上,視頻或郵件信息是能夠以大塊非中斷型流從網(wǎng)絡(luò)源地址傳送到目的地址,但這也意味著同一時(shí)刻同一網(wǎng)絡(luò)其他設(shè)備就無法收發(fā)消息。這種大型數(shù)據(jù)流會造成顯著延時(shí)。并且,如果傳輸過程中連接斷開,整個(gè)數(shù)據(jù)流都會丟失需要全部重傳。因此更好的方法是將數(shù)據(jù)流分割(segmentation)為較小的,便于管理的片段,能夠帶來兩點(diǎn)好處:發(fā)送較小片段,網(wǎng)絡(luò)上同時(shí)可有多個(gè)會話交錯(cuò)進(jìn)行。這種在網(wǎng)絡(luò)上將不同會話片段交錯(cuò)進(jìn)行的過程稱為多路傳輸(multiplexing)。分割可提高網(wǎng)絡(luò)通訊的可靠性。各消息片段從源地址到目的地址無需經(jīng)過相同路徑,如果一條路徑被堵塞或斷開,其余消息可從替換路徑到達(dá)目的地址。如果部分消息到不了目的地址,那只需重傳丟失部分。通過對片段打上標(biāo)簽的方式來保證順序以及在接收時(shí)重組。協(xié)議數(shù)據(jù)單元(ProtocolDataUnit,PDU)應(yīng)用層數(shù)據(jù)在傳輸過程中沿著協(xié)議棧傳遞,每一層協(xié)議都會向其中添加信息。這就是封裝的過程。數(shù)據(jù)片段在各層網(wǎng)絡(luò)結(jié)構(gòu)中采用的形式就稱為協(xié)議數(shù)據(jù)單元(PDU)。封裝過程中,下一層對從上一層收到的PDU進(jìn)行封裝。在處理的每一個(gè)階段PDU都有不同的名字來反應(yīng)它的功能。PDU按照TCP/IP協(xié)議的命名規(guī)范:數(shù)據(jù)(Data):應(yīng)用層PDU的常用術(shù)語分段(Segment):傳輸層PDU幀(Frame):網(wǎng)絡(luò)層PDU比特(Bits):在介質(zhì)上物理傳輸數(shù)據(jù)所使用的PDU封裝作。以網(wǎng)絡(luò)服務(wù)器為例,HTTP應(yīng)用層協(xié)議發(fā)送HTML格式網(wǎng)頁數(shù)據(jù)到傳輸層,應(yīng)用層數(shù)據(jù)被分成TCP分段。各TCP分段被打上標(biāo)簽,稱為頭(header),表明接收方哪一個(gè)進(jìn)程應(yīng)當(dāng)接收此消息。同時(shí)也包含使得接收方能夠按照原有的格式來重組數(shù)據(jù)的信息。傳輸層將網(wǎng)頁HTML數(shù)據(jù)封裝成分段并發(fā)送至網(wǎng)絡(luò)層,執(zhí)行IP層協(xié)議。整個(gè)TCP分段封裝成IP報(bào)文,也就是再添上IP頭標(biāo)簽。IP頭包括源和目的IP地址,以及發(fā)送報(bào)文到目的地址所必須的信息。之后,IP報(bào)文發(fā)送到接入層,封裝以幀頭和幀尾。每個(gè)幀頭都包含源和目的物理地址。物理地址唯一指定了本地網(wǎng)絡(luò)上的設(shè)備。幀尾包含差錯(cuò)校正信息。最后,由服務(wù)器網(wǎng)卡將比特編碼傳輸給介質(zhì)。解封裝接收主機(jī)以相反的方式進(jìn)行操作稱為解封裝。解封裝是接收設(shè)備移除一層或多層協(xié)議頭的過程。數(shù)據(jù)在協(xié)議棧中向上移動(dòng)直到終端應(yīng)用層伴隨著解封裝。訪問本地資源:訪問本地網(wǎng)絡(luò)資源需要兩種類型的地址:網(wǎng)絡(luò)層地址和數(shù)據(jù)鏈路層地址。網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層負(fù)責(zé)將數(shù)據(jù)從發(fā)送設(shè)備傳輸至接收設(shè)備。兩層協(xié)議都有源和目的地址,但兩種地址的目的不同。示例:客戶端PC1與FTP在同一IP網(wǎng)絡(luò)的通信網(wǎng)絡(luò)地址網(wǎng)絡(luò)層地址或IP地址包含兩個(gè)部分:網(wǎng)絡(luò)前綴和主機(jī)。路由器使用網(wǎng)絡(luò)前綴部分將報(bào)文轉(zhuǎn)發(fā)絡(luò)前綴部分是相同的,只有主機(jī)設(shè)備地址部分不同。源IP地址:發(fā)送設(shè)備,即客戶端PC1的IP目的IP地址:接收設(shè)備,即FTP服務(wù)器:數(shù)據(jù)鏈路地址數(shù)據(jù)鏈路地址的目的是在同一網(wǎng)絡(luò)中將數(shù)據(jù)鏈路幀從一個(gè)網(wǎng)絡(luò)接口發(fā)送至另一個(gè)網(wǎng)絡(luò)接口。以太網(wǎng)LAN和無線網(wǎng)LAN是兩種不同物理介質(zhì)的網(wǎng)絡(luò)示例,分別有自己的數(shù)據(jù)鏈路協(xié)議。當(dāng)IP報(bào)文的發(fā)送方和接收方位于同一網(wǎng)絡(luò),數(shù)據(jù)鏈路幀直接發(fā)送到接收設(shè)備。以太網(wǎng)上數(shù)據(jù)鏈路地址就是以太網(wǎng)MAC地址。MAC地址是物理植入網(wǎng)卡的48比特地址。源MAC地址:發(fā)送IP報(bào)文的PC1以太網(wǎng)卡MAC地址,AA-AA-AA-AA-AA-AA。目的MAC地址:當(dāng)發(fā)送設(shè)備與接收設(shè)備位于同一網(wǎng)絡(luò),即為接收設(shè)備的數(shù)據(jù)鏈路地址。本例中,F(xiàn)TPMAC地址:CC-CC-CC-CC-CC-CC。源和目的MAC地址添加到以太網(wǎng)幀中。MAC與IP地址發(fā)送方必須知道接收方的物理和邏輯地址。發(fā)送方主機(jī)能夠以多種方式學(xué)習(xí)到接收方的IP地址:比如域名系統(tǒng)(DomainNameSystem,DNS),或通過應(yīng)用手動(dòng)輸入,如用戶指定FTP地址。以太網(wǎng)MAC地址是怎么識別的呢?發(fā)送方主機(jī)使用地址解析協(xié)議(AddressResolutionProtocol,ARP)以檢測本地網(wǎng)絡(luò)的所有MAC地址。如下圖所示,發(fā)送主機(jī)在整個(gè)LAN發(fā)送ARP請求消息,這是一條廣播消息。ARP請求包含目標(biāo)設(shè)備的IP地址,LAN上的每一個(gè)設(shè)備都會檢查該ARP請求,看看是否包含它自身的IP地址。只有符合該IP地址的設(shè)備才會發(fā)送ARP響應(yīng)。ARP響應(yīng)包含ARP請求中IP地址相對應(yīng)的MAC地址。訪問遠(yuǎn)程資源:默認(rèn)網(wǎng)關(guān)當(dāng)主機(jī)發(fā)送消息到遠(yuǎn)端網(wǎng)絡(luò),必須使用路由器,也稱為默認(rèn)網(wǎng)關(guān)。默認(rèn)網(wǎng)關(guān)就是位于發(fā)送主機(jī)同一網(wǎng)絡(luò)上的路由器的接口IP地址。有一點(diǎn)很重要:本地網(wǎng)絡(luò)上的所有主機(jī)都能夠配置自己的默認(rèn)網(wǎng)關(guān)地址。如果該主機(jī)的TCP/IP設(shè)置中沒有配置默認(rèn)網(wǎng)關(guān)地址,或指定了錯(cuò)誤的默認(rèn)網(wǎng)關(guān)地址,則遠(yuǎn)端網(wǎng)絡(luò)消息無法被送達(dá)。如下圖所示,LAN上的主機(jī)PC1使用IP地址為的R1作為默認(rèn)網(wǎng)關(guān),如果PDU的目的地址位于另一個(gè)網(wǎng)絡(luò),則主機(jī)將PDU發(fā)送至路由器上的默認(rèn)網(wǎng)關(guān)。與遠(yuǎn)端網(wǎng)絡(luò)設(shè)備通訊下圖顯示了客戶端主機(jī)PC1與遠(yuǎn)端IP網(wǎng)絡(luò)服務(wù)器進(jìn)行通訊的網(wǎng)絡(luò)層地址與數(shù)據(jù)鏈路層地址:網(wǎng)絡(luò)地址當(dāng)報(bào)文的發(fā)送方與接收方位于不同網(wǎng)絡(luò),源和目的IP地址將會代表不同網(wǎng)絡(luò)上的主機(jī)。源IP地址:發(fā)送設(shè)備即客戶端主機(jī)PC1的IP地址:10。目的IP地址:接收設(shè)備即網(wǎng)絡(luò)服務(wù)器的IP地址:9。數(shù)據(jù)鏈路地址當(dāng)報(bào)文的發(fā)送方與接收方位于不同網(wǎng)絡(luò),以太網(wǎng)數(shù)據(jù)鏈路幀無法直接被發(fā)送到目的主機(jī)。以太網(wǎng)幀必須先發(fā)送給路由器或默認(rèn)網(wǎng)關(guān)。本例中,默認(rèn)網(wǎng)關(guān)是R1,R1的接口IP地址與PC1屬于同一網(wǎng)絡(luò),因此PC1能夠直接達(dá)到路由器。源MAC地址:發(fā)送設(shè)備即PC1的MAC地址,PC1的以太網(wǎng)接口MAC地址為:AA-AA-AA-AA-AA-AA。目的MAC地址:當(dāng)報(bào)文的發(fā)送方與接收方位于不同網(wǎng)絡(luò),這一值為路由器或默認(rèn)網(wǎng)關(guān)的以太網(wǎng)MAC地址。本例中,即R1的以太網(wǎng)接口MAC地址,即:11-11-11-11-11-11。IP報(bào)文封裝成的以太網(wǎng)幀先被傳輸至R1,R1再轉(zhuǎn)發(fā)給目的地址即網(wǎng)絡(luò)服務(wù)器。R1可以轉(zhuǎn)發(fā)給另一個(gè)路由器,如果目的服務(wù)器所在網(wǎng)路連接至R1,則直接發(fā)送給服務(wù)器。發(fā)送設(shè)備如何確定路由器的MAC地址?每一個(gè)設(shè)備通過自己的TCP/IP設(shè)置中的默認(rèn)網(wǎng)關(guān)地址得知路由器的IP地址。之后,它通過ARP來得知默認(rèn)網(wǎng)關(guān)的MAC地址,該MAC地址隨后添加到幀中。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(二):細(xì)說交換機(jī)PAGE16網(wǎng)絡(luò)基本功(二):細(xì)說交換機(jī)PAGE16網(wǎng)絡(luò)基本功(二):細(xì)說交換機(jī)轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹本節(jié)介紹交換機(jī)的幀轉(zhuǎn)發(fā)技術(shù),MAC播域。更多信息幀轉(zhuǎn)發(fā):網(wǎng)絡(luò)及電信中的交換概念以太網(wǎng)上的幀包含源MAC地址與目的MAC地址。交換機(jī)從源設(shè)備接收到幀并快速發(fā)往目的地址。交換的基本概念指基于以下兩條準(zhǔn)則做出決策的設(shè)備:進(jìn)入(ingress)端口目的地址術(shù)語ingress用于描述幀通過特定端口進(jìn)入設(shè)備,egress用于描述設(shè)備通過特定端口離開設(shè)備。交換機(jī)做出轉(zhuǎn)發(fā)決定的時(shí)候,是基于進(jìn)入端口以及消息的目的地址的。LAN交換機(jī)維護(hù)一張表,通過這張表決定如何轉(zhuǎn)發(fā)數(shù)據(jù)流。LAN張表基于消息的進(jìn)入端口和目的地址來轉(zhuǎn)發(fā)。一個(gè)LAN交換機(jī)中只有一張定義了地址和端口的主交換表;因此,無論進(jìn)入端口如何,同一目的地址的消息永遠(yuǎn)從同一出口離開。MAC地址表的動(dòng)態(tài)更新一個(gè)交換機(jī)要知道使用哪一個(gè)端口傳送幀,首先必須學(xué)習(xí)各端口有哪些設(shè)備。隨著交換機(jī)學(xué)習(xí)到端口與設(shè)備的關(guān)系,它建立起一張MAC地址表,或內(nèi)容可尋址寄存表(CAM)。CAM是一種應(yīng)用于高速查找應(yīng)用的特定類型的memory。交換機(jī)將連接到它的端口的設(shè)備的MAC地址記錄到MAC表中,然后利用表中信息將幀發(fā)送至輸出端口設(shè)備,該端口已指定給該設(shè)備。記住交換機(jī)操作模式的一句簡單的話是:交換機(jī)學(xué)習(xí)“源地址”,基于“目的地址”轉(zhuǎn)發(fā)。幀進(jìn)入交換機(jī)時(shí),交換機(jī)“學(xué)習(xí)”接收幀的源MAC地址,并將此地址添加到MAC地址表中,或刷新已存在的MAC地址表項(xiàng)的老化寄存器;后續(xù)報(bào)文如果去往該MAC地址,則可以根據(jù)此表項(xiàng)轉(zhuǎn)發(fā)。幀轉(zhuǎn)發(fā)時(shí),交換機(jī)檢查目的MAC地址并與MAC地址表中地址進(jìn)行比較。如果地址在表中,則轉(zhuǎn)發(fā)至表中與MAC地址相對應(yīng)的端口。如果沒有在表中找到目的MAC地址,交換機(jī)會轉(zhuǎn)發(fā)到除了進(jìn)入端口以外的所有端口泛洪(flooding)。有多個(gè)互連交換機(jī)的網(wǎng)絡(luò)中,MAC地址表對于一個(gè)連接至其他交換機(jī)的端口記錄多個(gè)MAC地址。以下步驟描述了更新MAC地址表的方法:交換機(jī)在port1接收到來自PC1的幀。交換機(jī)檢查源MAC地址并與MAC地址表相比較。如果地址不在表中,則交換機(jī)在MAC地址表中將PC1的源MAC地址關(guān)聯(lián)到進(jìn)入端口(port1)。如果已經(jīng)存在該源地址的MAC地址表項(xiàng),則交換機(jī)重置老化計(jì)時(shí)器。通常一個(gè)表項(xiàng)會保持5分鐘。交換機(jī)記錄源地址信息之后,檢查目的地址如果目的MAC地址不在表項(xiàng)中或如果它是一個(gè)廣播MAC地址,則交換機(jī)把該幀泛洪(flood)至除了進(jìn)入端口以外的所有端口。目標(biāo)設(shè)備(PC3)返回目的地址為PC1的單播幀。交換機(jī)地址表中輸入PC3的源MAC地址及關(guān)聯(lián)的輸出端口。的表項(xiàng)。交換機(jī)轉(zhuǎn)發(fā)方式:存儲轉(zhuǎn)發(fā)交換(Store-and-Forward)運(yùn)行在存儲轉(zhuǎn)發(fā)模式下的交換機(jī)在發(fā)送信息前要把整幀數(shù)據(jù)讀入內(nèi)存并檢查其正確性。盡管采用這種方式比采用直通方式更花時(shí)間,但采用這種方式可以存儲轉(zhuǎn)發(fā)數(shù)據(jù),從而保證其準(zhǔn)確性。由于運(yùn)行在存儲轉(zhuǎn)發(fā)模式下的交換機(jī)不傳播錯(cuò)誤數(shù)據(jù),因而更適合大型局域網(wǎng)。存儲轉(zhuǎn)發(fā)模式有兩大主要特征區(qū)別于直通轉(zhuǎn)發(fā)模式:差錯(cuò)控制:使用存儲轉(zhuǎn)發(fā)技術(shù)的交換機(jī)對進(jìn)入幀進(jìn)行差錯(cuò)控制。在進(jìn)入端口接收完整一幀之后,交換機(jī)將數(shù)據(jù)報(bào)最后一個(gè)字段的幀校驗(yàn)序列(framechecksequence,FCS)與自己的FCS進(jìn)行比較。FCS校驗(yàn)過程用以幫助確保幀沒有物理及數(shù)據(jù)鏈路錯(cuò)誤,如果該幀校驗(yàn)正確,則交換機(jī)轉(zhuǎn)發(fā)。否則,丟棄。自動(dòng)緩存:存儲轉(zhuǎn)發(fā)交換機(jī)通過進(jìn)入端口緩存,支持不同速率以太網(wǎng)的混合連接。例如,接收到一個(gè)以1Gb/s速率發(fā)出的幀,轉(zhuǎn)發(fā)至百兆以太網(wǎng)端口,就需要使用存儲轉(zhuǎn)發(fā)方式。當(dāng)進(jìn)入與輸出端口速率不匹配時(shí),交換機(jī)將整幀內(nèi)容放入緩存中,計(jì)算FCS校驗(yàn),轉(zhuǎn)發(fā)至輸出緩存之后將幀發(fā)出。Cisco的主要交換方式是存儲轉(zhuǎn)發(fā)交換。直通交換(Cut-Through)據(jù)包之前就讀取幀頭,并決定把數(shù)據(jù)發(fā)往哪個(gè)端口。不用緩存數(shù)據(jù)也不用檢查數(shù)據(jù)的完整性。這種交換方式有兩大特點(diǎn):快速幀轉(zhuǎn)發(fā)以及無效幀處理??焖賻D(zhuǎn)發(fā):如下圖所示,一旦交換機(jī)在MAC地址表中查找到目的MAC地址,就立刻做出轉(zhuǎn)發(fā)決定。而無需等待幀的剩余部分進(jìn)入端口再做出轉(zhuǎn)發(fā)決定。使用直通方式的交換機(jī)能夠快速決定是否有必要檢查幀頭的更多部分,以針對額外的過濾目的。例如,交換機(jī)可以檢查前14個(gè)字節(jié)(源MAC地址,目的MAC,以太網(wǎng)類型字段),以及對之后的40字節(jié)進(jìn)行檢查,以實(shí)現(xiàn)IPv4三層和四層相關(guān)功能。無效幀處理:對于大多數(shù)無效幀,直通方式交換機(jī)并不將其丟棄。錯(cuò)誤幀被轉(zhuǎn)發(fā)至其他網(wǎng)段。如果網(wǎng)絡(luò)中出現(xiàn)高差錯(cuò)率(無效幀),直通交換可能會對帶寬造成不利影響,損壞以及無效幀會造成帶寬擁塞。在擁塞情況下,這種交換機(jī)必須像存儲轉(zhuǎn)發(fā)交換機(jī)那樣緩存。無碎片轉(zhuǎn)發(fā)(FragmentFree)無碎片轉(zhuǎn)發(fā)是直通方式的一種改進(jìn)模式。交換機(jī)轉(zhuǎn)發(fā)之前檢查幀是否大于64字節(jié)(小于則丟棄),以保證沒有碎片幀。無碎片方式比直通方式擁有更好的差錯(cuò)檢測,而實(shí)際上沒有增加延時(shí)。它比較適合于高性能計(jì)算應(yīng)用,即進(jìn)程到進(jìn)程延時(shí)小于10毫秒的應(yīng)用場景。交換機(jī)域:交換機(jī)比較容易混淆的兩個(gè)術(shù)語是沖突域和廣播域。這一段講述這兩個(gè)影響LAN概念。沖突域設(shè)備間共享同一網(wǎng)段稱為沖突域。因?yàn)樵摼W(wǎng)段內(nèi)兩個(gè)以上設(shè)備同時(shí)嘗試通訊時(shí),可能發(fā)生沖突。使用工作在數(shù)據(jù)鏈路層的交換機(jī)可將各個(gè)網(wǎng)段的沖突域隔離,并減少競爭帶寬的設(shè)備數(shù)量。交換機(jī)的每一個(gè)端口就是一個(gè)新的網(wǎng)段,因?yàn)椴迦攵丝诘脑O(shè)備之間無需競爭。結(jié)果是每一個(gè)端口都代表一個(gè)新的沖突域。網(wǎng)段上的設(shè)備可以使用更多帶寬,沖突域內(nèi)的沖突不會影響到其他網(wǎng)段,這也成為微網(wǎng)段。如下圖所示,每一個(gè)交換機(jī)端口連接到一臺主機(jī),每一個(gè)交換機(jī)端口代表一個(gè)隔離的沖突域。廣播域盡管交換機(jī)按照MAC地址過濾大多數(shù)幀,它們并不能過濾廣播幀。LAN播包后,必須對所有端口泛洪?;ミB的交換機(jī)集合形成了一個(gè)廣播域。網(wǎng)絡(luò)層設(shè)備如路由器,可隔離二層廣播域。路由器可同時(shí)隔離沖突和廣播域。當(dāng)設(shè)備發(fā)出二層廣播包,幀中的目的MAC地址被設(shè)置為全二進(jìn)制數(shù),廣播域中的所有設(shè)備都會接收到該幀。二層廣播域也稱為MAC廣播域。MAC廣播域包含LAN上所有接收到廣播幀的設(shè)備。廣播通信比較多時(shí),可能會帶來廣播風(fēng)暴。特別是在包含不同速率的網(wǎng)段,高速網(wǎng)段產(chǎn)生的廣播流量可能導(dǎo)致低速網(wǎng)段嚴(yán)重?fù)頂D,乃至崩潰。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(三):細(xì)說VLAN與網(wǎng)絡(luò)基本功(三):細(xì)說VLAN與TrunkPAGE23絡(luò)基本功(三):細(xì)說VLAN與轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹網(wǎng)絡(luò)性能是影響業(yè)務(wù)效率的一個(gè)重要因素。將大型廣播域分段是提高網(wǎng)絡(luò)性能的方法之一。路由器能夠?qū)V播包阻隔在一個(gè)接口上,但是,路由器的LAN接口數(shù)量有限,它的主要功能是在網(wǎng)絡(luò)間傳輸數(shù)據(jù),而不是對終端設(shè)備提供網(wǎng)絡(luò)接入。訪問LAN的功能還是由接入層交換機(jī)來實(shí)現(xiàn)。與三層交換機(jī)相類似,通過在二層交換機(jī)上創(chuàng)建VLAN來減少廣播域?,F(xiàn)代交換機(jī)就是通過VLAN來構(gòu)造的,因此在某種程度上,學(xué)習(xí)交換機(jī)就是學(xué)習(xí)VLAN。更多信息問題的產(chǎn)生:上一節(jié)已經(jīng)講過廣播域的概念:即廣播幀傳播覆蓋的范圍。如下圖所示,當(dāng)網(wǎng)絡(luò)上的所有設(shè)備在廣播域產(chǎn)生大量的廣播以及多播幀,就會與數(shù)據(jù)流競爭帶寬。這是由網(wǎng)絡(luò)管理數(shù)據(jù)流組成,如:ARP,DHCP,STP等。如下圖所示,假設(shè)PC1產(chǎn)生ARP,Windows登錄,DHCP等請求:這些廣播幀到達(dá)交換機(jī)1之后,遍歷整個(gè)網(wǎng)絡(luò)并到達(dá)所有節(jié)點(diǎn)直至路由器。隨著網(wǎng)絡(luò)節(jié)點(diǎn)增加,開銷的總數(shù)也在增長,直至影響交換機(jī)性能。通過實(shí)施VLAN來,能夠解決這一問題。什么是VLAN:VLAN(virtuallocalareanetwork)是一組與位置無關(guān)的邏輯端口。VLAN就相當(dāng)于一個(gè)獨(dú)立的三層網(wǎng)絡(luò)。VLAN的成員無需局限于同一交換機(jī)的順序或偶數(shù)端口。下圖顯示了一個(gè)常規(guī)的部署,左邊這張圖節(jié)點(diǎn)連接到交換機(jī),交換機(jī)連接到路由器。所有的節(jié)點(diǎn)都位于同一IP網(wǎng)絡(luò),因?yàn)樗麄兌歼B接到路由器同一接口。圖中沒有顯示的是,缺省情況下,所有節(jié)點(diǎn)實(shí)際上都是同一VLAN。因此,這種拓?fù)浣涌诳煽醋魇腔谕籚LAN的,如上面右圖所示。例如,Cisco設(shè)備默認(rèn)VLAN是VLAN1,也稱為管理VLAN。默認(rèn)配置下包含所有的端口,體現(xiàn)在源地址表(sourceaddresstable,SAT)中。該表用于交換機(jī)按照目的MAC地址將幀轉(zhuǎn)發(fā)至合適的二層端口。引入VLAN之后,源地址表按照VLAN將端口與MAC地址相對應(yīng)起來,從而使得交換機(jī)能夠做出更多高級轉(zhuǎn)發(fā)決策。下圖顯示了showmacaddresstable和showvlan命令的顯示輸出。所有端口(FA0/1–FA0/24)都在VLAN1。另一種常用的拓?fù)浣Y(jié)構(gòu)是兩個(gè)交換機(jī)被一個(gè)路由器分離開來,如下圖所示。這種情況下,每臺交換機(jī)各連接一組節(jié)點(diǎn)。每個(gè)交換機(jī)上的各節(jié)點(diǎn)共享一個(gè)IP地址域,這里有兩個(gè)網(wǎng)段:和。注意到兩臺交換機(jī)的VLAN層單播,多播以及廣播幀。這種拓?fù)溥壿嬙趦蓚€(gè)地方類似于多VLAN:同一VLAN下的節(jié)點(diǎn)共享一個(gè)通用地址域,非本地?cái)?shù)據(jù)流(對應(yīng)多VLAN情況不同VLAN的節(jié)點(diǎn))需通過路由器轉(zhuǎn)發(fā)。在一臺交換機(jī)上添加一個(gè)VLAN,去掉另一臺交換機(jī)的話,結(jié)構(gòu)如下所示:每一個(gè)VLAN相當(dāng)于一個(gè)獨(dú)立的三層IP網(wǎng)絡(luò),因此,上的節(jié)點(diǎn)試圖與上的節(jié)點(diǎn)通信時(shí),不同VLAN通信必須通過路由器,即使所有設(shè)備都連接到同一交換機(jī)。二層單播,多播和廣播數(shù)據(jù)只會在同一VLAN內(nèi)轉(zhuǎn)發(fā)及泛洪,因此VLAN1產(chǎn)生的數(shù)據(jù)不會為VLAN2節(jié)點(diǎn)所見。只有交換機(jī)能看得到VLAN,節(jié)點(diǎn)和路由器都感覺不到VLAN的存在。添加了路由決策之后,可以利用3層的功能來實(shí)現(xiàn)更多的安全設(shè)定,更多流量以及負(fù)載均衡。VLAN的作用:性。如下圖所示,VLAN10上的教職工主機(jī)完全與學(xué)生和訪客數(shù)據(jù)隔離。節(jié)約成本:無需昂貴的網(wǎng)絡(luò)升級,并且?guī)捈吧闲墟溌防寐矢佑行?。性能提高:將二層網(wǎng)絡(luò)劃分成多個(gè)邏輯工作組(廣播域)減少網(wǎng)絡(luò)間不必要的數(shù)據(jù)流并提升性能。縮小廣播域:減少一個(gè)廣播域上的設(shè)備數(shù)量。如上圖所示:網(wǎng)絡(luò)上有六臺主機(jī)但有三個(gè)廣播域:教職工,學(xué)生,訪客。提升IT管理效率:網(wǎng)絡(luò)需求相似的用戶共享同一VLAN,從而網(wǎng)絡(luò)管理更為簡單。當(dāng)添加一個(gè)新的交換機(jī),在指定端口VLAN時(shí),所有策略和步驟已配置好。簡化項(xiàng)目和應(yīng)用管理:VLAN將用戶和網(wǎng)絡(luò)設(shè)備匯集起來,以支持不同的業(yè)務(wù)或地理位置需求。每一個(gè)VLAN對應(yīng)于一個(gè)IP網(wǎng)絡(luò),因此,部署VLAN的時(shí)候必須結(jié)合考慮網(wǎng)絡(luò)地址層級的實(shí)現(xiàn)情況。交換機(jī)間VLAN:多交換機(jī)的情況下,VLAN是怎么工作的呢?下圖所示的這種情況,兩個(gè)交換機(jī)VLAN相同,都是默認(rèn)VLAN1,即兩個(gè)交換機(jī)之間的聯(lián)系同在VLAN1之內(nèi)。路由器是所有節(jié)點(diǎn)的出口。這時(shí)單播,多播和廣播數(shù)據(jù)自由傳輸,所有節(jié)點(diǎn)屬于同一IP地址。這時(shí)節(jié)點(diǎn)之間的通信不會有問題,因?yàn)榻粨Q機(jī)的SAT顯示它們在同一VLAN。而下面這種連接方式就會有問題。由于VLAN在連接端口的主機(jī)之間創(chuàng)建了三層邊界,它們將無法通信。仔細(xì)看上圖,這里有很多問題。第一,所有主機(jī)都在同一IP網(wǎng),盡管連接到不同的VLAN。第二,路由器在VLAN1,因此與所有節(jié)點(diǎn)隔離。最后,兩臺交換機(jī)通過不同的VLAN互連。每一點(diǎn)都會造成通信阻礙,合在一起,網(wǎng)絡(luò)各元素之間會完全無法通信。交換機(jī)用滿或同一管理單元物理上彼此分離的情形是很常見的。這種情況下,VLAN需要通過trunk延伸至相鄰交換機(jī)。trunk能夠連接交換機(jī),在網(wǎng)絡(luò)間傳載VLAN信息。如下圖所示:對之前的拓?fù)涞母倪M(jìn)包括:PC1和PC2分配到網(wǎng)段以及VLAN2。PC3和PC4分配到網(wǎng)段以及VLAN3。路由器接口連接到VLAN2和VLAN3。交換機(jī)間通過trunk線互連。注意到trunk端口出現(xiàn)在VLAN1,他們沒有用字母T來標(biāo)識。trunk在任何VLAN都沒有成員?,F(xiàn)在VLAN跨越多交換機(jī),同一VLAN下的節(jié)點(diǎn)可以物理上位于任何地方。什么是Trunk:Trunk是在兩個(gè)網(wǎng)絡(luò)設(shè)備之間承載多于一種VLAN的端到端的連接,將VLAN延伸至整個(gè)網(wǎng)絡(luò)。沒有VLANTrunk,VLAN也不會非常有用。VLANTrunk允許VLAN數(shù)據(jù)流在交換機(jī)間傳輸,所以設(shè)備在同一VLAN,但連接到不同交換機(jī),能夠不通過路由器來進(jìn)行通信。一個(gè)VLANtrunk不屬于某一特定VLAN,而是交換機(jī)和路由器間多個(gè)VLAN的通道。如下圖所示,交換機(jī)S1和S2,以及S1和S3之間的鏈路,配置為傳輸從VLAN10,20,30以及90的數(shù)據(jù)流。該網(wǎng)絡(luò)沒有VLANtrunk就無法工作。當(dāng)安裝好trunk線之后,幀在trunk線傳輸是就可以使用trunk協(xié)議來修改以太網(wǎng)幀。這也意味著交換機(jī)端口有不止一種操作模式。缺省情況下,所有端口都稱為接入端口。當(dāng)一個(gè)端口用于交換機(jī)間互連傳輸VLAN信息時(shí),這種端口模式改變?yōu)閠runk,節(jié)點(diǎn)也路由器通常不知道VLAN的存在并使用標(biāo)準(zhǔn)以太網(wǎng)幀或“untagged”幀。trunk線能夠使用“tagged”幀來標(biāo)記VLAN或優(yōu)先級。因此,在trunk端口,運(yùn)行trunk協(xié)議來允許幀中包含trunk信息。如下圖所示:PC1在經(jīng)過路由表處理后向PC2發(fā)送數(shù)據(jù)流。這兩個(gè)節(jié)點(diǎn)在同一VLAN但不同交換機(jī)。步驟如下:以太網(wǎng)幀離開PC1到達(dá)Switch1。Switch1的SAT表明目的地是trunk線的另一端。Switch1使用trunk協(xié)議在以太網(wǎng)幀中添加VLANid。新幀離開Switch1的trunk端口被Switch2接收。Switch2讀取trunkid并解析trunk協(xié)議。源幀按照Switch2的SAT轉(zhuǎn)發(fā)至目的地(端口4)。VLANtag如下圖所示,包含類型域,優(yōu)先級域,CFI(CanonicalFormatIndicator)指示MAC數(shù)據(jù)域,VLANID。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(四):細(xì)說路由(上)PAGE30網(wǎng)絡(luò)基本功(四):細(xì)說路由(上)PAGE30網(wǎng)絡(luò)基本功(四):細(xì)說路由(上)轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹以太網(wǎng)交換機(jī)工作在第二層即數(shù)據(jù)鏈路層,用于在同一網(wǎng)絡(luò)內(nèi)部轉(zhuǎn)發(fā)以太網(wǎng)幀。但是,當(dāng)源和目的IP地址位于不同網(wǎng)絡(luò)時(shí),以太網(wǎng)幀必須發(fā)送給路由器。路由器負(fù)責(zé)在不同網(wǎng)絡(luò)間傳輸報(bào)文,通過路由表來決定最佳轉(zhuǎn)發(fā)路徑。當(dāng)主機(jī)將報(bào)文發(fā)送至不同IP地址時(shí),由于主機(jī)無法直接與本地網(wǎng)絡(luò)以外的設(shè)備通信,報(bào)文被轉(zhuǎn)發(fā)至默認(rèn)網(wǎng)關(guān)。默認(rèn)網(wǎng)關(guān)就是數(shù)據(jù)流從本地網(wǎng)絡(luò)路由至遠(yuǎn)端設(shè)備的目的地。它通常用來連接本地網(wǎng)與公共網(wǎng)。更多信息報(bào)文轉(zhuǎn)發(fā)過程:路由器在一個(gè)接口接收報(bào)文并將它從另一個(gè)接口轉(zhuǎn)發(fā)出去,這一過程的關(guān)鍵步驟是為輸出鏈路將報(bào)文封裝在適當(dāng)?shù)臄?shù)據(jù)鏈路幀中。路由器主要執(zhí)行以下三個(gè)步驟:將第二層的幀頭和幀尾移除,解析出第三層報(bào)文。檢查IP報(bào)文的目的IP地址,在路由表中查找最佳路由。口。如下圖所示:設(shè)備有三層IPv4地址,以太網(wǎng)接口有二層數(shù)據(jù)鏈路地址。例如PC1的IPv4地址0,示例MAC地址0A-10。在報(bào)文從原設(shè)備傳輸至目的設(shè)備的過程中,三層IP地址不會改變。但是,每一跳隨著報(bào)文在路由器中被解封裝和重新封裝,二層數(shù)據(jù)鏈路地址都會改變。很可能報(bào)文被封裝成與接收時(shí)不同的另一種類型的二層幀。發(fā)送報(bào)文:PC1發(fā)送報(bào)文給PC2時(shí),首先必須確定目的IPv4地址是否位于同一網(wǎng)絡(luò)。PC1通過將自己的IPv4地址與子網(wǎng)掩碼做與操作,來判斷PC1所屬的網(wǎng)段。接下來,PC1對目的IPv4地址與PC1的子網(wǎng)掩碼做同樣的與操作。如果目的網(wǎng)絡(luò)地址與PC1網(wǎng)絡(luò)相同,則PC1不使用默認(rèn)網(wǎng)關(guān),而是在ARP緩存中查找目的IPv4地址的設(shè)備MAC地址。如果MAC地址不在緩存中,則PC1產(chǎn)生一個(gè)ARP請求來獲取地址并將報(bào)文發(fā)給目的地址。如果目的網(wǎng)絡(luò)地址位于另一網(wǎng)絡(luò),則PC1將報(bào)文轉(zhuǎn)發(fā)至默認(rèn)網(wǎng)關(guān)。要確定默認(rèn)網(wǎng)關(guān)的MAC地址,PC1在它的ARP表中查找默認(rèn)網(wǎng)關(guān)的IPv4地址以及相應(yīng)的MAC地址。如果ARP表中沒有默認(rèn)網(wǎng)關(guān)的對應(yīng)表項(xiàng),則PC1發(fā)送ARP請求。路由器R1回復(fù)ARP響應(yīng)。之后PC1將報(bào)文轉(zhuǎn)發(fā)至默認(rèn)網(wǎng)關(guān)的MAC地址,即路由器R1的Fa0/0接口。轉(zhuǎn)發(fā)至下一跳:R1從PC1接收到以太網(wǎng)幀后執(zhí)行以下步驟:R1檢查目的MAC地址,與接收端口FastEthernet0/0相匹配,因此,將幀復(fù)制到buffer。R1識別以太網(wǎng)類型為0x800,意味著以太網(wǎng)幀的數(shù)據(jù)部分包含IPv4報(bào)文。R1解封裝該以太網(wǎng)幀。由于目的IPv4地址與R1直連的任何網(wǎng)絡(luò)都不相符,R1在路由表中查找包含該目的IPv4地址主機(jī)的網(wǎng)絡(luò)地址。本例中,路由表中有/24網(wǎng)絡(luò)的路由。目的IPv4地址為0,即該網(wǎng)絡(luò)上的主機(jī)IPv4地址。R1找到/24路由的下一條IPv4地址為以及輸出端口FastEthernet0/1,這意味著IPv4報(bào)文封裝到一個(gè)新的以太網(wǎng)幀中,目標(biāo)MAC地址是下一跳路由器的MAC地址。由于下一個(gè)接口是在以太網(wǎng)上,所以R1必須用ARP解析出下一跳IPv4地址的MAC地址。R1在ARPcache中查找下一跳IPv4地址。如果表項(xiàng)不在ARPcache中,R1會從FastEthernet0/1接口發(fā)送ARP請求,R2會返回ARP響應(yīng)。R1之后在ARPcache中更新的MAC地址。IPv4報(bào)文封裝到新的以太網(wǎng)幀中并從R1的FastEthernet0/1接口轉(zhuǎn)發(fā)出去。到達(dá)目的地:當(dāng)幀到達(dá)R3時(shí)執(zhí)行以下步驟:R3將數(shù)據(jù)鏈路幀復(fù)制到它的buffer。R3解封裝該數(shù)據(jù)鏈路幀。R3在路由表中查找該目的IPv4地址。R3可直接發(fā)送到目的設(shè)備而無需發(fā)送至路由器。由于輸出接口是一個(gè)直連以太網(wǎng),所以R3必須用ARP解析出目的IPv4地址的MAC地址。R3在它的ARPcache中查找目的IPv4地址,如果此ARPcache中沒有此表項(xiàng),R3會從FastEthernet0/0接口發(fā)送ARP請求。PC2回復(fù)ARP響應(yīng)告知它的MAC地址。R3之后在ARPcache中更新0的MAC地址。IPv4報(bào)文封裝到新的以太網(wǎng)幀中并從R3的FastEthernet0/0接口發(fā)出。當(dāng)PC2接收到該幀,檢查幀的目的MAC地址,與網(wǎng)卡接收端口的MAC地址相匹配,PC2于是將幀的剩余部分復(fù)制到自己的buffer。PC2識別到以太網(wǎng)類型為0x800,也就是幀的數(shù)據(jù)部分包含IPv4報(bào)文。PC2解封裝以太網(wǎng)幀,將IPv4報(bào)文傳遞給操作系統(tǒng)的IPv4路由表:路由表存儲的信息包括:直連路徑:來自活動(dòng)路由接口的路徑。當(dāng)接口為活動(dòng)狀態(tài)并配置了IP地址時(shí),路由器添加一條直連路徑。遠(yuǎn)端路徑:遠(yuǎn)端的網(wǎng)絡(luò)連接到其他路由。通過靜態(tài)配置或動(dòng)態(tài)路由協(xié)議到達(dá)該網(wǎng)絡(luò)。路由表是存儲在RAM中的一份數(shù)據(jù)文件,用于存儲直連以及遠(yuǎn)端網(wǎng)絡(luò)的路由信息。路由表中包含網(wǎng)絡(luò)或下一跳地址的信息。這些信息告知路由器可以通過將報(bào)文發(fā)送至代表下一跳地址的路由器以最佳路勁到達(dá)目的地址。下一跳信息也可以是到下一個(gè)目的地的輸出接口。路由表內(nèi)容:CiscoIOS路由器可用showIProute命令顯示IPv4路由表。路由器還提供一些額外的路由信息,包括路徑是怎樣學(xué)習(xí)到的,路徑在表中有多長時(shí)間,使用哪一接口去到達(dá)預(yù)定義的目的地。路由表中的表項(xiàng)可作為以下內(nèi)容添加:直連接口:當(dāng)接口配置并激活時(shí)添加。靜態(tài)路徑:當(dāng)手動(dòng)配置路徑并且輸出接口激活時(shí)。動(dòng)態(tài)路由協(xié)議:當(dāng)路由協(xié)議動(dòng)態(tài)學(xué)習(xí)到網(wǎng)絡(luò)時(shí)添加,如EIGRP或OSPF。路由表項(xiàng)的來源通過代碼來標(biāo)識,代碼表明路徑是怎樣學(xué)習(xí)到的。例如,常用代碼包括:L:路由器接口地址。當(dāng)路由器接收到報(bào)文時(shí)發(fā)送至本地接口而無需轉(zhuǎn)發(fā)。C:直連網(wǎng)段。O:通過OSPF從另一個(gè)路由器動(dòng)態(tài)學(xué)習(xí)到的網(wǎng)絡(luò)。D:通過EIGRP從另一個(gè)路由器動(dòng)態(tài)學(xué)習(xí)到的網(wǎng)絡(luò)。下圖顯示了R1的路由表:遠(yuǎn)端網(wǎng)絡(luò)路由表項(xiàng):下圖顯示了R1到遠(yuǎn)端網(wǎng)絡(luò)的表項(xiàng):Routesource:路徑是怎樣學(xué)習(xí)到的。Destinationnetwork:遠(yuǎn)端網(wǎng)絡(luò)地址。Administrativedistance:路由來源的可信度。較低值表明優(yōu)先選擇。Metric:是路由算法用以確定到達(dá)目的地的最佳路徑的計(jì)量標(biāo)準(zhǔn)。較低值表明優(yōu)先選擇。Nexthop:轉(zhuǎn)發(fā)報(bào)文的下一個(gè)路由器的IP地址。Routetimestamp:自學(xué)習(xí)到路徑以來過了多少時(shí)間。Outgoinginterface:用以轉(zhuǎn)發(fā)報(bào)文的輸出接口。直連路由表項(xiàng):下圖顯示了R1到直連網(wǎng)絡(luò)的路由表項(xiàng):在一個(gè)接口狀態(tài)為up/up并添加到IPv4路由表之前,接口必須:指定有效的IPv4或IPv6地址。通過noshutdown命令激活。從另一設(shè)備(路由器,交換機(jī),主機(jī)等)接收到載體信號。當(dāng)接口up之后,該接口的網(wǎng)絡(luò)作為直連網(wǎng)絡(luò)添加到路由表中。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(五):細(xì)說路由(下)PAGE37網(wǎng)絡(luò)基本功(五):細(xì)說路由(下)PAGE37網(wǎng)絡(luò)基本功(五):細(xì)說路由(下)轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹互通信,傳遞路由信息,利用收到的路由信息更新路由表的過程。是基于某種協(xié)議來實(shí)現(xiàn)的。本文詳細(xì)闡述這兩者的實(shí)現(xiàn)過程。更多信息靜態(tài)路由:靜態(tài)路由是指由網(wǎng)絡(luò)管理員手動(dòng)配置在路由器上的表項(xiàng)。對于特定的目標(biāo)地址,以及在小型或穩(wěn)定的網(wǎng)絡(luò)環(huán)境,手動(dòng)配置靜態(tài)路由可以非常成功地應(yīng)用。通過使用靜態(tài)路由,網(wǎng)絡(luò)管理員確定了通向一目標(biāo)網(wǎng)絡(luò)的路徑。一個(gè)重要的概念是:路由的核心在于下一跳。下一跳是一個(gè)特定路由器的角度來看,距離目標(biāo)地址更近一步的路由器。下圖顯示了一個(gè)中型路由拓?fù)?。從R1的角度來看,R2同時(shí)是到達(dá)以及的下一跳。初始狀態(tài)下,除了已經(jīng)啟動(dòng)的接口和給定的IP地址以外,什么都沒有配置。路由器的路由表只會包含直連路由。每一個(gè)路由器只知道它接口相連的兩個(gè)網(wǎng)絡(luò)。下表顯示了這一時(shí)刻的路由表。從上表可以看出,路由器不知道整個(gè)網(wǎng)絡(luò)的情況。例如,NodeA連接到Switch1嘗試訪問Switch4的NodeB。經(jīng)過主機(jī)路由表處理后,A將數(shù)據(jù)轉(zhuǎn)發(fā)至R1的默認(rèn)網(wǎng)關(guān)(54),R1查詢自己的路由表并發(fā)現(xiàn)沒有目標(biāo)網(wǎng)絡(luò)的相關(guān)信息。于是R1發(fā)送ICMPdestinationunreachable消息。這個(gè)問題怎么解決呢?像這樣的小型網(wǎng)絡(luò),網(wǎng)絡(luò)管理員可以在路由器輸入路由命令,配置額外的轉(zhuǎn)發(fā)信息:iproutedestination-networkdestination-network-masknext-hop-IP-address(forwardingiproutedestination-networkdestination-network-masknext-hop-IP-address(forwardingrou例如,以下命令告知R1怎樣到達(dá)以及:iprouteiproute54iproute54R1上輸入命令之后,路由表更新如下所示:現(xiàn)在R1理解到達(dá)這些網(wǎng)絡(luò)需要經(jīng)過R2,但是R2接下來怎么辦呢?由于直接連接到R2,R2可以直接ARP主機(jī)。但對于,R2需要管理員以下命令來協(xié)助:iproute54iproute54路由表相應(yīng)更新:目前只成功了一半,報(bào)文需要返回。查看R3的路由表,發(fā)現(xiàn)路由器不知道怎么找到。NodeA的報(bào)文到達(dá)之后,NodeB嘗試回復(fù),但是會從R3收到ICMPdestinationunreachable的消息。在NodeA看來,好像傳輸從未收到回復(fù)。要完成這一過程,需要在所有路由器上對于所有未知網(wǎng)絡(luò)輸入iproute命令來更新路由表。R2真正的路由表以及在R2上輸入的iproute命令如下圖所示:動(dòng)態(tài)路由:路由協(xié)議允許路由器動(dòng)態(tài)共享遠(yuǎn)端網(wǎng)絡(luò)的信息以及自動(dòng)將這信息添加到自己的路由表中。動(dòng)態(tài)路由協(xié)議的一大好處在于當(dāng)拓?fù)渥兏鼤r(shí),路由器會交換路由信息,從而能夠自動(dòng)學(xué)習(xí)新增網(wǎng)絡(luò),并且在鏈路故障時(shí),找到替換路徑。路由協(xié)議完成這一功能的方式取決于它所使用的算法以及此協(xié)議的操作特性。通常來說,動(dòng)態(tài)路由協(xié)議的執(zhí)行過程如下:路由器在端口發(fā)送和接收路由消息。路由器與其他使用相同路由協(xié)議的路由器共享路由信息。路由器交換路由信息來學(xué)習(xí)遠(yuǎn)端網(wǎng)絡(luò)。網(wǎng)絡(luò)發(fā)現(xiàn)之間的拓?fù)洌阂约暗母?;從R2接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為1。R2:發(fā)送以及的更新;從R1接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為1。從R3接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為1。R3:發(fā)送以及的更新;從R2接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為1。交換路由信息路由器周期性的更新信息。在最初的網(wǎng)絡(luò)發(fā)現(xiàn)結(jié)束后,每個(gè)路由器通過發(fā)送和接收以下更新來繼續(xù)收斂的過程:R1:發(fā)送,以及的更新;從R2接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為2;從R2收到相同的的更新,metric為1,不作更新。R2:發(fā)送,,以及的更新;從R1接收的信息,不作更新;從R3接收的信息,不作更新。R3:發(fā)送,以及的更新;從R2接收的信息,跳數(shù)加1;在路由表中存儲的信息,metric設(shè)為2;從R2收到相同的的更新,metric為1,不作更新。距離矢量路由協(xié)議切斷了鄰居路由之間的環(huán)路,也稱為水平分割。水平分割阻止信息從同一端口接收之后再發(fā)送出去。例如,R2不會從Serial0/0/0端口發(fā)送網(wǎng)絡(luò)的信息,因?yàn)镽2從Serial0/0/0學(xué)習(xí)了。網(wǎng)絡(luò)中的路由器收斂了信息之后,路由器可以使用路由表來決定到達(dá)目的地的最佳路徑。不同的路由協(xié)議有不同的計(jì)算最佳路徑的方法。路由收斂當(dāng)所有路由器對于整個(gè)網(wǎng)絡(luò)有準(zhǔn)確的更新之后,達(dá)到路由收斂狀態(tài),如下圖所示:收斂時(shí)間是路由器分享信息,計(jì)算最佳路徑,更新路由表的時(shí)間。收斂同時(shí)是協(xié)作并且獨(dú)立于它們各自獨(dú)立地關(guān)于新的拓?fù)溥_(dá)成一致,于是說它們收斂于這種一致。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(六):鏈路聚合PAGE44網(wǎng)絡(luò)基本功(六):鏈路聚合PAGE44網(wǎng)絡(luò)基本功(六):鏈路聚合轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹鏈路聚合是在兩個(gè)設(shè)備間使用多個(gè)物理鏈路創(chuàng)建一個(gè)邏輯鏈路的功能。這種方式允許物理鏈路間共享負(fù)載。交換機(jī)網(wǎng)絡(luò)中使用的一種鏈路聚合的方法是EtherChannel。EtherChannel可以通過思科的端口聚合協(xié)議(PortAggregationProtocol,PAgP)或鏈路聚合協(xié)議(LinkAggregationProtocol,LACP)來配置或協(xié)商。更多信息EtherChannel:EtherChannel本來是由思科開發(fā),將若干FastEthernet或GigabitEthernet捆綁成一個(gè)邏輯通道的交換機(jī)到交換機(jī)的LAN連接技術(shù)。配置了EtherChannel之后的虛擬接口稱為一個(gè)portchannel。物理接口捆綁在一起,成為一個(gè)portchannelinterface。思科最早稱之為EtherChannelFastEtherChannel(FEC),也稱為GigabitEtherChannel(GEC),非思科公司常將鏈路聚合簡寫為LAG。通過EtherChannel,一個(gè)邏輯鏈路的速度等于所有物理鏈路的總和。例如,如果你用4個(gè)100Mbps的以太網(wǎng)鏈路創(chuàng)建1個(gè)EtherChannel,則EtherChannel的速度是400Mbps。但是也會有一些問題,并不是在所有情況下增加的容量都確實(shí)等于物理鏈路的速度之和。例如,四個(gè)1Gbps鏈路組成的EtherChannel,默認(rèn)每一個(gè)會話的速度還是限制在1Gbps。默認(rèn)情況下EtherChannel按照報(bào)文的目的MAC地址,給它指定一個(gè)物理鏈接。這也意味著EtherChannel上一個(gè)工作站與另一個(gè)服務(wù)器通信,只會使用到一條物理鏈路。實(shí)際上,EtherChannel上所有目的地為該服務(wù)器的數(shù)據(jù)流都只會走這一條物理鏈路。也就是說,一個(gè)用戶同一時(shí)刻只會得到1Gbps。這種模式也可以更改為每一個(gè)報(bào)文在不同的物理鏈路上發(fā)送,當(dāng)有多個(gè)不同的目的地址時(shí),每一條路徑都可以得到利用。創(chuàng)建的是一對一的關(guān)系,即一個(gè)EtherChannel連接兩個(gè)設(shè)備。可在兩臺交換機(jī)之間,或在一個(gè)激活了EtherChannel的服務(wù)器和一臺交換機(jī)之間創(chuàng)建一個(gè)EtherChannel連接。但是,同一個(gè)EtherChannel連接無法將數(shù)據(jù)流發(fā)送到兩臺交換機(jī)。EtherChannel負(fù)載均衡:如前所述,EtherChannel默認(rèn)情況下并不真的為各鏈路速度之和,只是在特定的鏈路發(fā)送特定的報(bào)文,給人的感知速度為所有鏈路的速度總和。EtherChannelCisco專有的hash該算法將目的MAC地址值hash成0-7的范圍。無論EtherChannel中有多少鏈路都是同樣的值。每一條物理鏈路都指定這八個(gè)值中的一個(gè)或多個(gè),取決于EtherChannel中共有幾條鏈路。下圖顯示了按照這種算法報(bào)文是怎樣分布的,注意到分布并不總是均衡的。有八條物理鏈路的EtherChannel,每條鏈路指定單一值。有六條鏈路的EtherChannel,兩條鏈路指定兩個(gè)值,剩下四條鏈路指定四個(gè)值。這意味著兩條鏈路(理論上均衡分布)會收到比剩余四條鏈路多一倍的數(shù)據(jù)流。從這張圖很明顯的看出,要使流量在各鏈路間均衡的分布(理想情況下),應(yīng)當(dāng)設(shè)置1,2,4,或8條物理鏈路。無論決定鏈路的信息是什么,算法都會將鏈路值hash為0-7。用戶可根據(jù)需求對算法進(jìn)行更改。默認(rèn)行為是使用目的MAC地址,但是,按照軟硬件版本的不同,還可以有如下選項(xiàng):源MAC地址目的MAC地址源和目的MAC地址源IP地址目的IP地址源和目的IP地址源端口目的端口源和目的端口更改默認(rèn)設(shè)置的原因由應(yīng)用情況而定。下圖顯示了一種相對普遍的布局:一組用戶連接到交換機(jī)A,通過EtherChannel連接到交換機(jī)B。默認(rèn)按照每一個(gè)報(bào)文的目的MAC地址做負(fù)載均衡。但是,比較常見的情況是一臺服務(wù)器的流量顯著高于其他服務(wù)器。讓我們假設(shè)該網(wǎng)絡(luò)中email服務(wù)器接收到多于1Gbps流量,而其他服務(wù)器大約為50Mbps。使用基于目的MAC地址的方法會導(dǎo)致在EtherChannel丟包,因?yàn)槟康牡貫閑mail服務(wù)器MAC地址的報(bào)文會走同一條物理鏈路。一條鏈路發(fā)生過載時(shí)報(bào)文不會分散到其他鏈路,只會丟棄。在這種一臺服務(wù)器接收流量超大的情況下,目的MAC地址負(fù)載均衡就不合理了。而根據(jù)源MAC地址負(fù)載均衡更為合適。另一點(diǎn)需要記住的是,負(fù)載均衡算法只適用于EtherChannel上發(fā)送的報(bào)文。它并沒有雙向功能。在交換機(jī)A上使用基于源MAC地址的算法可能比較合適,但對于交換機(jī)B不一定合適,因?yàn)閑mail服務(wù)器是使用最多的服務(wù)器。當(dāng)報(bào)文從email服務(wù)器返回,源MAC地址就是它自己本身。因此,如果我們在交換機(jī)B上使用基于源MAC地址的負(fù)載均衡算法,就會碰到一開始同樣的問題。這種情況下,解決方法是在交換機(jī)A使用基于源MAC地址的負(fù)載均衡算法,而在交換機(jī)B使用目的MAC地址的算法。如果所有服務(wù)器在一臺交換機(jī)而所有用戶在另一臺,這一解決方案是有效的。但現(xiàn)實(shí)中更常見的情況是所有這些設(shè)備都連接在一臺交換機(jī)上,這時(shí)就沒那么走運(yùn)了。下圖顯示了一個(gè)比較有趣的問題。一臺服務(wù)器通過EtherChannel連接到交換機(jī)A,一臺NAS也通過EtherChannel連接到交換機(jī)A。服務(wù)器的所有文件系統(tǒng)都掛在到NAS設(shè)備上,服務(wù)器作為一臺服務(wù)超過5000人的數(shù)據(jù)庫服務(wù)器負(fù)載很大。服務(wù)器和NAS之間的帶寬需求超過2Gbps。目前沒有解決這一問題的簡單的方法。不能使用源MAC地址或目的MAC地址做負(fù)載均衡,因?yàn)槊糠N情況都只有一個(gè)地址。同樣的理由,也不能用源和目的MAC地址結(jié)合,源和目的IP地址結(jié)合的方法。也不能基于源或目的端口號,因?yàn)橐坏﹨f(xié)商結(jié)束后,它們就不會改變。一種可能的方法是,驅(qū)動(dòng)支持的情況下,改變服務(wù)器和/或NAS設(shè)備,每一個(gè)link都有自己的MAC地址,但是報(bào)文還是會從其中一個(gè)地址發(fā)出另一個(gè)地址接收。唯一的解決方法是手動(dòng)負(fù)載均衡或采用更快的鏈接。將鏈路分為4個(gè)1Gbps,每一個(gè)有自己的IP網(wǎng)絡(luò),每個(gè)連接mount掛載不同的文件系統(tǒng)可以解決這一問題。有點(diǎn)太過復(fù)雜的話,直接使用更快的物理連接,如10Gbps。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(七):細(xì)說IP地址與子網(wǎng)網(wǎng)絡(luò)基本功(七):細(xì)說IP地址與子網(wǎng)PAGE48基本功(七):細(xì)說IP地址與子網(wǎng) 轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹起初,IP地址只有兩層結(jié)構(gòu):網(wǎng)絡(luò)與主機(jī)。子網(wǎng)地址向其中添加了一層新的結(jié)構(gòu):不同于僅有主機(jī),網(wǎng)絡(luò)有分為子網(wǎng)與主機(jī)。每一個(gè)子網(wǎng)的功能近乎于完整的網(wǎng)絡(luò)。子網(wǎng)的添加構(gòu)成了三層網(wǎng)絡(luò)結(jié)構(gòu):包含子網(wǎng)的網(wǎng)絡(luò),各自由若干主機(jī)構(gòu)成。IP地址由此被分為三個(gè)部分:網(wǎng)絡(luò)ID,子網(wǎng)ID與主機(jī)ID。IP地址長度仍固定為32位,其中,A類網(wǎng)絡(luò)8位子網(wǎng)掩碼,B類網(wǎng)絡(luò)16位子網(wǎng)掩碼,C類網(wǎng)絡(luò)24位子網(wǎng)掩碼。更多信息對于每一類網(wǎng)絡(luò),網(wǎng)絡(luò)數(shù)以及每一網(wǎng)絡(luò)中包含的主機(jī)數(shù),決定了它們各自占用多少比特位。這一準(zhǔn)則同樣適用于如何劃分子網(wǎng)與主機(jī)。子網(wǎng)數(shù)量為2的子網(wǎng)ID次方,每一子網(wǎng)內(nèi)的主機(jī)數(shù)為2的主機(jī)ID次方。假設(shè)一個(gè)B類網(wǎng)絡(luò),網(wǎng)絡(luò)ID占16位(154.71),主機(jī)ID占16位。沒有子網(wǎng)的情況下一共可容納65,534臺主機(jī)。按照實(shí)際需求將16位劃分為子網(wǎng)與主機(jī):1位子網(wǎng)16位主機(jī),或2與14,3與13。。。如下圖所示,劃分為5位子網(wǎng)與11位主機(jī),子網(wǎng)數(shù)越多,主機(jī)數(shù)越少。搭建IP子網(wǎng)時(shí),如何劃分子網(wǎng)與主機(jī)數(shù)是最重要的問題之一。子網(wǎng)所占位取決于整個(gè)網(wǎng)絡(luò)中的物理子網(wǎng)數(shù),每一子網(wǎng)中的主機(jī)數(shù)不能超過子網(wǎng)劃分所允許的最大數(shù)量。IP子網(wǎng)掩碼,表示法以及子網(wǎng)計(jì)算:在沒有子網(wǎng)的網(wǎng)絡(luò)環(huán)境下,路由器通過IP地址的前八位來決定是哪一類型的網(wǎng)絡(luò),從而它們知道哪些是網(wǎng)絡(luò)ID哪些是主機(jī)ID。劃分子網(wǎng)時(shí),路由器也需要知道主機(jī)ID是如何劃分成子網(wǎng)ID與主機(jī)ID的,但是劃分方法可以是任意組合,也沒有辦法從IP地址看出來。因此,必須有額外的信息告知解析IP地址的設(shè)備,這一信息稱為子網(wǎng)掩碼,以32比特?cái)?shù)的形式呈現(xiàn)。掩碼位的1和0結(jié)合布爾函數(shù)與和或的功能對于地址中的比特位進(jìn)行選擇或清除。子網(wǎng)掩碼中的32位對應(yīng)于IP地址相同位置上的數(shù)字。掩碼位為1時(shí),則地址中該位作為網(wǎng)絡(luò)ID或子網(wǎng)ID,而掩碼位為0時(shí),則地址中該位表示主機(jī)ID。子網(wǎng)掩碼為1:將IP地址中的0或1與1進(jìn)行與操作,即:當(dāng)子網(wǎng)掩碼位為1,IP地址保持不變。子網(wǎng)掩碼為0:任何數(shù)和0做與操作都是0,即:當(dāng)子網(wǎng)掩碼位為0,IP地址清零。因此,將子網(wǎng)掩碼應(yīng)用于IP地址,網(wǎng)絡(luò)ID和子網(wǎng)ID保持不變,移除主機(jī)ID。執(zhí)行此功能的路由器由此獲得子網(wǎng)地址,因?yàn)樗谰W(wǎng)絡(luò)類型,因此能夠區(qū)分網(wǎng)絡(luò)位與子網(wǎng)地址位。舉例來說,假設(shè)將B類網(wǎng)絡(luò)劃分5位為子網(wǎng)位為主機(jī)ID。因此,子網(wǎng)掩碼有16個(gè)1代表網(wǎng)絡(luò)部分(B類網(wǎng)絡(luò)),接下來5個(gè)1個(gè)0用作主機(jī)ID。二進(jìn)制數(shù)表示為00000000,十進(jìn)制數(shù)表示為。舉例:假設(shè)有一臺主機(jī)IP地址2,路由器需要找出該主機(jī)位于哪一子網(wǎng),則它的掩碼操作如下圖所示:結(jié)果,2所屬的子網(wǎng)為。另一臺路由器能夠從中區(qū)分出網(wǎng)絡(luò)ID與子網(wǎng)ID,因?yàn)榈刂返那皟蓚€(gè)比特位是10,是一個(gè)B類網(wǎng)絡(luò)。所以網(wǎng)絡(luò)ID占16位,子網(wǎng)ID一定是17至21。這里,子網(wǎng)是10010,或子網(wǎng)18。提一個(gè)問題:既然子網(wǎng)掩碼只是將網(wǎng)絡(luò)地址劃分出網(wǎng)絡(luò)部分與子網(wǎng)部分,那為什么還要使用另外的32位比特?cái)?shù),而不直接將IP地址第21位指定為分界線呢?這是有歷史原因的:因?yàn)樾枰紤]不連續(xù)的掩碼情況。同時(shí),它也能夠讓路由器進(jìn)行快速的掩碼操作來找出子網(wǎng)地址。除了將16位劃分為5位子網(wǎng)ID與11位主機(jī)ID,標(biāo)準(zhǔn)也允許前2位用作子網(wǎng)ID,4位用作主機(jī)ID,之后3位用作子網(wǎng)ID,7位用作主機(jī)ID。因此子網(wǎng)掩碼為1100001110000000。當(dāng)然,這會造成混淆,是不推薦的,實(shí)際中也沒有人會這么做。鑒于非連續(xù)掩碼實(shí)際不會應(yīng)用,以及現(xiàn)今的計(jì)算機(jī)速度大幅提升,新的表達(dá)法為2/21。IP子網(wǎng)掩碼設(shè)定:假設(shè)B類網(wǎng)絡(luò),沒有子網(wǎng)的話一共有65,534臺主機(jī)。劃分子網(wǎng)時(shí),按照以下方法:1位用作子網(wǎng)ID,15位用作主機(jī)ID:那么子網(wǎng)數(shù)為2^1,第一個(gè)子網(wǎng)是0,第二個(gè)子網(wǎng)是1。每一個(gè)子網(wǎng)的主機(jī)數(shù)是2^15-2,或32,766。2位用作子網(wǎng)ID,14位用作主機(jī)ID:那么子網(wǎng)數(shù)為2^2,四個(gè)子網(wǎng)0,1,2,3。每一個(gè)子網(wǎng)的主機(jī)數(shù)是2^14-2,或16,382。子網(wǎng)與主機(jī)ID位的劃分取決于子網(wǎng)數(shù)與子網(wǎng)中最大主機(jī)數(shù)。假設(shè)一個(gè)B類網(wǎng)絡(luò)中有10個(gè)子網(wǎng),需要4位表示子網(wǎng)(2^4=16,2^3=8),12位用作主機(jī)ID,每一子網(wǎng)最多4,094臺主機(jī)。如果你有20個(gè)子網(wǎng),每一子網(wǎng)3,000臺主機(jī),那么就會碰到問題。需要5位表示20個(gè)子網(wǎng),而3,000臺主機(jī)需要12位。這時(shí)需要重新組織物理網(wǎng)絡(luò),如果無法做到,就需要第二個(gè)B類網(wǎng)絡(luò)。自定義子網(wǎng)掩碼的方法是:從指定網(wǎng)絡(luò)類型的默認(rèn)子網(wǎng)掩碼中,從最左邊的0位開始,按照需要的子網(wǎng)數(shù)將0改為1。假設(shè)C類網(wǎng)絡(luò),最后8位可供劃分子網(wǎng)與主機(jī),則有6種不同的劃分方法。假如使用3位作為子網(wǎng)ID,5位作為主機(jī)ID,那么:默認(rèn)C00000000將最左邊的3位0改為即子網(wǎng)掩碼為:24。通常情況下,所有子網(wǎng)大小必須相同。因此,最大一個(gè)子網(wǎng)的主機(jī)數(shù)決定了需要多少位比特用作主機(jī)ID。因此前例中,前19個(gè)子網(wǎng)每個(gè)子網(wǎng)最多100臺主機(jī),而第20個(gè)子網(wǎng)需要3000個(gè)主機(jī),就會碰到問題。這種情況下,需要將最后一個(gè)過大的子網(wǎng)拆成若干個(gè)小的子網(wǎng)。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(八):細(xì)說TCP滑動(dòng)窗口網(wǎng)絡(luò)基本功(八):細(xì)說TCP滑動(dòng)窗口PAGE52本功(八):細(xì)說TCP滑動(dòng)窗口 轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹將TCP與UDP這樣的簡單傳輸協(xié)議區(qū)分開來的是它傳輸數(shù)據(jù)的質(zhì)量。TCP對于發(fā)送數(shù)據(jù)進(jìn)行跟蹤,這種數(shù)據(jù)管理需要協(xié)議有以下兩大關(guān)鍵功能:可靠性:保證數(shù)據(jù)確實(shí)到達(dá)目的地。如果未到達(dá),能夠發(fā)現(xiàn)并重傳。數(shù)據(jù)流控:管理數(shù)據(jù)的發(fā)送速率,以使接收設(shè)備不致于過載。要完成這些任務(wù),整個(gè)協(xié)議操作是圍繞滑動(dòng)窗口確認(rèn)機(jī)制來進(jìn)行的。因此,理解了滑動(dòng)窗口,也就是理解了TCP。更多信息TCP面向流的滑動(dòng)窗口確認(rèn)機(jī)制:TCP將獨(dú)立的字節(jié)數(shù)據(jù)當(dāng)作流來處理。一次發(fā)送一個(gè)字節(jié)并接收一次確認(rèn)顯然是不可行的。即使重疊傳輸(即不等待確認(rèn)就發(fā)送下一個(gè)數(shù)據(jù)),速度也還是會非常緩慢。TCP消息確認(rèn)機(jī)制如上圖所示,首先,每一條消息都有一個(gè)識別編號,每一條消息都能夠被獨(dú)立地確認(rèn),因此同一時(shí)刻可以發(fā)送多條信息。設(shè)備B定期發(fā)送給A一條發(fā)送限制參數(shù),制約設(shè)備A一次能發(fā)送的消息最大數(shù)量。設(shè)備B可以對該參數(shù)進(jìn)行調(diào)整,以控制設(shè)備A的數(shù)據(jù)流。為了提高速度,TCP并沒有按照字節(jié)單個(gè)發(fā)送而是將數(shù)據(jù)流劃分為片段。片段內(nèi)所有字節(jié)都是一起發(fā)送和接收的,因此也是一起確認(rèn)的。確認(rèn)機(jī)制沒有采用messageID字段,而是使用的片段內(nèi)最后一個(gè)字節(jié)的sequencenumber。因此一次可以處理不同的字節(jié)數(shù),這一數(shù)量即為片段內(nèi)的sequencenumber。TCP數(shù)據(jù)流的概念劃分類別假設(shè)A和B之間新建立了一條TCP連接。設(shè)備A需要傳送一長串?dāng)?shù)據(jù)流,但設(shè)備B無法一次全部接收,所以它限制設(shè)備A每次發(fā)送分段指定數(shù)量的字節(jié)數(shù),直到分段中已發(fā)送的字節(jié)數(shù)得到確認(rèn)。之后,設(shè)備A可以繼續(xù)發(fā)送更多字節(jié)。每一個(gè)設(shè)備都對發(fā)送,接收及確認(rèn)數(shù)據(jù)進(jìn)行追蹤。如果我們在任一時(shí)間點(diǎn)對于這一過程做一個(gè)“快照”,那么我們可以將TCPbuffer中的數(shù)據(jù)分為以下四類,并把它們看作一個(gè)時(shí)間軸:來看的。如下圖所示,31個(gè)字節(jié)已經(jīng)發(fā)送并確認(rèn)。經(jīng)被處理。下圖所示14字節(jié)為第2類。未發(fā)送而接收方已Ready發(fā)送多少字節(jié)確認(rèn)自己有足夠空間。發(fā)送方會立即嘗試發(fā)送。如圖,第3類有6字節(jié)。未發(fā)送而接收方NotReady由于接收方notready,還不允許將這部分?jǐn)?shù)據(jù)發(fā)出。接收方采用類似的機(jī)制來區(qū)分已接收并已確認(rèn),尚未接受但準(zhǔn)備好接收,以及尚未接收并尚未準(zhǔn)備好接收的數(shù)據(jù)。實(shí)際上,收發(fā)雙方各自維護(hù)一套獨(dú)立的變量,來監(jiān)控發(fā)送和接收的數(shù)據(jù)流落在哪一類。SequenceNumber設(shè)定與同步:發(fā)送方和接收方必須就它們將要為數(shù)據(jù)流中的字節(jié)指定的sequencenumber達(dá)成一致。這一過程稱為同步,在TCP連接建立時(shí)完成。為了簡化假設(shè)第一個(gè)字節(jié)sequencenumber是1,按照上圖示例,四類字節(jié)如下:已發(fā)送已確認(rèn)字節(jié)1至31。已發(fā)送但尚未確認(rèn)字節(jié)32至45。未發(fā)送而接收方已Ready字節(jié)46至51。未發(fā)送而接收方NotReady字節(jié)52至95。發(fā)送窗口與可用窗口:整個(gè)過程關(guān)鍵的操作在于接收方允許發(fā)送方一次能容納的未確認(rèn)的字節(jié)數(shù)。這稱為發(fā)送窗口,有時(shí)也稱為窗口。該窗口決定了發(fā)送方允許傳送的字節(jié)數(shù),也是2類和3類的字節(jié)數(shù)之和。因此,最后兩類(接收方準(zhǔn)備好而尚未發(fā)送,接收方未準(zhǔn)備好)第一個(gè)未確認(rèn)字節(jié)開始的窗口。本例中,第一個(gè)未確認(rèn)字節(jié)是32,整個(gè)窗口大小是20??捎么翱诘亩x是:考慮到正在傳輸?shù)臄?shù)據(jù)量,發(fā)送方仍被允許發(fā)送的數(shù)據(jù)量。實(shí)際上等于第3類的大小。左邊界就是窗口中的第一個(gè)字節(jié)(字節(jié)32),右邊界是窗口中最后一個(gè)字節(jié)(字節(jié)51)。概念的詳細(xì)解釋看下圖??捎么翱谧止?jié)發(fā)送后TCP類目與窗口大小的改變:當(dāng)上圖中第三類的6字節(jié)立即發(fā)送之后,這6字節(jié)從第3類轉(zhuǎn)移到第2類。字節(jié)變?yōu)槿缦拢阂寻l(fā)送已確認(rèn)字節(jié)1至31。已發(fā)送但尚未確認(rèn)字節(jié)32至51。未發(fā)送而接收方已Ready字節(jié)為0。未發(fā)送而接收方NotReady字節(jié)52至95。確認(rèn)處理以及窗口縮放:過了一段時(shí)間,目標(biāo)設(shè)備向發(fā)送方傳回確認(rèn)信息。目標(biāo)設(shè)備不會特別列出它已經(jīng)確認(rèn)的字節(jié),因?yàn)檫@會導(dǎo)致效率低下。目標(biāo)設(shè)備會發(fā)送自上一次成功接收后的最長字節(jié)數(shù)。例如,假設(shè)已發(fā)送未確認(rèn)字節(jié)(32至45)分為4段傳輸:32-34,35-36,37-41,42-45。第1,2,4已經(jīng)到達(dá),而3段沒有收到。接收方只會發(fā)回32-36的確認(rèn)信息。接收方會保留42-45但不會確認(rèn),因?yàn)檫@會表示接收方已經(jīng)收到了37-41。這是很必要的,因?yàn)門CP的確認(rèn)機(jī)制是累計(jì)的,只使用一個(gè)數(shù)字來確認(rèn)數(shù)據(jù)。這一數(shù)字是自上一次成功接收后的最長字節(jié)數(shù)。假設(shè)目標(biāo)設(shè)備同樣將窗口設(shè)為20字節(jié)。當(dāng)發(fā)送設(shè)備接收到確認(rèn)信息,則會將一部分第2類字節(jié)轉(zhuǎn)移到第1類,因?yàn)樗鼈円呀?jīng)得到了確認(rèn)。由于5個(gè)字節(jié)已被確認(rèn),窗口大小沒有改變,允許發(fā)送方多發(fā)5個(gè)字節(jié)。結(jié)果,窗口向右滑動(dòng)5個(gè)字節(jié)。同時(shí)5個(gè)字節(jié)從第二類移動(dòng)到第1類,5個(gè)字節(jié)從第4類移動(dòng)至第3類,為接下來的傳輸創(chuàng)建了新的可用窗口。因此,在接收到確認(rèn)信息以后,看起來如下圖所示。字節(jié)變?yōu)槿缦拢阂寻l(fā)送已確認(rèn)字節(jié)1至36。已發(fā)送但尚未確認(rèn)字節(jié)37至51。未發(fā)送而接收方已Ready字節(jié)為52至56。未發(fā)送而接收方NotReady字節(jié)57至95。每一次確認(rèn)接收以后,這一過程都會發(fā)生,從而讓窗口滑動(dòng)過整個(gè)數(shù)據(jù)流以供傳輸。處理丟失確認(rèn)信息:但是丟失的42-45如何處理呢?在接收到第3段(37-41)之前,接收設(shè)備不會發(fā)送確認(rèn)信息,也不會發(fā)送這一段之后字節(jié)的確認(rèn)信息。發(fā)送設(shè)備可以將新的字節(jié)添加到第3類之后,即52-56。發(fā)送設(shè)備之后會停止發(fā)送,窗口停留在37-41。TCP包括一個(gè)傳輸及重傳的計(jì)時(shí)機(jī)制。TCP會重傳丟失的片段。但有一個(gè)缺陷是:因?yàn)樗粫γ恳粋€(gè)片段分別進(jìn)行確認(rèn),這可能會導(dǎo)致其他實(shí)際上已經(jīng)接收到的片段被重傳(比如42至45)。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(九):細(xì)說TCP重傳網(wǎng)絡(luò)基本功(九):細(xì)說TCP重傳PAGE54本功(九):細(xì)說TCP重傳 轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹TCP的主要任務(wù)是很簡單:打包和發(fā)送數(shù)據(jù)。TCP與其他協(xié)議的不同之處在于使用滑動(dòng)窗口來管理基本數(shù)據(jù)收發(fā)過程,同時(shí)確保數(shù)據(jù)流的有效及可靠傳輸,從而不致發(fā)送速率明顯快于接收速率。本文將描述TCP是如何確保設(shè)備可靠、有效地進(jìn)行傳輸?shù)?。首先闡述TCP檢測丟失片段以及重傳的基本方法,之后介紹TCP如何判斷一個(gè)片段為丟失片段。更多信息TCP片段重傳計(jì)時(shí)器以及重傳隊(duì)列:檢測丟失片段并對之重傳的方法概念上是很簡單的。每一次發(fā)送一個(gè)片段,就開啟一個(gè)重傳計(jì)時(shí)器。計(jì)時(shí)器有一個(gè)初始值并隨時(shí)間遞減。如果在片段接收到確認(rèn)之前計(jì)時(shí)器超時(shí),就重傳片段。TCP使用了這一基本技術(shù),但實(shí)現(xiàn)方式稍有不同。原因在于為了提高效率需要一次處理多個(gè)未被確認(rèn)的片段,以保證每一個(gè)在恰當(dāng)?shù)臅r(shí)間重傳。TCP按照以下特定順序工作:隊(duì)列的數(shù)據(jù)結(jié)構(gòu)中,此時(shí)啟動(dòng)重傳計(jì)時(shí)器。因此,在某些時(shí)間點(diǎn),每一個(gè)片段都會放在隊(duì)列里。隊(duì)列按照重傳計(jì)時(shí)器的剩余時(shí)間來排列,因此TCP軟件可追蹤那幾個(gè)計(jì)時(shí)器在最短時(shí)間內(nèi)超時(shí)。確認(rèn)處理如果在計(jì)時(shí)器超時(shí)之前收到了確認(rèn)信息,則該片段從重傳隊(duì)列中移除。會再次重傳并重復(fù)這一過程。在某些情況下重傳也會失敗。我們不想要TCP因此TCP只會重傳一定數(shù)量的次數(shù),并判斷出現(xiàn)故障終止連接。但是我們怎樣知道一個(gè)片段被完全確認(rèn)呢?重傳是基于片段的,而TCP確認(rèn)信息是基于序列號累積的。每次當(dāng)設(shè)備A發(fā)送片段給設(shè)備B,設(shè)備B查看該片段的確認(rèn)號字段。所有低于該字段的序列號都已經(jīng)被設(shè)備A接收了。因此,當(dāng)片段中所發(fā)送的所有字節(jié)的序列號都比設(shè)備A到設(shè)備B的最后一個(gè)確認(rèn)號小的時(shí)候,一個(gè)從設(shè)備B發(fā)到設(shè)備A的片段被認(rèn)為是確認(rèn)了。這是通過計(jì)算片段中最后一個(gè)序列號結(jié)合片段的數(shù)據(jù)字段來實(shí)現(xiàn)的。讓我們以下圖為例來說明一下確認(rèn)和重傳是怎樣工作的。假設(shè)連接中的服務(wù)器發(fā)出了四個(gè)連續(xù)片段(號碼從1開始)片段1序列號字段是1片段長度80。所以片段1中最后一個(gè)序列號是80。片段2序列號是81片段長度是120。片段2中最后一個(gè)序列號是200。片段3序列號是201片段長度是160。片段3中最后一個(gè)序列號是360。片段4序列號是361片段長度是140。片段3中最后一個(gè)序列號是500。這些片段是一個(gè)接一個(gè)發(fā)送的,而無需等待前一個(gè)發(fā)送得到確認(rèn)。這是TCP滑動(dòng)窗口的一個(gè)主要優(yōu)勢(細(xì)說TCP滑動(dòng)窗口)。假設(shè)客戶端接收到前兩個(gè)傳輸,它會發(fā)回一條確認(rèn)消息確認(rèn)號為201。從而告知服務(wù)器前兩個(gè)片段已經(jīng)被客戶端成功接收了,它們從重傳隊(duì)列中移除(并且服務(wù)器發(fā)送窗口右移200字節(jié))。在接收到確認(rèn)號361或更高的片段之前,片段3會保留在重傳隊(duì)列中;片段4需要確認(rèn)號501或更高。現(xiàn)在,讓我們進(jìn)一步假設(shè)傳輸過程中片段3丟失了,但片段4被接收到了。客戶端將片段4buffer中,但是不需要確認(rèn),因?yàn)門CP是累積確認(rèn)機(jī)制——確認(rèn)片段4表示片段3也接收到了,但實(shí)際上并沒有。因此,客戶端需要等待片段3。實(shí)際上,服務(wù)器端片段3的重傳計(jì)時(shí)器會超時(shí),服務(wù)器之后重傳片段3。之后客戶端收到,然后發(fā)送片段3和4的確認(rèn)信息給服務(wù)器。還有一個(gè)重要的問題,服務(wù)器將如何處理片段4呢?雖然客戶端在等待片段3,服務(wù)器沒有收到反饋,所以它并不知道片段3丟失了,同樣它也不知道片段4發(fā)生了什么(以及接下來傳輸?shù)臄?shù)據(jù))。很有可能客戶端已經(jīng)接收到了片段4但是不能確認(rèn),也有可能片段4也丟失了。一些實(shí)現(xiàn)中會選擇僅僅重傳片段3,也有些會把3和4都重傳。最后一個(gè)問題是重傳隊(duì)列中所使用片段重傳計(jì)時(shí)器的值。如果設(shè)置過低,會發(fā)生過量重傳,如果設(shè)置過高,重傳丟失片段會減弱性能。必須通過一個(gè)稱為自適應(yīng)重傳的過程來動(dòng)態(tài)調(diào)整這個(gè)值,接下來的章節(jié)會講到。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(十):細(xì)說TCP確認(rèn)機(jī)制網(wǎng)絡(luò)基本功(十):細(xì)說TCP確認(rèn)機(jī)制PAGE59本功(十):細(xì)說TCP確認(rèn)機(jī)制 轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹在TCP確認(rèn)機(jī)制中,無法有效處理非連續(xù)TCP片段。確認(rèn)號表明所有低于該編號的sequencenumber無法只通過一個(gè)編號來確認(rèn)。這可能導(dǎo)致潛在嚴(yán)重的性能問題,特別是高速或可靠性較差的網(wǎng)絡(luò)。更多信息還是以下圖為例,服務(wù)器發(fā)送了4個(gè)片段并收到1條回復(fù),確認(rèn)號為201。因此,片段1和片段2被當(dāng)成已確認(rèn)。它們從重傳隊(duì)列中移出,同時(shí)允許服務(wù)器發(fā)送窗口向右移動(dòng)200字節(jié),從而發(fā)送數(shù)據(jù)增加200個(gè)字節(jié)。然而,再次假設(shè)片段3,從sequencenumber201開始,在發(fā)送過程中丟失了。由于客戶端從沒有收到這一片段,所以它也無法發(fā)送確認(rèn)號高于201的確認(rèn)信息,從而導(dǎo)致滑動(dòng)窗口停滯。服務(wù)器可以繼續(xù)發(fā)送其他片段直到填滿客戶端的接收窗口,但是直到客戶端發(fā)送另一條確認(rèn)信息,服務(wù)器的發(fā)送窗口都不會滑動(dòng)。另一個(gè)問題是如果片段3丟失了,客戶端將無法告知服務(wù)器是否收到后續(xù)的片段。在客戶端接收窗口填滿之前,很有可能客戶端已經(jīng)接收到片段4以及之后的片段。但是客戶端無法發(fā)送值為501的確認(rèn)信息以表明接收到片段4,因?yàn)檫@意味著片段3也接收到了。這里我們看到了TCP單編號,累積確認(rèn)機(jī)制的缺點(diǎn)。我們可以想象一個(gè)最差的情況,服務(wù)器被告知它有一個(gè)10,000字節(jié)窗口,20個(gè)片段每個(gè)片段500字節(jié)。第一個(gè)片段丟失了,其他19個(gè)被接收到了。但是由于第一個(gè)片段從沒有接收到,其他19個(gè)也無法確認(rèn)。未確認(rèn)片段處理策略:我們怎樣處理丟失片段之后的片段呢?本例中,當(dāng)服務(wù)器片段3重傳超時(shí),它必須決定怎樣處理片段4,它不知道客戶端是否已經(jīng)接收到。在上述最差情況下,第一個(gè)片段丟失后,其余19個(gè)可能或可能無法被客戶端接收到。處理這種情況有兩種可能的方式:僅重傳超時(shí)片段:這是一種更加保守的方式,僅重傳超時(shí)的片段,希望其他片段都能夠成功接收。如果該片段之后的其他片段實(shí)際上接收到了,這一方式是最佳的,如果沒接收到,就無法正常執(zhí)行。后者的情況每一個(gè)片段需要單獨(dú)計(jì)時(shí)并重傳。假設(shè)上述最壞情況下,所有20個(gè)500字節(jié)片段都丟失了。我們需要等片段1超時(shí)并重傳。這一片段也許會得到確認(rèn),但之后我們需要等待片段2超時(shí)并重傳。這一過程會重復(fù)多次。重傳所有片段:這是一種更激進(jìn)或者說更悲觀的方式。無論何時(shí)一個(gè)片段超時(shí)了,不僅重傳該片段,還有所有其他尚未確認(rèn)的片段。這一方式確保了任何時(shí)間都有一個(gè)等待確認(rèn)的停頓時(shí)間,在所有未確認(rèn)片段丟失的情況下,會刷新全部未確認(rèn)片段,以使對端設(shè)備多一次接收機(jī)會。在所有20個(gè)片段都丟失的情況下,相對于第一種方式節(jié)省了大量時(shí)間。這種方式的問題在于可能這些重傳是不必要的。如果第一個(gè)片段丟失而其他19個(gè)實(shí)際上接收到了,也得重傳那9500字節(jié)數(shù)據(jù)。由于TCP不知道其他片段是否接收到,所以它也無法確認(rèn)哪種方法更好,但只能選擇一種方式。上圖示例了保守的方式,而下圖顯示的是激進(jìn)的方式:問題的關(guān)鍵在于無法確認(rèn)非連續(xù)片段。解決方式是對TCP滑動(dòng)窗口算法進(jìn)行擴(kuò)展,添加允許設(shè)備分別確認(rèn)非連續(xù)片段的功能。這一功能稱為選擇確認(rèn)(selectiveacknowledgment,SACK)。選擇確認(rèn):通過SACK,連接的兩方設(shè)備必須同時(shí)支持這一功能,通過連接時(shí)使用的SYN片段來協(xié)商是否允許SACK。這一過程完成之后,任一設(shè)備都可以在常規(guī)TCP片段中使用SACK選項(xiàng)。這一選項(xiàng)包含一個(gè)關(guān)于已接收但未確認(rèn)片段數(shù)據(jù)sequencenumber范圍的列表,由于它們是非連續(xù)的。各設(shè)備對重傳隊(duì)列進(jìn)行修改,如果該片段已被選擇確認(rèn)過,則該片段中的SACK比特位置為1。該設(shè)備使用圖2中激進(jìn)方式的改進(jìn)版本,一個(gè)片段重傳之后,之后所有片段也會重傳,除非SACK比特位為1。例如,在4個(gè)片段的情況下,如果客戶端接收到片段4而沒有接收到片段3,當(dāng)它發(fā)回確認(rèn)號為201(片段1和片段2)的確認(rèn)信息,其中包含一個(gè)SACK選項(xiàng)指明:“已接收到字節(jié)361至500,但尚未確認(rèn)”。如果片段4在片段1和2之后到達(dá),上述信息也可以通過第二個(gè)確認(rèn)片段來完成。服務(wù)器確認(rèn)片段4的字節(jié)范圍,并為片段4打開SACK位。當(dāng)片段3重傳時(shí),服務(wù)器看到片段4的SACK位為1,就不會對其重傳。如下圖所示。在片段3重傳之后,片段4的SACK位被清除。這是為了防止客戶端出于某種原因改變片段4已接收的想法??蛻舳藨?yīng)當(dāng)發(fā)送確認(rèn)號為501或更高的確認(rèn)信息,正式確認(rèn)片段3和4接收到。如果這一情況沒有發(fā)生,服務(wù)器必須接收到片段4的另一條選擇確認(rèn)信息才能將它的SACK位打開,否則,在片段3重傳時(shí)或計(jì)時(shí)器超時(shí)的情況下會對其自動(dòng)重傳。網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功系列網(wǎng)絡(luò)基本功(十一):TCP窗口調(diào)整與流控網(wǎng)絡(luò)基本功(十一):TCP窗口調(diào)整與流控PAGE63本功(十一):TCP窗口調(diào)整與流控 轉(zhuǎn)載請?jiān)谖氖妆A粼某鎏帲篍MC中文支持論壇/go/chinese介紹前文已經(jīng)介紹過了TCP務(wù)器它一次希望從服務(wù)器接收多少字節(jié)數(shù)據(jù),這是客戶端的接收窗口,即服務(wù)器的發(fā)送窗窗口和客戶端的發(fā)送窗口。之后再傳遞給應(yīng)用層處理。更多信息當(dāng)服務(wù)器從客戶端接收數(shù)據(jù),它就將數(shù)據(jù)放在緩存中,服務(wù)器必須對數(shù)據(jù)做以下兩步操作:確認(rèn):服務(wù)器必須將確認(rèn)信息發(fā)回客戶端以表明數(shù)據(jù)接收。傳輸:服務(wù)器必須處理數(shù)據(jù),將它傳遞給目標(biāo)應(yīng)用程序處理。區(qū)分開這兩件事情是非常重要的。關(guān)鍵在于基本的滑動(dòng)窗口機(jī)制中,數(shù)據(jù)于接收時(shí)確認(rèn),但并不一定立即從緩存中傳輸出去。也就意味著當(dāng)接收數(shù)據(jù)速度快于接收TCP處理速度時(shí),緩存有可能被填滿。當(dāng)這一情況發(fā)生時(shí),接收設(shè)備需要調(diào)整窗口大小已防止緩存過載。由于窗口大小能夠以這種方式管理連接兩端設(shè)備數(shù)據(jù)流的速率,TCP就是以這種方式實(shí)現(xiàn)流控這一傳輸層非常典型的任務(wù)。流控對于TCP來說是很重要的,因?yàn)樗窃O(shè)備間互通狀態(tài)的方式。通過增加或縮小窗口大小,服務(wù)器和客戶端能夠確保對端發(fā)送數(shù)據(jù)的速度等同于處理速度。減小窗口大小以降低發(fā)送速率:首先看一下客戶端到服務(wù)器的數(shù)據(jù)傳輸,如下圖所示??蛻舳藗鬏?40字節(jié)數(shù)據(jù)至服務(wù)器。之后,客戶端的可用窗口還剩下220字節(jié):發(fā)送窗口的360字節(jié)減去發(fā)送的140字節(jié)。一段時(shí)間過后,服務(wù)器接收到140字節(jié)并將它們放在緩存中?,F(xiàn)在,理想的情況下,140字節(jié)進(jìn)入緩存,確認(rèn)之后立刻從緩存移出。也就是說,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論