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

《圖解TCP/IP》讀書筆記

原文傳送門 《圖解TCP/IP》讀書筆記

《圖解TCP/IP》讀書筆記

一、國際慣例:書託

TCP/IP
  這是一本圖文並茂的網路管理技術書籍,旨在讓廣大讀者理解TCP/IP的基本知識、掌握TCP/IP的基本技能。
  書中講解了網路基礎知識、TCP/IP基礎知識、資料鏈路、IP協議、IP協議相關技術、TCP與UDP、路由協議、應用協議、網路安全等內容,引導讀者瞭解和掌握TCP/IP,營造一個安全的、使用放心的網路環境。

同時,這本書也是我的2016年度讀書計劃中的一本,下面我將會把我看書中的重點內容總結和摘錄下來,所謂把書讀薄,就是把精華內容留下,以供以後隨時參考。

二、網路基礎知識

2.1 計算機使用模式的演變

計算機使用模式的演變

2.2 協議

協議

通訊

分組交換是將大資料分割為一個個叫做包(Packet)的較小單位進行傳輸的方法。這裡所說的包,就如同我們平常在郵局裡見到的郵包。分組交換就是將大資料分裝為一個個這樣的郵包交給對方。
資料互動

2.3 協議分層與OSI參考模型

協議分層就如同計算機軟體中的模組化開發,OSI參考模型的建議是比較理想化的。

OSI參考模型

OSI參考模型中每個層的作用:
OSI參考模型的作用

7層通訊例項:假設主機A的使用者A要給主機B的使用者B傳送一封電子郵件:

7層通訊例項

傳送方從第7層、第6層到第1層由上至下按照順序傳輸資料,而接收端則從第1層、第2層到第7層由下至上向每個上一級分層傳輸資料。每個分層上,在處理由上一層傳過來的資料時可以附上當前分層的協議所必須的“首部”資訊。然後接收端對收到的資料進行資料“首部”與“內容”的分離,再轉發給上一分層,並最終將傳送端的資料恢復為原裝。

三、TCP/IP基礎知識

TCP(Transmission Control Protocol)和IP(Internet Protocol)是網際網路的眾多通訊協議中最為著名的。

3.1 TCP/IP的背景及歷史

TCP/IP的背景歷史

3.2 TCP/IP標準化

(1)具體含義

很多人都會認為TCP/IP是指TCP與IP兩種協議,實際生活中有時也確實就是指這兩種協議。然後,很多情況下,它只是利用IP進行通訊時所必須使用到的協議群的統稱。

TCP/IP協議群

(2)標準化

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

3.3 TCP/IP協議分層模型

TCP/IP協議分層模型
  上圖列出了TCP/IP與OSI分層之間的大概關係,不難看出,TCP/IP與OSI在分層模組上稍有區別。OSI參考模型注重“通訊協議必要的功能是什麼”,而TCP/IP則更強調“在計算機上實現協議應該開發哪種程式”。

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

郵件TCP/IP協議層

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

資料鏈路流程

四、IP協議及相關技術

4.1 IP的主要作用

IP作用
IP主要作用

4.2 IP的三大作用模組

(1)IP定址

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

(2)路由(最終節點為止的轉發)

路由控制(Routing)是指將分組資料傳送到最終目標地址的功能。即使網路非常複雜,也可以通過路由控制確定到達目標地址的通路。因此,一個數據包之所以能夠成功地到達最終的目標地址,全靠路由控制。

Hop中文叫“跳”,它是指網路中的一個區間,IP包正是在網路中一個跳間被轉發。資料鏈路實現某一個區間(一跳)內的通訊,而IP實現直至最終目標地址的通訊(點對點)。
跳

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

資料鏈路傳輸

(3)IP分包與組包

IP面向無連線,即在發包之前,不需要建立與對端目標地址之間的連線。上層如果遇到需要傳送給IP的資料,該資料會被立即壓縮成IP包傳送出去。
IP面向無連結

4.3 相關技術

1.DNS

有效管理主機名和IP地址之間的對應關係->DNS系統,那麼DNS查詢的機制是什麼呢?
DNS

2.ARP

ARP是一種解決地址問題的協議,以目標地址為線索,用來定位下一個應該接收資料分包的網路裝置對應的MAC地址。不過,ARP只適用於IPv4,不適用於IPv6。
ARP

RARP則是將ARP反過來,從MAC地址定位IP地址的一種協議。

3.ICMP

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

4.DHCP

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

5.NAT

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

6.IP隧道

在一個網路環境中,假如網路A、B使用IPv6,中間位置的網路C支援使用IPv4的話,網路A與網路B之間無法直接進行通訊。為了讓他們之間正常通訊,這時需要採用IP隧道的功能。
IPV

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

IP隧道

五、TCP與UDP

TCP(Transmission Control Protocol)與UDP(User Datagram Protocol)

5.1 傳輸層的作用

TCP -> 面向連線的、可靠的流協議,提供可靠的通訊傳輸。
TCP流

UDP -> 面向無連線的,具有不可靠性的資料報協議。(讓廣播和細節控制交給應用的通訊傳輸)

