1. 程式人生 > >《圖解TCP/IP》學習筆記

《圖解TCP/IP》學習筆記

本學習筆記僅供個人學習研究使用

第一章 網路基礎知識

7層OSI模型:

 

第二章 TCP/IP基礎知識

2.1 TCP/IP出現的背景及其歷史

美國軍用技術的應用導致了網際網路的鼻祖ARPANET的誕生,在20世紀70年代,ARPANET中的一個研究機構研發出了TCP/IP。由於UNIX工作站的迅速普及,TCP/IP協議也變得盛行。

2.2 TCP/IP的標準化

2.2.1 具體含義

泛指各種網際網路必不可分的網路協議。

2.2.2 標準化

由於TCP/IP儘早地制定了可行性較強的協議,提出了應對技術快速革新的協議,並及時進行後期改良的方案,因此打敗了OSI模型,成為了事實上的標準。

2.3 TCP/IP協議分層模型

OSI參考模型注重“通訊協議必要的功能是什麼”,而TCP/IP則更強調“在計算機上實現協議應該開發哪種程式”。

 主機A向主機B傳送一封電子郵件,在TCP/IP模型下的處理過程如下:

 

分組資料包經過乙太網的資料鏈路時的大致流程如下圖所示:

第三章 資料鏈路

3.1 資料鏈路的作用

資料鏈路層的協議定義了通過通訊媒介互聯的裝置之間傳輸的規範。

3.2 資料鏈路相關技術

3.2.1 MAC地址

MAC地址用於識別資料鏈路中互聯的節點。MAC地址第一位表示單播地址(0)/多播地址(1);第二位表示全域性地址(0)/本地地址(1);第3~24位由IEEE管理並保證各廠家之間不重複;第25~48位由廠商管理並保證產品之間不重複。全世界不會有重複的MAC地址。

3.2.2 共享介質型網路

多個裝置共享一個通訊介質,例如最早的乙太網和FDDI網,基本上採用半雙工通訊。控制方式有爭用方式和令牌傳遞方式。

在一部分乙太網中,採用了CSMA/CD(載波監聽多路訪問/衝突碰撞),其具體工作原理如下:

1)      如果通道上沒有資料流動,則任何站都可以傳送資料

2)      一旦發生衝突,則放棄傳送資料,同時立即釋放載波通道。

3)      放棄傳送以後,隨機延時一段時間,再重新爭用介質,重新發送幀。

令牌傳遞方式是沿著令牌環傳送一種叫做“令牌”的特殊報文。只有獲得令牌的站才能傳送資料。

3.2.3 非共享介質網路

這種方式下,網路中每個站直連交換機,由交換機負責轉發資料幀,很多情況下采用全雙工通訊。

3.2.4 根據MAC地址轉發

乙太網交換機就是持有多個埠的網橋,根據轉發表,決定從哪個網路介面傳送資料。這是一種將非介質共享型網路中所使用的交換機用在乙太網中的技術。

交換機的自學過程如圖:

3.2.5 環路檢測技術

通過網橋連線網路時,可能會出現環路。最壞情況下,資料幀會在環路中被持續轉發,這種資料幀過多時,會導致網路癱瘓。解決方法有生成樹方式和源理由法。

3.2.6 VLAN

虛擬區域網(VLAN)是一組邏輯上的裝置和使用者,這些裝置和使用者並不受物理位置的限制,可以根據功能、部門及應用等因素將它們組織起來,相互之間的通訊就好像它們在同一個網段中一樣,由此得名虛擬區域網。

3.3 乙太網

一般的乙太網有時稱作DIX乙太網。IEEE802.3委員會規範化後的乙太網有時稱作802.3乙太網。

3.3.1 乙太網的連線形式

現在,隨著互連裝置的處理能力以及傳輸速度的提高,一般都採用終端與交換機之間獨佔電纜的方式實現乙太網通訊,如下圖。

 

3.3.2 乙太網的分類

 

3.3.3 乙太網幀格式

乙太網幀前端有一個叫做前導碼的部分,表示一個乙太網幀的開始,末尾是一個叫做SFD的域,值為“11”。前導碼和SFD合起來佔8個位元組。

幀尾最後出現的是FCS,用它可以檢查幀是否有所損壞。

在前面提到的VLAN中,幀的格式又會有所變化。

3.4 無線通訊

根據通訊距離可分為以下幾種類別:

3.5 PPP

3.5.1 PPP定義

