互聯(lián)網(wǎng)的基本概念_第1頁
互聯(lián)網(wǎng)的基本概念_第2頁
互聯(lián)網(wǎng)的基本概念_第3頁
互聯(lián)網(wǎng)的基本概念_第4頁
互聯(lián)網(wǎng)的基本概念_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第五章TCP/IP協(xié)議互聯(lián)網(wǎng)的基本概念

—IP層在TCP/IP協(xié)議棧中的位置應(yīng)用層協(xié)議傳輸層協(xié)議網(wǎng)卡驅(qū)動(dòng)程序ARPIPICMPIPv4和IP數(shù)據(jù)報(bào)無連接數(shù)據(jù)報(bào)傳遞服務(wù)IP數(shù)據(jù)報(bào)格式IP數(shù)據(jù)報(bào)的分段和重組IP數(shù)據(jù)報(bào)的路由和轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)差錯(cuò)報(bào)告無連接數(shù)據(jù)報(bào)傳遞服務(wù)網(wǎng)絡(luò)1R1源主機(jī)網(wǎng)絡(luò)2R2網(wǎng)絡(luò)3目標(biāo)主機(jī)R3網(wǎng)絡(luò)4IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)幀頭1IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)幀頭2IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)幀頭3IP數(shù)據(jù)報(bào)無連接數(shù)據(jù)報(bào)傳遞服務(wù)(續(xù))IP只要求物理網(wǎng)絡(luò)提供最基本的功能:傳輸包。IP數(shù)據(jù)報(bào)的傳遞是互相獨(dú)立的;(OSI模型中X.25是有連接的,后來才增加無連接服務(wù)。)

收到數(shù)據(jù)報(bào)時(shí)不發(fā)確認(rèn);對(duì)IP數(shù)據(jù)報(bào)的損壞、丟失、錯(cuò)序、重復(fù)聽之任之。確定數(shù)據(jù)報(bào)的路由。數(shù)據(jù)報(bào)的分段和重組。盡力而為(besteffort),不保證可靠。IP數(shù)據(jù)報(bào)格式版本報(bào)頭長服務(wù)類型總長度標(biāo)識(shí)DFMF分段位移生存時(shí)間TTL協(xié)議號(hào)報(bào)頭校驗(yàn)和源IP地址目標(biāo)IP地址可選項(xiàng)+填充數(shù)據(jù)01631IP數(shù)據(jù)報(bào)格式(續(xù))絕大多數(shù)IP數(shù)據(jù)報(bào)包含20字節(jié)的報(bào)頭:版本(4位):IP協(xié)議版本,當(dāng)前為4。報(bào)頭長(4位):本數(shù)據(jù)報(bào)頭的字?jǐn)?shù),每字4字節(jié),范圍是5~15,5即20字節(jié),15即60字節(jié),所以選項(xiàng)最多占40字節(jié)服務(wù)類型(8位)(typeofservice):本數(shù)據(jù)報(bào)的服務(wù)質(zhì)量參數(shù),當(dāng)前未實(shí)現(xiàn),設(shè)置為0??傞L度(16位):數(shù)據(jù)報(bào)最大長度為65535字節(jié)。IP數(shù)據(jù)報(bào)格式(續(xù))標(biāo)識(shí)(16位):數(shù)據(jù)報(bào)編號(hào),當(dāng)路由器將本數(shù)據(jù)報(bào)分段時(shí),此標(biāo)識(shí)拷貝到每個(gè)段的IP報(bào)頭。在分段重組時(shí)它用來確定該分段屬于哪個(gè)數(shù)據(jù)報(bào)。DF(Don’tFragment)(1位):DF=1禁止本報(bào)分段。MF(MoreFragment)(1位):MF=1表示后面還有本報(bào)的分段,MF=0表示是最后一個(gè)分段。分段位移:分段位移×8指出本分段在原數(shù)據(jù)報(bào)中從第幾字節(jié)開始。除最后一段外,其余分段的長度是8字節(jié)的倍數(shù)。這些字段是與分段和重組有關(guān)的。IP數(shù)據(jù)報(bào)格式(續(xù))生存時(shí)間TTL:指明數(shù)據(jù)報(bào)在互聯(lián)網(wǎng)上逗留的最大時(shí)間。標(biāo)準(zhǔn)按秒計(jì),實(shí)際上按跳數(shù)計(jì)。數(shù)據(jù)報(bào)每經(jīng)過一個(gè)路由器,TTL減1,當(dāng)TTL=0時(shí)數(shù)據(jù)報(bào)被丟棄。防止無法投遞的報(bào)無限傳遞。協(xié)議號(hào)(8位):指明上一層協(xié)議,6表示上層是TCP,17表示上層是UDP。報(bào)頭校驗(yàn)和(16位):通過路由器時(shí)TTL減1,校驗(yàn)和要重新計(jì)算。IPv6無校驗(yàn)和,...源IP地址(32位):數(shù)據(jù)報(bào)源主機(jī)的IP地址。目標(biāo)IP地址(32位):數(shù)據(jù)報(bào)目標(biāo)主機(jī)的IP地址。IP數(shù)據(jù)報(bào)的分段和重組物理網(wǎng)絡(luò)一般限制通過包的最大長度,如以太網(wǎng)允許最大幀長1518字節(jié)。若物理網(wǎng)絡(luò)允許的包長小于IP數(shù)據(jù)報(bào)長,路由器的IP層要將該報(bào)分段成多個(gè)IP報(bào)轉(zhuǎn)發(fā)。分段后的數(shù)據(jù)報(bào)在被發(fā)送過程中還可以再分段。由目標(biāo)主機(jī)的IP層對(duì)分段報(bào)進(jìn)行一次重組,IP不區(qū)分經(jīng)一次或多次分段的報(bào)。IP數(shù)據(jù)報(bào)的路由和轉(zhuǎn)發(fā)主機(jī)和路由器如何為IP數(shù)據(jù)報(bào)確定路徑:源主機(jī)和目標(biāo)主機(jī)位于同一物理網(wǎng)絡(luò):數(shù)據(jù)報(bào)在物理網(wǎng)絡(luò)內(nèi)傳遞。比如以太網(wǎng),源主機(jī)將目標(biāo)主機(jī)IP地址轉(zhuǎn)換成物理地址,把數(shù)據(jù)報(bào)封裝在以太網(wǎng)幀中直接發(fā)送。源主機(jī)和目標(biāo)主機(jī)位于不同物理網(wǎng)絡(luò):數(shù)據(jù)報(bào)經(jīng)路由器轉(zhuǎn)發(fā)。路由器通過路由表決定數(shù)據(jù)報(bào)的下一站。源主機(jī)如何確定該發(fā)往哪個(gè)路由器? 主機(jī)也有一張路由表,并配置默認(rèn)網(wǎng)關(guān)。IP數(shù)據(jù)報(bào)的路由和轉(zhuǎn)發(fā)(續(xù))網(wǎng)2:網(wǎng)1:網(wǎng)4:網(wǎng)3:R3R1R2IP數(shù)據(jù)報(bào)的路由和轉(zhuǎn)發(fā)(續(xù))

