新四季網

osi網絡原理教程(OSIIO網絡知識)

2023-10-04 14:16:12 1

說說IO(一)- IO的分層

IO性能對於一個系統的影響是至關重要的。一個系統經過多項優化以後,瓶頸往往落在資料庫;而資料庫經過多種優化以後,瓶頸最終會落到IO。而IO性能的發展,明顯落後於CPU的發展。Memchached也好,NoSQL也好,這些流行技術的背後都在直接或者間接地迴避IO瓶頸,從而提高系統性能。

IO系統的分層:

1. 三層結構

上圖層次比較多,但總的就是三部分。磁碟(存儲)、VM(卷管理)和文件系統。專有名詞不好理解,打個比方說:磁碟就相當於一塊待用的空地;

LVM相當於空地上的圍牆(把空地劃分成多個部分);文件系統則相當於每塊空地上建的樓房(決定了有多少房間、房屋編號如何,能容納多少人住);

而房子裡面住的人,則相當於系統裡面存的數據。

· 文件系統—數據如何存放?

對應了上圖的File System和Buffer Cache。

File System(文件系統):解決了空間管理的問題,即:數據如何存放、如何讀取。

Buffer Cache:解決數據緩衝的問題。對讀,進行Cache,即:緩存經常要用到的數據;對寫,進行buffer,緩衝一定數據以後,一次性進行寫入。

· VM—磁碟空間不足了怎麼辦?

對應上圖的Vol Mgmt。

VM其實跟IO沒有必然聯繫。他是處於文件系統和磁碟(存儲)中間的一層。VM屏蔽了底層磁碟對上層文件系統的影響。當沒有VM的時候,文件系統直接使用存儲上的地址空間,因此文件系統直接受限於物理硬碟,這時如果發生磁碟空間不足的情況,對應用而言將是一場噩夢,不得不新增硬碟,然後重新進行數據複製。而VM則可以實現動態擴展,而對文件系統沒有影響。另外,VM也可以把多個磁碟合併成一個磁碟,對文件系統呈現統一的地址空間,這個特性的殺傷力不言而喻。

· 存儲—數據放在哪兒?如何訪問?如何提高IO速度?

對應上圖的Device Driver、IO Channel和Disk Device

數據最終會放在這裡,因此,效率、數據安全、容災是這裡需要考慮的問題。而提高存儲的性能,則可以直接提高物理IO的性能

2. Logical IO vs Physical IO

邏輯IO是作業系統發起的IO,這個數據可能會放在磁碟上,也可能會放在內存(文件系統的Cache)裡。

物理IO是設備驅動發起的IO,這個數據最終會落在磁碟上。

邏輯IO和物理IO不是一一對應的。

說IO(二)- IO模型

這部分的東西在網絡編程經常能看到,不過在所有IO處理中都是類似的。

IO請求的兩個階段

等待資源階段:IO請求一般需要請求特殊的資源(如磁碟、RAM、文件),當資源被上一個使用者使用沒有被釋放時,IO請求就會被阻塞,直到能夠使用這個資源。

使用資源階段:真正進行數據接收和發生。

舉例說就是排隊和服務。

在等待數據階段,IO分為阻塞IO和非阻塞IO。

阻塞IO:資源不可用時,IO請求一直阻塞,直到反饋結果(有數據或超時)。

非阻塞IO:資源不可用時,IO請求離開返回,返回數據標識資源不可用

在使用資源階段,IO分為同步IO和異步IO。

同步IO:應用阻塞在發送或接收數據的狀態,直到數據成功傳輸或返回失敗。

異步IO:應用發送或接收數據後立刻返回,數據寫入OS緩存,由OS完成數據發送或接收,並返回成功或失敗的信息給應用。

按照Unix的5個IO模型劃分

· 阻塞IO

· 非阻塞IO

· IO復用

· 信號驅動的IO

· 異步IO

從性能上看,異步IO的性能無疑是最好的。

各種IO的特點

· 阻塞IO:使用簡單,但隨之而來的問題就是會形成阻塞,需要獨立線程配合,而這些線程在大多數時候都是沒有進行運算的。Java的BIO使用這種方式,問題帶來的問題很明顯,一個Socket需要一個獨立的線程,因此,會造成線程膨脹。

· 非阻塞IO:採用輪詢方式,不會形成線程的阻塞。Java的NIO使用這種方式,對比BIO的優勢很明顯,可以使用一個線程進行所有Socket的監聽(select)。大大減少了線程數。

· 同步IO:同步IO保證一個IO操作結束之後才會返回,因此同步IO效率會低一些,但是對應用來說,編程方式會簡單。Java的BIO和NIO都是使用這種方式進行數據處理。

· 異步IO:由於異步IO請求只是寫入了緩存,從緩存到硬碟是否成功不可知,因此異步IO相當於把一個IO拆成了兩部分,一是發起請求,二是獲取處理結果。因此,對應用來說增加了複雜性。但是異步IO的性能是所有很好的,而且異步的思想貫穿了IT系統方方面面。

IO(三)- IO性能的重要指標

最重要的三個指標

IOPS

IOPS,即每秒鐘處理的IO請求數量。IOPS是隨機訪問類型業務(OLTP類)很重要的一個參考指標。

· 一塊物理硬碟能提供多少IOPS?

從磁碟上進行數據讀取時,比較重要的幾個時間是:尋址時間(找到數據塊的起始位置),旋轉時間(等待磁碟旋轉到數據塊的起始位置),傳輸時間(讀取數據的時間和返回的時間)。其中尋址時間是固定的(磁頭定位到數據的存儲的扇區即可),旋轉時間受磁碟轉速的影響,傳輸時間受數據量大小的影響和接口類型的影響(不用硬碟接口速度不同),但是在隨機訪問類業務中,他的時間也很少。因此,在硬碟接口相同的情況下,IOPS主要受限於尋址時間和傳輸時間。以一個15K的硬碟為例,尋址時間固定為4ms,傳輸時間為60s/15000*1/2=2ms,忽略傳輸時間。1000ms/6ms=167個IOPS。

· OS的一次IO請求對應物理硬碟一個IO嗎?

在沒有文件系統、沒有VM(卷管理)、沒有RAID、沒有存儲設備的情況下,這個答案還是成立的。但是當這麼多中間層加進去以後,這個答案就不是這樣了。物理硬碟提供的IO是有限的,也是整個IO系統存在瓶頸的最大根源。所以,如果一塊硬碟不能提供,那麼多塊在一起並行處理,這不就行了嗎?確實是這樣的。可以看到,越是高端的存儲設備的cache越大,硬碟越多,一方面通過cache異步處理IO,另一方面通過盤數增加,儘可能把一個OS的IO分布到不同硬碟上,從而提高性能。文件系統則是在cache上會影響,而VM則可能是一個IO分布到多個不同設備上(Striping)。

所以,一個OS的IO在經過多個中間層以後,發生在物理磁碟上的IO是不確定的。可能是一對一個,也可能一個對應多個

· IOPS能算出來嗎?

對單塊磁碟的IOPS的計算沒有沒問題,但是當系統後面接的是一個存儲系統時、考慮不同讀寫比例,IOPS則很難計算,而需要根據實際情況進行測試。主要的因素有:

·

o 存儲系統本身有自己的緩存。緩存大小直接影響IOPS,理論上說,緩存越大能cache的東西越多,在cache命中率保持的情況下,IOPS會越高。

o RAID級別。不同的RAID級別影響了物理IO的效率。

o 讀寫混合比例。對讀操作,一般只要cache能足夠大,可以大大減少物理IO,而都在cache中進行;對寫操作,不論cache有多大,最終的寫還是會落到磁碟上。因此,100%寫的IOPS要越獄小於100%的讀的IOPS。同時,100%寫的IOPS大致等同於存儲設備能提供的物理的IOPS。

o 一次IO請求數據量的多少。一次讀寫1KB和一次讀寫1MB,顯而易見,結果是完全不同的。

當時上面N多因素混合在一起以後,IOPS的值就變得撲朔迷離了。所以,一般需要通過實際應用的測試才能獲得。

IO Response Time

即IO的響應時間。IO響應時間是從作業系統內核發出一個IO請求到接收到IO響應的時間。因此,IO Response time除了包括磁碟獲取數據的時間,還包括了作業系統以及在存儲系統內部IO等待的時間。一般看,隨著IOPS的增加,因為IO出現等待,IO響應時間也會隨之增加。對一個OLTP系統,10ms以內的響應時間,是比較合理的。下面是一些IO性能示例:

· 一個8K的IO會比一個64K的IO速度快,因為數據讀取的少些。

· 一個64K的IO會比8個8K的IO速度快,因為前者只請求了一個IO而後者是8個IO。

· 串行IO會比隨機IO快,因為串行IO相對隨機IO說,即便沒有Cache,串行IO在磁碟處理上也會少些操作。

需要注意,IOPS與IO Response Time有著密切的聯繫。一般情況下,IOPS增加,說明IO請求多了,IO Response Time會相應增加。但是會出現IOPS一直增加,但是IO Response Time變得非常慢,超過20ms甚至幾十ms,這時候的IOPS雖然還在提高,但是意義已經不大,因為整個IO系統的服務時間已經不可取。

Throughput

為吞吐量。這個指標衡量標識了最大的數據傳輸量。如上說明,這個值在順序訪問或者大數據量訪問的情況下會比較重要。尤其在大數據量寫的時候。

吞吐量不像IOPS影響因素很多,吞吐量一般受限於一些比較固定的因素,如:網絡帶寬、IO傳輸接口的帶寬、硬碟接口帶寬等。一般他的值就等於上面幾個地方中某一個的瓶頸。

一些概念

IO Chunk Size

即單個IO操作請求數據的大小。一次IO操作是指從發出IO請求到返回數據的過程。IO Chunk Size與應用或業務邏輯有著很密切的關係。比如像Oracle一類資料庫,由於其block size一般為8K,讀取、寫入時都此為單位,因此,8K為這個系統主要的IO Chunk Size。IO Chunk Size