PPP(點對點協議)是為在同等單元之間傳輸資料包這樣的簡單鏈路設計的鏈路層協議。這種鏈路提供全雙工操作,並按照順序傳遞資料包。PPP屬於純粹的資料鏈路層,與物理層沒有任何關係。

3.5.2 LCP與NCP

PPP主要功能中包含兩個協議:一是不依賴上層的LCP協議,另一個是依賴上層的NCP協議(Network Control Protocol),如果上層為IP,此時的NCP也叫做IPCP。

LCP主要負責建立和斷開連線、設定最大接收單元、設定驗證協議以及設定是否進行通訊質量的監控。

而IPCP主要負責IP地址設定以及是否進行TCP/IP首部壓縮等設定。

PPP建立連線流程如圖。

 

 

3.5.3 PPP的幀格式

PPP的資料幀格式如圖所示:

    

其中的標識碼用來區分每一個幀。兩個標識碼中間出現連續5個以上的“1”的時候,就需要在幀傳送時插入“0”,接收時刪除“0”,實現透明傳輸。

3.5.4 PPPoE

PPP over Ethernet,在乙太網上提供PPP功能,通訊線路由乙太網模擬。單純的乙太網沒有驗證功能,而如果採用PPPoE管理乙太網連線,就可以用PPP的驗證等功能使各家ISP可以有效地管理終端使用者的使用。

3.6 其他資料鏈路

3.6.1 ATM

ATM(Asynchronous Transfer Mode)是以一個叫做信元的單位進行傳輸的資料鏈路,由於其線路佔用時間短和能高效傳輸大容量資料等特點,主要用於廣域網路的連線。

3.6.2 FDDI

FDDI(Fiber Distributed Data Interface)叫做分散式光線資料介面,以前用於在主幹網或計算機之間的高速連線上提高傳輸速率。FDDI採用令牌環的訪問方式,在網路擁堵的情況下極容易導致網路收斂。

3.7 公共網路

3.7.1 模擬電話線路

模擬電話線路其實就是利用固定電話線路進行通訊,由於傳輸速率低逐漸被淘汰。

3.7.2 ADSL

ADSL技術(Asymmetric Digital Subscriber Line,非對稱數字使用者線路)採用頻分複用技術把普通的電話線分成了電話、上行和下行三個相對獨立的通道,將低頻音訊訊號和高頻數字訊號進行隔離,從而避免了相互之間的干擾。ADSL技術能夠充分利用現有PSTN(Public Switched Telephone Network ,公共交換電話網),只須線上路兩端加裝ADSL裝置即可為使用者提供高寬頻服務,無需重新佈線,從而可極大地降低服務成本。同時ADSL使用者獨享頻寬,線路專用,不受使用者增加的影響。

3.7.3 FTTH

FTTH(Fiber To The Home)顧名思義就是一根高速光纖直接連線到使用者家裡或公司建築物處的方法。它通過一個負責在光訊號與電子訊號之間轉換的叫做ONU的裝置將計算機與之關聯。

3.7.4 VPN

虛擬專用網路用於連線距離較遠的地域。這種服務包括IP-VPN和廣域乙太網。IP-VPN是指在IP網路上建立VPN。可以將多個不同使用者的VPN資訊通過MPLS網加以區分,形成封閉的私有網路。或採用Ipsec技術在網際網路上建立自己的VPN。

廣域乙太網是在作為資料鏈路層的乙太網上利用VLAN實現VPN的技術,只要指定同一個VLAN,無論從哪裡都能接入到同一個網路。

 

第四章 IP協議

4.1 IP即網際協議

IP的主要作用就是在複雜的網路環境中將資料包發給最終的目標地址。資料鏈路層和網路層關係舉例如圖:

4.2 IP三大模組

4.2.1 網路層地址

在計算機通訊中,為了識別通訊段,必須要有一個類似於地址的識別碼進行標識。而在資料鏈路層,使用MAC地址來標識同一個鏈路中不同計算機的一種識別碼。在網路層,則叫做IP地址。

4.2.2 路由控制

路由控制是指將分組資料傳送到最終目標地址的功能。

 

為了將資料包傳送給目標主機,所有主機都維護者一張路由控制表,該表記錄IP資料在下一步應該發給哪一個路由器。IP包將根據這個路由表在各個資料鏈路上傳輸。

4.2.3 IP分組與組包

IP面向無連線,即在發包之前,不需要建立與對端目標地址之間的連線。上層如果遇到需要傳送給IP的資料,該資料會被立即壓縮成IP包傳送出去。IP面向無連線的原因是:簡化:面向連線比起面向無連線處理相對複雜;提速:每次通訊之前都需要建立連線,會降低處理速度。需要有連線時,可以委託上一層(傳輸層)提供此項服務,因此,IP為了實現簡單化與高速化採用面向無連線方式。

