1. 交換機的主要轉發模式有哪4種是計算機網路領域是使用的最廣泛的技術之一
交換機交換模式的分類
交換機有靜態交換和動態交換兩種方式。
在採用靜態交換方式的交換機中,埠之間傳輸通道的建立是人工預先設定的,這些通道是固定不變的。
在採用動態交換方式的交換機中,傳輸通道的建立是依據目的MAC地址查詢交換表,根據表中給出的輸出埠臨時建立的,在一個數據幀傳送完成後,連接就會自動斷開。
動態交換模式有存儲轉發和直通兩種模式。
直通交換模式又有快速轉發交換和碎片丟棄交換兩種方式。
總結起來,交換機有存儲轉發、快速轉發和碎片丟棄三種交換模式。
2. 計算機網路技術(四)——區域網技術
摘要
傳統的乙太網是匯流排型的區域網,匯流排型結構決定了網路中所有結點共享傳輸介質,但同一拍液時間只允許一個結點以「廣播」的方式使用匯流排發送數據,其他結點以「收聽」的方式接收數據。所以,當區域網中的結點要發送數據時,首先要確定匯流排上沒有其他結點在發送數據,否則,就要等匯流排空閑下來才能發送。而由於結點發送的數據在匯流排上有傳輸延遲,有可能會出現兩個以上結點通過匯流排發送數據,造成多個數據「沖突」,無法接收正確數據。這些都是介質訪問控制(MAC)協議要解決的問題。
CSMA/CD 基本思想簡單概括為:「先監聽,再發送;邊發送,邊監聽。」
為了能在區域網中方便的找到各個結點,IEEE 802 委員會制定了一套標識規則,即用一個 48bit(6B) 二進制數作為區域網的全球地址,標識每一塊區域網適配器(網卡)。這個地址在適配器生產時就固化到其ROM中,稱為區域網適配器的物理地址或MAC地址。計算機只有安裝了區域網適配器才能接入區域網,升賀橋所以區域網適配器的MAC地址可以認為是該計算機在區域網中的地址。
區域網地址由IEEE RA 機構管理和分配,他們負責分配區域網地址6個位元組中的吵猛前3個位元組,後3個位元組由生產廠商自行分配,只要不出現重復即可。
在乙太網的MAC層,數據是以幀的形式存在的,乙太網的MAC幀格式有兩種標准:DIX Ethernet V2 標准和IEEE 802.3 標准,兩者的幀格式基本相同,唯一區別是V2幀中設置兩個位元組作為類型欄位,用於標記上一層所使用的協議類型,而802.3幀定義這兩個位元組為長度或類型欄位。目前使用最廣的是V2幀格式。
各欄位含義:
目的地址和源地址: 分別為48bit。
類型: 上層所使用的協議,如IP。
數據: 從上層接收到的數據報文,長度限定為46~1500B之間,如果最短數據不足46B,則填充到46B。
FCS: 幀檢測序列,採用循環冗餘CRC校驗對收到的MAC幀進行差錯檢測。
在實際傳輸中,發送端要在每個乙太網MAC幀前面插入8B(由硬體生成),包括7B的前導碼和1B的幀前定界符,用於告知接收端數據到了,實現接收的同步。
隨著乙太網的普及,人們需要乙太網覆蓋更廣闊的區域,容納更多的主機,這時就需要對乙太網進行擴展。擴展的方法根據使用設備所在層次的不同,分為物理層擴展和數據鏈路層擴展。物理層擴展使用的設備主要有中繼器(Repeater)和集線器(Hub),數據鏈路層擴展使用的設備主要有網橋(Bridge)和交換機(Switch)。
網橋連接示意圖:
上圖網橋中的轉發表:
轉發過程:
網橋的介面1和介面2分別連接兩個乙太網LAN1和LAN2,假如主機1要給主機5發數據,它將MAC幀廣播發送到LAN1上,與之相連的網橋也會收到該MAC幀,收到後,網橋檢查其中的目的地址並查找轉發表,發現主機5對應的介面為介面2,則將其轉發到介面2,從而廣播到LAN2中。如果主機1要向主機4發送數據,它將MAC幀廣播發送到LAN1上,網橋收到後,發現其目的地址對應的介面是介面1,與發送主機(主機1)的介面相同,說明主機1和主機4在同一個網段上,不需要轉發,將該幀丟棄。網橋的這種機制,保證了不同網段上的通信互不幹擾。如果主機1向主機8發送數據,網橋收到該幀後查詢轉發表,發現沒有目的地址為主機8的表項,則向除該MAC幀來源(介面1)外的所有介面進行轉發。
網橋內部使用 「自學習」 演算法來建立和維護轉發表。基本思想是:當一個網橋剛接入乙太網時,轉發表是張空表。當它從某介面x收到某主機a所發出MAC幀時,就把主機a的地址和介面x記錄到轉發表中,如果再收到目的地址為主機a的MAC幀,則向介面x轉發。當乙太網內的所有主機都向網橋發送過MAC幀後,每一個主機地址都會記錄在表中。
交換機自學習的基本原理 :利用接收到的數據幀的源MAC地址完成學習,即學習到可以通過接收該幀的埠到達該幀的源MAC地址對應的主機。例如,若從某個主機A發出的幀通過埠x進入某交換機,就意味著從埠x出發沿相反方向一定可以把一個幀傳送到A。所以,交換機每收到一個幀,先按其源MAC地址查看轉發表的目的地址欄,如果沒有則將其源MAC地址和進入的埠標識記錄在轉發表中,完成一次學習;再按目的MAC地址查找轉發表的目的地址欄,如果有記錄,則向相應的埠轉發,如果沒有記錄,則向除幀進入交換機對應的埠外的其他所有埠轉發。
原理說明:假如某區域網拓撲結構如上圖所示,其中有9台主機,分布在三個樓層,通過3個交換機形成3個網段:網段a(a1,a2,a3)、網段b(b1,b2,b3)和網段c(c1,c2,c3)。3個網段通過路由器連接在一起。根據業務需求,現在要重新劃分工作組,將不同網段內的主機劃分成一個工作組,形成虛擬區域網。假設劃分成3個虛擬區域網:VLAN1:(a1,b1,c1)、VLAN2:(a2,b2,c2)和VLAN3:(a3,b3,c3),每個虛擬區域網中的每台主機都可以在不同的網段和樓層。
主要有3種方法:
為了標識乙太網幀所屬的不同虛擬區域網,需要對乙太網幀格式進行擴展。IEEE 802.1Q 標准規定在乙太網的幀格式中插入一個4B的標識符,稱為VLAN標記,用來指明發送該幀的主機屬於哪一個虛擬區域網。如下圖所示。
VLAN標記欄位佔4B,位於源地址和類型欄位之間,其中前16位(2B)是固定的二進制數(1000000100000000),稱為IEEE 802.1Q標記類型。當接收到MAC幀檢測到源地址後面的16位後,說明是插入了VLAN標記。後面的兩個位元組中,前3位是用戶優先順序欄位,接著是1位規范格式指示符(CFI),最後12位是虛擬區域網VLAN標識符(VID),表示該幀屬於哪一個VLAN。
由於VLAN是按照邏輯位置而非物理位置進行劃分的,因此經常遇到同一VLAN中的主機需要跨越不同的交換機進行數據通信的問題,採用的方法是在不同的交換機之間用一條骨幹鏈路連接起來,並利用VLAN標識符來識別和承載來自多個VLAN中的數據幀,如下圖所示。
在交換機1和交換機2之間用一條鏈路級聯,並將對應的埠設置位Trunk埠,這樣就可以使兩個交換機上處於同一個VLAN的主機進行通信,即a1和b1之間,a2和b2之間,a3和b3之間。
無線區域網(Wireless Local Area Network,WLAN)是區域網發展的一種新形式,通過無線方式在各種攜帶型的計算機設備之間建立數據連接。
無線區域網分兩類:
對於有固定基礎設施的無線區域網,在MAC層使用載波監聽多路訪問/沖突避免協議(CSMA/CA)。與有線乙太網的CSMA/CD協議不同,CSMA/CA協議採用的是沖突避免演算法(CA)來代替沖突檢測演算法(CD)。這樣做的原因:
1)在無線通信環境下,信號強度的動態范圍非常大,接收端不容易根據收到的信號強度判斷是否發生碰撞;
2)由於無線信號是向所有方向傳播的,當多個站點同時進行通信時,很可能 「檢測到信道空閑,其實並不空閑;檢測到信道忙,其實並不忙」 的錯誤
因此,無線區域網應該盡可能地減少碰撞的發生。
CSMA/CA基本思想
1)採用 「停止-等待」 的可靠傳輸方式,即發送方必須收到接收方的確認幀後才能繼續發送;如果在規定時間內沒有收到確認幀,則認為數據丟失,需要重發。
2)採用 「虛擬載波監聽」 機制,讓發送方將它要佔用信道的時間及時通知給其他所有站點,以便使其他站點在這一段時間內都停止發送數據,從而降低碰撞機會。
3)在信道從忙狀態轉為空閑時,各個站點要執行 「退避演算法」 ,等待一個隨機的時間段後再發送數據,目的是減少碰撞的概率。
WLAN的最小單位是基本服務集BSS,其中包括一個AP和多個移動設備。在一個BSS內,各個移動設備之間可以通信,但如果要和本BSS外的設備通信,則必須經過BSS內的AP。一個BSS可以與由乙太網、點對點鏈路或者無線網路構成的分配系統DS相連接,然後再連接其他BSS,構成覆蓋范圍更廣的擴展伺服器ESS,如下圖所示。
移動設備如何與AP建立連接?
有兩種方式建立連接:
1) 被動掃描: 由AP周期性地發出包含SSID、速率等參數的信息幀,移動設備收到這些信息幀後與AP建立連接;
2) 主動掃描: 由移動設備主動發出探測請求幀,然後等待AP發回探測響應幀進行連接。
3. 計算機網路TCP/IP等相關協議與原理
網路分層(由下到上):物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。
重點在: 物理層、數據鏈路層(這兩層需要了解基本的原理)、網路層、傳輸層(這兩層需要了解功能作用,原理和相關的一些協議)、應用層(http協議)。
開始之前先跟大家說一下協議,很多人不知道協議是什麼,尤其是剛接觸這方面東西的時候,一聽協議,感覺很吊的樣子,但是又不知其所雲,其實,協議可以理解為:一個雙方通信需要共同遵守的規范。
記住,在網路分層協議中,所有下層的協議的作用就是為了上層服務,謹記!
接下來,我跟大家一一道來,首先登場的是物理層。
這一層主要就是跟硬體打交道,這一層也是所有上層的基礎。
數據鏈路層強調的是一種傳輸規范,這是指什麼呢?說白了,就是指每次傳輸的最大容量(最大傳輸單元),數據組織結構(乙太網幀的概念)、傳輸的目的地等。
MAC地址:燒錄在網卡ROM中的一串數字,長度48bit。
分組交換:較大數組分割為較小數組,依次發送。
原因是數據鏈路層有不定長度的最大傳輸單元。
乙太網的幀的概念:前導碼(8位元組)+本體(首部+數據+FCS)
原理:依靠MAC地址決定向哪個端發送數據,需要「轉發表」。
轉發表是交換機自動學習得到的。
作用:保證不同數據鏈路層下數據的可達性。
ARP協議(獲取MAC地址)和ICMP協議(數據發送異常通知)
作用:識別對端信息的地址。地址為32位正整數表示,分為四個部分,每個部分由8位整數組成。說白了,是識別要傳輸目的地的地址。
每位對應十進制范圍:0-255。
[注]:網路標識和主機標識是為了定址而發明。
A類:
第一位為「0」的地址,前8位為網路標識,0.0.0.0-127.0.0.0是A類IP地址的理論范圍。
B類:
前兩位為「10」的地址,前16位是網路標識,128.0.0.0-191.255.0.0,主機標識16位。
C類:
前三位為「110」的地址。前24位網路標識,192.0.0.0-223.255.255.0,主機標識為8位。
D類:
前4位為「1110」的地址。網路標識為32位,沒有主機標識。
IP地址長度僅可表達43億左右的主機數目,(區分網路標識和主機標識)共32位(一段連續的0和一段連續的1)組成,1的長度就表示網路標識的長度。
子網掩碼的作用是區分IP地址是否在同一子網內。
分組數據發送到目標地址的功能,持有路由控製表,它在路由控製表中查找目標IP地址對應的下一個路由器地址。
源主機--->網卡--->路由器1(路由器控製表)--->路由器2--->網卡--->目標主機
IP協議最大包為2的16次冪,等於65536.
接下來介紹幾個IP協議相關的協議或技術:
將域名轉化為IP地址(域名也是分層處理請求的,每一層都有對應的DNS伺服器)。
通過目標IP地址,定位下一個接收數據包的網路設備(主機或路由器)的MAC地址。
在數據鏈路層發送廣播,如果沒有ARP技術,就沒有辦法穿透中間的伺服器(ARP請求+ARP應答)。
NAT:用於將區域網中的私有地址轉換為全局IP地址的技術。
每個路由器只有一個對外的全局IP地址,如果一個內網主機都向外通訊,怎麼辦?
就要使用到NATP技術,可轉為TCP和UDP埠號。
不同的內網IP被轉換成同一個公共的IP,但是NAPT技術可以使用不同的埠加以區分。
NAT和NAPT都需要路由器內部維護一張轉換表。
舉例:TCP首次SYN時,會生成這個表,關閉連接時會發出FIN包,收到這個包應答時轉換表會被刪除。
定義:實現應用程序之間的通信。
TCP:面向有連接的協議,建立連接需要3步,關閉連接需要4步。
具備數據重傳、流量控制等功能,能正確處理丟包功能並有效利用寬頻。
UDP:比較適合做實時視頻和音頻,效率比TCP高。
TCP有5個要素:源IP地址、目標IP地址、源埠號、目標埠號、協議號,同一台機器的埠號可以區分為不同的應用程序。
校驗和=源IP地址(IP協議首部)+目標IP地址(IP協議首部)+源埠+目標埠
包長度=首部長度+數據長度
應該可以從下圖看出來,TCP的首部比UDP的首部要復雜的多,所以也一定會影響的傳輸的速度和效率。
簡單介紹一下首部的相關參數:
序列號:發送數據的位置
確認應答號:下一次應用接收到的數據的序列號
數據偏移:TCP首部的長度,單位為4位元組。
控制位:長度為8位。
窗口大小:用於表示從應答號開始能夠接受多少個8位位元組。
緊急指針:盡在URG控制位為1時有效,表示緊急數據的末尾在TCP數據部分中的位置。
接下來最重要的一個技術點來了:
以下是通俗話解釋連接和斷開過程:
建立連接的過程:
1.client:我要建立連接。
2.server:我知道你要建立連接了,我這邊沒問題。
3.client:我了解你知道我要建立連接了,開始通信吧!
結束連接的過程:
1.client:我要關閉連接了
2.server:你那邊可以關閉了
3.server:我這邊也准備關閉了
4.client:我已關閉,你可以關閉了
[注]:連接是雙方面的,所以關閉也是要自行關閉的。
數據包重發:保證ACK的值和發送方下次發送數據包的序列號相等。
接收方通過TCP首部中的控制位SYN判斷這個數據是否曾經接收過?接收過就會舍棄。
重傳超時時間(RTO)動態改變,略大於連接往返時間(RTT),RTO有自己的估算公式
定義:無需等待ACK,可以發送的最大數量。(窗口大小由接收端控制)
作用:為了解決發送數據包後,直至ACK確認返回之前,發送端都無法在進行發送的問題。
定義:接收端有緩存區數據溢出(如果窗口較大)
通俗一點的意思就是讓發送方慢一點,免得接收方接收不過來。
TCP會慢啟動演算法得出窗口的大小,對發送數據量進行控制。
發送方擁有一個擁塞窗口,對發送的數據量進行控制。
TCP協議中的窗口是指:發送方和接收方窗口中的最小值。
1.通訊開始,發送方窗口為1。每收到一個ACK確認後,擁塞窗口翻倍。
2.由於指數級增長快,很快就會出現確認包超時。
3.設置慢啟動閾值,它的值為擁塞窗口的大小的一半。
4.將擁塞窗口大小設置為1,重新進入慢啟動過程。
5.慢啟動閾值存在,當擁塞窗口大小達到閾值時,不再翻倍,而是線性增長。
6.隨窗口大小的不斷增長,可以收到三次重復的ACK,進入「快速重發」階段。
7.TCp將慢啟動閾值設置為當前擁塞窗大小的一半,再將擁塞窗口大小設成閾值大小。
8.擁塞窗口又會線性增加,直至下一次出現3次ACK或者超時。
4. 計算機網路自頂向下方法--網路層
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 在多播選路場合中,一棵組共享的樹與一顆基於源的樹之間有什麼區別?
答:一個組共享的樹來為組中所有發送方分發流量,一個是為每個獨立的發送方構建一顆特定源的選路樹。