小,考驗的是IO系統的IOPS能力;IO Chunk Size大,考驗的時候IO系統的IO吞吐量。

Queue Deep

熟悉資料庫的人都知道,SQL是可以批量提交的,這樣可以大大提高操作效率。IO請求也是一樣,IO請求可以積累一定數據,然後一次提交到存儲系統,這樣一些相鄰的數據塊操作可以進行合併,減少物理IO數。而且Queue Deep如其名,就是設置一起提交的IO請求數量的。一般Queue Deep在IO驅動層面上進行配置。

Queue Deep與IOPS有著密切關係。Queue Deep主要考慮批量提交IO請求,自然只有IOPS是瓶頸的時候才會有意義,如果IO都是大IO,磁碟已經成瓶頸,Queue Deep意義也就不大了。一般來說,IOPS的峰值會隨著Queue Deep的增加而增加(不會非常顯著),Queue Deep一般小於256。

隨機訪問(隨機IO)、順序訪問(順序IO)

隨機訪問的特點是每次IO請求的數據在磁碟上的位置跨度很大(如:分布在不同的扇區),因此N個非常小的IO請求(如:1K),必須以N次IO請求才能獲取到相應的數據。

順序訪問的特點跟隨機訪問相反,它請求的數據在磁碟的位置是連續的。當系統發起N個非常小的IO請求(如:1K)時,因為一次IO是有代價的,系統會取完整的一塊數據(如4K、8K),所以當第一次IO完成時,後續IO請求的數據可能已經有了。這樣可以減少IO請求的次數。這也就是所謂的預取。

隨機訪問和順序訪問同樣是有應用決定的。如資料庫、小文件的存儲的業務,大多是隨機IO。而視頻類業務、大文件存取,則大多為順序IO。

選取合理的觀察指標:

以上各指標中,不用的應用場景需要觀察不同的指標,因為應用場景不同,有些指標甚至是沒有意義的。

隨機訪問和IOPS: 在隨機訪問場景下,IOPS往往會到達瓶頸,而這個時候去觀察Throughput,則往往遠低於理論值。

順序訪問和Throughput:在順序訪問的場景下,Throughput往往會達到瓶頸(磁碟限制或者帶寬),而這時候去觀察IOPS,往往很小。

說說IO(四)- 文件系統

文件系統各有不同,其最主要的目標就是解決磁碟空間的管理問題,同時提供高效性、安全性。如果在分布式環境下,則有相應的分布式文件系統。Linux上有ext系列,Windows上有Fat和NTFS。如圖為一個linux下文件系統的結構。

其中VFS(Virtual File System)是Linux Kernel文件系統的一個模塊,簡單看就是一個Adapter,對下屏蔽了下層不同文件系統之間的差異,對上為作業系統提供了統一的接口.

中間部分為各個不同文件系統的實現。

再往下是Buffer Cache和Driver。

文件系統的結構

各種文件系統實現方式不同,因此性能、管理性、可靠性等也有所不同。下面為Linux Ext2(Ext3)的一個大致文件系統的結構。

Boot Block存放了引導程序。

Super Block存放了整個文件系統的一些全局參數,如:卷名、狀態、塊大小、塊總數。他在文件系統被mount時讀入內存,在umount時被釋放。

上圖描述了Ext2文件系統中很重要的三個數據結構和他們之間的關係。

Inode:Inode是文件系統中最重要的一個結構。如圖,他裡面記錄了文件相關的所有信息,也就是我們常說的meta信息。包括:文件類型、權限、所有者、大小、atime等。Inode裡面也保存了指向實際文件內容信息的索引。其中這種索引分幾類:

· 直接索引:直接指向實際內容信息,公有12個。因此如果,一個文件系統block size為1k,那麼直接索引到的內容最大為12k

· 間接索引

· 兩級間接索引

· 三級間接索引

如圖:

Directory代表了文件系統中的目錄,包括了當前目錄中的所有Inode信息。其中每行只有兩個信息,一個是文件名,一個是其對應的Inode。需要注意,Directory不是文件系統中的一個特殊結構,他實際上也是一個文件,有自己的Inode,而它的文件內容信息裡面,包括了上面看到的那些文件名和Inode的對應關係。如下圖:

Data Block即存放文件的時間內容塊。Data Block大小必須為磁碟的數據塊大小的整數倍,磁碟一般為512位元組,因此Data Block一般為1K、2K、4K。

Buffer Cache

Buffer & Cache

雖然Buffer和Cache放在一起了,但是在實際過程中Buffer和Cache是完全不同了。Buffer一般對於寫而言,也叫「緩衝區」,緩衝使得多個小的數據塊能夠合併成一個大數據塊,一次性寫入;Cache一般對於讀而且,也叫「緩存」,避免頻繁的磁碟讀取。如圖為Linux的free命令,其中也是把Buffer和Cache進行區分,這兩部分都算在了free的內存。

Buffer Cache

Buffer Cache中的緩存,本質與所有的緩存都是一樣,數據結構也是類似,下圖為VxSF的一個Buffer Cache結構。

這個數據結構與memcached和Oracle SGA的buffer何等相似。左側的hash chain完成數據塊的尋址,上方的的鍊表記錄了數據塊的狀態。

Buffer vs Direct I/O

文件系統的Buffer和Cache在某些情況下確實提高了速度,但是反之也會帶來一些負面影響。一方面文件系統增加了一個中間層,另外一方面,當Cache使用不當、配置不好或者有些業務無法獲取cache帶來的好處時,cache則成為了一種負擔。

適合Cache的業務:串行的大數據量業務,如:NFS、FTP。

不適合Cache的業務:隨機IO的業務。如:Oracle,小文件讀取。

塊設備、字符設備、裸設備

這幾個東西看得很暈,找了一些資料也沒有找到很準確的說明。

從硬體設備的角度來看,

· 塊設備就是以塊(比如磁碟扇區)為單位收發數據的設備,它們支持緩衝和隨機訪問(不必順序讀取塊,而是可以在任何時候訪問任何塊)等特性。塊設備包括硬碟、CD-ROM 和 RAM 盤。

· 字符設備則沒有可以進行物理尋址的媒體。字符設備包括串行埠和磁帶設備,只能逐字符地讀取這些設備中的數據。

從作業系統的角度看(對應作業系統的設備文件類型的b和c),

# ls -l /dev/*lv

brw------- 1 root system 22, 2 May 15 2007 lv

crw------- 2 root system 22, 2 May 15 2007 rlv

· 塊設備能支持緩衝和隨機讀寫。即讀取和寫入時,可以是任意長度的數據。最小為1byte。對塊設備,你可以成功執行下列命令:dd if=/dev/zero of=/dev/vg01/lv bs=1 count=1。即:在設備中寫入一個字節。硬體設備是不支持這樣的操作的(最小是512),這個時候,作業系統首先完成一個讀取(如1K,作業系統最小的讀寫單位,為硬體設備支持的數據塊的整數倍),再更改這1k上的數據,然後寫入設備。

· 字符設備只能支持固定長度數據的讀取和寫入,這裡的長度就是作業系統能支持的最小讀寫單位,如1K,所以塊設備的緩衝功能,這裡就沒有了,需要使用者自己來完成。由於讀寫時不經過任何緩衝區,此時執行dd if=/dev/zero of=/dev/vg01/lv bs=1 count=1,這個命令將會出錯,因為這裡的bs(block size)太小,系統無法支持。如果執行dd if=/dev/zero of=/dev/vg01/lv bs=1024 count=1,則可以成功。這裡的block size有OS內核參數決定。

如上,相比之下,字符設備在使用更為直接,而塊設備更為靈活。文件系統一般建立在塊設備上,而為了追求高性能,使用字符設備則是更好的選擇,如Oracle的裸設備使用。

裸設備

裸設備也叫裸分區,就是沒有經過格式化、沒有文件系統的一塊存儲空間。可以寫入二進位內容,但是內容的格式、其中信息的組織等問題,需要使用它的人來完成。文件系統就是建立在裸設備之上,並完成裸設備空間的管理。

CIO

CIO即並行IO(Concurrent IO)。在文件系統中,當某個文件被多個進程同時訪問時,就出現了Inode競爭的問題。一般地,讀操作使用的共享鎖,即:多個讀操作可以並發進行,而寫操作使用排他鎖。當鎖被寫進程佔用時,其他所有操作均阻塞。因此,當這樣的情況出現時,整個應用的性能將會大大降低。如圖:

CIO就是為了解決這個問題。而且CIO帶來的性能提高直逼裸設備。當文件系統支持CIO並開啟CIO時,CIO默認會開啟文件系統的Direct IO,即:讓IO操作不經過Buffer直接進行底層數據操作。由於不經過數據Buffer,在文件系統層面就無需考慮數據一致性的問題,因此,讀寫操作可以並行執行。

在最終進行數據存儲的時候,所有操作都會串行執行,CIO把這個事情交個了底層的driver。

說IO(五)- 邏輯卷管理

LVM(邏輯卷管理),位於作業系統和硬碟之間,LVM屏蔽了底層硬碟帶來的複雜性。最簡單的,LVM使得N塊硬碟在OS看來成為一塊硬碟,大大提高了系統可用性。

LVM的引入,使得文件系統和底層磁碟之間的關係變得更為靈活,而且更方便關係。LVM有以下特點:

· 統一進行磁碟管理。按需分配空間,提供動態擴展。

· 條帶化(Striped)

· 鏡像(mirrored)

· 快照(snapshot)

LVM可以做動態磁碟擴展,想想看,當系統管理員發現應用空間不足時,敲兩個命令就完成空間擴展,估計做夢都要笑醒:)

LVM的磁碟管理方式

LVM中有幾個很重要的概念:

· PV(physical volume):物理卷。在LVM中,一個PV對應就是作業系統能看見的一塊物理磁碟,或者由存儲設備分配作業系統的lun。一塊磁碟唯一對應一個PV,PV創建以後,說明這塊空間可以納入到LVM的管理。創建PV時,可以指定PV大小,即可以把整個磁碟的部分納入PV,而不是全部磁碟。這點在表面上看沒有什麼意義,但是如果主機後面接的是存儲設備的話就很有意義了,因為存儲設備分配的lun是可以動態擴展的,只有當PV可以動態擴展,這種擴展性才能向上延伸。

· VG(volume group):卷組。一個VG是多個PV的集合,簡單說就是一個VG就是一個磁碟資源池。VG對上屏蔽了多個物理磁碟,上層是使用時只需考慮空間大小的問題,而VG解決的空間的如何在多個PV上連續的問題。

· LV(logical volume):邏輯卷。LV是最終可供使用卷,LV在VG中創建,有了VG,LV創建是只需考慮空間大小等問題,對LV而言,他看到的是一直聯繫的地址空間,不用考慮多塊硬碟的問題。

有了上面三個,LVM把單個的磁碟抽象成了一組連續的、可隨意分配的地址空間。除上面三個概念外,還有一些其他概念:

· PE(physical extend): 物理擴展塊。LVM在創建PV,不會按字節方式去進行空間管理。而是按PE為單位。PE為空間管理的最小單位。即:如果一個1024M的物理盤,LVM的PE為4M,那麼LVM管理空間時,會按照256個PE去管理。分配時,也是按照分配了多少PE、剩餘多少PE考慮。

· LE(logical extend):邏輯擴展塊。類似PV,LE是創建LV考慮,當LV需要動態擴展時,每次最小的擴展單位。

對於上面幾個概念,無需刻意去記住,當你需要做這麼一個東西時,這些概念是自然而然的。PV把物理硬碟轉換成LVM中對於的邏輯(解決如何管理物理硬碟的問題),VG是PV的集合(解決如何組合PV的問題),LV是VG上空間的再劃分(解決如何給OS使用空間的問題);而PE、LE則是空間分配時的單位。

如圖,為兩塊18G的磁碟組成了一個36G的VG。此VG上劃分了3個LV。其PE和LE都為4M。其中LV1隻用到了sda的空間,而LV2和LV3使用到了兩塊磁碟。

串聯、條帶化、鏡像

串聯(Concatenation): 按順序使用磁碟,一個磁碟使用完以後使用後續的磁碟。

條帶化(Striping): 交替使用不同磁碟的空間。條帶化使得IO操作可以並行,因此是提高IO性能的關鍵。另外,Striping也是RAID的基礎。如:VG有2個PV,LV做了條帶數量為2的條帶化,條帶大小為8K,那麼當OS發起一個16K的寫操作時,那麼剛好這2個PV對應的磁碟可以對整個寫入操作進行並行寫入。

Striping帶來好處有:

· 並發進行數據處理。讀寫操作可以同時發送在多個磁碟上,大大提高了性能。

Striping帶來的問題:

· 數據完整性的風險。Striping導致一份完整的數據被分布到多個磁碟上,任何一個磁碟上的數據都是不完整,也無法進行還原。一個條帶的損壞會導致所有數據的失效。因此這個問題只能通過存儲設備來彌補。

· 條帶大小的設定很大程度決定了Striping帶來的好處。如果條帶設置過大,一個IO操作最終還是發生在一個磁碟上,無法帶來並行的好處;當條帶設置國小,本來一次並行IO可以完成的事情會最終導致了多次並行IO。

鏡像(mirror)

如同名字。LVM提供LV鏡像的功能。即當一個LV進行IO操作時,相同的操作發生在另外一個LV上。這樣的功能為數據的安全性提供了支持。如圖,一份數據被同時寫入兩個不同的PV。

使用mirror時,可以獲得一些好處:

· 讀取操作可以從兩個磁碟上獲取,因此讀效率會更好些。

· 數據完整複雜了一份,安全性更高。

但是,伴隨也存在一些問題:

· 所有的寫操作都會同時發送在兩個磁碟上,因此實際發送的IO是請求IO的2倍

· 由於寫操作在兩個磁碟上發生,因此一些完整的寫操作需要兩邊都完成了才算完成,帶來了額外負擔。

· 在處理串行IO時,有些IO走一個磁碟,另外一些IO走另外的磁碟,一個完整的IO請求會被打亂,LVM需要進行IO數據的合併,才能提供給上層。像一些如預讀的功能,由於有了多個數據獲取同道,也會存在額外的負擔。

快照(Snapshot)

快照如其名,他保存了某一時間點磁碟的狀態,而後續數據的變化不會影響快照,因此,快照是一種備份很好手段。

但是快照由於保存了某一時間點數據的狀態,因此在數據變化時,這部分數據需要寫到其他地方,隨著而來回帶來一些問題。關於這塊,後續存儲也涉及到類似的問題,後面再說。

說IO(六)- Driver & IO Channel

這部分值得一說的是多路徑問題。IO部分的高可用性在整個應用系統中可以說是最關鍵的,應用層可以壞掉一兩臺機器沒有問題,但是如果IO不通了,整個系統都沒法使用。如圖為一個典型的SAN網絡,從主機到磁碟,所有路徑上都提供了冗餘,以備發生通路中斷的情況。

· OS配置了2塊光纖卡,分別連不同交換機

· SAN網絡配置了2個交換機

· 存儲配置了2個Controller,分別連不同交換機

如上圖結構,由於存在兩條路徑,對於存儲劃分的一個空間,在OS端會看到兩個(兩塊磁碟或者兩個lun)。可怕的是,OS並不知道這兩個東西對應的其實是一塊空間,如果路徑再多,則OS會看到更多。還是那句經典的話,「計算機中碰到的問題,往往可以通過增加的一個中間層來解決」,於是有了多路徑軟體。他提供了以下特性:

· 把多個映射到同一塊空間的路徑合併為一個提供給主機

· 提供fail over的支持。當一條通路出現問題時,及時切換到其他通路

· 提供load balance的支持。即同時使用多條路徑進行數據傳送,發揮多路徑的資源優勢,提高系統整體帶寬。

Fail over的能力一般OS也可能支持,而load balance則需要與存儲配合,所以需要根據存儲不同配置安裝不同的多通路軟體。

多路徑除了解決了高可用性,同時,多條路徑也可以同時工作,提高系統性能。

說說IO(七)- RAID

Raid很基礎,但是在存儲系統中佔據非常重要的地位,所有涉及存儲的書籍都會提到RAID。RAID通過磁碟冗餘的方式提高了可用性和可高性,一方面增加了數據讀寫速度,另一方面增加了數據的安全性。

RAID 0

對數據進行條帶化。使用兩個磁碟交替存放連續數據。因此可以實現並發讀寫,但帶來的問題是如果一個磁碟損壞,另外一個磁碟的數據將失去意義。RAID 0最少需要2塊盤。

RAID 1

對數據進行鏡像。數據寫入時,相同的數據同時寫入兩塊盤。因此兩個盤的數據完全一致,如果一塊盤損壞,另外一塊盤可以頂替使用,RAID 1帶來了很好的可靠性。同時讀的時候,數據可以從兩個盤上進行讀取。但是RAID 1帶來的問題就是空間的浪費。兩塊盤只提供了一塊盤的空間。RAID 1最少需要2塊盤。

RAID 5 和 RAID 4

使用多餘的一塊校驗盤。數據寫入時,RAID 5需要對數據進行計算,以便得出校驗位。因此,在寫性能上RAID 5會有損失。但是RAID 5兼顧了性能和安全性。當有一塊磁碟損壞時,RAID 5可以通過其他盤上的數據對其進行恢復。

如圖可以看出,右下角為p的就是校驗數據。可以看到RAID 5的校驗數據依次分布在不同的盤上,這樣可以避免出現熱點盤(因為所有寫操作和更新操作都需要修改校驗信息,如果校驗都在一個盤做,會導致這個盤成為寫瓶頸,從而拖累整體性能,RAID 4的問題)。RAID 5最少需要3塊盤。

RAID 6

RAID 6與RAID 5類似。但是提供了兩塊校驗盤(下圖右下角為p和q的)。安全性更高,寫性能更差了。RAID 0最少需要4塊盤。

RAID 10(Striped mirror)

RAID 10是RAID 0 和RAID 1的結合,同時兼顧了二者的特點,提供了高性能,但是同時空間使用也是最大。RAID 10最少需要4塊盤。

需要注意,使用RAID 10來稱呼其實很容易產生混淆,因為RAID 0 1和RAID 10基本上只是兩個數字交換了一下位置,但是對RAID來說就是兩個不同的組成。因此,更容易理解的方式是「Striped mirrors」,即:條帶化後的鏡像——RAID 10;或者「mirrored stripes」,即:鏡像後的條帶化。比較RAID 10和RAID 0 1,雖然最終都是用到了4塊盤,但是在數據組織上有所不同,從而帶來問題。RAID 10在可用性上是要高於RAID 0 1的:

· RAID 0 1 任何一塊盤損壞,將失去冗餘。如圖4塊盤中,右側一組損壞一塊盤,左側一組損壞一塊盤,整個盤陣將無法使用。而RAID 10左右各損壞一塊盤,盤陣仍然可以工作。

· RAID 0 1 損壞後的恢復過程會更慢。因為先經過的mirror,所以左右兩組中保存的都是完整的數據,數據恢復時,需要完整恢復所以數據。而RAID 10因為先條帶化,因此損壞數據以後,恢復的只是本條帶的數據。如圖4塊盤,數據少了一半。

RAID 50

RAID 50 同RAID 10,先做條帶化以後,在做RAID 5。兼顧性能,同時又保證空間的利用率。RAID 50最少需要6塊盤。

總結:

· RAID與LVM中的條帶化原理上類似,只是實現層面不同。在存儲上實現的RAID一般有專門的晶片來完成,因此速度上遠比LVM塊。也稱硬RAID。