4.3 IP地址的基礎知識

4.3.1 IP地址的分類

IP地址由網路和主機兩部分標識組成。分為四類地址。

4.3.2 廣播地址

IP地址中主機部分為全1,就成為了廣播地址。分為本地廣播和直接廣播(在不同網路之間的廣播)兩種。

4.3.3 IP多播

多播用於將包傳送給特定組內的所有主機,使用D類地址。

4.3.4 子網掩碼

地址分類導致浪費,引入了子網掩碼後,網路地址被更細分為更小粒度的網路。這種方式實際上是將原來的A類、B類、C類等分類中的主機地址部分用作子網地址,可以將原網路分為多個物理網路。

4.3.4 CIDR與VLSM

IP地址缺乏,人們開始放棄IP地址的分類,採用任意長度分割IP地址的網路欄位和主機欄位,這種方法叫做CIDR(無類別域間路由,Classless Inter-DomainRouting)。

當子網掩碼設定為一定數值時,域內的所有子網掩碼都得使用同樣的長度,也就是說一個組織裡所有部門子網掩碼都相同,不符合實際。於是產生了一種可以按需修改組織內各部門的子網掩碼長度的機制——VLSM(Variable Length Subnet Mask,可變長子網掩碼)。

IP地址不夠用的解救方法有:CIDR&VLSM、NAT、代理伺服器以及使用Ipv6。

4.3.5 NAT

私有IP通過NAT(Network Address Translation,網路地址轉換)技術轉換為全域性IP,就可以與外界通訊了。

4.4 路由控制

IP地址的網路部分用於進行路由控制。IP包在網路中的傳輸如圖。

 

4.5 IP分割處理與再構成處理

4.5.1 IP報文的分片與重組

由於資料鏈路的不同,MTU(Maximum Transmission Unit,最大傳輸單元,單位是byte)也相異,這就導致IP報文需要進行分片與重組。路由器可以進行分片,只有目標主機才能重組。

4.5.2 路徑MTU發現

分片機制加重了路由器的負荷,存在網路安全性隱患,而且一旦某分片丟失,會造成整個IP資料報作廢。為應對這些問題,推出了一種新的技術“路徑MTU發現”。路徑MTU是指從傳送端主機到接收端主機之間不需要分片時最大MTU的大小。避免了在中途的路由器上進行分片處理,也可以在TCP中傳送更大的包。

4.6 IPv4首部

第五章 IP協議相關技術

5.1 DNS

IP地址不便於記憶、hosts檔案更新繁瑣,由此產生了一個可以有效管理主機名和IP地址之間對應關係的系統,就是DNS系統。它可以維護一個用來表示組織內部主機名和IP地址之間對應關係的資料庫。

5.1.1 域名伺服器

 

 

5.1.2DNS查詢

DNS如同網際網路中的分散式資料庫。

5.2 ARP

ARP(Address Resolution Protocol,地址解析協議)以目標IP地址為線索,用來定位下一個應該接收資料分包的網路裝置對應的MAC地址。只適用於IPv4。

5.2.1 ARP的工作機制

 

主機會將獲取到的MAC地址快取,下次再向這個IP地址傳送資料報時不需要重新發送ARP請求。每執行一次ARP,其對應的快取內容都會被清除。MAC地址的快取是有一定期限的。

5.2.2 IP地址與MAC地址

假設主機A想給主機B傳送IP資料報,其中要經過路由器C。

1)      若只有IP地址,不使用MAC地址:路由器C隔斷了兩個網路,IP包目的地址不可達。

2)      若只有MAC地址,不使用IP地址:僅憑一個MAC地址,人們無法得知這臺主機所處位置。網橋在學習之前會向全世界傳送包,產生了巨大的網路流量。

所以IP地址和MAC地址缺一不可,互相配合。

5.3 ICMP

一個剛剛搭建好的網路,需要驗證該網路的設定是否正確。ICMP(Internet Control MessageProtocol,因特網控制報文協議)這是提供這類功能的一種協議,其主要功能包括:確認IP包是否成功送達目標地址,通知在傳送過程中IP包被廢棄的具體原因等等。例如我們經常使用ping命令,就是一個典型的ICMP的具體應用。

ICMP訊息類別如圖:

 

5.4 DHCP