—路由器R3的路由表*項(xiàng)是默認(rèn)路由項(xiàng),或叫默認(rèn)網(wǎng)關(guān)(defaultgateway)IP數(shù)據(jù)報(bào)差錯(cuò)報(bào)告互聯(lián)網(wǎng)控制報(bào)文協(xié)議ICMP(InternetControlMessageProtocol)就是IP數(shù)據(jù)報(bào)差錯(cuò)報(bào)告機(jī)制,ICMP報(bào)文封裝在IP數(shù)據(jù)報(bào)中發(fā)送。ICMP差錯(cuò)報(bào)文:ICMP信息報(bào)文:目標(biāo)不可達(dá)?回答請(qǐng)求/回答響應(yīng)數(shù)據(jù)報(bào)超時(shí)(ping用它測(cè)主機(jī)可達(dá)性)數(shù)據(jù)報(bào)參數(shù)問題?時(shí)間戳/時(shí)間戳響應(yīng)報(bào)源減速 ?地址屏蔽碼請(qǐng)求/響應(yīng)重定向路由協(xié)議路由器的核心是網(wǎng)絡(luò)層,包括IP、ICMP、ARP,還有一個(gè)或多個(gè)路由協(xié)議。由于路由協(xié)議需要傳輸層協(xié)議支持,實(shí)際路由器還包括高層模塊,還有網(wǎng)管模塊。路由器功能和路由協(xié)議分類內(nèi)部路由協(xié)議OSPFv2外部路由協(xié)議BGP-4無類別域間路由CIDR路由器功能互聯(lián)網(wǎng)中路由器的傳統(tǒng)功能:交換路由信息:與其它路由器交換網(wǎng)絡(luò)拓?fù)浜途W(wǎng)段時(shí)延等信息;執(zhí)行路由算法:基于路由信息計(jì)算、更新路由表,為數(shù)據(jù)報(bào)決定路由。Internet是由許多自治系統(tǒng)AS互聯(lián)而成,所謂自治系統(tǒng)是由單一機(jī)構(gòu)管理、操作下的路由器連接的互聯(lián)網(wǎng)。路由協(xié)議分類Internet的路由協(xié)議分兩類:內(nèi)部路由協(xié)議或內(nèi)部網(wǎng)關(guān)協(xié)議IGP—自治系統(tǒng)內(nèi)部路由器交換路由信息的協(xié)議: RIP(RoutingInformationProtocol),DV類。

