當前位置:首頁 » 網路連接 » 計算機網路自頂向下考試筆記
擴展閱讀
蘋果電腦退出後如何找回 2024-11-15 21:28:40
睿易無線ap網路斷網 2024-11-15 21:17:56

計算機網路自頂向下考試筆記

發布時間: 2022-12-18 21:57:43

『壹』 《計算機網路自頂向下方法第八版》pdf下載在線閱讀全文,求百度網盤雲資源

《計算機網路自頂向下方法第八版》網路網盤pdf最新全集下載:
鏈接:https://pan..com/s/1XSe60mMhX2A17a5dUE0XPA

?pwd=orc4 提取碼:orc4
簡介:此書2021年新出的版本,適合作為計算機、電氣工程等專業本科生的「計算機網路」課程教科書,同時也適合網路技術人員、專業研究人員閱讀。

『貳』 《計算機網路-自頂向下方法》第四章-網路層 要點

網路層的作用:實現主機到主機的通信服務,將分組從一台發送主機移動到一台接收主機。

1、轉發涉及分組在單一的路由器中從一條入鏈路到一條出鏈路的傳送。
2、路由選擇涉及一個網路的所有路由器,它們經路由選擇協議共同交互,以決定分組從源到目的地結點所採用的路徑。計算這些路徑的演算法稱為路由選擇演算法。

每台路由器都有一張轉發表,路由器通過檢查到達分組首部欄位的值來轉發分組,然後使用該值在該路由器的轉發表中索引查找。路由選擇演算法決定了插入路由器轉發表中的值。

路由選擇演算法可能是集中式的,或者是分布式的。但在這兩種情況下,都是路由器接收路由選擇協議報文,該信息被用於配置其轉發表。

網路層也能在兩台主機之間提供無連接服務或連接服務。同在運輸層的面向連接服務和無連接服務類似,連接服務需要握手步驟,無連接服務不需要握手。但它們之間也有差異:
1、 在網路層中,這些服務是由網路層向運輸層提供的主機到主機的服務。在運輸層中,這些服務則是運輸層向應用層提供的進程到進程的服務。
2、 在網路層提供無連接服務的計算機網路稱為數據報網路;在網路層提供連接服務的計算機網路稱為虛電路網路。
3、 在運輸層實現面向連接的服務與在網路層實現連接服務是根本不同的。運輸層面向連接服務是在位於網路邊緣的端系統中實現的;網路層連接服務除了在端系統中,也在位於網路核心的路由器中實現。(原因很簡單:端系統和路由器都有網路層)

虛電路網路和數據報網路是計算機網路的兩種基本類型。在作出轉發決定時,它們使用了非常不同的信息。

IP地址有32比特,如果路由器轉發表採用「蠻力實現」將對每個可能的目的地址有一個表項。因為有超過40億個可能的地址,這種選擇完全不可能(即使用二分查找也十分慢)。
我們轉發表的表項可以設計為幾個表項,每個表項匹配一定范圍的目的地址,比如有四個表項

(你可能也會考慮到,IP地址有32比特,如果每個路由器設計為只有2個表項,那麼也只需要有32個路由器就可以唯一確定這40億個地址中的一個。)

最長前綴匹配規則,是在轉發表中尋找最長的匹配項,並向與最長前綴匹配相關聯的鏈路介面轉發分組。這種規則是為了與網際網路的編址規則相適應。

1、輸入埠
「使用轉發表查找輸出埠」是輸入埠最重要的操作(當然還有其他一些操作)。輸入埠執行完這些所需的操作後,就把該分組發送進入交換結構。如果來自其他輸入埠的分組當前正在使用交換結構,一個分組可能會在進入交換結構時被暫時阻塞,在輸入埠處排隊,並等待稍後被及時調度以通過交換結構。
2、交換結構
交換結構的三種實現方式

3、輸出埠
分組調度程序 處理在輸出埠中排隊的分組
4、路由選擇處理器

</br>

</br>

IP協議版本4,簡稱為IPv4;IP協議版本6,簡稱為IPv6。

如上圖所示,網路層有三個主要的組件
1、IP協議
2、路由選擇協議
3、ICMP協議 (Internet Control Message Protocol, 網際網路控制報文協議)

</br>

不是所有鏈路層協議都能承載相同長度的網路層分組。有的協議能承載大數據報,而有的協議只能承載小分組。例如,乙太網幀能夠承載不超過1500位元組的數據,而某些廣域網鏈路的幀可承載不超過576位元組的數據。

一個鏈路層幀能承載的最大數據量叫做最大傳送單元(Maximun Transmission Unit, MTU)

所以鏈路層協議的MTU嚴格限制著IP數據報的長度。這也還不是主要的問題,問題在於發送方與目的地路徑上的每段鏈路可能使用不同的鏈路層協議,且每種協議可能具有不同的MTU。

舉個例子:假定從某條鏈路收到一個IP數據報,通過檢查轉發表確定出鏈路,並且該出鏈路的MTU比該IP數據報的長度要小。那麼如何將這個過大的IP分組壓縮進鏈路層幀的有效載荷欄位呢?

解決辦法是,將IP數據報中的數據分片成兩個或更多個較小的IP數據報,用單獨的鏈路層幀封裝這些較小的IP數據報;然後向輸出鏈路上發送這些幀。每個這些較小的數據報都被稱為片(fragment)。

路由器完成分片任務。同時,為了使得網路內核保持簡單,IPv4設計者把數據報的重組工作放到端系統中,而非放到網路路由器中。

前提:一個4000位元組的數據報(20位元組IP首部加上3980位元組IP有效載荷)到達一台路由器,且必須被轉發到一條MTU為1500位元組的鏈路上。假定初始數據報貼上的標識號為777。