如果逐一地為每一臺主機設定IP地址會非常繁瑣,於是為了實現自動設定IP地址、統一管理IP地址分配,就產生了DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)協議。有了DHCP,計算機只要連線到網路,無需管理員手動配置就可以進行TCP/IP通訊。

5.4.1 DHCP工作機制

將DHCP伺服器分設到各個路由器上,於管理和運維都不是件友誼的事,所以使用了DHCP中繼代理。它可以設定DHCP伺服器的IP地址。

5.5 NAT   

NAT(Network Address Translation,網路地址轉換)是用於在本地網路中使用私有地址,在連線網際網路時轉而使用全域性全域性IP地址的技術。

 

5.6 IP隧道

IP隧道中可以將那些從網路A發過來的IPv6的包統和為一個數據,再為之追加一個IPv4的首部以後轉發給網路C,這種在網路層的首部後面繼續追加網路層首部的通訊方法就叫做“IP隧道”。

第六章 TCP與UDP

6.1 傳輸層的作用

傳輸層在終端使用者之間提供透明的資料傳輸,向上層提供可靠的資料傳輸服務。其中TCP提供可靠的通訊傳輸,而UDP則常被用於讓廣播和細節控制交給應用的通訊傳輸。

埠號用來識別同一臺計算機中進行通訊的不同應用程式。動態分配的埠號取值範圍為49151~65535。

6.2 UDP

UDP(User Datagram Protocol,使用者資料報協議)不提供複雜的控制機制,利用IP提供面向無連線的通訊服務。因此,它不會負責流量控制、丟包重發、差錯糾正等。

UDP廣泛應用於:

1)       包量較少的通訊(DNS、SNMP登)

2)       視訊、音訊等多媒體通訊(即時通訊)

3)       限定於LAN等特定網路中的應用通訊

4)       廣播通訊(廣播、多播)  

UDP首部格式如圖:

 

6.3 TCP

TCP(Transmission Control Protocol,傳輸控制協議)充分地實現了資料傳輸時各種控制功能,可以進行丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。TCP作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料。

TCP通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。

6.3.1 通過序列號與確認應答提高可靠性

在TCP中,當傳送端的資料到達接收主機時,接收端主機會返回一個已接收到訊息的通知,這個訊息叫確認應答。

通過序列號和確認應答號,TCP可以實現可靠傳輸。

6.3.2 連線管理

6.3.3 TCP以段為單位傳送資料

MSS(Maximun Segment Size,最大訊息長度)是TCP連線確定傳送資料包的單位。最理想的情況是MSS正好是IP中不會被分片處理的最大資料長度。MSS在三次握手時候得到確定。

6.3.4 利用視窗控制提高速度

每傳送一個段就進行一次確認應答處理,增加了額外開銷。故TCP引入了視窗這個概念,通過累計確認控制網路效能的下降。

6.3.5 流量控制

接收端主機向傳送端主機通知自己可以接收資料的大小。

6.3.6 擁塞控制

TCP通過慢啟動對傳送的資料量進行控制。最初將傳送端的擁塞視窗設定為1,每收到一個確認應答,視窗的值會增加一個段。

6.3.7 TCP首部格式

 

第七章 路由協議

7.1 路由控制

路由分為靜態路由與動態路由。靜態路由是事先設定好路由器和主機中並將路由資訊固定的一種方法;動態路由是讓路由協議在執行過程中自動地設定路由控制資訊的一種方法。動態路由會給相鄰路由器傳送自己已知的網路連線資訊,而這些資訊又像接力一樣依次傳遞給其他路由器,直到整個網路都瞭解時,路由控制表也就製作完成了,而此時也就可以正確轉發IP資料包了。

路由協議大致分為兩類:外部閘道器協議EGP(如BGP邊界閘道器協議)和內部閘道器協議IGP(如RIP路由資訊協議、RIP2、OSPF開放式最短路徑優先)。可以根據EGP在區域網路之間進行路由選擇,也可以根據IGP在區域網路內部進行主機識別。

7.2 路由演算法

7.2.1 距離向量演算法

根據距離(代價)和方向決定目標網路或者目標主機位置的一種方法。


7.2.2 鏈路狀態演算法

在瞭解網路整體連線狀態的基礎上生成路由控制表的一種方法,該方法中,每個路由器必須保持同樣的資訊才能進行正確的路由選擇。

7.2.3 主要路由協議

7.3 RIP

RIP(Routing Information Protocol,路由資訊協議)是距離向量型的一種路由協議,廣泛用於LAN。

7.3.1 廣播路由