IS-IS,OSPF(OpenShortestPathFirst),LS類。外部路由協(xié)議或外部網(wǎng)關(guān)協(xié)議EGP—不同自治系統(tǒng)的路由器交換路由信息的協(xié)議:BGP(BorderGatewayProtocol)內(nèi)部路由協(xié)議OSPF—原理是鏈路狀態(tài)路由協(xié)議每個(gè)路由器都有本鏈路狀態(tài)信息,即它直接連接的路由器和網(wǎng)絡(luò),及到它們的“距離”。周期地將本鏈路狀態(tài)擴(kuò)散(flooding)到所有結(jié)點(diǎn)。所有的鏈路狀態(tài)合在一起就是自治系統(tǒng)的拓?fù)鋽?shù)據(jù)庫,每個(gè)路由器維持這個(gè)拓?fù)鋽?shù)據(jù)庫。每個(gè)路由器根據(jù)這個(gè)拓?fù)鋽?shù)據(jù)庫構(gòu)造一個(gè)以自身為根的最短路徑樹,從最短路徑樹生成它的路由表。外部路由協(xié)議BGP網(wǎng)絡(luò)網(wǎng)絡(luò)R2R3網(wǎng)絡(luò)R1網(wǎng)絡(luò)網(wǎng)絡(luò)R5R6網(wǎng)絡(luò)R7AS1AS2外部路由協(xié)議BGP(續(xù))路由器R1屬于自治系統(tǒng)AS1,路由器R5屬于AS2。R1和R5都實(shí)現(xiàn)外部路由協(xié)議BGP交換路由表,它們也分別實(shí)現(xiàn)各自的自治系統(tǒng)內(nèi)部路由協(xié)議,如OSPF。BGP基本上是距離向量路由算法,所不同的是它把到達(dá)某網(wǎng)絡(luò)選擇的整個(gè)路徑告訴鄰居,而不只是下一站。路徑信息AS_PATH中有所穿越的自治系統(tǒng)網(wǎng)絡(luò)編號(hào),利用AS_PATH可進(jìn)行環(huán)路檢測(cè),克服了“計(jì)數(shù)到無限”的問題。新一代IP—IPv6IPv4的問題:32位約43億個(gè)地址,大大少于全球人口數(shù)(60億),將于2008年用完;骨干網(wǎng)路由表信息爆炸。IPv6的主要設(shè)計(jì)特點(diǎn)IPv6基本頭格式IPv6地址IPv6可選項(xiàng)全球的IPv6試驗(yàn)網(wǎng)IPv6的主要設(shè)計(jì)特點(diǎn)保留IPv4無連接,“盡力而為”數(shù)據(jù)報(bào)傳遞特征。擴(kuò)展的地址空間和編址功能:IPv6支持的地址數(shù)是IPv4的40億×40億×40億倍!128位地址采用層次結(jié)構(gòu),地球每平方米的地址數(shù)保守估計(jì)1564,樂觀估計(jì)391×1016。精簡(jiǎn)的基本報(bào)頭格式(8字段),簡(jiǎn)化了報(bào)頭處理。支持服務(wù)質(zhì)量控制:通信流等級(jí)(trafficclass)將IP包分為不同的服務(wù)類別。流標(biāo)號(hào)(flowlabel)可為特定的IP包流申請(qǐng)資源和優(yōu)先級(jí)??蛇x項(xiàng)支持身份認(rèn)證和數(shù)據(jù)加密。IPv6的主要設(shè)計(jì)特點(diǎn)(續(xù))基本頭和擴(kuò)展頭編碼方式改進(jìn)了性能,增加了擴(kuò)展的靈活性基本頭擴(kuò)展頭1擴(kuò)展頭N傳輸層包40字節(jié)可選...IPv6基本頭格式版本通信流等級(jí)流標(biāo)號(hào)負(fù)載長度后續(xù)頭部跳數(shù)限制源地址(128位)目標(biāo)地址(128位)031IPv6基本頭格式(續(xù))版本(version):=6。通信流等級(jí)(trafficclass):用于服務(wù)質(zhì)量控制。流標(biāo)號(hào)(flowlabel):路由器對(duì)流中報(bào)同樣處理。負(fù)載長度(payloadlength):除基本頭外負(fù)載字節(jié)數(shù)。后續(xù)頭部(nextheader):標(biāo)識(shí)基本頭后頭部類型。跳數(shù)限制(hoplimit):數(shù)據(jù)源設(shè)定,經(jīng)路由器減1。源地址(sourceaddress):數(shù)據(jù)報(bào)源地址。目標(biāo)地址(destinationaddress):數(shù)據(jù)報(bào)目標(biāo)地址。IPv6基本頭格式-與IPv4比較IPv4報(bào)頭中有報(bào)頭長度,IPv6基本頭定長。IPv4報(bào)頭中有報(bào)頭校驗(yàn)和,IPv6沒有。Paxson經(jīng)統(tǒng)計(jì)發(fā)現(xiàn):通過鏈路層CRC校驗(yàn)的包約0.02%有校驗(yàn)和錯(cuò)誤。Stone等收集了約22億個(gè)包,其中約48萬個(gè)包有IP、UDP或TCP校驗(yàn)和錯(cuò)誤。1278個(gè)包IP校驗(yàn)和錯(cuò)。IPv6的路由器不對(duì)數(shù)據(jù)報(bào)分段,…IPv6的可選項(xiàng)在擴(kuò)展報(bào)頭,路由器一般不需要處理可選項(xiàng)。IPv6地址有三類IP地址:?jiǎn)尾?、任播、多播地址地址的冒分十六進(jìn)制表示可集成的全局單播地址局部使用(localuse)的單播地址嵌入IPv4地址的IPv6地址任播地址多播地址地址的冒分十六進(jìn)制表示將128位地址分成8段,每段16位用十六進(jìn)制數(shù)表示,段之間用冒號(hào)“:”隔開。例2080:0000:0000:0000:0123:4567:89AB:CDEF,FF01:0000:0000:1234:89AB:0000:0000:0000一或多個(gè)連續(xù)的全0可用“::”代替,但“::”在一個(gè)地址中只能出現(xiàn)一次,各段數(shù)字開始的0可省略。如FF01:0:0:1234:89AB::地址前綴用“IPv6地址/前綴位數(shù)”表示,前綴位數(shù)是十進(jìn)制數(shù)。例如:3FFE:3200::/24。::1是回繞地址(loopback),用于自己給自己發(fā)送??杉傻娜謫尾サ刂?/p>