這意味著初始數據報中3980位元組數據必須被分配到3個獨立的片(其中的每個片也是一個IP數據報)

IP分片:

IP地址有32比特,分為網路號和主機號。
IP地址的網路部分(即網路號)被限制為長度為8、16或24比特,這是一種稱為分類編址的編址方案。具有8、16和24比特子網地址的子網分別被稱為A、B和C類網路。

但是它在支持數量迅速增加的具有小規模或中等規模子網的組織方面出現了問題。一個C類(/24)子網僅能容納多大2^8 - 2 = 254台主機(2^8 = 256, 其中的兩個地址預留用於特殊用途),這對許多組織來說太小了。然而一個B類(/16)子網可支持多達65534台主機,又太大了。這導致B類地址空間的迅速損耗以及所分配的地址空間的利用率低。

廣播地址255.255.255.255。當一台主機發出一個目的地址為255.255.255.255的數據報時,該報文會交付給同一個網路中的所有主機。

某組織一旦獲得了一塊地址,它就可以為本組織內的主機與路由器介面逐個分配IP地址。既可手工配置IP地址,也可以使用動態主機配置協議(Dynamic Host Configuration Protocol, DHCP)自動配置。DHCP還允許一台主機得知其他信息,如它的子網掩碼、它的第一跳路由器地址(常稱為默認網關)與它的本地DNS伺服器的地址。

由於DHCP具有能將主機連接進一個網路相關方面的自動能力,它又被稱為即插即用協議。

DHCP是客戶-伺服器協議。客戶通常是新達到的主機,它要活的包括自身使用的IP地址在內的網路配置信息。在最簡單的場合下,每個子網將具有一台DHCP伺服器。如果在某子網中沒有伺服器,則需要一個DHCP中繼代理(通常是一台路由器),這個代理知道用於該網路的DHCP伺服器的地址。

DHCP協議工作的4個步驟:

網路地址轉換(Network Address Translation, NAT)

ICMP通常被認為是IP的一部分,但從體系結構上將它是位於IP之上的,因為ICMP報文是承載在IP分組中的。即ICMP報文是作為IP有效載荷承載的,就像TCP與UDP報文段作為IP有效載荷被承載那樣。

眾所周知的ping程序發送一個ICMP類型8編碼0的報文到指定主機。看到該回顯請求,目的主機發回一個類型0編碼0的ICMP回顯回答。大多數TCP/IP實現直接在操作系統中支持ping伺服器,即該伺服器不是一個進程。

新型IPv6系統可做成向後兼容,即能發送、路由和接收IPv4數據報,要使得已部署的IPv4系統能夠處理IPv6數據報,最直接的方式是採用一種雙棧方法。

1、鏈路狀態(Link State, LS)演算法:屬於全局式路由選擇演算法,這種演算法必須知道網路中每條鏈路的費用。費用可理解為鏈路的物理長度、鏈路速度,或與該鏈路相關的金融上的費用。鏈路狀態演算法採用的是Dijkstra演算法。

2、距離向量(Distance-Vector, DV)演算法:屬於迭代的、非同步的和分布式的路由選擇演算法。
「迭代的」,是因為此過程一直要持續到鄰居之間無更多信息要交換為止。
「非同步的」,是因為它不要求所有結點相互之間步伐一致地操作。
「分布式的」,是因為每個結點都要從一個或多個直接相連鄰居接收某些信息,執行計算,然後將其計算結果分發給鄰居。
DV演算法的方程:

其中,dx(y)表示從結點x到結點y的最低費用路徑的費用,c(x, v)是結點x到結點v的費用,結點v指的是所有x的相連結點,所以x的所有相連結點都會用minv方程計算。

(N是結點(路由器)的集合,E是邊(鏈路)的集合)

為了減少公共網際網路的路由選擇計算的復雜性以及方便企業管理網路,我們將路由器組織進自治系統。

在相同AS中的路由器全都運行同樣的路由選擇演算法,且擁有彼此的信息。在一個自治系統內運行的路由選擇演算法叫做自治系統內部路由選擇協議。

當然,將AS彼此互聯是必需的,因此在一個AS內的一台或多台路由器將有另外的任務,即負責向在本AS之外的目的地轉發分組。這些路由器被稱為網關路由器。

分為自治系統內部的路由選擇和自治系統間的路由選擇

1、網際網路中自治系統內部的路由選擇:路由選擇信息協議(Routing Information Protocol, RIP)
2、網際網路中自治系統內部的路由選擇:開放最短路優先(Open Shortest Path First, OSPF)
3、自治系統間的路由選擇:邊界網關協議(Broder Gateway Protocol, BGP)

什麼要使用不同的AS間和AS內部路由選擇協議?

實現廣播的方法
1、無控制洪泛。該方法要求源結點向它的所有鄰居發送分組的副本。當某結點接收了一個廣播分組時,它復制該分組並向它的所有鄰居(除了從其接收該分組的那個鄰居)轉發之。
致命缺點: 廣播風暴 ,如果圖具有圈,那麼每個廣播分組的一個或多個分組副本將無休止地循環。
2、受控洪泛。用於避免廣播風暴,關鍵在於正確選擇何時洪泛分組,何時不洪泛分組。受控洪泛有兩種方法:序號控制洪泛、反向路徑轉發(Reverse Path Forwarding, RPF)
3、生成樹廣播。雖然序號控制洪泛和RPF能避免廣播風暴,但是它們不能完全避免冗餘廣播分組的傳輸。

多播:將分組從一個或多個發送方交付到一組接收方

每台主機有一個唯一的IP單播地址,該單播地址完全獨立於它所參與的多播組的地址。

