《圖解TCP/IP》讀書筆記
原文傳送門 《圖解TCP/IP》讀書筆記
《圖解TCP/IP》讀書筆記
- 一、國際慣例:書託
- 二、網路基礎知識
- 三、TCP/IP基礎知識
- 四、IP協議及相關技術
- 五、TCP與UDP
- 六、路由協議
- 七、應用協議
一、國際慣例:書託
這是一本圖文並茂的網路管理技術書籍,旨在讓廣大讀者理解TCP/IP的基本知識、掌握TCP/IP的基本技能。
書中講解了網路基礎知識、TCP/IP基礎知識、資料鏈路、IP協議、IP協議相關技術、TCP與UDP、路由協議、應用協議、網路安全等內容,引導讀者瞭解和掌握TCP/IP,營造一個安全的、使用放心的網路環境。
同時,這本書也是我的2016年度讀書計劃中的一本,下面我將會把我看書中的重點內容總結和摘錄下來,所謂把書讀薄,就是把精華內容留下,以供以後隨時參考。
二、網路基礎知識
2.1 計算機使用模式的演變
2.2 協議
分組交換是將大資料分割為一個個叫做包(Packet)的較小單位進行傳輸的方法。這裡所說的包,就如同我們平常在郵局裡見到的郵包。分組交換就是將大資料分裝為一個個這樣的郵包交給對方。
2.3 協議分層與OSI參考模型
協議分層就如同計算機軟體中的模組化開發,OSI參考模型的建議是比較理想化的。
OSI參考模型中每個層的作用:
7層通訊例項:假設主機A的使用者A要給主機B的使用者B傳送一封電子郵件:
傳送方從第7層、第6層到第1層由上至下按照順序傳輸資料,而接收端則從第1層、第2層到第7層由下至上向每個上一級分層傳輸資料。每個分層上,在處理由上一層傳過來的資料時可以附上當前分層的協議所必須的“首部”資訊。然後接收端對收到的資料進行資料“首部”與“內容”的分離,再轉發給上一分層,並最終將傳送端的資料恢復為原裝。
三、TCP/IP基礎知識
TCP(Transmission Control Protocol)和IP(Internet Protocol)是網際網路的眾多通訊協議中最為著名的。
3.1 TCP/IP的背景及歷史
3.2 TCP/IP標準化
(1)具體含義
很多人都會認為TCP/IP是指TCP與IP兩種協議,實際生活中有時也確實就是指這兩種協議。然後,很多情況下,它只是利用IP進行通訊時所必須使用到的協議群的統稱。
(2)標準化
由於TCP/IP儘早地制定了可行性較強的協議,提出了應對技術快速革新的協議,並及時進行後期改良的方案,因此打敗了OSI模型,成為了事實上的標準。
3.3 TCP/IP協議分層模型
上圖列出了TCP/IP與OSI分層之間的大概關係,不難看出,TCP/IP與OSI在分層模組上稍有區別。OSI參考模型注重“通訊協議必要的功能是什麼”,而TCP/IP則更強調“在計算機上實現協議應該開發哪種程式”。
現在再來看看主機A向主機B傳送一封電子郵件,在TCP/IP模型下的處理過程:
分組資料包經過乙太網的資料鏈路時的大致流程如下圖所示:
四、IP協議及相關技術
4.1 IP的主要作用
4.2 IP的三大作用模組
(1)IP定址
在計算機通訊中,為了識別通訊段,必須要有一個類似於地址的識別碼進行標識。而在資料鏈路層,使用MAC地址來標識同一個鏈路中不同計算機的一種識別碼。在網路層,則叫做IP地址。
(2)路由(最終節點為止的轉發)
路由控制(Routing)是指將分組資料傳送到最終目標地址的功能。即使網路非常複雜,也可以通過路由控制確定到達目標地址的通路。因此,一個數據包之所以能夠成功地到達最終的目標地址,全靠路由控制。
Hop中文叫“跳”,它是指網路中的一個區間,IP包正是在網路中一個跳間被轉發。資料鏈路實現某一個區間(一跳)內的通訊,而IP實現直至最終目標地址的通訊(點對點)。
為了將資料包傳送給目標主機,所有主機都維護者一張路由控制表(Routing Table),該表記錄IP資料在下一步應該發給哪一個路由器。IP包將根據這個路由表在各個資料鏈路上傳輸。
(3)IP分包與組包
IP面向無連線,即在發包之前,不需要建立與對端目標地址之間的連線。上層如果遇到需要傳送給IP的資料,該資料會被立即壓縮成IP包傳送出去。
4.3 相關技術
1.DNS
有效管理主機名和IP地址之間的對應關係->DNS系統,那麼DNS查詢的機制是什麼呢?
2.ARP
ARP是一種解決地址問題的協議,以目標地址為線索,用來定位下一個應該接收資料分包的網路裝置對應的MAC地址。不過,ARP只適用於IPv4,不適用於IPv6。
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地址的技術。
6.IP隧道
在一個網路環境中,假如網路A、B使用IPv6,中間位置的網路C支援使用IPv4的話,網路A與網路B之間無法直接進行通訊。為了讓他們之間正常通訊,這時需要採用IP隧道的功能。
IP隧道中可以將那些從網路A發過來的IPv6的包統和為一個數據,再為之追加一個IPv4的首部以後轉發給網路C,這種在網路層的首部後面繼續追加網路層首部的通訊方法就叫做“IP隧道”。
五、TCP與UDP
TCP(Transmission Control Protocol)與UDP(User Datagram Protocol)
5.1 傳輸層的作用
TCP -> 面向連線的、可靠的流協議,提供可靠的通訊傳輸。
UDP -> 面向無連線的,具有不可靠性的資料報協議。(讓廣播和細節控制交給應用的通訊傳輸)
TCP用於在傳輸層有必要實現可靠傳輸的情況,由於它是面向連線並具備順序控制、重發控制等機制的,所以它可以為應用提供可靠傳輸。而UDP則主要用於那些對高速傳輸和實時性有較高要求的通訊或廣播通訊。
因此,TCP和UDP應該根據應用目的按需使用。另外,在日常使用TCP或UDP時,通常會用到作業系統提供的類庫,這種類庫一般被稱為API,對於TCP或UDP來說會廣泛使用到套接字(Socket)的API。應用程式使用套接字時,可以設定對端的IP地址、埠號,並實現資料的傳送與接收。
5.2 埠號
MAC地址和IP地址分別用來識別同一鏈路中不同的計算機以及TCP/IP網路中互連的主機和路由器。在傳輸層,則使用埠號來識別同一臺計算機中進行通訊的不同應用程式。
一般知名埠號在0~1023之間,而我們經常使用的自定義/動態分配的埠號則一般在49152~65535之間。
5.3 UDP
UDP(User Datagram Protocol)不提供複雜的控制機制,利用IP提供面向無連線的通訊服務。因此,它不會負責:流量控制、丟包重發等。
5.4 TCP
TCP作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費。
為了通過IP資料報實現可靠性傳輸,需要考慮很多事情,例如:資料的破壞、丟包、重複以及分片順序混亂等問題。
TCP通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。
使用TCP的一個連線的建立與斷開,正常過程下至少需要來回傳送7個包才能完成,也就是我們常常聽到的三次握手,兩次揮手。
六、路由協議
在網際網路世界中,夾雜著複雜的區域網和廣域網,然後,再複雜的網路結構中,也需要通過合理的路由將資料傳送到目標主機。而決定這個路由的,正是路由控制模組。
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可以對連線到網路的裝置進行遠端管理,例如修改設定和確認是否執行正常等等。