(aggregatableglobalunicastaddress)格式前綴FP(FormatPrefix):為001。頂級(jí)集成標(biāo)識(shí)(Top-LevelAggregationID):指定Internet頂級(jí)機(jī)構(gòu),即服務(wù)提供者網(wǎng)絡(luò)號(hào)。下一級(jí)集成標(biāo)識(shí)(Next-LevelAggregationID):由TLAID指定的服務(wù)提供者用于區(qū)分它的用戶網(wǎng)絡(luò)號(hào)FPTLAIDRESNLAIDSLAIDinterfaceID3138241664可集成的全局單播地址(續(xù))場(chǎng)所級(jí)集成標(biāo)識(shí)(Site-LevelAggregationID):用戶用來構(gòu)建用戶網(wǎng)絡(luò)的編址層次,標(biāo)識(shí)用戶網(wǎng)絡(luò)內(nèi)的特定子網(wǎng)。每個(gè)場(chǎng)所可有65536子網(wǎng)。接口標(biāo)識(shí)(interfaceID):用于標(biāo)識(shí)鏈路接口,一般是數(shù)據(jù)鏈路層地址,如48位以太網(wǎng)地址。保留(REServed):留給將來使用。對(duì)于每個(gè)Internet服務(wù)提供者的網(wǎng)絡(luò)號(hào)TLAID,Internet的主干路由器必須有一表項(xiàng)與之對(duì)應(yīng)。保留的8位是為TLAID和/或NLAID擴(kuò)展預(yù)留。局部使用的單播地址11111110100接口標(biāo)識(shí)11111110110子網(wǎng)標(biāo)識(shí)接口標(biāo)識(shí)105464(位)本鏈路使用(link-local-use)的單播地址格式10381664(位)本場(chǎng)所使用(site-local-use)的單播地址格式局部使用的單播地址(續(xù))若源/目標(biāo)地址為本鏈路使用的地址,則數(shù)據(jù)報(bào)只轉(zhuǎn)發(fā)到該單一鏈路,如中繼器或網(wǎng)橋連接的以太網(wǎng)鏈路,不轉(zhuǎn)發(fā)到其它鏈路。若源/目標(biāo)地址為本場(chǎng)所使用的地址,則路由器不把數(shù)據(jù)報(bào)轉(zhuǎn)發(fā)到場(chǎng)所以外。一個(gè)場(chǎng)所可以是由路由器連接的多個(gè)以太網(wǎng)鏈路。局部使用的地址無需申請(qǐng)地址前綴,若要連到Internet,可加全局前綴自動(dòng)重編址。嵌入IPv4地址的IPv6地址IPv4向IPv6的過渡:在過渡時(shí)期IPv4地址和IPv6地址必須共存。過渡期有的結(jié)點(diǎn)實(shí)現(xiàn)雙IP協(xié)議棧,同時(shí)支持IPv4和IPv6,被稱為IPv6/IPv4結(jié)點(diǎn)。采用“隧道(tunnel)技術(shù)”:在IPv4路由拓?fù)涞幕A(chǔ)上將IPv6數(shù)據(jù)報(bào)外加IPv4報(bào)頭轉(zhuǎn)發(fā),即封裝IPv4報(bào)頭。隧道可以是源到目標(biāo)路徑的一段,開始和結(jié)束端是IPv6/IPv4結(jié)點(diǎn)。嵌入IPv4地址的IPv6地址(續(xù))實(shí)施隧道技術(shù)的IPv6/IPv4結(jié)點(diǎn)被指定特殊的IPv6單播地址,稱為“與IPv4兼容的IPv6地址(IPv4-compatibleIPv6address)”。隧道端結(jié)點(diǎn)的IPv4地址可從這種IPv6地址自動(dòng)導(dǎo)出。000000……

0000IPv4地址801632位嵌入IPv4地址的IPv6地址(續(xù))“映射IPv4的IPv6地址(IPv4-mappedIPv6address)”用來表示只實(shí)現(xiàn)IPv4不支持IPv6的結(jié)點(diǎn)。在IPv4和IPv6混合網(wǎng)中,上述地址可用冒分十六進(jìn)制和點(diǎn)分十進(jìn)制結(jié)合的形式表示為:

x:x:x:x:x:x:d.d.d.d,如::00000000……

FFFFIPv4地址801632(位)任播地址任播地址是從單播地址空間分配的,當(dāng)一個(gè)單播地址被分配給一個(gè)以上接口時(shí)就變成任播地址。任播地址不能用作源地址;不能指定給主機(jī),只能指定給路由器。發(fā)送到任播地址的數(shù)據(jù)報(bào)被送到“最近”的結(jié)點(diǎn)。任播地址可表示連到特定子網(wǎng)的一組路由器,或?qū)儆谝粋€(gè)機(jī)構(gòu)的一組路由器。多播地址標(biāo)記(flag):T=0表示永久性的周知(well-known)多播地址;T=1表示暫時(shí)指定的多播地址。范圍(scope):限制多播組的范圍,1=本結(jié)點(diǎn)(node-local)范圍;2=本鏈路(link-local)范圍;5=本場(chǎng)所(site-local)范圍;8=本機(jī)構(gòu)范圍;14=全局范圍(globalscope)。例FF02::2,FF05::2。11111111標(biāo)記范圍組標(biāo)識(shí)000T844112(位)IPv6地址前綴的初始分配IPv6可選項(xiàng)IPv6的可選項(xiàng)放在擴(kuò)展頭。定義了6種選項(xiàng):逐跳選項(xiàng)(hop-by-hopoptions):給路由器信息;路由選項(xiàng)(routingoptions):部分/全部路由信息;分段選項(xiàng)(fragmentoptions):管理數(shù)據(jù)報(bào)分段;目標(biāo)選項(xiàng)(destinationoptions):給目標(biāo)的信息;身份認(rèn)證(authentication):為數(shù)據(jù)報(bào)提供發(fā)送主機(jī)身份認(rèn)證和數(shù)據(jù)完整性校驗(yàn);載荷安全封裝(encapsulatingsecuritypayload):為數(shù)據(jù)報(bào)提供加密,也包括發(fā)送主機(jī)身份認(rèn)證。全球的IPv6試驗(yàn)網(wǎng)1996年創(chuàng)建的6bone是全球的IPv6試驗(yàn)網(wǎng)。6bone使用地址前綴3FFE::/16。它為注冊(cè)者分配一個(gè)24位地址前綴,稱為pTLA(pseudoTLA)。CERNET分配到3FFE:3200::/24。6bone