網際網路網路層多播由兩個互補組件組成:網際網路組管理協議(Internet Group Management Protocol, IGMP)和多播路由選擇協議

IGMP只有三種報文類型:membership_query報文,membership_report報文,leave_group報文。

與ICMP類似,IGMP報文也是承載在一個IP數據報中。

網際網路中使用的多播路由選擇
1、距離向量多播路由選擇協議
2、協議無關的多播路由選擇協議

『叄』 2019-07-07 計算機網路 自頂向下方法 第六章1

在鏈路層中,由兩種信道,第一種是廣播信道,用於連接有線區域網,衛星網和混合光纖同軸電纜。第二種類型的鏈路層信道是點對點通信鏈路,著在注入長距離鏈路連接的兩台路由器之間。

差錯糾正類似於差錯檢測,區別在於接收方不僅能監測珍重出現的比特差錯,而且能夠准確地確定幀中的差錯出現的位置(並因此糾正這些差錯)。

在典型的計算機結構,鏈路層的主體部分位於網路適配器。網路適配器有時也成為網路介面卡,位於網路適配器核心的是鏈路層控制器,該控制器通常是一個實現了許多鏈路層服務。鏈路層控制器的許多功能是用硬體實現的,越來越多的網路適配器被綜合進主機的主板,即所謂的區域網在主板配置。

盡管大部分鏈路層是在硬體中實現的,但部分鏈路層是在運行於主機CPU中的軟體中實現的。

廣播鏈路能夠讓多個發送和接收節點都連接到相同的,單一的,共享的廣播信道上。當任何一個節點傳輸一個幀時,信道廣播該幀,每個其它節點都收到一個副本。

多路訪問協議用於規范節點在共享的廣播信道上的傳輸行為。

當所有節點同時接到多個幀,傳輸的幀在所有的接收方處碰撞,所有幀都丟失。

多路訪問協議可以分為三類——信道劃分協議,隨機接入協議和輪流協議。

TDM和FDM都是信道劃分協議,而CDMA則是碼分多址,如果配置恰當,可以同時接收節點而不被干擾。

隨機接入協議在每一次碰撞後等待隨機時間再發。

時隙ALOHA是一個很簡單的隨機接入協議,而AHOHA效率是時隙ALOHA的一半。

載波偵聽多路訪問(CSMA)會在開始之前監測是否有人說話,而如果其他人同時開始說話,則停下。

輪流協議

輪詢協議的問題有很多,比如效率低下,比如若調配節點出問題則崩盤。

輪流協議中還有令牌協議。

並不是主機或路由器具有鏈路層地址,而是它們的適配器(即網路介面)具有鏈路層地址。因此,具有多個網路介面的主機或路由器將具有與之相關聯的多個鏈路層地址。因此,具有多個網路介面的主機或路由器將具有與之相關聯的多個鏈路層地址,就像他也具有多個與之相關聯的IP地址一樣。重要的是鏈路層交換機並不具有於它們的介面相關聯的鏈路層地址。

MAC地址長度為6資金額,有2的48次方可能的地址。

通過軟體改變一塊適配器 的MAC地址現在是可能的。

適配器的MAC地址具有扁平結構,而且不論適配器到哪裡用都不會變化。帶有乙太網介面的便攜機其總具有相同的MAC地址。

當適配器收到一個幀時,將檢查該幀中的目的MAC地址和自己的MAC地址是否匹配。若匹配,則取出數據,否則丟棄該幀。

因為存在網路層地址(如IP地址)和鏈路層地址(MAC地址),所以需要在它們之間進行轉換,這就是地址解析協議。

在發送主機中的ABP模塊將去在相同區域網上的任何IP地址作為輸入,然後返回相應的MAC地址。

DNS和ABP有些類似,DNS為在網際網路中個任何地方的主機解析主機名,而ABP只為在同i一個自網上的主機和路由器介面解析IP地址。

每台主機或路由器在其內存中都有一個ABP表。該表包含了IP地址到MAC地址的映射關系。該ABP表也包含一個壽命值(TTL)

當ABP表中補辦和對應IP地址,則發送一個ABP分組,所有同一子網內的適配器都可以收到,然後每個ABP模塊檢查自己的IP地址是否匹配,若匹配,返回一個響應ABP分組。

ABP可以說是跨越網路層和鏈路層的協議。

若向別的子網發送,則鏈路層地址為路由器介面的地址,然後由路由器轉到網路層進行處理。

使用匯流排拓撲的乙太網是一種廣播區域網,即所有傳輸的幀傳送到於該匯流排連接的所有適配器並被其處理。

盡管乙太網幀的負載是一個IP數據報,但是乙太網也能承載其他網路層分組。

乙太網的MTU是1500位元組,目的地址源地址是MAC地址。

所有乙太網技術都向網路層提供無連接,不可靠服務。

轉發器是一種物理層設備,它能在輸入端接收信號並在輸出端再生該信號。

基於交換機的以太區域網中,不會有碰撞,因此沒有必要使用MAC協議。

交換機對於對於子網中的主機和路由器是透明的,這就是說,某主機,路由器向另一個主機路由器定址一個幀,順利的將該鎮發送進區域網,並不知道該交換機會接收該幀並將它轉發到另一個節點。

交換機的過濾和轉發藉助於交換機表,交換機表中一個表項應包括——一個MAC地址,通向該MAC地址的交換機介面,表項存儲的時間。

交換機轉發分組是通過MAC地址而不是IP地址。

若表中不存在相應MAC地址,則廣播該幀的副本。

交換機是自學習的。對於每個進入交換機的入幀,交換機在表中存儲——該幀的源地址欄位中MAC地址,該幀到達的介面,當前時間。