· 如上介紹,RAID的使用是有風險的,如RAID 0,一塊盤損壞會導致所有數據丟失。因此,在實際使用中,高性能環境會使用RAID 10,兼顧性能和安全;一般情況下使用RAID 5(RAID 50),兼顧空間利用率和性能;

說IO(八)- 三分天下

DAS、SAN和NAS

為了滿足人們不斷擴大的需求,存儲方案也是在發展的。而DAS、SAN、NAS直接反映這種反映了這種趨勢。

· 單臺主機。在這種情況下,存儲作為主機的一個或多個磁碟存在,這樣局限性也是很明顯的。由於受限於主機空間,一個主機只能裝一塊到幾塊硬碟,而硬碟空間時受限的,當磁碟滿了以後,你不得不為主機更換更大空間的硬碟。

· 獨立存儲空間。為了解決空間的問題,於是考慮把磁碟獨立出來,於是有了DAS(Direct Attached Storage),即:直連存儲。DAS就是一組磁碟的集合體,數據讀取和寫入等也都是由主機來控制。但是,隨之而來,DAS又面臨了一個他無法解決的問題——存儲空間的共享。接某個主機的JBOD(Just a Bunch Of Disks,磁碟組),只能這個主機使用,其他主機無法用。因此,如果DAS解決空間了,那麼他無法解決的就是如果讓空間能夠在多個機器共享。因為DAS可以理解為與磁碟交互,DAS處理問題的層面相對更低。使用協議都是跟磁碟交互的協議

· 獨立的存儲網絡。為了解決共享的問題,借鑑乙太網的思想,於是有了SAN(Storage Area Network),即:存儲網絡。對於SAN網絡,你能看到兩個非常特點,一個就是光纖網絡,另一個是光纖交換機。SAN網絡由於不會之間跟磁碟交互,他考慮的更多是數據存取的問題,因此使用的協議相對DAS層面更高一些。

o 光纖網絡:對於存儲來說,與乙太網很大的一個不同就是他對帶寬的要求非常高,因此SAN網絡下,光纖成為了其連接的基礎。而其上的光纖協議相比乙太網協議而言,也被設計的更為簡潔,性能也更高。

o 光纖交換機:這個類似乙太網,如果想要做到真正的「網絡」,交換機是基礎。

· 網絡文件系統。存儲空間可以共享,那文件也是可以共享的。NAS(Network attached storage)相對上面兩個,看待問題的層面更高,NAS是在文件系統級別看待問題。因此他面的不再是存儲空間,而是單個的文件。因此,當NAS和SAN、DAS放在一起時,很容易引起混淆。NAS從文件的層面考慮共享,因此NAS相關協議都是文件控制協議。

o NAS解決的是文件共享的問題;SAN(DAS)解決的是存儲空間的問題。

o NAS要處理的對象是文件;SAN(DAS)要處理的是磁碟。

o 為NAS服務的主機必須是一個完整的主機(有OS、有文件系統,而存儲則不一定有,因為可以他後面又接了一個SAN網絡),他考慮的是如何在各個主機直接高效的共享文件;為SAN提供服務的是存儲設備(可以是個完整的主機,也可以是部分),它考慮的是數據怎麼分布到不同磁碟。

o NAS使用的協議是控制文件的(即:對文件的讀寫等);SAN使用的協議是控制存儲空間的(即:把多長的一串二進位寫到某個地址)

如圖,對NAS、SAN、DAS的組成協議進行了劃分,從這裡也能很清晰的看出他們之間的差別。

NAS:涉及SMB協議、NFS協議,都是網絡文件系統的協議。

SAN:有FC、iSCSI、AOE,都是網絡數據傳輸協議。

DAS:有PATA、SATA、SAS等,主要是磁碟數據傳輸協議。

從DAS到SAN,在到NAS,在不同層面對存儲方案進行的補充,也可以看到一種從低級到高級的發展趨勢。而現在我們常看到一些分布式文件系統(如hadoop等)、資料庫的sharding等,從存儲的角度來說,則是在OS層面(應用)對數據進行存儲。從這也能看到一種技術發展的趨勢。

跑在乙太網上的SAN

SAN網絡並不是只能使用光纖和光纖協議,當初之所以使用FC,傳輸效率是一個很大的問題,但是乙太網發展到今天被不斷的完善、加強,帶寬的問題也被不斷的解決。因此,乙太網上的SAN或許會成為一個趨勢。

· FCIP

如圖兩個FC的SAN網絡,通過FCIP實現了兩個SAN網絡數據在IP網絡上的傳輸。這個時候SAN網絡還是以FC協議為基礎,還是使用光纖。

· iFCP

通過iFCP方式,SAN網絡由FC的SAN網絡演變為IP SAN網絡,整個SAN網絡都基於了IP方式。但是主機和存儲直接使用的還是FC協議。只是在接入SAN網絡的時候通過iFCP進行了轉換

· iSCSI

iSCSI是比較主流的IP SAN的提供方式,而且其效率也得到了認可。

對於iSCSI,最重要的一點就是SCSI協議。SCSI(Small Computer Systems Interface)協議是計算機內部的一個通用協議。是一組標準集,它定義了與大量設備(主要是與存儲相關的設備)通信所需的接口和協議。如圖,SCSI為block device drivers之下。

從SCIS的分層來看,共分三層:

高層:提供了與OS各種設備之間的接口,實現把OS如:Linux的VFS請求轉換為SCSI請求

中間層:實現高層和底層之間的轉換,類似一個協議網關。

底層:完成於具體物理設備之間的交互,實現真正的數據處理。

一、OSI七層網絡協議

OSI是Open System Interconnect的縮寫,意為開放式系統互聯。

OSI參考模型各個層次的劃分遵循下列原則:

根據不同層次的抽象分層每層應當有一個定義明確的功能每層功能的選擇應該有助於制定網絡協議的國際標準。各層邊界的選擇應儘量節省跨過接口的通信量。層數應足夠多,以避免不同的功能混雜在同一層中,但也不能太多,否則體系結構會過於龐大同一層中的各網絡節點都有相同的層次結構,具有同樣的功能。同一節點內相鄰層之間通過接口(可以是邏輯接口)進行通信。七層結構中的每一層使用下一層提供的服務,並且向其上層提供服務。不同節點的同等層按照協議實現對等層之間的通信。

根據以上標準,OSI參考模型分為(從上到下):物理層->數據鏈路層->網絡層->傳輸層->會話層->表示層->應用層。

物理層涉及在信道上傳輸的原始比特流。數據鏈路層的主要任務是加強物理層傳輸原始比特流的功能,使之對應的網絡層顯現為一條無錯線路。發送包把輸入數據封裝在數據幀,按順序傳送出去並處理接收方回送的確認幀。網絡層關係到子網的運行控制,其中一個關鍵問題是確認從源端到目的端如何選擇路由。傳輸層的基本功能是從會話層接收數據而且把其分成較小的單元傳遞給網絡層。會話層允許不同機器上的用戶建立會話關係。表示層用來完成某些特定的功能。應用層包含著大量人們普遍需要的協議。

各層功能見下表:

七層模型的每一層都具有清晰的特徵。基本來說:

第七至第四層(應用層->表示層->會話層->傳輸層)處理數據源和數據目的地之間的端到端通信;第三至第一層(網絡層->數據鏈路層->物理層)處理網絡設備間的通信。

另外:

OSI模型的七層也可以劃分為兩組:

上層(層7、層6和層5,即應用層->表示層->會話層)。上層處理應用程式問題,並且通常只應用在軟體上。最高層,即應用層是與終端用戶最接近的。下層(層4、層3、層2和層1,即傳輸層->網絡層->數據鏈路層->物理層)。下層是處理數據傳輸的。物理層和數據鏈路層應用在硬體和軟體上。最底層,即物理層是與物理網絡媒介(比如說,電線)最接近的,並且負責在媒介上發送

第7層-應用層

定義了用於在網絡中進行通信和數據傳輸的接口 - 用戶程式;提供標準服務,比如虛擬終端、文件以及任務的傳輸和處 理;應用層為作業系統或網絡應用程式提供訪問網絡服務的接口。應用層協議的代表包括:Telnet、FTP、HTTP、SNMP等。

第6層-表示層

掩蓋不同系統間的數據格式的不同性;指定獨立結構的數據傳輸格式;

數據的編碼和解碼;加密和解密;壓縮和解壓縮這一層主要解決擁護信息的語法表示問題。它將欲交換的數據從適合於某一用戶的抽象語法,轉換為適合於OSI系統內部使用的傳送語法。即提供格式化的表示和轉換數據服務。數據的壓縮和解壓縮, 加密和解密等工作都由表示層負責。

第5層-會話層

管理用戶會話和對話;控制用戶間邏輯連接的建立和掛斷;報告上一層發生的錯誤這一層也可以稱為會晤層或對話層,在會話層及以上的高層次中,數據傳送的單位不再另外命名,而是統稱為報文。會話層不參與具體的傳輸,它提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制。如伺服器驗證用戶登錄便是由會話層完成的。

第4層-處理信息的傳輸層

管理網絡中端到端的信息傳送;通過錯誤糾正和流控制機制提供可靠且有序的數據包傳送;提供面向無連 接的數據包的傳送;第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段 (segments)而UDP協議的數據單元稱為「數據報(datagrams)」。這個層負責獲取全部信息,因此,它必須跟蹤數據單元碎片、亂序到達的 數據包和其它在傳輸過程中可能發生的危險。第4層為上層提供端到端(最終用戶到最終用戶)的透明的、可靠的數據傳輸服務。所為透明的傳輸是指在通信過程中 傳輸層對上層屏蔽了通信傳輸系統的具體細節。傳輸層協議的代表包括:TCP、UDP、SPX等。

第3層-網絡層

定義網絡設備間如何傳輸數據;根據唯一的網絡設備地址路由數據包;提供流量和擁塞控制以防止網絡資源的損耗在 計算機網絡中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。網絡層的任務就是選擇合適的網間路由和交換結點, 確保數據及時傳送。網絡層將數據鏈路層提供的幀組成數據包,包中封裝有網絡層包頭,其中含有