通過封裝IPv4報(bào)頭來傳遞IPv6數(shù)據(jù)報(bào)。IPv6的前景?!從IPv4平滑過渡到IPv6十分重要,但過渡到IPv6耗資巨大!美國擁有的IPv4地址占全世界的74%…,日、韓和歐洲較積極。Internet傳輸層BGPFTPHTTPSMTPTELNETSNMPOSPFIP+ICMPDNSTCPUDPInternet傳輸層傳輸控制協(xié)議TCP(TransmissionControlProtocol)是端到端、有連接、可靠數(shù)據(jù)流傳輸協(xié)議。多數(shù)互聯(lián)網(wǎng)應(yīng)用需要TCP的可靠傳輸服務(wù)。用戶數(shù)據(jù)報(bào)協(xié)議UDP

(UserDatagramProtocol)是端到端、無連接、不保證可靠的數(shù)據(jù)報(bào)傳輸協(xié)議。它為互聯(lián)網(wǎng)上實(shí)時(shí)視頻、音頻應(yīng)用提供了實(shí)驗(yàn)環(huán)境。擁塞控制的進(jìn)一步研究TCP概況TCP是由VintonCerf和RobertKahn在1973年設(shè)計(jì),原先IP和TCP是合在一起的,后來把尋徑轉(zhuǎn)發(fā)和可靠傳輸分成兩層。TCP向應(yīng)用層提供可靠的進(jìn)程間通信。IP地址標(biāo)識(shí)主機(jī),TCP端口號(hào)標(biāo)識(shí)應(yīng)用進(jìn)程。集中統(tǒng)一分配的端口號(hào)稱為周知端口(well-knownport),其余的動(dòng)態(tài)分配。應(yīng)用進(jìn)程使用TCP通信,首先要建立連接。TCP傳輸?shù)臄?shù)據(jù)單元稱數(shù)據(jù)片(segment)??煽繑?shù)據(jù)流傳輸協(xié)議TCPTCP數(shù)據(jù)可靠傳輸機(jī)制TCP滑動(dòng)窗口流控TCP數(shù)據(jù)片格式TCP連接建立—三次握手TCP連接關(guān)閉TCP重傳策略和重傳超時(shí)值TCP擁塞控制TCP協(xié)議的問題和擴(kuò)充TCP數(shù)據(jù)可靠傳輸機(jī)制TCP源進(jìn)程TCP目標(biāo)進(jìn)程數(shù)據(jù)字節(jié)1001~2000ACK2001數(shù)據(jù)字節(jié)2001~2500丟失超時(shí)重傳數(shù)據(jù)字節(jié)2001~2500ACK2501TCP數(shù)據(jù)可靠傳輸機(jī)制(續(xù))TCP源進(jìn)程為一個(gè)連接上傳輸?shù)拿總€(gè)數(shù)據(jù)字節(jié)指定序號(hào);TCP為每個(gè)數(shù)據(jù)片計(jì)算校驗(yàn)和;TCP目標(biāo)進(jìn)程要對(duì)正確收到(即校驗(yàn)和正確)的數(shù)據(jù)字節(jié)序號(hào)給予確認(rèn)(ACKnowledgement);TCP源進(jìn)程所發(fā)出的數(shù)據(jù)片在某時(shí)間間隔沒有收到確認(rèn),則要(超時(shí))重傳數(shù)據(jù)片。若每發(fā)一個(gè)數(shù)據(jù)片要等待確認(rèn),性能...TCP滑動(dòng)窗口流控目標(biāo)進(jìn)程控制源進(jìn)程發(fā)送窗口的大小窗口外左邊的字節(jié)已被發(fā)送,且已收到確認(rèn)窗口內(nèi)字節(jié)可以發(fā)送/已被發(fā)送,但未收到確認(rèn)窗口外右邊的字節(jié)不能發(fā)送。窗口滑動(dòng)12345678910111213141516TCP滑動(dòng)窗口流控(續(xù))TCP確認(rèn)字節(jié),滑動(dòng)窗口大小也以字節(jié)為單位,而不是數(shù)據(jù)片。這是有歷史原因的,原來TCP和IP是一層,采用字節(jié)流為了方便TCP數(shù)據(jù)片被分段,后來分成兩層,分段功能放在IP層。在傳輸中幾個(gè)小片合成一個(gè)片會(huì)更有效,采用字節(jié)流小片合大片更方便。用數(shù)據(jù)片數(shù)目說明數(shù)據(jù)總量不及用字節(jié)數(shù)更確切,因?yàn)橐粋€(gè)數(shù)據(jù)片可以容納一個(gè)字節(jié),也可以容納1000字節(jié)。TCP數(shù)據(jù)片格式目標(biāo)端口(destinationport)校驗(yàn)和(checksum)緊急指針(urgentpoint)序號(hào)(sequencenumber)確認(rèn)號(hào)(acknowledgementnumber)選項(xiàng)(options)+填充(padding)數(shù)據(jù)01631位源端口(sourceport)窗口大小(windowsize)(字節(jié)數(shù))FINSYNRSTPSHACKURG片頭長度保留20字節(jié)TCP數(shù)據(jù)片格式(續(xù))源端口:連同源IP地址標(biāo)識(shí)源應(yīng)用進(jìn)程。目標(biāo)端口:連同目標(biāo)IP地址標(biāo)識(shí)目標(biāo)主機(jī)的一個(gè)應(yīng)用進(jìn)程。序號(hào):代表本數(shù)據(jù)片第一個(gè)字節(jié)的序號(hào)。確認(rèn)號(hào):若ACK=1,確認(rèn)號(hào)代表期待接收的下一數(shù)據(jù)字節(jié)序號(hào)。片頭長度:片頭的字?jǐn)?shù),每個(gè)字32位。指明數(shù)據(jù)從哪里開始。TCP數(shù)據(jù)片格式(續(xù))6個(gè)控制位:

URG=1表示緊急指針有效;URG=0忽略指針。ACK=1表示確認(rèn)號(hào)有效;ACK=0忽略確認(rèn)號(hào)。PSH=1表示推進(jìn),讓目標(biāo)TCP向上遞交數(shù)據(jù)片。RST=1表示清除連接,發(fā)生主機(jī)故障時(shí)清除連接,也用于拒絕非法數(shù)據(jù)片或連接請(qǐng)求。SYN=1表示連接請(qǐng)求,用于建立連接并通告初始序號(hào),本片序號(hào)=該連接的初始序號(hào)。 FIN=1表示本方數(shù)據(jù)流終止,即關(guān)閉本方數(shù)據(jù)流。注意SYN和FIN的片即使無數(shù)據(jù)也占1個(gè)序號(hào)。TCP數(shù)據(jù)片格式(續(xù))窗口大?。?6位,源方接收窗口的字節(jié)數(shù),即目標(biāo)方發(fā)送窗口大小。校驗(yàn)和:16位,對(duì)片頭和數(shù)據(jù)以16位字計(jì)算得到,校驗(yàn)和還包括源、目標(biāo)IP地址等96位偽報(bào)頭。注意偽報(bào)頭不發(fā)送。緊急指針:當(dāng)URG=1時(shí),指針指向緊急數(shù)據(jù)后面字節(jié)的位置。選項(xiàng):RFC793中定義了最大數(shù)據(jù)片長度MSS選項(xiàng)。...TCP數(shù)據(jù)片格式(續(xù))—討論校驗(yàn)和檢查需不需要?夠不夠?Paxson

1997年經(jīng)統(tǒng)計(jì)發(fā)現(xiàn):通過鏈路層CRC校驗(yàn)的包約0.02%有校驗(yàn)和錯(cuò)誤。Stone等在1998~1999年收集了約22億個(gè)包,其中約46.86萬個(gè)包有TCP校驗(yàn)和錯(cuò)誤,包括端主機(jī)硬件錯(cuò)誤、端主機(jī)軟件bugs(UNIX、WindowsNT)以及路由器內(nèi)存錯(cuò)誤等(不要太信任硬件!!)。有一半錯(cuò)誤無法確認(rèn)原因(數(shù)據(jù)隱私)。TCP數(shù)據(jù)片格式(續(xù))—討論0~255后來擴(kuò)展為0~1023端口號(hào)一般作為周知端口(well-knownport)由IANA管理,統(tǒng)一分配給系統(tǒng)應(yīng)用進(jìn)程,如HTTP用80。1024~65535端口號(hào)由用戶動(dòng)態(tài)使用,但此慣例不都遵循。TCP數(shù)據(jù)片最小是20字節(jié)(無數(shù)據(jù)的SYN片、ACK片),最大長度的默認(rèn)值是556字節(jié)。有人用Tcpdump對(duì)網(wǎng)絡(luò)上某條線路進(jìn)行一天的監(jiān)聽,統(tǒng)計(jì)發(fā)現(xiàn)25%的IP包是40字節(jié),576字節(jié)以下的IP包占75%。TCP連接建立—三次握手發(fā)送方TCP接收方TCP發(fā)SYN,序號(hào)=x發(fā)SYN,ACK,序號(hào)=y,確認(rèn)號(hào)=x+1發(fā)ACK,確認(rèn)號(hào)=y+1TCP連接建立—三次握手必要性發(fā)送方TCP接收方TCP發(fā)SYN,序號(hào)=200收SYN,序號(hào)=100發(fā)SYN,ACK,序號(hào)=300,確認(rèn)號(hào)=101發(fā)RST,序號(hào)=101發(fā)SYN,ACK,序號(hào)=400,確認(rèn)號(hào)=201發(fā)ACK,序號(hào)=201,確認(rèn)號(hào)=401收SYN,序號(hào)=200TCP連接建立—三次握手必要性(續(xù))三次握手是必要的,因?yàn)橥綌?shù)據(jù)片會(huì)丟失、延遲或重傳。接收方在收到一個(gè)同步數(shù)據(jù)片時(shí),無法知道它是否是一個(gè)老、延遲的重復(fù)片,若無三次握手會(huì)造成混亂。上例<SYN,序號(hào)=100>是一個(gè)老的、重傳的、延遲的同步數(shù)據(jù)片,但接收方無法知道這一點(diǎn),所以進(jìn)行第二次握手。發(fā)送方發(fā)現(xiàn)被確認(rèn)的序號(hào)不對(duì),發(fā)<RST,序號(hào)=101>拒絕此非法數(shù)據(jù)片。接下去是針對(duì)同步片<SYN,序號(hào)=200>的正常同步過程。TCP連接關(guān)閉發(fā)送方TCP接收方TCP發(fā)FIN,ACK,序號(hào)=x,確認(rèn)號(hào)=y發(fā)ACK,(數(shù)據(jù)),序號(hào)=y,確認(rèn)號(hào)=x+1發(fā)ACK,確認(rèn)號(hào)=z+1發(fā)FIN,ACK,序號(hào)=z,確認(rèn)號(hào)=x+1