交換機是即插即用的,但是對於廣播風暴沒有任何保護措施。

虛擬區域網跨越通過一個單一的物理區域網基礎設施定義多個虛擬區域網。

『肆』 計算機網路:用自頂向下方法描述網際網路特色(第2版)課後題答案

計算機網路:用自頂向下方法描述網際網路特色(第2版)——國外著名..
本書具有原理與實踐相結合的特點,在描述原理的同時,用從網際網路提取出的例子來說明這些原理,從而使本書的討論形象生動...訂閱關於計算機網路:用自頂向下方法描述網際網路特色(第2版)——國外著名高等院校信息科學與技術優秀教材的評論: feed: ...
www.douban.com/isbn/7-115-11942-2/

『伍』 如何學習 計算機網路自頂向下方法

《計算機網路自頂向下方法》是2009年機械工業出版社出版的圖書,作者是庫羅斯。本書是當前世界上最為流行的計算機網路教科書之一,採用了作者獨創的自頂向下的方法來講授計算機網路的原理及其協議,即從應用層協議開始沿協議棧向下講解,強調應用層範例和應用編程介面,使讀者盡快進入每天使用的應用程序環境之中進行學習和「創造」。本書的講解以網際網路為例,學以致用;注重教學法,深入淺出地重點講解計算機網路的基本原理。
第4版全面關注了網路安全問題;更新並擴展了無線網路的覆蓋范圍,增加了有關802.11(WiFi)、802.16(WiMAX)和蜂窩網路的新內容;增強了P2P應用程序的內容,包括文件共享協議、BitTorrent等文件分發協議以及Skype的IP話音等新型多媒體應用;更新了區域網和多媒體網路的章節,以反映這些領域中理論與實踐的變化;第1章中增加了有關端到端吞吐量分析的新材料;全面修訂並增加了新的課後5-7題,以及附加了循序漸進的Ethereal實驗。

『陸』 計算機網路自頂向下方法讀書筆記

link

Client發送一個特殊的 SYN報文段 (標志位SYN置為1)。隨機產生一個初始序號值seq=x,發送給Server,Client進入SYN_SENT狀態,等待Server確認。

Server收到數據包後由標志位SYN=1知道Client請求建立連接,會為該TCP連接分配TCP緩存和變數。並向client發送允許連接報文段的ACK報文段(ACK標志位設置為1),報文段中SYN=1, ack=x+1,並隨機產生一個服務端的初始序號seq=y。發送後,Server進入SYN_RCVD狀態。

Client收到確認後,也要給該連接分配緩存和變數。將發送一個ACK報文段對伺服器的允許連接的報文段進行確認。設置ack=y+1。因為連接已被建立了SYN被置為0。Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。以後每個階段中SYN都將被置為0.

Client(也可以是server,後面流程相反)設置seq=u, 發送一個FIN報文段(FIN標志位設置為1),Client進入FIN_WAIT_1狀態。表示client沒有數據要發送給server了。

Server收到FIN後,發送一個ACK報文段給Client,ack=u+1,並隨機產生一個服務端的初始序號seq=v, Server進入CLOSE_WAIT狀態。表示「同意」client關閉請求

Server發送一個FIN報文段,用來請求關閉Server到Client的數據傳送,同時包含ack=u+1,並隨機產生一個服務端的初始序號seq=w,server進入LAST_ACK狀態。

Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK報文段ack=w+1給Server, Server收到後進入CLOSED狀態。client在等待了某個固定時間(兩個最大段生命周期,2MSL)之後,沒有收到伺服器端的 ACK ,認為伺服器端已經正常關閉連接,於是自己也關閉連接,進入 CLOSED 狀態。(目的是如果server由於網路原因沒有收到最後的ACK,server將會再發送一個FIN,但若此時client已經CLOSED,則無法回復。因此引入了等待2MSL的流程)。自此就完成了四次揮手,主機中的連接資源也被釋放。

其中 生存時間(TTL) 欄位用來確保數據不會永遠在網路中循環。每當一台路由器處理數據報時,該欄位的值減1。若TTL欄位減為0,則該數據報必須丟棄。

跨網路通信需要經過路由器,同一網路間的通信不需要。127隻有127.0.0.1一個地址可用,代表當前計算機自己。255.255.255.255是 廣播地址 。當一台主機向廣播地址發出數據報時,該報文會交付給網路中的所有主機。

『柒』 計算機網路自學筆記:TCP

如果你在學習這門課程,僅僅為了理解網路工作原理,那麼只要了解TCP是可靠傳輸,數據傳輸丟失時會重傳就可以了。如果你還要參加研究生考試或者公司面試等,那麼下面內容很有可能成為考查的知識點,主要的重點是序號/確認號的編碼、超時定時器的設置、可靠傳輸和連接的管理。

1 TCP連接

TCP面向連接,在一個應用進程開始向另一個應用進程發送數據之前,這兩個進程必須先相互「握手」,即它們必須相互發送某些預備報文段,以建立連接。連接的實質是雙方都初始化與連接相關的發送/接收緩沖區,以及許多TCP狀態變數。

這種「連接」不是一條如電話網路中端到端的電路,因為它們的狀態完全保留在兩個端系統中。

TCP連接提供的是全雙工服務 ,應用層數據就可在從進程B流向進程A的同時,也從進程A流向進程B。

TCP連接也總是點對點的 ,即在單個發送方與單個接收方之間建立連接。

一個客戶機進程向伺服器進程發送數據時,客戶機進程通過套接字傳遞數據流。

