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