...TCP重傳策略和重傳超時(shí)值TCP采用的是累計(jì)確認(rèn)和后退N重傳機(jī)制。實(shí)現(xiàn)簡(jiǎn)單,但浪費(fèi)帶寬。對(duì)高質(zhì)量線路重傳常常是擁塞而丟棄造成。持續(xù)擁塞的情況,重傳是火上澆油,更加擁塞。設(shè)置適當(dāng)?shù)闹貍鞒瑫r(shí)值RTO(RetransmissionTimeOut)十分重要...,RTO必須動(dòng)態(tài)修正。TCP重傳超時(shí)值(續(xù))RTT(RoundTripTime)表示來回傳輸時(shí)間,但各次傳輸RTT不會(huì)一樣,需要某種“平均化”的值,稱為SRTT(SmoothedRTT)。設(shè)定SRTT初值,可用各次的RTT對(duì)SRTT修正:SRTT=·SRTT+(1-)RTT,其中是平滑因子,建議值0.8~0.9,典型值7/8。

令Err=RTT-SRTTTCP重傳超時(shí)值(續(xù))|Err|每次傳輸也都不同,考慮偏差的平滑值D。設(shè)定D的初值,以后利用各次的|Err|對(duì)D修正:

D←·D+(1-)|Err|

其中與SRTT計(jì)算式中的可以同或不同。重傳超時(shí)值按下式計(jì)算:

RTO=SRTT+4DTCP重傳超時(shí)值(續(xù))對(duì)算法來說正確測(cè)量RTT是基礎(chǔ),但RTT很難正確測(cè)量。特別當(dāng)發(fā)生數(shù)據(jù)片超時(shí)重傳時(shí),從收到的ACK無法判斷這是對(duì)原數(shù)據(jù)片還是重傳數(shù)據(jù)片的確認(rèn)。Karn算法:對(duì)于重傳的數(shù)據(jù)片不去更新RTT,每次重傳時(shí)就是將前一次的RTO加倍,直至重傳成功。Karn算法在大部分TCP中實(shí)現(xiàn)。TCP擁塞控制1986年10月開始,Internet出現(xiàn)了一系列的“擁塞崩潰”,例如某兩地相距不到400米,經(jīng)過3個(gè)網(wǎng)絡(luò)結(jié)點(diǎn),它們之間的數(shù)據(jù)吞吐量一度從平時(shí)的32kbps降到了40bps。Jacobson研究發(fā)現(xiàn):這是由于在壞的網(wǎng)絡(luò)情況(即擁塞)下TCP的累計(jì)確認(rèn)、超時(shí)重傳、后退

N等機(jī)制造成。Jacobson在TCP中增加了擁塞控制算法。這些算法防止了今天Internet的擁塞崩潰。TCP擁塞控制網(wǎng)絡(luò)擁塞現(xiàn)象TCP擁塞控制算法的基本思想TCP擁塞控制算法:

-慢啟動(dòng)和擁塞避免

(slowstart,congestionavoidance)-快重傳和快恢復(fù)

(fastretransmit,fastrecovery)TCP實(shí)現(xiàn)的版本網(wǎng)絡(luò)擁塞現(xiàn)象