客戶機操作系統中運行的 TCP軟體模塊首先將這些數據放到該連接的發送緩存里 ,然後會不時地從發送緩存里取出一塊數據發送。

TCP可從緩存中取出並放入報文段中發送的數據量受限於最大報文段長MSS,通常由最大鏈路層幀長度來決定(也就是底層的通信鏈路決定)。 例如一個鏈路層幀的最大長度1500位元組,除去數據報頭部長度20位元組,TCP報文段的頭部長度20位元組,MSS為1460位元組。

報文段被往下傳給網路層,網路層將其封裝在網路層IP數據報中。然後這些數據報被發送到網路中。

當TCP在另一端接收到一個報文段後,該報文段的數據就被放人該連接的接收緩存中。應用程序從接收緩存中讀取數據流(注意是應用程序來讀,不是操作系統推送)。

TCP連接的每一端都有各自的發送緩存和接收緩存。

因此TCP連接的組成包括:主機上的緩存、控制變數和與一個進程連接的套接字變數名,以及另一台主機上的一套緩存、控制變數和與一個進程連接的套接字。

在這兩台主機之間的路由器、交換機中,沒有為該連接分配任何緩存和控制變數。

2報文段結構

TCP報文段由首部欄位和一個數據欄位組成。數據欄位包含有應用層數據。

由於MSS限制了報文段數據欄位的最大長度。當TCP發送一個大文件時,TCP通常是將文件劃分成長度為MSS的若干塊。

TCP報文段的結構。

首部包括源埠號和目的埠號,它用於多路復用/多路分解來自或送至上層應用的數據。另外,TCP首部也包括校驗和欄位。報文段首部還包含下列欄位:

32比特的序號欄位和32比特的確認號欄位。這些欄位被TCP發送方和接收方用來實現可靠數據傳輸服務。

16比特的接收窗口欄位,該欄位用於流量控制。該欄位用於指示接收方能夠接受的位元組數量。

4比特的首部長度欄位,該欄位指示以32比特的字為單位的TCP首部長度。一般TCP首部的長度就是20位元組。

可選與變長的選項欄位,該欄位用於當發送方與接收方協商最大報文段長度,或在高速網路環境下用作窗口調節因子時使用。

標志欄位ACK比特用於指示確認欄位中的ACK值的有效性,即該報文段包括一個對已被成功接收報文段的確認。 SYN和FIN比特用於連接建立和拆除。 PSH、URG和緊急指針欄位通常沒有使用。

•序號和確認號

TCP報文段首部兩個最重要的欄位是序號欄位和確認號欄位。

TCP把數據看成一個無結構的但是有序的位元組流。TCP序號是建立在傳送的位元組流之上,而不是建立在傳送的報文段的序列之上。

一個報文段的序號是該報文段首位元組在位元組流中的編號。

例如,假設主機A上的一個進程想通過一條TCP連接向主機B上的一個進程發送一個數據流。主機A中的TCP將對數據流中的每一個位元組進行編號。假定數據流由一個包含4500位元組的文件組成(可以理解為應用程序調用send函數傳遞過來的數據長度),MSS為1000位元組(鏈路層一次能夠傳輸的位元組數),如果主機決定數據流的首位元組編號是7。TCP模塊將為該數據流構建5個報文段(也就是分5個IP數據報)。第一個報文段的序號被賦為7;第二個報文段的序號被賦為1007,第三個報文段的序號被賦為2007,以此類推。前面4個報文段的長度是1000,最後一個是500。

確認號要比序號難理解一些。前面講過,TCP是全雙工的,因此主機A在向主機B發送數據的同時,也可能接收來自主機B的數據。從主機B到達的每個報文段中的序號欄位包含了從B流向A的數據的起始位置。 因此主機B填充進報文段的確認號是主機B期望從主機A收到的下一報文段首位元組的序號。

假設主機B已收到了來自主機A編號為7-1006的所有位元組,同時假設它要發送一個報文段給主機A。主機B等待主機A的數據流中位元組1007及後續所有位元組。所以,主機B會在它發往主機A的報文段的確認號欄位中填上1007。

再舉一個例子,假設主機B已收到一個來自主機A的包含位元組7-1006的報文段,以及另一個包含位元組2007-3006的報文段。由於某種原因,主機A還沒有收到位元組1007-2006的報文段。

在這個例子中,主機A為了重組主機B的數據流,仍在等待位元組1007。因此,A在收到包含位元組2007-3006的報文段時,將會又一次在確認號欄位中包含1007。 因為TCP只確認數據流中至第一個丟失報文段之前的位元組數據,所以TCP被稱為是採用累積確認。

TCP的實現有兩個基本的選擇:

1接收方立即丟棄失序報文段;

2接收方保留失序的位元組,並等待缺少的位元組以填補該間隔。

一條TCP連接的雙方均可隨機地選擇初始序號。 這樣做可以減少將那些仍在網路中的來自兩台主機之間先前連接的報文段,誤認為是新建連接所產生的有效報文段的可能性。

•例子telnet

Telnet由是一個用於遠程登錄的應用層協議。它運行在TCP之上,被設計成可在任意一對主機之間工作。

假設主機A發起一個與主機B的Telnet會話。因為是主機A發起該會話,因此主機A被標記為客戶機,主機B被標記為伺服器。用戶鍵入的每個字元(在客戶機端)都會被發送至遠程主機。遠程主機收到後會復制一個相同的字元發回客戶機,並顯示在Telnet用戶的屏幕上。這種「回顯」用於確保由用戶發送的字元已經被遠程主機收到並處理。因此,在從用戶擊鍵到字元顯示在用戶屏幕上之間的這段時間內,每個字元在網路中傳輸了兩次。