TCP用於在傳輸層有必要實現可靠傳輸的情況,由於它是面向連線並具備順序控制、重發控制等機制的,所以它可以為應用提供可靠傳輸。而UDP則主要用於那些對高速傳輸和實時性有較高要求的通訊或廣播通訊。

因此,TCP和UDP應該根據應用目的按需使用。另外,在日常使用TCP或UDP時,通常會用到作業系統提供的類庫,這種類庫一般被稱為API,對於TCP或UDP來說會廣泛使用到套接字(Socket)的API。應用程式使用套接字時,可以設定對端的IP地址、埠號,並實現資料的傳送與接收。
UDP

5.2 埠號

MAC地址和IP地址分別用來識別同一鏈路中不同的計算機以及TCP/IP網路中互連的主機和路由器。在傳輸層,則使用埠號來識別同一臺計算機中進行通訊的不同應用程式。

埠號

一般知名埠號在0~1023之間,而我們經常使用的自定義/動態分配的埠號則一般在49152~65535之間。

5.3 UDP

UDP(User Datagram Protocol)不提供複雜的控制機制,利用IP提供面向無連線的通訊服務。因此,它不會負責:流量控制、丟包重發等。
UCP用途

5.4 TCP

TCP作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費。

為了通過IP資料報實現可靠性傳輸,需要考慮很多事情,例如:資料的破壞、丟包、重複以及分片順序混亂等問題。

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

使用TCP的一個連線的建立與斷開,正常過程下至少需要來回傳送7個包才能完成,也就是我們常常聽到的三次握手,兩次揮手。

3詞握手

六、路由協議

在網際網路世界中,夾雜著複雜的區域網和廣域網,然後,再複雜的網路結構中,也需要通過合理的路由將資料傳送到目標主機。而決定這個路由的,正是路由控制模組。

6.1 靜態路由和動態路由

  • 靜態路由:事先設定好路由器和主機中並將路由資訊固定的一種方法;
    eg.有100個IP網的時候,就需要手動設定近100個路由資訊。並且,每增加一個新的網路,就需要將這個新追加的網路資訊設定在所有的路由器上。因此,管理負擔很大。此外,一旦某個路由器發生故障,基本上無法自動繞過發生故障的節點,必須手工設定後才能恢復。

  • 動態路由:讓路由協議在執行過程中自動地設定路由控制資訊的一種方法;
    eg.如果有一個新的網路追加到原有網路中,只要在新增加網路的路由器上進行一個動態路由的設定即可。此外,網路上一旦發生故障,路由器的設定也會自動重置。

路由

動態路由會給相鄰路由器傳送自己已知的網路連線資訊,而這些資訊又像接力一樣依次傳遞給其他路由器,直到整個網路都瞭解時,路由控制表也就製作完成了,而此時也就可以正確轉發IP資料包了。

路由流動

6.2 路由演算法

最具代表性的路由演算法是:距離向量(Distance-Vector)演算法和鏈路狀態(Link-State)演算法。

(1)距離向量演算法

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

距離向量演算法

(2)鏈路狀態演算法

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

6.3 路由協議

(1)RIP(Routing Information Protocol)

RIP是距離向量型的一種路由協議,廣泛應用於LAN。

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

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

(2)OSPF(Open Shortest Path First)

OSPF是一種鏈路狀態型路由協議,即使網路中有環路,也能夠進行穩定的路由控制。

七、應用協議

7.1 遠端登入

Telnet利用TCP的一跳連線,通過這一條連線向主機發送文字命令並在主機上執行。但是Telnet中登入時無需輸入密碼就可以傳送,容易造成通訊竊聽和非法侵入的危險。

SSH是加密的遠端登入系統,可以加密通訊內容。即使資訊被竊聽也無法破解所傳送的密碼、具體命令以及命令返回結果是什麼。

7.2 檔案傳輸

FTP是在兩個計算機之間進行檔案傳輸時使用的協議,它使用兩條TCP連線:一條用於控制,一條則用於資料的傳輸。

(1)FTP控制使用的連線使用的是TCP21號埠

(2)FTP用於資料傳輸的TCP連線通常使用20號埠

檔案傳輸

7.3 電子郵件

SMTP(Simple Mail Transfer Protocol)提供電子郵件服務協議,而一般接收端會使用POP3(Post Office Protocol)協議。

  • SMTP是傳送電子郵件的協議,它使用TCP的25號埠。它在建立一個TCP連線以後,便在這個連線上進行控制和應答以及資料的傳送。

  • POP是接收電子郵件的協議,它和SMTP一樣,也是在客戶端與服務端之間建立一個TCP連線完成相應操作。

7.4 WWW

HTTP(Hyper Text Transfer Protocol)預設使用TCP的80埠,首先是客戶端向伺服器的80埠建立一個TCP連線,然後在這個TCP連線上進行請求和應答以及資料報文的傳送。

7.5 網路管理

SNMP(Simple Network Management Protocol)常用語TCP/IP的網路管理。利用SNMP可以對連線到網路的裝置進行遠端管理,例如修改設定和確認是否執行正常等等。