邏輯地址信息- -源站點和目的站點地址的網絡地址。如 果你在談論一個IP位址,那麼你是在處理第3層的問題,這是「數據包」問題,而不是第2層的「幀」。IP是第3層問題的一部分,此外還有一些路由協議和地 址解析協議(ARP)。有關路由的一切事情都在這第3層處理。地址解析和路由是3層的重要目的。網絡層還可以實現擁塞控制、網際互連等功能。在這一層,數據的單位稱為數據包(packet)。網絡層協議的代表包括:IP、IPX、RIP、OSPF等。

第2層-數據鏈路層

定義操作通信連接的程序;

封裝數據包為數據幀;

監測和糾正數據包傳輸錯誤

在物理層提供比特流服務的基礎上,建立相鄰結點之間的數據鏈路,通過差錯控制提供數據幀(Frame)在信道上無差錯的傳輸,並進行各電路上的動作系列。數據鏈路層在不可靠的物理介質上提供可靠的傳輸。該層的作用包括:物理地址尋址、數據的成幀、流量控制、數據的檢錯、重發等。在這一層,數據的單位稱為幀(frame)。數據鏈路層協議的代表包括:SDLC、HDLC、PPP、STP、幀中繼等。

第1層-物理層

定義通過網絡設備發送數據的物理方式;

作為網絡媒介和設備間的接口;

定義光學、電氣以及機械特性。

規定通信設備的機械的、電氣的、功能的和過程的特性,用以建立、維護和拆除物理鏈路連接。具體地講,機械 特性規定了網絡連接時所需接插件的規格尺寸、引腳數量和排列情況等;電氣特性規定了在物理連接上傳輸bit流時線路上信號電平的大小、阻抗匹配、傳輸速率 距離限制等;功能特性是指對各個信號先分配確切的信號含義,即定義了DTE和DCE之間各個線路的功能;規程特性定義了利用信號線進行bit流傳輸的一組 操作規程,是指在物理連接的建立、維護、交換信息是,DTE和DCE雙放在各電路上的動作系列。在這一層,數據的單位稱為比特(bit)。屬於物理層定義的典型規範代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

二、TCP/IP

TCP/IP(傳輸控制協議/網間網協議)是目前世界上應用最為廣泛的協議,它的流行與Internet的迅猛發展密切相關。

TCP/IP最初是為網際網路的原型ARPANET所設計的,目的是提供一整套方便實用、能應用於多種網絡上的協議,事實證明TCP/IP做到了這一點,它使網絡互聯變得容易起來,並且使越來越多的網絡加入其中,成為Internet的事實標準。

TCP/IP協議族包含了很多功能各異的子協議。為此我們也利用上文所述的分層的方式來剖析它的結構。

TCP/IP層次模型共分為四層:應用層->傳輸層->網絡層->數據鏈路層。

各層功能見下表

TCP(Transmission Control Protocol:傳輸控制協議)和UDP(User Datagram Protocol:用戶數據報協議)協議屬於傳輸層協議。其中:

TCP提供IP環境下的數據可靠傳輸,它提供的服務包括數據流傳送、可靠性、有效流控、全雙工操作和多路復用。通過面向連接、端到端和可靠的數據包發送。通俗說,它是事先為所發送的數據開闢出連接好的通道,然後再進行數據發送;UDP則不為IP提供可靠性、流控或差錯恢復功能。一般來說,TCP對應的是可靠性要求高的應用,而UDP對應的則是可靠性要求低、傳輸經濟的應用。

應用層應用層是所有用戶所面向的應用程式的統稱。ICP/IP協議族在這一層面有著很多協議來支持不同的應用,許多大家所熟悉的基於Internet的應用的實現就離不開這些協議。如我們進行全球資訊網(WWW)訪問用到了HTTP協議、文件傳輸用FTP協議、電子郵件發送用SMTP、域名的解析用DNS協議、遠程登錄用Telnet協議等等,都是屬於TCP/IP應用層的;就用戶而言,看到的是由一個個軟體所構築的大多為圖形化的操作界面,而實際後臺運行的便是上述協議。

傳輸層

這一層的的功能主要是提供應用程式間的通信,TCP/IP協議族在這一層的協議有TCP和UDP。

網絡層

TCP/IP協議族中非常關鍵的一層,主要定義了IP位址格式,從而能夠使得不同應用類型的數據在Internet上通暢地傳輸,IP協議就是一個網絡層協議。

網絡接口層

這是TCP/IP軟體的最低層,負責接收IP數據包並通過網絡發送之,或者從網絡上接收物理幀,抽出IP數據報,交給IP層。

TCP支持的應用協議主要有:Telnet、FTP、SMTP等;

UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)等。

TCP/IP協議與低層的數據鏈路層和物理層無關,這也是TCP/IP的重要特點。

TCP連接建立-斷開的過程說明

TCP連接的端點叫做套接字(socket)或插口,即(IP位址:埠號),每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。

TCP的運輸連接有三個階段,即連接建立、數據傳送、連接釋放。

TCP連接建立的過程要使每一方能夠確定對方的存在:主動發起連接建立的應用進行叫做客戶(client),被動等待連接建立的應用進程叫做伺服器(server),連接建立的過程叫做三次握手。

假設A為客戶,B為伺服器,A發送一個報文給B,B發回確認,然後A再加以確認,來回共三次,成為「三次握手」。三次握手建立連接~

所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。在socket編程中,這一過程由客戶端執行connect來觸發,整個流程如下圖所示:

第一次握手:Client將標誌位SYN置為1,隨機產生一個值seq=J,並將該數據包發送給Server,Client進入SYN_SENT狀態,等待Server確認。

第二次握手:Server收到數據包後由標誌位SYN=1知道Client請求建立連接,Server將標誌位SYN和ACK都置為1,ack=J 1,隨機產生一個值seq=K,並將該數據包發送給Client以確認連接請求,Server進入SYN_RCVD狀態。

第三次握手:Client收到確認後,檢查ack是否為J 1,ACK是否為1,如果正確則將標誌位ACK置為1,ack=K 1,並將該數據包發送給Server,Server檢查ack是否為K 1,ACK是否為1,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態,完成三次握手,隨後Client與Server之間可以開始傳輸數據了。

SYN攻擊解釋:

三次握手過程中,Server發送SYN-ACK之後,收到Client的ACK之前的TCP連接稱為半連接(half-open connect),此時Server處於SYN_RCVD狀態,當收到ACK後,Server轉入ESTABLISHED狀態。SYN攻擊就是Client在短時間內偽造大量不存在的IP位址,並向Server不斷地發送SYN包,Server回復確認包,並等待Client的確認,由於源地址是不存在的,因此,Server需要不斷重發直至超時,這些偽造的SYN包將產時間佔用未連接隊列,導致正常的SYN請求因為隊列滿而被丟棄,從而引起網絡堵塞甚至系統癱瘓。SYN攻擊時一種典型的DDOS攻擊,檢測SYN攻擊的方式非常簡單,即當Server上有大量半連接狀態且源IP位址是隨機的,則可以斷定遭到SYN攻擊了,使用如下命令可以讓之現行:

#netstat -nap | grep SYN_RECV---------------------------------------------------

連接的釋放需要發送四個包,因此成為「四次揮手」,四次揮手斷開連接。客戶端或伺服器都可以主動發起揮手動作。

所謂四次揮手(Four-Way Wavehand)即終止TCP連接,就是指斷開一個TCP連接時,需要客戶端和服務端總共發送4個包以確認連接的斷開。在socket編程中,這一過程由客戶端或服務端任一方執行close來觸發,整個流程如下圖所示:

由於TCP連接時全雙工的,因此,每個方向都必須要單獨進行關閉,這一原則是當一方完成數據發送任務後,發送一個FIN來終止這一方向的連接,收到一個FIN只是意味著這一方向上沒有數據流動了,即不會再收到數據了,但是在這個TCP連接上仍然能夠發送數據,直到這一方向也發送了FIN。首先進行關閉的一方將執行主動關閉,而另一方則執行被動關閉,上圖描述的即是如此。

第一次揮手:Client發送一個FIN,用來關閉Client到Server的數據傳送,Client進入FIN_WAIT_1狀態。

第二次揮手:Server收到FIN後,發送一個ACK給Client,確認序號為收到序號 1(與SYN相同,一個FIN佔用一個序號),Server進入CLOSE_WAIT狀態。

第三次揮手:Server發送一個FIN,用來關閉Server到Client的數據傳送,Server進入LAST_ACK狀態。

第四次揮手:Client收到FIN後,Client進入TIME_WAIT狀態,接著發送一個ACK給Server,確認序號為收到序號 1,Server進入CLOSED狀態,完成四次揮手。

上面是一方主動關閉,另一方被動關閉的情況(由一方發起揮手),實際中還會出現同時發起主動關閉的情況,具體流程如下圖(同時揮手):

為什麼連接的時候是三次握手,關閉的時候卻是四次握手?

這是因為當Server端收到Client端的SYN連接請求報文後,可以直接發送SYN ACK報文。其中ACK報文是用來應答的,SYN報文是用來同步的。

但是關閉連接時,當Client端發送FIN報文僅僅表示它不再發送數據了但是還能接收數據,Server端收到FIN報文時,很可能並不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,"你發的FIN報文我收到了"。只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送。故需要四步握手。

三、OSI七層網絡與TCP/IP五層網絡的區別與聯繫

除了層的數量之外,開放式系統互聯(OSI)模型與TCP/IP協議有什麼區別?

開放式系統互聯模型是一個參考標準,解釋協議相互之間應該如何相互作用。TCP/IP協議是美國國防部發明的,是讓網際網路成為了目前這個樣子的標準之一。

開放式系統互聯模型中沒有清楚地描繪TCP/IP協議,但是在解釋TCP/IP協議時很容易想到開放式系統互聯模型。

兩者的主要區別如下:

1)TCP/IP協議中的應用層處理OSI模型中的第五層、第六層和第七層的功能。2)TCP/IP協議中的傳輸層並不能總是保證在傳輸層可靠地傳輸數據包,而OSI模型可以做到。3) TCP/IP協議還提供一項名為UDP(用戶數據報協議)的選擇。UDP不能保證可靠的數據包傳輸。

先簡單對比下二層網絡和三層網絡的區別:

1)不同網段的ip通信,需要經過三層網絡。相同網段的ip通信,經過二層網絡;

2)二層網絡僅僅通過MAC尋址即可實現通訊,但僅僅是同一個衝突域內;三層網絡需要通過IP路由實現跨網段的通訊,可以跨多個衝突域;

3)二層網絡的組網能力非常有限,一般只是小區域網;三層網絡則可以組大型的網絡。

4)二層網絡基本上是一個安全域,也就是說在同一個二層網絡內,終端的安全性從網絡上講基本上是一樣的,除非有其它特殊的安全措施;

三層網絡則可以劃分出相對獨立的多個安全域。

5)很多技術相對是在二層區域網中用得多,比如DHCP、Windows提供的共享連接等,如需在三層網絡上使用,則需要考慮其它設備的支持(比如通過DHCP中繼代理等)或通過其它的方式來實現。

二層網絡與三層網絡的詳細對比

網絡結構的變化過程:a)按照物理拓撲結構分類,網絡結構經歷了總線型、環型、星型、樹型、混合型等結構。b)按照邏輯拓撲結構分類,網絡結構經歷了二層網絡架構、三層網絡架構以及最近興起的大二層網絡架構。

傳統的數據交換都是在OSI 參考模型的數據鏈路層發生的,也就是按照MAC 地址進行尋址並進行數據轉發,並建立和維護一個MAC 地址表,用來記錄接收到的數據包中的MAC 地址及其所對應的埠。此種類型的網絡均為小範圍的二層網絡。

01二層網絡的工作流程:

1)數據包接收:首先交換機接收某埠中傳輸過來的數據包,並對該數據包的源文件進行解析,獲取其源MAC 地址,確定發放源數據包主機

2)傳輸數據包到目的MAC 地址:首先判斷目的MAC 地址是否存在,如果交換機所存儲的MAC 地址表中有此MAC 地址所對應的埠,那麼直接將數據包發送給這個埠;如果在交換機存儲列表中找不到對應的目的MAC 地址,交換機則會對數據包進行全埠廣播,直至收到目的設備的回應,交換機通過此次廣播學習、記憶並建立目的MAC 地址和目的埠的對應關係,以備以後快速建立與該目的設備的聯繫;

3)如果交換機所存儲的MAC 地址表中沒有此地址,就會將數據包廣播發送到所有埠上,當目的終端給出回應時,交換機又學習到了一個新的MAC 地址與埠的對應關係,並存儲在自身的MAC 地址表中。當下次發送數據的時候就可以直接發送到這個埠而非廣播發送了。

以上就是交換機將一個MAC 地址添加到列表的流程,該過程循環往復,交換機就能夠對整個網絡中存在的MAC 地址進行記憶並添加到地址列表,這就是二層(OSI 二層)交換機對MAC 地址進行建立、維護的全過程。

從上述過程不難看出,傳統的二層網絡結構模式雖然運行簡便但在很大程度上限制了網絡規模的擴大,由於傳統網絡結構中採用的是廣播的方式來實現數據的傳輸,極易形成廣播風暴,進而造成網絡的癱瘓。這就是各個計算機研究機構所面臨的「二層網絡存在的天然瓶頸」,由於該瓶頸的存在,使得大規模的數據傳輸和資源共享難以實現,基於傳統的二層網絡結構也很難實現區域網路規模化。

為了適應大規模網絡的產生於發展,基於分層、簡化的思想,三層網絡模式被成功設計推出。三層網絡架構的基本思想就是將大規模、較複雜的網絡進行分層次分模塊處理,為每個模塊指定對應的功能,各司其職,互不幹擾,大大提高了數據傳輸的速率。

02三層網絡結構的設計

顧名思義,具有三個層次:核心層、匯聚層、接入層。下面將對三個層次的作用分別進行說明。

1)核心層:在網際網路中承載著網絡伺服器與各應用埠間的傳輸功能,是整個網絡的支撐脊梁和數據傳輸通道,重要性不言而喻。因此,網絡對於核心層要求極高,核心層必須具備數據存儲的高安全性,數據傳輸的高效性和可靠性,對數據錯誤的高容錯性,以及數據管理方面的便捷性和高適應性等性能。在核心層搭建中,設備的採購必須嚴格按需採購,滿足上述功能需求,這就對交換機的帶寬以及數據承載能力提出了更高的要求,因為核心層一旦堵塞將造成大面積網絡癱瘓,因此必須配備高性能的數據冗餘轉接設備和防止負載過剩的均衡過剩負載的設備,以降低各核心層交換機所需承載的數據量,以保障網絡高速、安全的運轉。

2)匯聚層:連接網絡的核心層和各個接入的應用層,在兩層之間承擔「媒介傳輸」的作用。每個應用接入都經過匯聚層進行數據處理,再與核心層進行有效的連接,通過匯聚層的有效整合對核心層的荷載量進行降低。根據匯聚層的作用要求,匯聚層應該具備以下功能:實施安全功能、工作組整體接入功能、虛擬網絡過濾功能等。因此,匯聚層中設備的採購必須具備三層網絡的接入交換功能,同時支持虛擬網絡的創建功能,從而實現不同網絡間的數據隔離安全,能夠將大型網絡進行分段劃分,化繁為簡。

3)接入層:接入層的面向對象主要是終端客戶,為終端客戶提供接入功能,區別於核心層和匯聚層提供各種策略的功能。接入層的主要功能是規劃同一網段中的工作站個數,提高各接入終端的帶寬。在搭建網絡架構時,既要考慮網絡的綜合實用性,也要考慮經濟效益,因此在接入層設備採購時可以選擇數據鏈路層中較低端的交換機,而不是越高端越昂貴越好。

隨著近年來網際網路的應用規模急劇擴張,對數據傳輸的要求也越來越高,基於數據整合的雲計算技術逐漸受到人們的關注。計算機網絡作為當今社會各種信息的傳輸媒介,其組成架構也即將發生重大變革。鑑於傳統三層網絡VLan 隔離以及STP 收斂上的缺陷,傳統網絡結構急需打破。現有研究機構開始致力於新型高效網絡架構的研發與探索,結合早期的扁平化架構的原有二層網絡與現有三層網絡的優缺點提出了大二層網絡架構。

大二層網絡

01為什麼需要大二層網絡

傳統的三層數據中心架構結構的設計是為了應付服務客戶端-伺服器應用程式的縱貫式大流量,同時使網絡管理員能夠對流量流進行管理。工程師在這些架構中採用生成樹協議(STP)來優化客戶端到伺服器的路徑和支持連接冗餘,通常將二層網絡的範圍限制在網絡接入層以下,避免出現大範圍的二層廣播域;

虛擬化從根本上改變了數據中心網絡架構的需求,既虛擬化引入了虛擬機動態遷移技術。從而要求網絡支持大範圍的二層域。從根本上改變了傳統三層網絡統治數據中心網絡的局面。具體的來說,虛擬化技術的一項伴生技術—虛擬機動態遷移(如VMware的VMotion)在數據中心得到了廣泛的應用,虛擬機遷移要求虛擬機遷移前後的IP和MAC地址不變,這就需要虛擬機遷移前後的網絡處於同一個二層域內部。由於客戶要求虛擬機遷移的範圍越來越大,甚至是跨越不同地域、不同機房之間的遷移,所以使得數據中心二層網絡的範圍越來越大,甚至出現了專業的大二層網絡這一新領域專題。

思考兩個問題:

a)IP及MAC不變的理由?

對業務透明、業務不中斷

b)IP及MAC不變,那麼為什麼必須是二層域內?

IP不變,那麼就不能夠實現基於IP的尋址(三層),那麼只能實現基於MAC的尋址,既二層尋址,大二層,顧名思義,此是二層網絡,根據MAC地址進行尋址

02傳統的二層網絡大不起來的原因

在數據中心網絡中,「區域」對應VLAN的劃分。相同VLAN內的終端屬於同一廣播域,具有一致的VLAN-ID,二層連通;不同VLAN內的終端需要通過網關互相訪問,二層隔離,三層連通。傳統的數據中心設計,區域和VLAN的劃分粒度是比較細的,這主要取決於「需求」和「網絡規模」。

傳統的數據中心主要是依據功能進行區域劃分,例如WEB、APP、DB,辦公區、業務區、內聯區、外聯區等等。不同區域之間通過網關和安全設備互訪,保證不同區域的可靠性、安全性。同時,不同區域由於具有不同的功能,因此需要相互訪問數據時,只要終端之間能夠通信即可,並不一定要求通信雙方處於同一VLAN或二層網絡。

傳統的數據中心網絡技術, STP是二層網絡中非常重要的一種協議。用戶構建網絡時,為了保證可靠性,通常會採用冗餘設備和冗餘鏈路,這樣就不可避免地形成環路。而二層網絡處於同一個廣播域下,廣播報文在環路中會反覆持續傳送,形成廣播風暴,瞬間即可導致埠阻塞和設備癱瘓。因此,為了防止廣播風暴,就必須防止形成環路。這樣,既要防止形成環路,又要保證可靠性,就只能將冗餘設備和冗餘鏈路變成備份設備

備和備份鏈路。冗餘的設備埠和鏈路在正常情況下被阻塞掉,不參與數據報文的轉發。只有當前轉發的設備、埠、鏈路出現故障,導致網絡不通的時候,冗餘的設備埠和鏈路才會被打開,使得網絡能夠恢復正常。實現這些自動控制功能的就是STP(Spanning Tree Protocol,生成樹協議)。由於STP的收斂性能等原因,一般情況下STP的網絡規模不會超過100臺交換機。同時由於STP需要阻塞掉冗餘設備和鏈路,也降低了網絡資源的帶寬利用率。因此在實際網絡規劃時,從轉發性能、利用率、可靠性等方面考慮,會儘可能控制STP網絡範圍。