現在假設用戶輸入了一個字元「C」,假設客戶機和伺服器的起始序號分別是42和79。前面講過,一個報文段的序號就是該報文段數據欄位首位元組的序號。因此,客戶機發送的第一個報文段的序號為42,伺服器發送的第一個報文段的序號為79。前面講過,確認號就是主機期待的數據的下一個位元組序號。在TCP連接建立後但沒有發送任何數據之前,客戶機等待位元組79,而伺服器等待位元組42。

如圖所示,共發了3個報文段。第一個報文段是由客戶機發往伺服器,其數據欄位里包含一位元組的字元「C」的ASCII碼,其序號欄位里是42。另外,由於客戶機還沒有接收到來自伺服器的任何數據,因此該報文段中的確認號欄位里是79。

第二個報文段是由伺服器發往客戶機。它有兩個目的:第一個目的是為伺服器所收到的數據提供確認。伺服器通過在確認號欄位中填入43,告訴客戶機它已經成功地收到位元組42及以前的所有位元組,現在正等待著位元組43的出現。第二個目的是回顯字元「C」。因此,在第二個報文段的數據欄位里填入的是字元「C」的ASCII碼,第二個報文段的序號為79,它是該TCP連接上從伺服器到客戶機的數據流的起始序號,也是伺服器要發送的第一個位元組的數據。

這里客戶機到伺服器的數據的確認被裝載在一個伺服器到客戶機的數據的報文段中,這種確認被稱為是捎帶確認.

第三個報文段是從客戶機發往伺服器的。它的唯一目的是確認已從伺服器收到的數據。

3往返時延的估計與超時

TCP如同前面所講的rdt協議一樣,採用超時/重傳機制來處理報文段的丟失問題。最重要的一個問題就是超時間隔長度的設置。顯然,超時間隔必須大於TCP連接的往返時延RTT,即從一個報文段發出到收到其確認時。否則會造成不必要的重傳。

•估計往返時延

TCP估計發送方與接收方之間的往返時延是通過採集報文段的樣本RTT來實現的,就是從某報文段被發出到對該報文段的確認被收到之間的時間長度。

也就是說TCP為一個已發送的但目前尚未被確認的報文段估計sampleRTT,從而產生一個接近每個RTT的采樣值。但是,TCP不會為重傳的報文段計算RTT。

為了估計一個典型的RTT,採取了某種對RTT取平均值的辦法。TCP據下列公式來更新

EstimatedRTT=(1-)*EstimatedRTT+*SampleRTT

即估計RTT的新值是由以前估計的RTT值與sampleRTT新值加權組合而成的。

參考值是a=0.125,因此是一個加權平均值。顯然這個加權平均對最新樣本賦予的權值

要大於對老樣本賦予的權值。因為越新的樣本能更好地反映出網路當前的擁塞情況。從統計學觀點來講,這種平均被稱為指數加權移動平均

除了估算RTT外,還需要測量RTT的變化,RTT偏差的程度,因為直接使用平均值設置計時器會有問題(太靈敏)。

DevRTT=(1-β)*DevRTT+β*|SampleRTT-EstimatedRTT|

RTT偏差也使用了指數加權移動平均。B取值0.25.

•設置和管理重傳超時間隔

假設已經得到了估計RTT值和RTT偏差值,那麼TCP超時間隔應該用什麼值呢?TCP將超時間隔設置成大於等於估計RTT值和4倍的RTT偏差值,否則將造成不必要的重傳。但是超時間隔也不應該比估計RTT值大太多,否則當報文段丟失時,TCP不能很快地重傳該報文段,從而將給上層應用帶來很大的數據傳輸時延。因此,要求將超時間隔設為估計RTT值加上一定餘量。當估計RTT值波動較大時,這個余最應該大些;當波動比較小時,這個餘量應該小些。因此使用4倍的偏差值來設置重傳時間。

TimeoutInterval=EstimatedRTT+4*DevRTT

4可信數據傳輸

網際網路的網路層服務是不可靠的。IP不保證數據報的交付,不保證數據報的按序交付,也不保證數據報中數據的完整性。

TCP在IP不可靠的盡力而為服務基礎上建立了一種可靠數據傳輸服務。

TCP提供可靠數據傳輸的方法涉及前面學過的許多原理。

TCP採用流水線協議、累計確認。

TCP推薦的定時器管理過程使用單一的重傳定時器,即使有多個已發送但還未被確認的報文段也一樣。重傳由超時和多個ACK觸發。

在TCP發送方有3種與發送和重傳有關的主要事件:從上層應用程序接收數據,定時器超時和收到確認ACK。

從上層應用程序接收數據。一旦這個事件發生,TCP就從應用程序接收數據,將數據封裝在一個報文段中,並將該報文段交給IP。注意到每一個報文段都包含一個序號,這個序號就是該報文段第一個數據位元組的位元組流編號。如果定時器還沒有計時,則當報文段被傳給IP時,TCP就啟動一個該定時器。

第二個事件是超時。TCP通過重傳引起超時的報文段來響應超時事件。然後TCP重啟定時器。

第三個事件是一個來自接收方的確認報文段(ACK)。當該事件發生時,TCP將ACK的值y與變數SendBase(發送窗口的基地址)進行比較。TCP狀態變數SendBase是最早未被確認的位元組的序號。就是指接收方已正確按序接收到數據的最後一個位元組的序號。TCP採用累積確認,所以y確認了位元組編號在y之前的所有位元組都已經收到。如果Y>SendBase,則該ACK是在確認一個或多個先前未被確認的報文段。因此發送方更新其SendBase變數,相當於發送窗口向前移動。

另外,如果當前有未被確認的報文段,TCP還要重新啟動定時器。