廣播路由:RIP將路由控制資訊定期(30秒)向全網廣播。

7.3.2 確定路由

RIP基於距離向量演算法決定路由,距離的單位被稱為“跳數”(經過的路由器的個數),RIP希望經過儘可能少的路由器將資料包傳送到目標IP地址。

7.4 OSPF

OSPF(Open Shortest Path First,開放式最短路徑優先)是一種鏈路狀態型路由協議,即使網路中有環路,也能夠進行穩定的路由控制。路由器之間交換鏈路狀態生成網路拓撲資訊,然後再根據這個拓撲資訊生成路由控制表。

OSPF賦予每個鏈路一個權重,始終選擇一個總的代價最小的一條路徑;RIP總是選擇路由器個數最少的路徑。

OSPF中進行連線確認的協議叫做HELLO協議。

OSPF為了減少計算負荷,引入了區域的概念,每個區域內的路由器都只持有本區域網路拓撲的資料庫。內部路由器只瞭解區域內部的鏈路狀態資訊,並在該資訊的基礎上計算出路由控制表。

7.5 BGP

BGP(Border Gateway Protocol,邊界閘道器協議)是連線不同組織機構的一種協議。

BGP是路徑向量協議,根據BGP交換路由控制資訊的路由器叫做BGP揚聲器。BGP資料包送達目標網路時,會生成一箇中途經過所有AS的編號列表。

 

第八章 應用協議

8.1 遠端登陸

實現從自己的本地計算機登陸到網路另一端計算功能的應用就叫做遠端登陸。

8.1.1 TELNET

TELNET利用TCP的一條連線,通過這一條連線向主機發送文字命令並在主機上執行。本地使用者好像直接與遠端主機內部的Shell相連。

8.1.2 SSH

SSH是加密的遠端登陸系統。

8.2  FTP

FTP使用兩條TCP連線:一條用來控制,一條用來傳輸資料。

8.3 電子郵件

傳送端的郵件根據SMTP(Simple Mail Transfer Protocol,簡單郵件傳輸協議)將被轉發給一直處於插電狀態的POP(Post Office Protocol,郵局協議)伺服器。客戶端再根據POP協議從POP伺服器接收對方發來的郵件。

IMAP(Internet Mail Access Protocol,因特網郵件訪問協議)。它的主要作用是郵件客戶端可以通過這種協議從郵件伺服器上獲取郵件的資訊,下載郵件等。IMAP協議執行在TCP/IP協議之上,使用的埠是143。它與POP3協議的主要區別是使用者可以不用把所有的郵件全部下載,可以通過客戶端直接對伺服器上的郵件進行操作。

 

第九章 網路安全

9.1 網路安全構成要素

9.1.1防火牆

組織機構內部的網路與網際網路相連是,為了避免域內受到非法訪問的威脅,往往會設定防火牆。防火牆的種類多樣,設計原則都是“暴露給危險的主機和路由器的個數要有限”。


防火牆是指一種將內部網和公眾訪問網(如Internet)分開的方法,它實際上是一種隔離技術。防火牆是在兩個網路通訊時執行的一種訪問控制尺度,它能允許你“同意”的人和資料進入你的網路,同時將你“不同意”的人和資料拒之門外,最大限度地阻止網路中的黑客來訪問你的網路。

9.1.2 IDS

IDS(Intrusion Detection Systems,入侵檢測系統)專業上講就是依照一定的安全策略,通過軟、硬體,對網路、系統的執行狀況進行監視,儘可能發現各種攻擊企圖、攻擊行為或者攻擊結果,以保證網路系統資源的機密性、完整性和可用性。做一個形象的比喻:假如防火牆是一幢大樓的門鎖,那麼IDS就是這幢大樓裡的監視系統。一旦小偷爬窗進入大樓,或內部人員有越界行為,只有實時監視系統才能發現情況併發出警告。

9.2 加密技術基礎

加密和解密使用相同的金鑰叫做對稱加密方式。反之如果在加密和解密過程中分別使用不同的金鑰則叫做公鑰加密方式。

9.3 安全協議

9.3.1IPsec

在構建VPN時,最常使用的是IPsec。它是指在IP首部後面追加“封裝安全有效載荷”和“認證首部”,從而對此後的資料進行加密,不被盜取者輕易解讀。

 

9.3.2TLS/SSL與HTTPS

Web中可以通過TLS/SSL對HTTP通訊進行加密。使用TLS/SSL的HTTP通訊叫做HTTPS通訊,採用對稱加密方式。