隨著數據大集中的發展和虛擬化技術的應用,數據中心的規模與日俱增,不僅對二層網絡的區域範圍要求也越來越大,在需求和管理水平上也提出了新的挑戰。

數據中心區域規模和業務處理需求的增加,對於集群處理的應用越來越多,集群內的伺服器需要在一個二層VLAN下。同時,虛擬化技術的應用,在帶來業務部署的便利性和靈活性基礎上,虛擬機的遷移問題也成為必須要考慮的問題。為了保證虛擬機承載業務的連續性,虛擬機遷移前後的IP位址不變,因此虛擬機的遷移範圍需要在同一個二層VLAN下。反過來即,二層網絡規模有多大,虛擬機才能遷移有多遠。

傳統的基於STP備份設備和鏈路方案已經不能滿足數據中心規模、帶寬的需求,並且STP協議幾秒至幾分鐘的故障收斂時間,也不能滿足數據中心的可靠性要求。因此,需要能夠有新的技術,在滿足二層網絡規模的同時,也能夠充分利用冗餘設備和鏈路,提升鏈路利用率,而且數據中心的故障收斂時間能夠降低到亞秒甚至毫秒級。

03實現大二層網絡的技術

大二層網絡是針對當前最火熱的虛擬化數據中心的虛擬機動態遷移這一特定需求而提出的概念,對於其他類型的網絡並無特殊的價值和意義。

在虛擬化數據中心裡,一臺物理伺服器被虛擬化為多臺邏輯伺服器,被稱為虛擬機VM,每個VM都可以獨立運行,有自己的OS、APP,在網絡層面有自己獨立的MAC地址和IP位址。而VM動態遷移是指將VM從一個物理伺服器遷移到另一個物理伺服器,並且要保證在遷移過程中,VM的業務不能中斷。

為了實現VM動態遷移時,在網絡層面要求遷移時不僅VM的IP位址不變、而且運行狀態也必須保持(例如TCP會話狀態),這就要求遷移的起始和目標位置必須在同一個二層網絡域之中。

所以,為了實現VM的大範圍甚至跨地域的動態遷移,就要求把VM遷移可能涉及的所有伺服器都納入同一個二層網絡域,這樣才能實現VM的大範圍無障礙遷移。這就是大二層網絡的需求由來,一個真正意義的大二層網絡至少要能容納1萬以上的主機,才能稱之為大二層網絡。而傳統的基於VLAN xSTP的二層網絡,由於環路和廣播風暴、以及xSTP協議的性能限制等原因,通常能容納的主機數量不會超過1K,無法實現大二層網絡。當前,實現大二層網絡的主要技術有以下幾種:

a)網絡設備虛擬化技術

網絡設備虛擬化是將相互冗餘的兩臺或多臺物理網絡設備組合在一起,虛擬化成一臺邏輯網絡設備,在整個網絡中只呈現為一個節點。例如華為的CSS框式堆疊、iStack盒式堆疊、SVF框盒堆疊技術等。

網絡設備虛擬化再配合鏈路聚合技術,就可以把原來網絡的多節點、多鏈路的結構變成邏輯上單節點、單鏈路的結構,解決了二層網絡中的環路問題。沒有了環路問題,就不需要xSTP,二層網絡就可以範圍無限(只要虛擬網絡設備的接入能力允許),從而實現大二層網絡。

b)大二層轉發技術

大二層轉發技術是通過定義新的轉發協議,改變傳統二層網絡的轉發模式,將三層網絡的路由轉發模式引入到二層網絡中。例如TRILL、SPB等。

以TRILL為例,TRILL協議在原始以太幀外封裝一個TRILL幀頭,再封裝一個新的以太幀來實現對原始以太幀的透明傳輸,支持TRILL的交換機可通過TRILL幀頭裡的Nickname標識來進行轉發,而Nickname就像路由一樣,可通過IS-IS路由協議進行收集、同步和更新。

c)Overlay技術

Overlay技術是通過用隧道封裝的方式,將源主機發出的原始二層報文封裝後在現有網絡中進行透明傳輸,從而實現主機之間的二層通信。通過封裝和解封裝,相當於一個大二層網絡疊加在現有的基礎網絡之上,所以稱為Overlay技術。

Overlay技術通過隧道封裝的方式,忽略承載網絡的結構和細節,可以把整個承載網絡當作一臺「巨大無比的二層交換機」, 每一臺主機都是直連在「交換機」的一個埠上。而承載網絡之內如何轉發都是 「交換機」內部的事情,主機完全不可見。Overlay技術主要有VXLAN、NVGRE、STT等。

04大二層網絡需要有多大、及技術選型

數據中心內大二層首先需要解決的是數據中心內部的網絡擴展問題,通過大規模二層網絡和VLAN延伸,實現虛擬機在數據中心內部的大範圍遷移。由於數據中心內的大二層網絡都要覆蓋多個接入交換機和核心交換機,主要有以下兩類技術。

a) 虛擬交換機技術

虛擬交換機技術的出發點很簡單,屬於工程派。既然二層網絡的核心是環路問題,而環路問題是隨著冗餘設備和鏈路產生的,那麼如果將相互冗餘的兩臺或多臺設備、兩條或多條鏈路合併成一臺設備和一條鏈路,就可以回到之前的單設備、單鏈路情況,環路自然也就不存在了。尤其是交換機技術的發展,虛擬交換機從低端盒式設備到高端框式設備都已經廣泛應用,具備了相當的成熟度和穩定度。因此,虛擬交換機技術成為目前應用

用最廣的大二層解決方案。 虛擬交換機技術的代表是H3C公司的IRF、Cisco公司的VSS,其特點是只需要交換機軟體升級即可支持,應用成本低,部署簡單。目前這些技術都是各廠商獨立實現和完成的,只能同一廠商的相同系列產品之間才能實施虛擬化。同時,由於高端框式交換機的性能、密度越來越高,對虛擬交換機的技術要求也越來越高,目前框式交換機的虛擬化密度最高為4:1。虛擬交換機的密度限制了二層網絡的規模大約在1萬~2萬臺伺服器左右。

b) 隧道技術

隧道技術屬於技術派,出發點是借船出海。二層網絡不能有環路,冗餘鏈路必須要阻塞掉,但三層網絡顯然不存在這個問題,而且還可以做ECMP(等價鏈路),能否借用過來呢?通過在二層報文前插入額外的幀頭,並且採用路由計算的方式控制整網數據的轉發,不僅可以在冗餘鏈路下防止廣播風暴,而且可以做ECMP。這樣可以將二層網絡的規模擴展到整張網絡,而不會受核心交換機數量的限制。

隧道技術的代表是TRILL、SPB,都是通過借用IS-IS路由協議的計算和轉發模式,實現二層網絡的大規模擴展。這些技術的特點是可以構建比虛擬交換機技術更大的超大規模二層網絡(應用於大規模集群計算),但尚未完全成熟,目前正在標準化過程中。同時傳統交換機不僅需要軟體升級,還需要硬體支持。

2. 跨數據中心

隨著數據中心多中心的部署,虛擬機的跨數據中心遷移、災備,跨數據中心業務負載分擔等需求,使得二層網絡的擴展不僅是在數據中心的邊界為止,還需要考慮跨越數據中心機房的區域,延伸到同城備份中心、遠程災備中心。

一般情況下,多數據中心之間的連接是通過路由連通的,天然是一個三層網絡。而要實現通過三層網絡連接的兩個二層網絡互通,就必須實現「L2 over L3」。

L2oL3技術也有許多種,例如傳統的VPLS(MPLS L2VPN)技術,以及新興的Cisco OTV、H3C EVI技術,都是藉助隧道的方式,將二層數據報文封裝在三層報文中,跨越中間的三層網絡,實現兩地二層數據的互通。這種隧道就像一個虛擬的橋,將多個數據中心的二層網絡貫穿在一起。

也有部分虛擬化和軟體廠商提出了軟體的L2 over L3技術解決方案。例如VMware的VXLAN、微軟的NVGRE,在虛擬化層的vSwitch中將二層數據封裝在UDP、GRE報文中,在物理網絡拓撲上構建一層虛擬化網絡層,從而擺脫對網絡設備層的二層、三層限制。這些技術由於性能、擴展性等問題,也沒有得到廣泛的使用。

常見數據中心架構

full layer3網絡屬於傳統的數據中心網絡。伺服器網關部署在接入交換機上,整網通過路由協議控制拓撲和轉發路徑。這樣的網絡架構的主要優勢在於技術成熟、有大量的運維經驗。網絡系統穩定且便於維護。但是Full layer3網絡的不足之處在於不能支持虛擬化數據中心虛擬機的自由遷移,所以在進入雲計算時代後,Full layer3網絡逐漸被淘汰。Full layer2網絡是下一代數據中心的網絡模型。伺服器網關在核心層,整網通過TRILL或是SPB協議控制拓撲和轉發路徑。這樣的網絡架構主要優勢在於能夠支持大規模的二層網絡,能夠支持足夠規模的虛擬機資源池。但是,這個網絡模型的缺點也是非常明顯的。TRILL協議雖然已經標準化(SPB協議正在標準化),但是大規模的二層網絡缺乏運維經驗。沒有運維經驗,也就意味著運維成本的大幅度提升,同時也會給業務系統帶來巨大的風險。

在匯聚層上部署EVI特性,通過核心與匯聚之間的IP網絡建立Vlink實現二層互通。通過EVI特性將指定的多個二層域連接起來,形成一個完整的大規模二層網絡。這樣就可以實現虛擬機大規模池化功能。同時,可以避免使用TRILL或是SPB協議帶來的運維風險。

IP位址(Internet Protocol Address)是指網際網路協議地址,又譯為網際協議地址。