快速重傳

超時觸發重傳存在的另一個問題是超時周期可能相對較長。當一個報文段丟失時,這種長超時周期迫使發送方等待很長時間才重傳丟失的分組,因而增加了端到端時延。所以通常發送方可在超時事件發生之前通過觀察冗餘ACK來檢測丟包情況。

冗餘ACK就是接收方再次確認某個報文段的ACK,而發送方先前已經收到對該報文段的確認。

當TCP接收方收到一個序號比所期望的序號大的報文段時,它認為檢測到了數據流中的一個間隔,即有報文段丟失。這個間隔可能是由於在網路中報文段丟失或重新排序造成的。因為TCP使用累計確認,所以接收方不向發送方發回否定確認,而是對最後一個正確接收報文段進行重復確認(即產生一個冗餘ACK)

如果TCP發送方接收到對相同報文段的3個冗餘ACK.它就認為跟在這個已被確認過3次的報文段之後的報文段已經丟失。一旦收到3個冗餘ACK,TCP就執行快速重傳 ,

即在該報文段的定時器過期之前重傳丟失的報文段。

5流量控制

前面講過,一條TCP連接雙方的主機都為該連接設置了接收緩存。當該TCP連接收到正確、按序的位元組後,它就將數據放入接收緩存。相關聯的應用進程會從該緩存中讀取數據,但沒必要數據剛一到達就立即讀取。事實上,接收方應用也許正忙於其他任務,甚至要過很長時間後才去讀取該數據。如果應用程序讀取數據時相當緩慢,而發送方發送數據太多、太快,會很容易使這個連接的接收緩存溢出。

TCP為應用程序提供了流量控制服務以消除發送方導致接收方緩存溢出的可能性。因此,可以說 流量控制是一個速度匹配服務,即發送方的發送速率與接收方應用程序的讀速率相匹配。

前面提到過,TCP發送方也可能因為IP網路的擁塞而被限制,這種形式的發送方的控制被稱為擁塞控制(congestioncontrol)。

TCP通過讓接收方維護一個稱為接收窗口的變數來提供流量控制。接收窗口用於告訴發送方,該接收方還有多少可用的緩存空間。因為TCP是全雙工通信,在連接兩端的發送方都各自維護一個接收窗口變數。 主機把當前的空閑接收緩存大小值放入它發給對方主機的報文段接收窗口欄位中,通知對方它在該連接的緩存中還有多少可用空間。

6 TCP連接管理

客戶機中的TCP會用以下方式與伺服器建立一條TCP連接:

第一步: 客戶機端首先向伺服器發送一個SNY比特被置為1報文段。該報文段中不包含應用層數據,這個特殊報文段被稱為SYN報文段。另外,客戶機會選擇一個起始序號,並將其放置到報文段的序號欄位中。為了避免某些安全性攻擊,這里一般隨機選擇序號。

第二步: 一旦包含TCP報文段的用戶數據報到達伺服器主機,伺服器會從該數據報中提取出TCPSYN報文段,為該TCP連接分配TCP緩存和控制變數,並向客戶機TCP發送允許連接的報文段。這個允許連接的報文段還是不包含應用層數據。但是,在報文段的首部卻包含3個重要的信息。

首先,SYN比特被置為1。其次,該 TCP報文段首部的確認號欄位被置為客戶端序號+1最後,伺服器選擇自己的初始序號,並將其放置到TCP報文段首部的序號欄位中。 這個允許連接的報文段實際上表明了:「我收到了你要求建立連接的、帶有初始序號的分組。我同意建立該連接,我自己的初始序號是XX」。這個同意連接的報文段通常被稱為SYN+ACK報文段。

第三步: 在收到SYN+ACK報文段後,客戶機也要給該連接分配緩存和控制變數。客戶機主機還會向伺服器發送另外一個報文段,這個報文段對伺服器允許連接的報文段進行了確認。因為連接已經建立了,所以該ACK比特被置為1,稱為ACK報文段,可以攜帶數據。

一旦以上3步完成,客戶機和伺服器就可以相互發送含有數據的報文段了。

為了建立連接,在兩台主機之間發送了3個分組,這種連接建立過程通常被稱為 三次握手(SNY、SYN+ACK、ACK,ACK報文段可以攜帶數據) 。這個過程發生在客戶機connect()伺服器,伺服器accept()客戶連接的階段。

假設客戶機應用程序決定要關閉該連接。(注意,伺服器也能選擇關閉該連接)客戶機發送一個FIN比特被置為1的TCP報文段,並進人FINWAIT1狀態。

當處在FINWAIT1狀態時,客戶機TCP等待一個來自伺服器的帶有ACK確認信息的TCP報文段。當它收到該報文段時,客戶機TCP進入FINWAIT2狀態。

當處在FINWAIT2狀態時,客戶機等待來自伺服器的FIN比特被置為1的另一個報文段,

收到該報文段後,客戶機TCP對伺服器的報文段進行ACK確認,並進入TIME_WAIT狀態。TIME_WAIT狀態使得TCP客戶機重傳最終確認報文,以防該ACK丟失。在TIME_WAIT狀態中所消耗的時間是與具體實現有關的,一般是30秒或更多時間。

經過等待後,連接正式關閉,客戶機端所有與連接有關的資源將被釋放。 因此TCP連接的關閉需要客戶端和伺服器端互相交換連接關閉的FIN、ACK置位報文段。

『捌』 計算機網路自頂向下方法--網路層

R1. 我們回顧一下本書中使用的某些術語。前面講過,運輸層的分組名稱是報文段,數據鏈路層的分組名字是幀。網路層的分組名字是什麼?前面講過,路由器和鏈路層交換機都稱為分組交換機。路由器和鏈路層交換機間的根本區別是什麼?回想我們對數據報網路和虛電路網路都使用術語路由器。