—網(wǎng)絡(luò)擁塞對(duì)吞吐量的影響網(wǎng)絡(luò)吞吐量是數(shù)據(jù)通過網(wǎng)絡(luò)的傳送速率吞吐量負(fù)載無擁塞輕微擁塞嚴(yán)重?fù)砣鸄B擁塞對(duì)吞吐量的影響擁塞控制基本策略—閉環(huán)控制閉環(huán)控制(closed-loopcontrol)是一種動(dòng)態(tài)控制系統(tǒng),它包括反饋機(jī)制和控制機(jī)制。反饋機(jī)制允許網(wǎng)絡(luò)把擁塞情況通知數(shù)據(jù)源。路由器(或交換機(jī))是監(jiān)控?fù)砣潭鹊淖詈脠?chǎng)所。顯式反饋和隱式反饋...控制機(jī)制允許數(shù)據(jù)源調(diào)整給網(wǎng)絡(luò)的負(fù)載。窗口控制和速率控制。TCP擁塞控制算法的基本思想是一種把丟失作為擁塞(隱式反饋)信號(hào)的閉環(huán)控制。丟失可能是差錯(cuò)丟棄或擁塞丟棄,現(xiàn)代通信傳輸?shù)恼`碼率很低,丟失多半是擁塞造成。為每個(gè)連接動(dòng)態(tài)確定擁塞窗口cwnd

反映網(wǎng)絡(luò)擁塞情況。TCP發(fā)送方根據(jù)cwnd

和對(duì)方的接收窗口rwnd

調(diào)整發(fā)送窗口wnd:

wnd=min(cwnd,rwnd)為每個(gè)連接設(shè)置窗口門檻值ssthresh,其初值可設(shè)置為64k字節(jié)或rwnd。TCP擁塞控制算法

—慢啟動(dòng)和擁塞避免(1)慢啟動(dòng):開始時(shí)令cwnd=1,發(fā)送1個(gè)數(shù)據(jù)片,收到確認(rèn)后cwnd

加1,即cwnd=2,發(fā)送2個(gè)數(shù)據(jù)片,收到2個(gè)確認(rèn)片后cwnd

加2,即cwnd=4,發(fā)送4個(gè)數(shù)據(jù)片…??傊?,當(dāng)cwnd=n時(shí),發(fā)送n個(gè)數(shù)據(jù)片,都收到確認(rèn)片后cwnd

加n。這叫做慢啟動(dòng)。實(shí)際上,在RTT時(shí)間內(nèi)cwnd

的增量△cwnd=cwnd,cwnd

是按指數(shù)增長。TCP擁塞控制算法

—慢啟動(dòng)和擁塞避免(續(xù))慢啟動(dòng)后,會(huì)出現(xiàn)三種可能:cwnd

達(dá)到慢啟動(dòng)門檻值ssthresh(slowstartthreshold);cwnd

達(dá)到rwnd;超時(shí)無確認(rèn)。(2)

擁塞避免:當(dāng)cwnd

達(dá)到ssthresh,則cwnd

改為線性增長,發(fā)送cwnd

個(gè)數(shù)據(jù)片,在收到全部確認(rèn)后,cwnd

加1,即在RTT時(shí)間內(nèi)cwnd

的增量△cwnd=1。(3)當(dāng)cwnd

達(dá)到rwnd,則發(fā)送量不再增長。TCP擁塞控制算法

—慢啟動(dòng)和擁塞避免(續(xù))(4)當(dāng)數(shù)據(jù)片的重傳計(jì)時(shí)器超時(shí)仍未收到確認(rèn),則重傳數(shù)據(jù)片,且令ssthresh=cwnd/2(即當(dāng)前擁塞窗口的一半),再回到(1),重新慢啟動(dòng)。慢啟動(dòng)和擁塞避免作為組合算法在TCP中實(shí)現(xiàn),根據(jù)窗口門檻值和數(shù)據(jù)丟失情況來動(dòng)態(tài)調(diào)整發(fā)送窗口。TCP擁塞控制算法—快重傳當(dāng)TCP接收方收到一個(gè)錯(cuò)序(序號(hào)不連續(xù))的數(shù)據(jù)片時(shí),它立即發(fā)一個(gè)ACK片,這是一個(gè)重復(fù)的ACK,目的是讓對(duì)方知道數(shù)據(jù)片錯(cuò)序。TCP發(fā)送方不等待重傳計(jì)時(shí)器超時(shí),根據(jù)重復(fù)ACK的情況立即重傳,這就是快重傳。假定:1、2個(gè)重復(fù)ACK只是數(shù)據(jù)片暫時(shí)錯(cuò)序,3個(gè)重復(fù)ACK表明數(shù)據(jù)片丟失?!TCP擁塞控制算法—快恢復(fù)在快重傳后,不是進(jìn)入慢啟動(dòng),而是把cwnd

降一半,然后按原先方式增加,就叫快恢復(fù)。為什么采用快恢復(fù)而不是慢啟動(dòng)?收到重復(fù)的ACK,不只表示數(shù)據(jù)片可能丟失,還表示TCP發(fā)送方和接收方之間仍有數(shù)據(jù)流,TCP接收方只當(dāng)收到后面的數(shù)據(jù)片,才可能發(fā)重復(fù)ACK,所以擁塞并不嚴(yán)重。TCP擁塞控制算法—快重傳和快恢復(fù):例...TCP發(fā)送方TCP接收方數(shù)據(jù)片1數(shù)據(jù)片5數(shù)據(jù)片6ACK6數(shù)據(jù)片7ACK6數(shù)據(jù)片8ACK6數(shù)據(jù)片15ACK6數(shù)據(jù)片6ACK6ACK16cwnd=5+3cwnd+1...cwnd=10TCP擁塞控制算法

—快重傳和快恢復(fù)算法(1)當(dāng)發(fā)送方收到第3個(gè)重復(fù)的ACK,設(shè)置ssthresh=cwnd/2,但不小于2個(gè)數(shù)據(jù)片。(2)重傳丟失的片,設(shè)置cwnd=ssthresh+3。(3)再次收到重復(fù)的ACK時(shí),cwnd←cwnd+1。(4)若新cwnd值允許,則恢復(fù)發(fā)送1個(gè)新片。(5)當(dāng)非重復(fù)的ACK到達(dá),它是對(duì)(2)重傳的確認(rèn)。設(shè)置cwnd=ssthresh,進(jìn)入擁塞避免。TCP擁塞控制算法

—快重傳和快恢復(fù)算法的討論快重傳算法選擇重復(fù)ACK的門檻值為3,但即使收到3個(gè)重復(fù)的ACK,也可能只是暫時(shí)錯(cuò)序,如包的傳遞路徑改變,...。所以快重傳的片中也會(huì)有不必要的重傳。Paxson對(duì)35個(gè)Internet站點(diǎn),20000次TCP批量數(shù)據(jù)傳輸作了分析:必要和不必要的快重傳的比例記為Rg:b。

TCP擁塞控制算法

—快重傳和快恢復(fù)算法的討論若重復(fù)ACK門檻值設(shè)為4,Rg:b

改進(jìn)為原2.5倍,但減少了30%快重傳的機(jī)會(huì)。若此值設(shè)為2,增加了65~70%快重傳的機(jī)會(huì),但不必要的重傳增加為原來的3倍。當(dāng)一個(gè)窗口中只有一個(gè)數(shù)據(jù)片丟失時(shí),快重傳和快恢復(fù)優(yōu)化了性能,但是同一窗口中有多個(gè)數(shù)據(jù)片丟失時(shí)不能快恢復(fù)。TCP實(shí)現(xiàn)的版本1988年的BSD

溫馨提示

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

評(píng)論

0/150

提交評(píng)論