IP位址是IP協議提供的一種統一的地址格式,它為網際網路上的每一個網絡和每一臺主機分配一個邏輯地址,以此來屏蔽物理地址的差異。

01 IP位址基本概念

AIP位址

IP位址是主機的唯一標識,保證主機間正常通信。是一種網絡編碼,用來確定網絡中的節點。

IP位址是由32位二進位組成。

通常被分割為4個「8位二進位數」(也就是4個字節)。分成4組,每組8位。子網掩碼也是。

例如:11000000.10000000.00000001.00000010 平時為了方便記憶,使用點分十進位格式。前面的二進位IP表示成十進位是:192.128.1.2。

B二進位

8位二進位最小值 00000000 = 0 最大值 11111111=255

C分類

IP位址分以下五類:

A類 : 1.0.0.0 到126.255.255.255 ,適用於大型網絡

B類 :128.0.0.0到191.255.255.255 ,適用於中型網絡

C類 :192.0.0.0到223.255.255.255 ,適用於小型網絡

D類 : 224.0.0.0到239.255.255.255,用於組播

E類 :240.192.0.0.0到255.255.255.255,用於科研保留

A,B,C為常用類別。其中127.x.x.x段地址空間是被保留的迴環地址

D結構

網絡部分(網絡地址)和主機部分(主機地址)

IP位址由2部分組成:網絡部分 主機部分

IP位址=網絡地址 主機地址

02 子網掩碼

子網掩碼又叫網絡掩碼、地址掩碼、子網絡遮罩。它是一種用來指明一個IP位址的哪些位 標識的是主機所在的子網,以及哪些位標識的是主機地位掩碼。

子網掩碼也是一個32位地址,只有一個作用:就是將某個IP位址劃分成網絡地址和主機地址兩部分。

通過子網掩碼,就可以判斷兩個IP在不在一個區域網內部。子網掩碼可以看出有多少位是網絡號,有多少位是主機號其對應的IP位址中網絡地址的所有位置都為1,對應於主機地址的所有位置都為0。

每一類IP位址都有默認的子網掩碼:

對於A類地址來說,默認的子網掩碼是255.0.0.0;對於B類地址來說,默認的子網掩碼是255.255.0.0;對於C類地址來說,默認的子網掩碼是255.255.255.0。

03 廣播地址

廣播地址(Broadcast Address)是專門用於同時向網絡中所有工作站進行發送的一個地址。

在使用TCP/IP 協議的網絡中,主機標識段host ID 為全1 的IP 地址為廣播地址,廣播的分組傳送給host ID段所涉及的所有計算機。

例如,對於10.1.1.0 (255.255.255.0 )網段,其廣播地址為10.1.1.255 (255 即為2 進位的11111111 ),當發出一個目的地址為10.1.1.255 的分組(封包)時,它將被分發給該網段上的所有計算機。

04 子網劃分

子網劃分定義:Internet組織機構定義了五種IP位址,有A、B、C三類地址。

A類網絡有126個,每個A類網絡可能有16777214臺主機,它們處於同一廣播域。而在同一廣播域中有這麼多節點是不可能的,網絡會因為廣播通信而飽和,結果造成16777214個地址大部分沒有分配出去。可以把基於每類的IP網絡進一步分成更小的網絡,每個子網由路由器界定並分配一個新的子網網絡地址,子網地址是借用基於每類的網絡地址的主機部分創建的。劃分子網後,通過使用掩碼,把子網隱藏起來,使得從外部看網絡沒有變化,這就是子網掩碼。

05 網絡地址計算

將IP位址和子網掩碼換算為二進位,子網掩碼連續全1的是網絡地址,後面的是主機地址將子網掩碼和IP位址按位進行邏輯「與」運算,得到IP位址的網絡地址,剩下的部分就是主機地址,從而區分出任意IP位址中的網絡地址和主機地址。將運算結果中的網絡地址不變,主機地址變為1,結果就是廣播地址

註:

網絡地址 1即為第一個主機地址,廣播地址-1即為最後一個主機地址,

由此可以看出地址範圍是:網絡地址 1 至 廣播地址-1

示例

一個主機的IP位址是202.112.14.137,掩碼是255.255.255.224,要求計算這個主機所在網絡的網絡地址和廣播地址

子網掩碼255.255.255.224 轉二進位:11111111.11111111.11111111.11100000

其中網絡位部分是27位,主機位部分是5位

網絡地址就是:把IP位址轉成二進位和子網掩碼進行與運算

IP位址202.112.14.137轉二進位:

11001010 01110000 00001110 10001001

IP位址&子網掩碼

11001010 01110000 00001110 10001001

11111111 11111111 11111111 11100000

11001010 01110000 00001110 10000000

註:與位運算:0與任何數運算為0,1與1運算為1

結果為:202.112.14.128

06 廣播地址計算

網絡地址的主機位全部變成1 ,10011111 即159 即:202.112.14.159

07 網絡數計算

網絡數=2的X次方(X是子網掩碼中,借的1的個數)如:202.106.1.0/25 是一個C類地址借了一位。因為C類默認是/24。所以X=1。網絡數=2的1次方=2個。

08 主機數計算

主機數=2的Y次方-2(Y是子網掩碼中0的個數)-2是掐頭去尾,頭是網絡號,尾是廣播地址。/25意味著子網掩碼中有25個1,剩下32-25個0,也就是7個。所以主機數=2的7次方-2=126,也就是每個子網可以產生126個可以分配給主機使用的IP位址。

09 塊大小計算

塊大小=256-子網掩碼,如:202.106.1.0/25 子網掩碼=255.255.255.128 所以塊大小=256-128=128。塊大小知道了,網道絡號就知了。因為,202.106.1.0/25 第一個網絡號一定是202.106.1.0 第二個網絡號就=202.106.1.0 128 =202.106.1.128。

於是得出:202.106.1.0/25 這個子網的網絡號就是1.0第一個IP就是1.1,最後一個IP=下一個網絡號-2=128-2=202.106.1.126。而202.106.1.127是第一網段的廣播地址。

202.106.1.128/25 這個子網的網絡號就是1.128 第一個IP就是1.129.最後一個IP就是1.254,而1.255是這個網段的廣播地址。

ip段/數字 --- 如192.168.0.1/24是什麼意思?

後面數字24是告訴我們有多少網絡位,也就是子網掩碼中前有多少位1。即:子網掩碼為11111111.11111111.11111111.00000000———255.255.255.0

示例:

IP位址為202.106.1.0/26 求子網數(網絡數)?主機數?網絡地址?廣播地址?

數字26告訴我們,IP位址的子網掩碼為:11111111.11111111.11111111.11000000

這是一個C類地址,默認子網掩碼為255.255.255.0。

題目IP位址為:255.255.255.192,而網絡位借用了主機位兩個位置為1

所以:子網數(網絡數)=2的X次方(X是子網掩碼中,借的1的個數)=4

主機數=2的Y次方-2(Y是子網掩碼中0的個數)=62

IP位址轉換二進位:11001010.1101010.00000001.00000000

網絡地址(網絡號):202.106.1.0、202.106.64、202.106.1.128、202.106.1.192

廣播地址:202.106.1.63、202.106.1.127、202.106.1.191、202.106.1.255

來源:https://blog.csdn.net/LPFAM/article/details/106457554

,
同类文章
葬禮的夢想

葬禮的夢想

夢見葬禮,我得到了這個夢想,五個要素的五個要素,水火只好,主要名字在外面,職業生涯良好,一切都應該對待他人治療誠意,由於小,吉利的冬天夢想,秋天的夢是不吉利的
找到手機是什麼意思?

找到手機是什麼意思?

找到手機是什麼意思?五次選舉的五個要素是兩名士兵的跡象。與他溝通很好。這是非常財富,它擅長運作,職業是仙人的標誌。單身男人有這個夢想,主要生活可以有人幫忙
我不怎麼想?

我不怎麼想?

我做了什麼意味著看到米飯烹飪?我得到了這個夢想,五線的主要土壤,但是Tu Ke水是錢的跡象,職業生涯更加真誠。他真誠地誠實。這是豐富的,這是夏瑞的巨星
夢想你的意思是什麼?

夢想你的意思是什麼?

你是什​​麼意思夢想的夢想?夢想,主要木材的五個要素,水的跡象,主營業務,主營業務,案子應該抓住魅力,不能疏忽,春天夢想的吉利夢想夏天的夢想不幸。詢問學者夢想
拯救夢想

拯救夢想

拯救夢想什麼意思?你夢想著拯救人嗎?拯救人們的夢想有一個現實,也有夢想的主觀想像力,請參閱週宮官方網站拯救人民夢想的詳細解釋。夢想著敵人被拯救出來
2022愛方向和生日是在[質量個性]中

2022愛方向和生日是在[質量個性]中

[救生員]有人說,在出生88天之前,胎兒已經知道哪天的出生,如何有優質的個性,將走在什麼樣的愛情之旅,將與生活生活有什么生活。今天
夢想切割剪裁

夢想切割剪裁

夢想切割剪裁什麼意思?你夢想切你的手是好的嗎?夢想切割手工切割手有一個真正的影響和反應,也有夢想的主觀想像力。請參閱官方網站夢想的細節,以削減手
夢想著親人死了

夢想著親人死了

夢想著親人死了什麼意思?你夢想夢想你的親人死嗎?夢想有一個現實的影響和反應,還有夢想的主觀想像力,請參閱夢想世界夢想死亡的親屬的詳細解釋
夢想搶劫

夢想搶劫

夢想搶劫什麼意思?你夢想搶劫嗎?夢想著搶劫有一個現實的影響和反應,也有夢想的主觀想像力,請參閱週恭吉夢官方網站的詳細解釋。夢想搶劫
夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂

夢想缺乏缺乏紊亂什麼意思?你夢想缺乏異常藥物嗎?夢想缺乏現實世界的影響和現實,還有夢想的主觀想像,請看官方網站的夢想組織缺乏異常藥物。我覺得有些東西缺失了