R2. 在數據報網路中,網路層最重要的兩個功能是什麼?在虛電路網路中,網路層的3個最重要的功能是什麼?

R3. 路由選擇和轉發的區別是什麼?

R4. 在數據報網路和虛電路網路中,路由器都使用轉發表嗎?如果是,描述用於這兩類網路的轉發表。

R5. 描述某些網路層能為單個分組提供的某些假想的服務。對於分組流進行相同的描述。網際網路的網路層為你提供了這些假想服務嗎?ATM的CBR服務模型提供了該假想服務嗎?ATM的ABR服務模型提供類該假想服務嗎?

R6. 列出某些得益於ATM的CBR服務模型的應用。

R7. 討論為什麼在高速路由器的每個輸入埠都存儲轉發表的影子副本。

R8. 4.3節中討論了3類交換結構。列出並簡要討論每一類交換結構。哪一種(如果有的話)能夠跨越交換結構並行發送多個分組?

R9. 描述在輸入埠會出現分組丟失的原因。描述在輸入埠如何消除分組丟失(不使用無限大緩存區)。

R10. 描述在輸出埠出現分組丟失的原因。通過增加交換結構速率,能夠防止這種丟失嗎?

R11. 什麼是HOL阻塞?它出現在輸入埠還是輸出埠?

R12. 路由器有IP地址嗎?如果有,有多少個?

R13. IP地址223.1.3.27的32比特二進制等價形式是什麼?

R14. 考察使用DHCP獲得它的IP地址,網路掩碼,默認路由器和其本地DNS伺服器的IP地址的主機。列出這些值。

R15. 假設在一個源主機和一個目的主機之間有3台路由器。不考慮分片,一個從源主機發送給目的主機的IP報文將通過多少個埠?為了將數據報從源移動到目的地需要檢索多少個轉發表?

R16. 假設某應用每20ms生成一個40位元組的數據塊,每塊封裝在一個TCP報文中,TCP報文再封裝在一個IP數據報中。每個數據報的開銷有多大?應用數據所佔的百分比是多少?

R17. 假設主機A向主機B發送封裝在一個IP數據報中的TCP報文段。當主機B接收到該數據報時,主機B中的網路層應該如何知道它應當將該報文段(即數據報的有效載荷)交給TCP而不是UDP或某個其他東西呢?

R18. 假定你購買了一個無線路由器並將其與電纜數據機相連,並且你的ISP動態地為你連接的設備(即你的無線路由器)分配一個IP地址。還假定你家有5台PC,均使用802.11以無線方式與該無線路由器相連。怎樣為這5台PC分配IP地址?該無線路由器使用NAT嗎?為什麼?

R19. 比較IPv4和IPv6首部欄位。它們有某些欄位是相同的嗎?

R20. 有人說當IPv6通過IPv4路由器建隧道時。IPv6將IPv4隧道作為鏈路層協議。你同意這種說法嗎?為什麼?

R21. 比較和對照鏈路狀態和距離向量路由選擇演算法?

R22. 討論網際網路的等級制組織是怎樣使得其能夠擴展為數以百萬計用戶的。

R23. 每個自治系統使用相同的AS內部路由選路演算法是必要的嗎?為什麼?

R24. 考慮圖4-37。從D中的初始表開始,假設D收到來自A的下面的通告:

D中的表會改變嗎?如果是,怎樣變化?

R25. 比較RIP和OSPF使用的通告。

R26. 填空:RIP通告通常宣稱到各目的地的跳數。另一方面,BGP則是通告到各目的地的_____?

R27. 為什麼在網際網路中用到了不同類型的AS間與AS內部選路協議?

R28. 為什麼策略考慮對於AS內部協議(如OSPF和RIP)與對於AS間路由選擇協議(如BGP)一樣重要呢?

R29. 定義和對比下列術語:子網,前綴和BGP路由。

R30. BGP是怎樣使用NEXT-HOP屬性的?它是怎樣使用AS-PATH屬性的?

R31. 描述一個較高層ISP的網路管理員在配置BGP時是如何實現策略的。

TODO----HERE
4.6.32 通過多個單播實現廣播抽象與通過支持廣播的單個網路(路由器)實現廣播抽象之間有什麼重要區別嗎?
答:N次單播效率低,需要知道接收者的地址,消耗大。但是使用廣播的話可以通過洪泛方法發送消息。
4.6.33 對於我們學習的3種一般的廣播通信方法(無控制洪泛,受控洪泛和生成樹廣播),下列說法正確嗎?可以假定分組不會因緩存溢出而丟失,所有分組以它們發送的順序交付給鏈路。
a.一個節點可能接收到同一個分組的多個拷貝。
b.一個節點可能跨越相同的出鏈路轉發多個分組的拷貝。
答:無控制洪泛:a對,b對。受控洪泛:a對,b錯。生成樹廣播:a錯,b錯。
4.6.34 當一台主機加入一個多播組時,它必須將其IP地址改變為它所加入的多播組的地址嗎?
答:對錯誤。
4.6.35 IGMP和廣域多播選路協議所起的作用是什麼?
答:IGMP運行在一台主機與其直接相連的路由器之間。IGMP允許主機指定路由器要加入的組播網。然後由組播路由器與運行組播路由協議的其他組播路由器一起工作。
4.6.36 在多播選路場合中,一棵組共享的樹與一顆基於源的樹之間有什麼區別?
答:一個組共享的樹來為組中所有發送方分發流量,一個是為每個獨立的發送方構建一顆特定源的選路樹。