網絡的基礎知識
一、協議
1、簡介:
在計算機網絡與信息通信領域里,人們經常提及“協議”一詞。互聯網中常用的具有代表性的協議有IP、TCP、HTTP等。而LAN(局域網)中常用的協議有IPX/SPX”等。
下面通過通俗一點的方式來解釋一下協議:
有三個人A、B、C。A只會說漢語、B只會說英語、而C既會說漢語又會說英語。現在A與B要聊天,他們之間該如何溝通呢?若A與C要聊天,又會怎樣?這時如果我們:
- 將漢語和英語當作“協議”
- 將聊天當作“通信”
- 將說話的內容當作“數據”
那么A和B之間由於采用的是不同的語言,那么可能永遠都不能進行正常交流。因為他們之間所采用的協議不同,如果想要正常交流,那么必須采用相同的協議,要么都用漢語,要么都使用英語,這樣就可以正常交流了。
那么計算機之間進行通信時也是如此,如果兩個計算機之間所采用的協議不同,則兩個計算將不能進行通信
2、協議分層
ISO在制定標准化OSI之前,對網絡體系結構相關的問題進行了充分的討論,最終提出了作為通信協議設計指標的OSI參考模型。這一模型將通信協議中必要的功能分成了7層。通過這些分層,使得那些比較復雜的網絡協議更加簡單化。
在這一模型中,每個分層都接收由它下一層所提供的特定服務,並且負責為自己的上一層提供特定的服務。上下層之間進行交互時所遵循的約定叫做“接口”。同一層之間的交互所遵循的約定叫做“協議”。
這樣解釋可能有點抽象,我們用一個比較形象的場景來解釋一下:打電話
在這個圖中,他們所用的語言協議作為麥克風的音頻輸入,在通信設備層被轉換為電波信號傳送出去了。傳送到對方的電話機后,又被通信設備層轉換為音頻輸出,傳遞給了對方。因此,A與C其實是利用電話機之間通過音頻轉化聲音的接口實現了對話。
3、OSI參考模型:
前面只是將協議簡單地分為了兩層進行了舉例說明。然而,實際的分組通信協議會相當復雜。0SI參考模型將這樣一個復雜的協議整理並分為了易於理解的7個分層。
OSI參考模型中各個分層的作用:
OSI參考模型舉例:
假定現在有兩個用戶,用戶A和用戶B,用戶A發一封內容為“早上好”的郵件給用戶B,那么在網絡中這封郵件究竟做了哪些處理呢?
1、應用層:
應用層協議會在所要傳送數據(早上好)的前端附加一個首部(標簽)信息。該首部標明了郵件內容為“早上好”和收件人為“B”。這一附有首部信息的數據傳送給主機B以后由該主機上的收發郵件軟件通過“收信”功能獲取內容。主機B上的應用收到由主機A發送過來的數據后,分析其數據首部與數據正文,並將郵件保存到硬盤或是其他非易失性存儲器”以備進行相應的處理。如果主機B上收件人的郵箱空間已滿無法接收新的郵件,則會返回一個錯誤給發送方。對這類異常的處理也正屬於應用層需要解決的問題。
2、表現層:
表示層的“表示”有“表現”、“演示”的意思,因此更關注數據的具體表現形式”。此外,所使用的應用軟件本身的不同也會導致數據的表現形式截然不同。例如有的字處理軟件創建的文件只能由該字處理器廠商所提供的特定版本的軟件才來打開讀取。
此例中的“早上好”這段文字根據其編碼格式被轉換成為了“統一的網絡數據格式”。即便是一段簡單的文字流,也可以有眾多復雜的編碼格式。就拿日語文字來說,有EUC-JP、Shift_JIS、ISO-2022-JP、UTF-8以及UTF-16等很多編碼格式0。如果未能按照特定格式編碼,那么在接收端就是收到郵件也可能會是亂碼”。
表示層與表示層之間為了識別編碼格式也會附加首部信息,從而將實際傳輸的數據轉交給下一層去處理。
3、會話層:
假定用戶A新建了5封電子郵件准備發給用戶B。這5封郵件的發送順序可以有很多種。例如,可以每發一封郵件時建立一次連接”,隨后斷開連接。還可以一經建立好連接后就將5封郵件連續發送給對方。甚至可以同時建立好5個連接,將5封郵件同時發送給對方。決定采用何種連接方法是會話層的主要責任。
會話層也像應用層或表示層那樣,在其收到的數據前端附加首部或標簽信息后再轉發給下一層。而這些首部或標簽中記錄着數據傳送順序的信息。
到此為止,我們通過例子說明了在應用層寫人的數據會經由表示層格式化編碼、再由會話層標記發送順序后才被發送出去的大致過程。然而,會話層只對何時建立連接、何時發送數據等問題進行管理,並不具有實際傳輸數據的功能。真正負責在網絡上傳輸具體數據的是會話層以下的“無名英雄”。
4、傳輸層:
主機A確保與主機B之間的通信並准備發送數據。這一過程叫做“建立連接”。有了這個通信連接就可以使主機A發送的電子郵件到達主機B中,並由主機B的郵件處理程序獲取最終數據。此外,當通信傳輸結束后,有必要將連接斷開。
如上,進行建立連接或斷開連接的處理”,在兩個主機之間創建邏輯上的通信連接即是傳輸層的主要作用。此外,傳輸層為確保所傳輸的數據到達目標地址,會在通信兩端的計算機之間進行確認,如果數據沒有到達,它會負責進行重發。
注意:會話層負責決定建立連接和斷開連接的時機,而傳輸層進行實際的建立和斷開處理。
eg:主機A將“早上好”這一數據發送給主機B。期間可能會因為某些原因導致數據被破壞,或由於發生某種網絡異常致使只有一部分數據到達目標地址。假設主機B只收到了“早上”這一部分數據,那么它會在收到數據后將自己沒有收到“早上”之后那部分數據的事實告知主機A。主機A得知這個情況后就會將后面的“好”重發給主機B,並再次確認對端是否收到。
由此可見,保證數據傳輸的可靠性是傳輸層的一個重要作用。為了確保可靠性,在這一層也會為所要傳輸的數據附加首部以識別這一分層的數據。然而,實際上將數據傳輸給對端的處理是由網絡層來完成的。
5、網絡層:
網絡層的作用是在網絡與網絡相互連接的環境中,將數據從發送端主機發送到接收端主機。
6、數據鏈路層和物理層:
通信傳輸實際上是通過物理的傳輸介質實現的。數據鏈路層的作用就是在這些通過傳輸介質互連的設備之間進行數據處理。
物理層中,將數據的0、1轉換為電壓和脈沖光傳輸給物理的傳輸介質,而相互直連的設備之間使用地址實現傳輸。這種地址被稱為MAC”地址,也可稱為物理地址或硬件地址。采用MAC地址,目的是為了識別連接到同一個傳輸介質上的設備。因此,在這一分層中將包含MAC地址信息的首部附加到從網路層轉發過來的數據上,將其發送到網絡。
網絡層與數據鏈路層都是基於目標地址將數據發送給接收端的,但是網絡層負責將整個數據發送給最終目標地址,而數據鏈路層則只負責發送一個分段內的數據。
二、傳輸方式的分類
1、面向有連接和面向無連接:
面向有連接:在發送數據之前需要先得到對象的確認才可以發送,TCP就是面向有連接
面向無連接:發送數據的時候不需要得到對方的同意,直接發送,UDP就是面向無連接
2、電路交換和分組交換:
電路交換:交換機主要負責數據的中轉處理。計算機首先被連接到交換機上,而交換機與交換機之間則由眾多通信線路再繼續連接。因此計算機之間在發送數據時,需要通過交換機與目標主機建立通信電路。我們將連接電路稱為建立連接。建立好連接以后,用戶就可以一直使用這條電路,直到該連接被斷開為止。
分組交換:在分組交換中,由分組交換機(路由器)連接通信線路。分組交換的大致處理過程是:發送端計算機將數據分組發送給路由器,路由器收到這些分組數據以后,緩存到自己的緩沖區,然后再轉發給目標計算機。因此,分組交換也有另一個名稱:蓄積交換
3、單播、多播、廣播和任播:
三、地址
1、地址唯一性:
在網絡通信中,通信兩端都必須有通信地址,而且地址必須是唯一的,否則將導致無法通信。比如一個班級如果有兩個同名的同學都叫劉華,那么當老師叫劉華時就不知道叫的是哪個。
2、地址的層次性:
互聯網中有成千上萬個網絡設備,每個設備都有對應的IP地址,那么在網絡通信時如果這些IP地址沒有規律的話將導致IP查詢非常麻煩,這點可以類比我們常用的電話號碼,使用電話和信件通信的過程當中,早已有了地址分層這種概念。例如,電話號碼包含國家區號和國內區號,通信地址包含國名、省名、市名和區名等。正是有了這種層次分類才能更加快速地定位某一個地址。
MAC地址和IP地址在標識一個通信主體時雖然都具有唯一性,但是它們當中只有IP地址具有層次性。
首先,IP由網絡號和主機號構成,IP地址中如果主機號不同,網絡號相同,說明它們處於同一個網段。通常,同處一個網段的主機也都屬於同一個部門或集團組織。
四、網絡構成要素
在網絡通信中,不僅僅只有主機的參與,還需要多種網絡設備參與進來,才能構成一個完整的網絡
上圖是一套網絡環境中所涉及的各種網絡設備,下面簡單介紹一下這些設備的作用
1、網卡:
任何一台計算機連接網絡時,必須要使用網卡(全稱為網絡接口卡)。網絡接口卡(NIC”)有時也被叫做網絡適配器、網卡、LAN卡。
2、中繼器:
中繼器(Repeater)是在OSI模型的第1層——物理層面上延長網絡的設備。由電纜傳過來的電信號或光信號經由中繼器的波形調整和放大再傳給另一個電纜。
3、網橋/2層交換機:
網橋是在OSI模型的第2層——數據鏈路層面上連接兩個網絡的設備。它能夠識別數據鏈路層中的數據幀(與分組意思大致相同)並將這些數據鎖臨時存儲於內存,再重新生成信號作為一個全新的幀轉發給相連的另一個網段(具有分割、划分網段的意思)由於能夠存儲這些數據幀,網橋能夠連接10BASE-T與100BASE-TX等傳輸速率完全不同的數據鏈路,並且不限制連接網段的個數。
4、路由器/3層交換機:
路由器是在0SI模型的第3層——網絡層面上連接兩個網絡、並對分組報文進行轉發的設備。網橋是根據物理地址(MAC地址)進行處理,而路由器/3層交換機則是根據IP地址進行處理的。由此,TCP/IP中網絡層的地址就成為了IP地址。
5、網關:
網關是OSI參考模型中負責將從傳輸層到應用層的數據進行轉換和轉發的設備”。它與4~7層交換機一樣都是處理傳輸層及以上的數據,但是網關不僅轉發數據還負責對數據進行轉換,它通常會使用一個表示層或應用層網關,在兩個不能進行直接通信的協議之間進行翻譯,最終實現兩者之間的通信。
TCP/IP基礎知識
1、TCP/IP是什么:
從字面意義上講,有人可能會認為TCP/IP是指TCP與IP兩種協議。實際生活當中有時也確實就是指這兩種協議。然而在很多情況下,它只是利用IP進行通信時所必須用到的協議群的統稱。具體來說,IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP等都屬於TCP/IP的協議。它們與TCP或IP的關系緊密,是互聯網必不可少的組成部分。TCP/IP一詞泛指這些協議,因此,有時也稱TCP/IP為網際協議族
2、互聯網是什么:
我們口中經常談到的互聯網時代,那么互聯網到底是什么?
“互聯網”,英文單詞為“Internet”。從字面上理解,internet指的是將多個網絡連接使其構成一個更大的網絡,所以internet一詞本意為網際網。將兩個以太網網段用路由器相連是互聯網,將企業內部各部門的網絡或公司的內網與其他企業相連接,並實現相互通信的網絡也是互聯網,甚至一個區域的網絡與另一個區域的網絡相互連接形成全世界規模的網絡也可以稱作互聯網。然而,現在“互聯網”這個詞的意思卻有所變化。當專門指代網絡之間的連接時,可以使用“網際網”這個詞。
3、互聯網和TCP/IP關系:
互聯網進行通信時,需要相應的網絡協議,TCP/IP原本就是為使用互聯網而開發制定的協議族。因此,互聯網的協議就是TCP/IP,TCP/IP就是互聯網的協議。
4、互聯網結構圖:
互聯網中的每個網絡都是由骨干網(BackBone)和末端網(Stub)組成的。每個網絡之間通過NOC”相連。如果網絡的運營商不同,它的網絡連接方式和使用方法也會不同。連接這種異構網絡需要有IX”的支持。總之,互聯網就是眾多異構的網絡通過IX互連的一個巨型網絡。
5、TCP/IP協議分層模型:
TCP/IP是當今計算機網絡使用最為廣泛的協議,在前面我們介紹了OSI參考模型,那么TCP/IP對應着也有相應的分層模型
下面來分別介紹一下每一層的功能:
(1)、硬件(物理層):
TCP/IP的最底層是負責數據傳輸的硬件。這種硬件就相當於以太網或電話線路等物理層的設備。關於它的內容一直無法統一定義。因為只要人們在物理層面上所使用的傳輸媒介不同(如使用網線或無線),網絡的帶寬、可靠性、安全性、延遲等都會有所不同,而在這些方面又沒有一個既定的指標。
(2)、網絡接口層(數據鏈路層):
網絡接口層利用以太網中的數據鏈路層進行通信,因此屬於接口層。也就是說,把它當做讓NIC起作用的“驅動程序”也無妨。驅動程序是在操作系統與硬件之間起橋梁作用的軟件。計算機的外圍附加設備或擴展卡,不是直接插到電腦上或電腦的擴展槽上就能馬上使用的,還需要有相應驅動程序的支持。例如換了一個新的NIC網卡,不僅需要硬件,還需要軟件才能真正投入使用。因此,人們常常還需要在操作系統的基礎上安裝一些驅動軟件以便使用這些附加硬件。
(3)互聯網層(網絡層):
互聯網層使用IP協議,它相當於OSI模型中的第3層網絡層。
IP協議:
- IP是跨越網絡傳送數據包,使整個互聯網都能收到數據的協議。IP協議使數據能夠發送到地球的另一端,這期間它使用IP地址作為主機的標識”。
- IP還隱含着數據鏈路層的功能。通過IP,相互通信的主機之間不論經過怎樣的底層數據鏈路都能夠實現通信。
- 雖然IP也是分組交換的一種協議,但是它不具有重發機制。即使分組數據包未能到達對端主機也不會重發。因此,屬於非可靠性傳輸協議。
ICMP協議:
IP數據包在發送過程中如果發生異常,接收端需要給發送端發送一個異常通知,ICMP協議就是起到這個作用
ARP協議:
由IP地址解析出MAC地址的一種協議
這三種協議具體后面后面會詳解介紹
(4)、傳輸層:
TCP/IP的傳輸層有兩個具有代表性的協議。該層的功能本身與OSI參考模型中的傳輸層類似。
傳輸層最主要的功能就是能夠讓應用程序之間實現通信。計算機內部,通常同一時間運行着多個程序。為此,必須分清是哪些程序與哪些程序在進行通信。識別這些應用程序的是端口號。
傳輸層的兩個協議:
TCP:
TCP是一種面向有連接的傳輸層協議。它可以保證兩端通信主機之間的通信可達。TCP能夠正確處理在傳輸過程中丟包、傳輸順序亂掉等異常情況。此外,TCP還能夠有效利用帶寬,緩解網絡擁堵。
然而,為了建立與斷開連接,有時它需要至少7次的發包收包,導致網絡流量的浪費。此外,為了提高網絡的利用率,TCP協議中定義了各種各樣復雜的規范,因此不利於視頻會議(音頻、視頻的數據量既定)等場合使用。
UDP:
UDP有別於TCP,它是一種面向無連接的傳輸層協議。UDP不會關注對端是否真的收到了傳送過去的數據,如果需要檢查對端是否收到分組數據包,或者對端是否連接到網絡,則需要在應用程序中實現。
UDP常用於分組數據較少或多播、廣播通信以及視頻通信等多媒體領域。
(5)、應用層(會話層以上的分層):
TCP/IP的分層中,將OSI參考模型中的會話層、表示層和應用層的功能都集中到了應用程序中實現。這些功能有時由一個單一的程序實現,有時也可能會由多個程序實現。因此,細看TCP/IP的應用程序功能會發現,它不僅實現OSI模型中應用層的內容,還要實現會話層與表示層的功能。
6、TCP/IP分層模型示例
假設甲給乙發生電子郵件,郵件內容為“早上好”,下面來看一下TCP/IP是如何處理的:
①:應用程序處理:
當發送人編寫好郵件點擊發送時,TCP/IP通信便開始了,應用程序首先做的就是進行編碼處理
②:TCP模塊的處理:
TCP根據應用的指示”,負責建立連接、發送數據以及斷開連接。TCP提供將應用層發來的數據順利發送至對端的可靠傳輸。
為了實現TCP的這一功能,需要在應用層數據的前端附加一個TCP首部。TCP首部中包括源端口號和目標端口號(用以識別發送主機跟接收主機上的應用)、序號(用以發送的包中哪部分是數據)以及校驗和”(用以判斷數據是否被損壞)。隨后將附加了TCP首部的包再發送給IP。
③:IP模塊的處理:
IP將TCP傳過來的TCP首部和TCP數據合起來當做自己的數據,並在TCP首部的前端在加上自己的IP首部。因此,IP數據包中IP首部后面緊跟着TCP首部,然后才是應用的數據首部和數據本身。IP首部中包含接收端IP地址以及發送端IP地址。緊隨IP首部的還有用來判斷其后面數據是TCP還是UDP的信息。
④:網絡接口(以太網驅動)的處理:
從IP傳過來的IP包,對於以太網驅動來說不過就是數據。給這數據附加上以太網首部並進行發送處理。以太網首部中包含接收端MAC地址、發送端MAC地址以及標志以太網類型的以太網數據的協議。根據上述信息產生的以太網數據包將通過物理層傳輸給接收端。發送處理中的FCS”由硬件計算,添加到包的最后。
數據鏈路層
一、數據鏈路層概述:
數據鏈路層的協議定義了通過通信媒介互連的設備之間傳輸的規范。通信媒介包括雙絞線電纜、同軸電纜、光纖、電波以及紅外線等介質。此外,各個設備之間有時也會通過交換機、網橋、中繼器等中轉數據。
二、數據鏈路層相關技術:
1、MAC地址:
MAC地址用於識別數據鏈路中互連的節點,MAC地址是唯一的,不可重復,MAC地址格式如下:
2、共享介質型網絡:
從通信介質(通信,介質)的使用方法上看,網絡可分為共享介質型和非共享介質型。
共享介質型網絡指由多個設備共享一個通信介質的一種網絡。最早的以太網和FDDI就是介質共享型網絡。在這種方式下,設備之間使用同一個載波信道進行發送和接收。為此,基本上采用半雙工通信方式,並有必要對介質進行訪問控制。
共享介質型網絡中有兩種介質訪問控制方式:一種是爭用方式,另一種是令牌傳遞方式。
爭用方式:
爭用方式是指爭奪獲取數據傳輸的權力,也叫CSMA(載波監聽多路訪問)。這種方法通常令網絡中的各個站采用先到先得的方式占用信道發送數據,如果多個站同時發送幀,則會產生沖突現象。也因此會導致網絡擁堵與性能下降。
令牌傳遞方式:
令牌傳遞方式是沿着令牌環發送一種叫做“令牌”的特殊報文,是控制傳輸的一種方式。只有獲得令牌的站才能發送數據。這種方式有兩個特點:一是不會有沖突,二是每個站都有通過平等循環獲得令牌的機會。因此,即使網絡擁堵也不會導致性能下降。
當然,這種方式中,一個站在沒有收到令牌前不能發送數據幀,因此在網絡不太擁堵的情況下數據鏈路的利用率也就達不到100%。為此,衍生了多種令牌傳遞的技術。例如,早期令牌釋放、令牌追加”等方式以及多個令牌同時循環等方式。這些方式的目的都是為了盡可能地提高網絡性能。
3、非共享介質網絡:
非共享介質網絡是指不共享介質,是對介質采取專用的一種傳輸控制方式。
在這種方式下,網絡中的每個站直連交換機,由交換機負責轉發數據幀。此方式下,發送端與接收端並不共享通信介質,因此很多情況下采用全雙工通信方式。
上面提到了全雙工和半雙工通信,這里來解釋一下這兩個概念:
全雙工:
全雙工是指允許在同一時間內通信雙方都可以進行通信,類似於電話,電話雙方都可以同時說話。
半雙工:
半雙工是指只能發送或者接收的通信方式,它類似於無線電收發器。
4、VLAN:
進行網絡管理的時候,時常會遇到分散網絡負載、變換部署網絡設備的位置等情況。而有時管理員在做這些操作時,不得不修改網絡的拓撲結構,這也就意味着必須進行硬件線路的改造。然而,如果采用帶有VLAN技術的網橋,就不用實際修改網絡布線,只需修改網絡的結構即可。VLAN技術附加到網橋/2層交換機上,就可以切斷所有VLAN之間的所有通信。因此,相比一般的網橋/2層交換機,VLAN可以過濾多余的包,提高網絡的承載效率。
三、無線技術:
1、無線通信概覽:
無線通信通常使用電磁波、紅外線、激光等方式進行傳播數據。一般在辦公室的局域網范圍內組成的較高速的連接稱為無線局域網。
無線通信不需要網線或其他可見電纜。因此,早期無線通信主要用於輕量級的移動設備。然而隨着無線通信速度的不斷提升,以及無線通信本身能夠降低配線成本的優勢,它很快在辦公室、家庭、店鋪以及車站和機場等環境中被廣泛使用。
2、無線通信種類:
無線通信,依據通信距離可分為如表3.3所列出的類型。IEEE802委員會制定了無線PAN”(802.15)、無線LAN”(802.11)、無線MAN”(802.16)以及無線RAN”(802.22)等無線標准。無線WAN”的最典型代表就是手機通信。手機通過基站能夠實現長距離通信。
四、PPP
PPP是指點對點,即1對1連接計算機的協議。PPP相當於位於OSI參考模型第2層的數據鏈路層。
PPP不像以太網和FDDI。后兩者不僅與0SI參考模型的數據鏈路層有關,還與第1層的物理層有關。具體來講,以太網使用同軸電纜或雙絞線電纜,它可以決定其中的0、1該被解釋為何種電子信號。與之相比,PPP屬於純粹的數據鏈路層,與物理層沒有任何關系。換句話說,僅有PPP無法實現通信,還需要有物理層的支持。
IP協議
一、IP協議基礎知識:
1、IP地址屬於網絡層地址
在前面我們提到了MAC地址,MAC地址屬於數據鏈路層,IP地址屬於網絡層地址,在計算機通信中,為了識別通信對端,必須要有一個類似於地址的識別碼進行標識,因此在TCP/IP通信中所有主機或路由器必須設定自己的IP地址。
2、路由控制:
路由控制是指將分組數據發送到最終目標地址的功能。即使網絡非常復雜,也可以通過路由控制確定到達目標地址的通路。一旦這個路由控制的運行出現異常,分組數據極有可能“迷失”,無法到達目標地址。因此,一個數據包之所以能夠成功地到達最終的目標地址,全靠路由控制。
3、IP地址
(1)、IP地址定義:
IP地址(IPv4地址)由32位正整數來表示。TCP/IP通信要求將這樣的IP地址分配給每一個參與通信的主機。IP地址在計算機內部以二進制方式被處理。然而,由於人類社會並不習慣於采用二進制方式,需要采用一種特殊的標記方式。那就是將32位的IP地址以每8位為一組,分成4組,每組以“.”隔開,再將每組數轉換為十進制數。
IP地址由網絡和主機兩部分組成,網絡標識在數據鏈路的每個段配置不同的值。網絡標識必須保證相互連接的每個段的地址不相重復。而相同段內相連的主機必須有相同的網絡地址。IP地址的主機標識則不允許在同一個網段內重復出現。
(2)、IP地址的分類:
IP地址分為四個級別,分別為A類、B類、C類、D類”。它根據IP地址中從第1位到第4位的比特列對其網絡標識和主機標識進行區分。
A類地址:
A類IP地址是首位以“0”開頭的地址。從第1位到第8位”是它的網絡標識。用十進制表示的話,0.0.0.0~127.0.0.0是A類的網絡地址。A類地址的后24位相當於主機標識。因此,一個網段內可容納的主機地址上限為16,777,214個”。
B類地址:
B類IP地址是前兩位為“10”的地址。從第1位到第16位是它的網絡標識。用十進制表示的話,128.0.0.1~191.255.0.0是B類的網絡地址。B類地址的后16位相當於主機標識。因此,一個網段內可容納的主機地址上限為65,534個。
C類地址:
C類IP地址是前三位為“110”的地址。從第1位到第24位”是它的網絡標識。用十進制表示的話,192.168.0.0~239.255.255.0是C類的網絡地址。C類地址的后8位相當於主機標識。因此,一個網段內可容納的主機地址上限為254個。
D類地址:
D類IP地址是前四位為“1110”的地址。從第1位到第32位”是它的網絡標識。用十進制表示的話,224.0.0.0~239.255.255.255是D類的網絡地址。D類地址沒有主機標識,常被用於多播。
(3)、子網掩碼:
子網掩碼 (subnet mask) 又叫網絡掩碼、地址掩碼、子網絡遮罩,是一個應用於 TCP/IP 網絡的 32 位二進制值。它可以屏蔽掉 IP 地址中的一部分,從而分離出 IP 地址中的網絡部分與主機部分,基於子網掩碼,管理員可以將網絡進一步划分為若干子網。它必須結合 IP 地址一起使用。
雖然我們說子網掩碼可以分離出 IP 地址中的網絡部分與主機部分,可大家還是會有疑問,比如為什么要區分網絡地址與主機地址?區分以后又怎樣呢?那么好,讓我們再詳細的講一下吧!
在使用 TCP/IP 協議的兩台計算機之間進行通信時,我們通過將本機的子網掩碼與接受方主機的 IP 地址進行 ' 與 ' 運算,即可得到目標主機所在的網絡號,又由於每台主機在配置 TCP/IP 協議時都設置了一個本機 IP 地址與子網掩碼,所以可以知道本機所在的網絡號。
通過比較這兩個網絡號,就可以知道接受方主機是否在本網絡上。如果網絡號相同,表明接受方在本網絡上,那么可以通過相關的協議把數據包直接發送到目標主機;如果網絡號不同,表明目標主機在遠程網絡上,那么數據包將會發送給本網絡上的路由器,由路由器將數據包發送到其他網絡,直至到達目的地。在這個過程中你可以看到,子網掩碼是不可或缺的!
(4)、IPV4首部:
IP協議相關技術
一、DNS
1、IP地址不便於記憶:
不知道大家有沒有注意到我們平常在訪問WEB資源時,在地址欄輸入的其實不是IP地址,因為IP地址不方便記憶,而是這個IP地址對應的域名,那么瀏覽器是如何根據這個域名找到對應的服務器呢?這就是DNS的作用。
2、DNS查詢:
DNS是如何根據域名找到對應的IP地址的呢?看下圖:
解析器為了調查IP地址,向域名服務器進行查詢處理。接收這個查詢請求的域名服務器首先會在自己的數據庫進行查找。如果有該域名所對應的IP地址就返回。如果沒有,則域名服務器再向上一層根域名服務器進行查詢處理。因此,如圖所示,從根開始對這棵樹按照順序進行遍歷,直到找到指定的域名服務器,並由這個域名服務器返回想要的數據。
二、ARP
1、ARP概要:
只要確定了IP地址,就可以向這個目標地址發生IP數據,然而在底層數據鏈路層,進行實際通信是需要每個IP地址對應的MAC地址的
ARP是一種解決地址問題的協議。以目標IP地址為線索,用來定位下一個應該接收數據分包的網絡設備對應的MAC地址。如果目標主機不在同一個鏈路上時,可以通過ARP查找下一跳路由器的MAC地址。不過ARP只適用於IPv4,不能用於IPv6。IPv6中可以用ICMPv6替代ARP發送鄰居探索消息。
2、ARP工作機制:
ARP是借助ARP請求與ARP響應兩種類型的包確定MAC地址的
主機A為了獲得主機B的MAC地址,起初要通過廣播發送一個ARP請求包。這個包中包含了想要了解其MAC地址的主機IP地址。也就是說,ARP請求包中已經包含了主機B的IP地址172.20.1.2。由於廣播的包可以被同一個鏈路上所有的主機或路由器接收,因此ARP的請求包也就會被這同一個鏈路上所有的主機和路由器進行解析。如果ARP請求包中的目標IP地址與自己的IP地址一致,那么這個節點就將自己的MAC地址塞入ARP響應包返回給主機A。
三、RARP
RARP是將ARP反過來,從MAC地址定位IP地址的一種協議。例如將打印機服務器等小型嵌入式設備接入到網絡時就經常會用得到。
平常我們可以通過個人電腦設置IP地址,也可以通過DHCP(后面內容會提到)自動分配獲取IP地址。然而,對於使用嵌入式設備時,會遇到沒有任何輸入接口或無法通過DHCP動態獲取IP地址的情況。
四、ICMP
我們平常在部署網絡的時候,當我們部署完畢之后,需要驗證一下該網絡的配置是否正確,這時候就需要用到ICMP。
ICMP的主要功能包括,確認IP包是否成功送達目標地址,通知在發送過程當中IP包被廢棄的具體原因,改善網絡設置等。有了這些功能以后,就可以獲得網絡是否正常、設置是否有誤以及設備有何異常等信息,從而便於進行網絡上的問題診斷。
五、DHCP
如果逐一為每一台主機設置IP地址會非常繁瑣的事情。特別是在移動使用筆記本電腦、智能終端以及平板電腦等設備時,每移動到一個新的地方,都要重新設置IP地址。於是,為了實現自動設置IP地址、統一管理IP地址分配,就產生了DHCP
協議。有了DHCP,計算機只要連接到網絡,就可以進行TCP/IP通信。也就是說,DHCP讓即插即用”變得可能。而DHCP不僅在IPv4中,在IPv6中也可以使用。
六、NAT
NAT(Network Address Translator)是用於在本地網絡中使用私有地址,在連接互聯網時轉而使用全局IP地址的技術。除轉換IP地址外,還出現了可以轉換TCP、UDP端口號的NAPT(Network Address Ports Translator)技術,由此可以實現用一個全局IP地址與多個主機的通信。
七、IP隧道
如下圖所示,當在兩個IPV6之間進行通信時,如果IPV6之間夾雜着IPV4的話,這時候如果還想要進行通信,則必須使用IP隧道技術
TCP和UDP
一、傳輸層概述
TCP/IP中有兩個具有代表性的傳輸層協議,它們分別是TCP和UDP。TCP提供可靠的通信傳輸,而UDP則常被用於讓廣播和細節控制交給應用的通信傳輸。總之,根據通信的具體特征,選擇合適的傳輸層協議是非常重要的。
二、端口號
數據鏈路和IP中的地址,分別指的是MAC地址和IP地址。前者用來識別同一鏈路中不同的計算機,后者用來識別TCP/IP網絡中互連的主機和路由器。在傳輸層中也有這種類似於地址的概念,那就是端口號。端口號用來識別同一台計算機中進行通信的不同應用程序。因此,它也被稱為程序地址。但是通常我們輸入IP地址發現並沒有輸入端口號也可以訪問,這是因為有默認的端口號,比如tomcat的默認端口號是8080
三、UDP
1、UDP簡介:
UDP不提供復雜的控制機制,利用IP提供面向無連接的通信服務。並且它是將應用程序發來的數據在收到的那一刻,立即按照原樣發送到網絡上的一種機制。
即使是出現網絡擁堵的情況下,UDP也無法進行流量控制等避免網絡擁塞的行為。此外,傳輸途中即使出現丟包,UDP也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那么不得不交由采用UDP的應用程序去處理”。UDP有點類似於用戶說什么聽什么的機制,但是需要用戶充分考慮好上層協議類型並制作相應的應用程序。因此,也可以說,UDP按照“制作程序的那些用戶的指示行事”。
由於UDP面向無連接,它可以隨時發送數據。再加上UDP本身的處理既簡單又高效,因此經常用於以下幾個方面:
- 包總量較少的通信(DNS、SNMP等)
- 視頻、音頻等多媒體通信(即時通信)
- 限定於LAN等特定網絡中的應用通信
- 廣播通信(廣播、多播)
2、UDP首部格式:
源端口號:
表示發送端端口號,字段長16位。該字段是可選項,有時可能不會設置源端口號。沒有源端口號的時候該字段的值設置為0。可用於不需要返回的通信中
目標端口號:
表示接收端端口,字段長度16位
包長度:
該字段保存了UDP首部的長度跟數據的長度之和。單位為字節(8位字節)
校驗和:
校驗和是為了提供可靠的UDP首部和數據而設計
四、TCP
1、TCP簡介:
UDP是一種沒有復雜控制,提供面向無連接通信服務的一種協議。換句話說,它將部分控制轉移給應用程序去處理,自己卻只提供作為傳輸層協議的最基本功能。
與UDP不同,TCP則“人如其名”,可以說是對“傳輸、發送、通信”進行“控制”的“協議”。
TCP與UDP的區別相當大。它充分地實現了數據傳輸時各種控制功能,可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在UDP中都沒有。此外,TCP作為一種面向有連接的協議,只有在確認通信對端存在時才會發送數據,從而可以控制通信流量的浪費”。
根據TCP的這些機制,在IP這種無連接的網絡上也能夠實現高可靠性的通信。
2、TCP的特點:
TCP通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸。
3、TCP的三次握手:
(1)序號:Seq序號,占32位,用來標識從TCP源端向目的端發送的字節流,發起方發送數據時對此進行標記。
(2)確認序號:Ack序號,占32位,只有ACK標志位為1時,確認序號字段才有效,Ack=Seq+1。
(3)標志位:共6個,即URG、ACK、PSH、RST、SYN、FIN等,具體含義如下:
(A)URG:緊急指針(urgent pointer)有效。
(B)ACK:確認序號有效。
(C)PSH:接收方應該盡快將這個報文交給應用層。
(D)RST:重置連接。
(E)SYN:發起一個新連接。
(F)FIN:釋放一個連接。
第一次握手:
客戶端發送一個TCP的SYN標志位置1的包指明客戶打算連接的服務器的端口,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。
第二次握手:
服務器發回確認包(ACK)應答。即SYN標志位和ACK標志位均為1同時,將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即X+1。
第三次握手:
客戶端再次發送確認包(ACK)SYN標志位為0,ACK標志位為1.並且把服務器發來ACK的序號字段+1,放在確定字段中發送給對方.並且在數據段放寫ISN的+1
4、TCP的四次揮手:
TCP的連接的拆除需要發送四個包,因此稱為四次揮手。客戶端或服務器均可主動發起揮手動作,在socket編程中,任何一方執行close()操作即可產生揮手操作。四次揮手后客戶端和服務器端之間斷開連接
- 先由客戶端向服務器端發送一個FIN,請求關閉數據傳輸。
- 當服務器接收到客戶端的FIN時,向客戶端發送一個ACK,其中ack的值等於FIN+SEQ
- 然后服務器向客戶端發送一個FIN,告訴客戶端應用程序關閉。
- 當客戶端收到服務器端的FIN是,回復一個ACK給服務器端。其中ack的值等於FIN+SEQ
為什么建立連接需要三次,但是斷開連接卻需要四次呢?
- 確保數據能夠完整傳輸。
- 當被動方收到主動方的FIN報文通知時,它僅僅表示主動方沒有數據再發送給被動方了。
- 但未必被動方所有的數據都完整的發送給了主動方,所以被動方不會馬上關閉SOCKET,它可能還需要發送一些數據給主動方后,再發送FIN報文給主動方,告訴主動方同意關閉連接,所以這里的ACK報文和FIN報文多數情況下都是分開發送的。
5、超時重發:
當客戶端給服務器發送請求時,如果服務端由於網絡等原因沒有及時給客戶端響應,那么這時客戶端便會重新發送一個請求,這就是超時重發。
重發超時是指在重發數據之前,等待確認應答到來的那個特定時間間隔。如果超過了這個時間仍未收到確認應答,發送端將進行數據重發。那么這個重發超時的具體時間長度又是如何確定的呢?
最理想的是,找到一個最小時間,它能保證“確認應答一定能在這個時間內返回”。然而這個時間長短隨着數據包途徑的網絡環境的不同而有所變化。例如在高速的LAN中時間相對較短,而在長距離的通信當中應該比LAN要長一些。即使是在同一個網絡中,根據不同時段的網絡擁堵程度時間的長短也會發生變化。
6、TCP以段為單位發送數據:
在建立TCP連接的同時,也可以確定發送數據包的單位,我們也可以稱其為“最大消息長度”(MSS:Maximum Segment Size)。最理想的情況是,最大消息長度正好是IP中不會被分片處理的最大數據長度。
TCP在傳送大量數據時,是以MSS的大小將數據進行分割發送。進行重發時也是以MSS為單位。
MSS是在三次握手的時候,在兩端主機之間被計算得出。兩端的主機在發出建立連接的請求時,會在TCP首部中寫入MSS選項,告訴對方自己的接口能夠適應的MSS的大小。然后會在兩者之間選擇一個較小的值投入使用。
7、利用窗口控制提高速度:
TCP以1個段為單位,每發一個段進行一次確認應答的處理。這樣的傳輸方式有一個缺點。那就是,包的往返時間越長通信性能就越低。如下圖所示:
為解決這個問題,TCP引入了窗口這個概念。即使在往返時間較長的情況下,它也能控制網絡性能的下降。如下圖所示,確認應答不再是以每個分段,而是以更大的單位進行確認時,轉發時間將會被大幅度的縮短。也就是說,發送端主機,在發送了一個段以后不必要一直等待確認應答,而是繼續發送。
TCP與UDP的區別總結:
1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保 證可靠交付
3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的。UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道