20世紀60年代以來,計算機網絡獲得了飛速增加。各大廠商爲了在數據通訊網絡領域佔據主導地位,紛紛推出了各自的網絡架構體系和標準,如IBM公司的SNA,Novell IPX/SPX協議,Apple公 司的AppleTalk協議,DEC公司的DECnet,以及普遍流行的 TCP/IP協議。同時,各大廠商針對本身的協議生產出了不一樣的硬件和軟件。各個廠商的共同努力促進了網絡技術的快速發展和網絡設備種類的迅速增加。但因爲多種協議的並存,也使網絡變得愈來愈複雜;並且,廠商之間的網絡設備大部分不能兼容,很難進行通訊。 爲了解決網絡之間的兼容性問題,幫助各個廠商生產出可兼容的 網絡設備,國際標準化組織ISO於1984年提出了OSI RM(Open System Interconnection Reference Model,開放系統互連參考模 型)。OSI 參考模型很快成爲計算機網絡通訊的基礎模型。在設 計OSI 參考模型時,遵循瞭如下原則:各個層之間有清晰的邊界 ,實現特定的功能;層次的劃分有利於國際標準協議的制定;層 的數目應該足夠多,以免各個層功能重複。 OSI參考模型具備如下優勢:簡化了相關的網絡操做;提供即插即 用的兼容性和不一樣廠商之間的標準接口;使各個廠商可以設計出 互操做的網絡設備,促進標準化工做;防止一個區域網絡的變化 影響另外一個區域的網絡,結構上進行分隔,所以每個區域的網絡都能單獨快速升級;把複雜的網絡問題分解爲小的簡單問題, 易於學習和操做型。緩存
OSI參考模型分爲七層,由下至上依次爲第一層物理層(Physical layer)、第二層數據鏈路層(Data link layer)、第三層網絡層( Network layer)、第四層傳輸層(Transport layer)、第五層會話層(Session layer)、第六層表示層(Presentation layer)、第 七層應用層(Application layer)。 服務器
一般,OSI參考模型第一層到第三層稱爲底層(Lower layer), 又叫介質層(Media Layer),底層負責數據在網絡中的傳送,網絡互連設備每每位於下三層,以硬件和軟件相結合的方式來實現。OSI參考模型的第五層到第七層稱爲高層(Upper layer),又叫 主機層(Host layer),高層用於保障數據的正確傳輸,以軟件方式來實現。網絡
OSI參考模型各個層次的基本功能以下:
物理層:在設備之間傳輸比特流,規定了電平、線速和電纜針腳 。
數據鏈路層:將比特組合成字節,再將字節組合成幀,使用MAC 地址來訪問介質,檢測差錯。(MAC、)
網絡層:提供邏輯地址,供路由器肯定路徑。(IP。ARP)
傳輸層:提供可靠或不可靠的數據傳遞以及進行重傳前的差錯檢測。(TCP/UDP)
會話層:負責創建、管理和終止表示層實體之間的通訊會話。該 層的通訊由不一樣設備中的應用程序之間的服務請求和響應組成。
表示層:提供各類用於應用層數據的編碼和轉換功能,確保一個 系統的應用層發送的數據能被另外一個系統的應用層識別。
應用層:OSI參考模型中最靠近用戶的一層,爲應用程序提供網絡服務。(HTTP)架構
TCP/IP(Transfer Control Protocol/Internet Protocol,傳輸控制協議/網際協議)TCP/IP協議棧也成爲互聯網的主流協議。
TCP/IP模型一樣採用分層結構,層與層相對獨立可是相互之間也 具有很是密切的協做關係。
TCP/IP模型與OSI參考模型的不一樣點在於TCP/IP把表示層和會話層都納入了應用層。less
TCP/IP模型由下至上依次分爲網絡接口層、 網絡層、傳輸層和應用層四個層次。
ide
用戶數據通過應用層協議封裝後傳遞給傳輸層,傳輸層封裝TCP頭部,交給網絡層,網絡層封裝IP頭部後,再交給數據鏈路層,數據鏈路層封裝 Ethernet幀頭和幀尾,交給物理層,物理層以比特流的形式將數據發送到物理線路上。性能
其七層模式是概念模型,而TCP/IP的模型纔是實際的網絡模型。
學習
IP(Internet Protocol)、 ICMP(Internet Control Message Protocol) 、ARP(Address Resolution Protocol)、RARP(Reverse Address Resolution Protocol)。 測試
爲網絡層最主要的協議,其功能即爲網絡層的主要功能,一是提供邏輯編址,二是提供路由功能,三是報文的封裝和解封裝。ui
IP地址是一個邏輯地址並不是硬件地址,硬件地址是固化在NIC(Network Interface Card)中的 ,如前面提到的MAC地址,用於同一鏈路上設備相互通訊;而IP 地址則是用於不一樣網絡(即不一樣鏈路)上的設備相互通訊。
TCP/IP模型中,每一層都有本身的通訊方式,數據鏈路層依靠 MAC地址通訊,而網絡層則依靠IP地址。在瞭解TCP/IP協議模型以及各層的功能以後,本課程重點針對網絡層介紹IP地址結構、 IP地址分類、組網的劃分,以及網絡層設備如何進行數據包的轉發,即數據在網絡中如何被路由的。 本課程介紹TCP/IP協議棧第三層——網絡層。網絡層的主要功能 是經過IP協議實現的。包括IP編址和IP路由。
TCP/IP模型中層與層之間彼此交換信息,確保網絡設備之間可以通訊。這些層之間使用協議數據單元(PDU)來彼此通訊。不一樣層的PDU中包含的信息也不一樣,根據其包含的信息,PDU被賦予不一樣的名稱。如傳輸層在上層數據中加入TCP報頭後獲得的PDU 被稱爲數據段(segment)。數據段被傳遞給網絡層,網絡層添加IP報頭,獲得的PDU被稱爲分組。分組被封裝到第二層報頭中 ,獲得的PDU被稱爲幀。最後,幀被轉換爲比特,經過網絡介質進行傳輸。
網絡層接收來自傳輸層的數據,將源地址和目的地址加到這些數據中。 數據鏈路層有物理地址——MAC地址。MAC地址是全球惟一的。當有數據發送時,源網絡設備查詢對端設備的 MAC地址,而後將數據發送過去。 MAC地址一般存在於一個平面地址空間,沒有清晰的地址層次, 只適合於本網段主機的通訊,另外,MAC地址固化在硬件中,靈 活性較差。對於不一樣網絡之間的互連通訊,一般使用基於軟件實 現的網絡層地址----IP地址來通訊,提供更大的靈活性。 IP地址,又稱邏輯地址,IP地址在一個網絡中是獨一無二的。每一臺網絡設備用IP地址做爲惟一的標識。
IP地址的編址經歷了三個歷史階段:
1 分類的IP地址:在1981年經過了相應的標準協議
2 子網劃分:這個對IP地址最基本的編址方法的改進,在RFC 950 在1985年經過
3 構成超網:1993年提出。
IP地址=網絡號+主機號
A 類地址:
0 0000000-0 1111111 爲A類地址的網絡位及A類地址的第一類地址範圍 0-127
B 類地址:
10 000000-10 111111 爲B類地址的第一位範圍 128-191
C類地址:
110 00000-110 11111 爲C類地址的第一位範圍 192-223
D 類地址:
1110 0000- 1110 1111 爲D類地址的第一位範圍 224-239
E 類地址
1111 0000- 1111 1111 爲E類地址的第一位範圍 240-247
IP地址用於惟一地標識一臺網絡設備,但並非每個IP地址都是可用的,一些特殊的IP地址有特殊的用途,不能用於標識網絡設備。
1 網絡地址
對於主機部分全爲「0」的IP地址,稱爲網絡地址,網絡地址用來 標識一個網段。
2 廣播地址
對於主機部分全爲「1」的IP地址,稱爲網段廣播地址,廣播地址用於標識一個網絡的全部主機。廣播地址用於向本網段的全部節點發送數據包 。
3 迴環地址:用於檢測網卡上的IP協議棧是否正常。
對於網絡部分爲127的IP地址,例如127.0.0.1每每用於環路測試。
4 其餘地址
全「0」的IP地址0.0.0.0表明全部的主機,華爲VRP系列路由器用 0.0.0.0地址指定默認路由。
全「1」的IP地址255.255.255.255,也是廣播地址,但 255.255.255.255表明全部主機,用於向網絡的全部節點發送數據包。這樣的廣播不能被路由器轉發。
在進行IP地址規劃時,一般會在公司內部網絡使用私有IP地址。 私有IP地址是由InterNIC預留的由各個企業內部網自由支配的IP地 址。使用私有IP地址不能直接訪問Internet是由於公網上沒有針對私有地址的路由。當訪問Internet時,須要利用網絡地址轉換( NAT,Network Address Translation)技術,把私有IP地址轉換爲 Internet可識別的公有IP地址。InterNIC預留了如下網段做爲私有 IP地址:
A類地址10.0.0.0~10.255.255.255;
B類地址172.16.0.0~ 172.31.255.255;
C類地址192.168.0.0~192.168.255.255等。
每個網段會有一些IP地址不能用做主機IP地址。下面計算一下可用的IP地址。
如B類網段172.16.0.0, 有16個主機位,所以有216個IP地址,去掉一個網絡地址172.16.0.0,一個廣播地址172.16.255.255不能用做標識主機,那麼共有216-2個可用地址。
C類網段192.168.1.0,有 8個主機位,共有28=256個IP地址,去掉一個網絡地址 192.168.1.0,一個廣播地址192.168.1.255,共有254個可用主機 地址。 每個網段可用主機地址能夠用這樣一個公式表示:假定這個網段的主機部分位數爲n,則可用的主機地址個數爲2n-2個。 網絡層設備(例如路由器等)使用網絡地址來表明本網段內的主機,大大減小了路由器的路由表條目。
使用私有IP地址,不只減小了用於購買公有IP地址的投資,並且 節省了IP地址資源。
掩碼用於區分網絡部分和主機部分。掩碼與IP地址的表示法相同 。掩碼中用1表示該位爲網絡位,0表示主機部分。一個255則表示 有8個1。 缺省狀態下,A類網絡的網絡掩碼爲255.0.0.0,B類網絡的網絡掩 碼爲255.255.0.0,C類網絡掩碼爲255.255.255.0。
對於沒有子網的IP地址組織,外部將該組織看做單一網絡,不需 要知道內部結構。例如,全部到地址172.16 .X.X的路由被認爲同一方向,不考慮地址的第三和第四個8位分組,這種方案的好處是 減小路由表的項目。但這種方案無法區分一個大的網絡內不一樣的子網網段,這使網絡內全部主機都能收到在該大的網絡內的廣播,會下降網絡的性能 ,另外也不利於管理
從地址分配的角度來看,子網是網段地址的擴充。網絡管理員根據組織增加的須要決定子網的大小。 網絡設備使用子網掩碼(Subnet Masking)決定IP地址中哪部分爲網絡部分,哪部分爲主機部分。 子網掩碼使用與IP地址同樣的格式。子網掩碼的網絡部分和子網部分全都是1,主機部分全都是0。缺省狀態下,若是沒有進行子網劃分,A類網絡的子網掩碼爲255.0.0.0,B類網絡的子網掩碼爲 255.255.0.0,C類網絡子網掩碼爲255.255.255.0。利用子網,網 絡地址的使用會更有效。對外仍爲一個網絡,對內部而言,則分爲不一樣的子網。 這樣可以使路由器根據目的子網地址進行路由,從而限制 一個子網的廣播報文發送到其它網段,不對網絡的效率產生影響 。
把一個網絡劃分紅多個子網,要求每個子網使用不一樣的網絡標 識ID。可是每一個子網的主機數不必定相同,並且相差很大,若是咱們每一個子網都採用固定長度子網掩碼,而每一個子網上分配的地 址數相同,這就形成地址的大量浪費。這時候能夠採用變長子網掩碼(VLSM,Variable Length Subnet Mask)技術,對節點數比較多的子網採用較短的子網掩碼,子網掩碼較短的地址可表示的 網絡/子網數較少,而子網可分配的地址較多;節點數比較少的子網採用較長的子網掩碼,可表示的邏輯網絡/子網數較多,而子網 上可分配地址較少。這種方案能節省大量的地址,節省的這些地址能夠用於其它子網上。 如上圖所示,某公司準備用C類網絡地址192.168.1.0進行IP地址 的子網規劃。這個公司共購置了5臺路由器,一臺路由器做爲企業 網的網關路由器接入當地ISP,其它4臺路由器鏈接四個辦公點, 每一個辦公點20臺PC。從上圖能夠看出,須要劃分8個子網,4個辦 公點各網段須要21個IP地址(包括一個路由器接口),與網關路 由器相連的四個網段各須要2個IP地址,每一個網段IP地址數目差別 較大,能夠採用VLSM技術。四個辦公點網段採用子網掩碼 255.255.255.224,劃出3個子網位,共有5個主機位,能夠容納最 多25-2=30臺主機。對於四個辦公點路由器和網關路由器相連網段 ,劃出6個子網位,2個主機位,最多有2個合法IP地址。
CIDR(Classless Inter Domain Routing,無類域間路由)由 RFC1817定義。CIDR突破了傳統IP地址分類邊界,將路由表中的 若干條路由匯聚爲一條路由,減小了路由表的規模,提升了路由 器的可擴展性。 如上圖所示,一個ISP被分配了一些C類網絡, 198.168.0.0~198.168.255.0。該ISP準備把這些C類網絡分配給各 個用戶羣,目前已經分配了三個C類網段給用戶。若是沒有實施 CIDR技術,ISP的路由器的路由表中會有三條下連網段的路由條 目,而且會把它通告給Internet上的路由器。經過實施CIDR技術 ,咱們能夠在ISP的路由器上把這三條網段198.168.1.0, 198.168.2.0,198.168.3.0匯聚成一條路由198.168.0.0/16。這樣 ISP路由器只向Internet通告198.168.0.0/16這一條路由,大大減小 了路由表的數目。 值得注意的是,使用CIDR技術匯聚的網絡地址的比特位必須是一 致的,如上例所示。若是上圖所示的ISP鏈接了一個172.178.1.0 網段,這個網段路由將沒法被匯聚。
ARP實現IP地址到硬件地址的動態映射,即根據已知的IP地址獲 得相應的硬件地址。
RARP實現硬件地址到IP地址的動態映射,即根據已知的硬件地址 得到相應的IP地址。
地址解析協議ARP是一種廣播協議,主機經過它能夠動態地發現 對應於一個IP地址的MAC地址。 每個主機都有一個ARP高速緩存(ARP cache),有IP地址到 物理地址的映射表,這些都是該主機目前知道的一些地址。當主機A欲向本局域網上的主機B發送一個IP數據報時,就先在其ARP 高速緩存中查看有無主機B的IP地址。若有,就可查出其對應的物理地址,而後將該數據報文發往此物理地址。 也有可能查不到主機B的IP地址的條目。多是主機B才入網,也多是主機A剛剛加電,其高速緩存仍是空的。在這種狀況下,假定主機A須要知道主機B的MAC地址,主機A以廣播方式發送ARP 請求給網段上的每一臺主機。發送的ARP請求報文中,帶有本身 的IP地址到MAC地址的映射,同時還帶有須要解析的目的主機的 IP地址。目的主機B收到請求報文後,將其中的主機A的IP地址與 MAC地址的映射存到本身的ARP高速緩存中,並把本身的IP地址 到MAC地址的映射做爲響應發回主機A。主機A收到ARP應答,就獲得了主機B的MAC地址,同時,主機A緩存主機B的IP地址到 MAC地址映射。
就是使那些不在同一網絡上的計算機或路由器能 夠相互通訊。 一般狀況下,當一臺路由器R收到一條ARP請求報文時,路由器R 將進行檢查,看該ARP請求的目的地址是不是本身,若是是,發 出ARP應答報文;若是不是,丟棄該報文。 若是路由器R開啓代理ARP功能,當路由器R收到一條ARP請求報 文時,發現該報文的目的地址不是本身,路由器R並不當即丟棄該 報文,而是查找路由表,若是路由器R有到達該目的地址的路由, 則路由器R將本身的MAC地址發送給ARP請求方。ARP請求方就 將到該目的地址的報文發送給路由器R,路由器R再將其轉發出去 。
主機發送ARP查找自已IP地址對 應的MAC地址。若是網絡上沒有另外一臺主機設置了相同的IP地址 ,則主機不會收到回答。而當主機收到該請求的回答時,則表示 有另外一臺主機設置了與本機相同的IP地址。因而主機會在終端日 志上生成一個錯誤消息,表示以太網上存在一個重複的IP地址。 免費ARP的做用: 一、經過發送免費ARP能夠確認IP地址是否有衝突。當發送方收到 一條免費ARP請求的回答時,表示存在着一個與該IP地址相沖突 的設備。 二、更新舊的硬件地址信息。當發送免費ARP的主機正好改變了硬 件地址,如更換網卡。免費ARP就能夠起到更新硬件地址信息的 功能。當接收方收到一條ARP請求時,而且該ARP信息在ARP表 中已經存在,則接收方必須用新的ARP請求中的地址信息更新舊 的ARP信息表。
在進行地址轉換時,有時還要用到逆向地址解析協議RARP。 RARP經常使用於無盤工做站,這些設備知道本身MAC地址,須要獲 得IP地址。 爲了使RARP能工做,在局域網上至少有一個主機要充當RARP服 務器。 以上圖爲例,無盤工做站須要得到本身的IP地址,向網絡中廣播 RARP請求,RARP服務器接收廣播請求,發送應答報文,無盤工 做站得到IP地址。 對應於ARP、RARP請求以廣播方式發送,ARP、RARP應答通常 以單播方式發送,以節省網絡資源。
傳輸層位於TCP/IP協議棧第四層,爲應用程序提供服務。傳輸層 定義了主機應用程序之間端到端的連通性。傳輸層將上層的數據 封裝到本身的數據部分並加上傳輸層頭部封裝成數據段交給下層 協議處理。傳輸層定了兩個不一樣傳輸協議TCP和UDP。TCP和 UDP分別定義了本身的報文格式。
TCP傳輸控制協議爲應用程序提供可靠的、面向鏈接的服務。
TCP經過以下幾方面提供其可靠性:
面向鏈接的傳輸:TCP的任何一方進行數據傳輸以前必須在雙方之間創建鏈接。
MSS(最大報文段長度):表示TCP發往另外一端的最大報文段長 度。當創建一個鏈接時,鏈接的雙方都要通告各自的MSS,以充分利用帶寬資源。
傳輸確認機制:當TCP傳輸一個數據段後,它啓動一個定時器, 等待目的端確認收到這個報文段。若是不能及時收到目的端的確 認報文,TCP將重傳該數據段。
首部和數據的檢驗和:TCP將保持首部和數據的檢驗和,這是一 個端到端的檢驗。目的是檢測數據在傳輸過程當中的變化。若是收 到段的檢驗和有所差錯,TCP將丟棄該報文段並不確認收到此報 文段。所以TCP將啓動重傳機制。
流量控制:TCP還能提供流量控制。TCP鏈接的每一方都有一個 固定大小的緩衝空間。TCP接收端只容許另外一端發送接收緩衝區 所可以容納的數據。這可以防止較快的主機導致較慢的主機緩衝 區溢出。
TCP使用IP做爲網絡層協議,TCP數據段被封裝在一個IP數據包內。
TCP數據段由TCP Head(頭部)和TCP Data(數據)組成。
TCP最多有60個字節的首部,若是沒有任選字段,正常的長度是20 字節。
TCP報文結構:
16位源端口號:TCP會爲源應用程序分配一個源端口號。
16位目的端口號:目的應用程序的端口號。 每一個TCP段都包含源和目的端的端口號,用於尋找發端和收端應用進程。
這兩個值加上IP首部中的源端IP地址和目的端IP地址可 以惟一肯定一個TCP鏈接。
32位序列號:用於標識從TCP發端向TCP收端發送的數據字節流 。
32位確認序列號:確認序列號包含發送確認的一端所指望收到的 下一個序號。確認序列號爲上次成功收到的數據序列號加1。
4位首部長度:表示首部佔32bit字的數目。由於TCP首部的最大長 度爲60字節。
16位窗口大小:表示接收端指望接收的字節, 因爲該字段爲16位,於是窗口大小最大值爲65535字節。
16位檢驗和:檢驗和覆蓋了整個TCP報文段,包括TCP首部和 TCP數據。該值由發端計算和存儲並由接收端進行驗證。
TCP提供可靠的面向鏈接的全雙工傳輸層協議。TCP的可靠性經過不少方法來獲得保障,在數據鏈接創建以後再傳送數據就是其 中一種方法。 TCP的任何一方在傳輸數據以前都必須在通訊的雙方之間創建一 條鏈接。
TCP鏈接的創建是一個三次握手的過程:
一、請求端(一般也稱爲客戶端)發送一個SYN段表示客戶指望連 接服務器端口,初始序列號爲X。
二、服務器發回序列號爲b的SYN段做爲響應。同時設置確認序號 爲客戶端的序列號加1(X+1)做爲對客戶端的SYN報文的確認。
三、客戶端設置序列號爲服務器端的序列號加1(b+1)做爲對服務 器端SYN報文段的確認。 這三個報文段完成TCP鏈接的創建。
前面提到TCP是面向鏈接的全雙工傳輸層協議。全雙工意味着同 一時刻雙方向均可以進行數據的傳輸,所以通訊的雙方都必須關閉鏈接。
TCP鏈接的創建是一個三次握手的過程,而TCP鏈接的終止則要 通過四次握手。
一、請求端(一般也稱爲客戶端)想終止鏈接則發送一個FIN段, 序列號設置爲a。 二、服務器迴應一個確認序號爲客戶端的序列號加1(a+1)的 ACK確認段,做爲對客戶端的FIN報文的確認。
三、服務器端向客戶端發送一個FIN終止段(設置序列號爲b,確認 號爲a+1)。
四、客戶端返回一個確認報文(設置序列號爲b+1)做爲響應。 以上四次交互完成雙方向的鏈接的關閉。
UDP爲應用程序提供面向無鏈接的服務,因此在傳數據以前源端和目的端之間沒必要要像TCP同樣須要事先創建鏈接。正因爲UDP 是面向無鏈接的傳輸協議,因此UDP不須要去維護鏈接狀態和收 髮狀態,所以服務器可同時向多個客戶端傳輸相同的消息。 UDP適用於對傳輸效率要求高的運用,由應用層提供可靠性的保 障。如經常使用於認證計費的Radius協議、RIP路由協議都是基於 UDP的。
UDP和TCP同樣都使用IP做爲網絡層協議,TCP數據報被封裝在 一個IP數據包內。 因爲UDP不像TCP同樣提供可靠的傳輸,所以UDP的報文格式相 對而言較簡單。
16位源端口號:爲源端應用程序分配的一個源端口號。 16位目的端口號:目的應用程序的端口號 16位UDP長度:是指UDP首部和UDP數據的字節長度。該字段的 最小值爲8。 16位UDP檢驗和:該字段提供與TCP檢驗和一樣的功能,只不過 在UDP協議中該字段是可選的。