网络知识 | 《图解TCP/IP》读书笔记(下)
【網絡知識】|?作者?/ Edison Zhou
這是EdisonTalk的第291篇原創內容
作為一個專業的IT技術人,一個Web應用開發者,不了解網絡基礎和協議,怎么能行?本文是我2016年閱讀《圖解TCP/IP》一書的讀書筆記下半部分。
上半部分:點此閱讀
1TCP與UDP
TCP(Transmission Control Protocol)與UDP(User Datagram Protocol)
傳輸層的作用
TCP:面向連接的、可靠的流協議,提供可靠的通信傳輸。
所謂流,就是指不間斷的數據結構,你可以把它想象成排水管道中的水流。當應用程序采用TCP發送消息時,雖然可以保證發送的順序,但還是猶如沒有任何間隔的數據流發送給接收端。
UDP:面向無連接的,具有不可靠性的數據報協議。(讓廣播和細節控制交給應用的通信傳輸)
TCP用于在傳輸層有必要實現可靠傳輸的情況,由于它是面向連接并具備順序控制、重發控制等機制的,所以它可以為應用提供可靠傳輸。而UDP則主要用于那些對高速傳輸和實時性有較高要求的通信或廣播通信。
因此,TCP和UDP應該根據應用目的按需使用。另外,在日常使用TCP或UDP時,通常會用到操作系統提供的類庫,這種類庫一般被稱為API,對于TCP或UDP來說會廣泛使用到套接字(Socket)的API。應用程序使用套接字時,可以設置對端的IP地址、端口號,并實現數據的發送與接收。
端口號
MAC地址和IP地址分別用來識別同一鏈路中不同的計算機以及TCP/IP網絡中互連的主機和路由器。在傳輸層,則使用端口號來識別同一臺計算機中進行通信的不同應用程序。
一般知名端口號在0~1023之間,而我們經常使用的自定義/動態分配的端口號則一般在49152~65535之間。
UDP
UDP(User Datagram Protocol)不提供復雜的控制機制,利用IP提供面向無連接的通信服務。因此,它不會負責:流量控制、丟包重發等。
UDP廣泛應用于:?
1、包量較少的通信(DNS、SNMP等)
2、視頻、音頻等多媒體通信(即時通信)
3、限定于LAN等特定網絡中的應用通信?
4、廣播通信(廣播、多播)
TCP
TCP作為一種面向有連接的協議,只有在確認通信對端存在時才會發送數據,從而可以控制通信流量的浪費。
為了通過IP數據報實現可靠性傳輸,需要考慮很多事情,例如:數據的破壞、丟包、重復以及分片順序混亂等問題。
TCP通過檢驗和、序列號、確認應答、重發控制、連接管理以及窗口控制等機制實現可靠性傳輸。
使用TCP的一個連接的建立與斷開,正常過程下至少需要來回發送7個包才能完成,也就是我們常常聽到的三次握手,兩次揮手。
2路由協議
在互聯網世界中,夾雜著復雜的局域網和廣域網,然后,再復雜的網絡結構中,也需要通過合理的路由將數據發送到目標主機。而決定這個路由的,正是路由控制模塊。
靜態路由和動態路由
靜態路由:事先設置好路由器和主機中并將路由信息固定的一種方法;
eg.有100個IP網的時候,就需要手動設置近100個路由信息。并且,每增加一個新的網絡,就需要將這個新追加的網絡信息設置在所有的路由器上。因此,管理負擔很大。此外,一旦某個路由器發生故障,基本上無法自動繞過發生故障的節點,必須手工設置后才能恢復。
動態路由:讓路由協議在運行過程中自動地設置路由控制信息的一種方法;
eg.如果有一個新的網絡追加到原有網絡中,只要在新增加網絡的路由器上進行一個動態路由的設置即可。此外,網絡上一旦發生故障,路由器的設置也會自動重置。
動態路由會給相鄰路由器發送自己已知的網絡連接信息,而這些信息又像接力一樣依次傳遞給其他路由器,直到整個網絡都了解時,路由控制表也就制作完成了,而此時也就可以正確轉發IP數據包了。
路由算法
最具代表性的路由算法是:距離向量(Distance-Vector)算法和鏈路狀態(Link-State)算法。
(1)距離向量算法
根據距離(代價)和方向決定目標網絡或者目標主機位置的一種方法。
(2)鏈路狀態算法
在了解網絡整體連接狀態的基礎上生成路由控制表的一種方法,該方法中,每個路由器必須保持同樣的信息才能進行正確的路由選擇。
路由協議
(1)RIP(Routing Information Protocol)
RIP是距離向量型的一種路由協議,廣泛應用于LAN。
廣播路由:RIP將路由控制信息定期(30秒)向全網廣播。
確定路由:RIP基于距離向量算法決定路由,距離的單位被稱為“跳數”(經過的路由器的個數),RIP希望經過盡可能少的路由器將數據包發送到目標IP地址。
(2)OSPF(Open Shortest Path First)
OSPF是一種鏈路狀態型路由協議,即使網絡中有環路,也能夠進行穩定的路由控制。
3應用層協議
遠程登錄
Telnet利用TCP的一跳連接,通過這一條連接向主機發送文字命令并在主機上執行。但是Telnet中登錄時無需輸入密碼就可以發送,容易造成通信竊聽和非法侵入的危險。
SSH是加密的遠程登錄系統,可以加密通信內容。即使信息被竊聽也無法破解所發送的密碼、具體命令以及命令返回結果是什么。
文件傳輸
FTP是在兩個計算機之間進行文件傳輸時使用的協議,它使用兩條TCP連接:一條用于控制,一條則用于數據的傳輸。
(1)FTP控制使用的連接使用的是TCP21號端口(SFTP用的是22號端口)
(2)FTP用于數據傳輸的TCP連接通常使用20號端口
電子郵件
SMTP(Simple Mail Transfer Protocol)提供電子郵件服務協議,而一般接收端會使用POP3(Post Office Protocol)協議。
(1)SMTP是發送電子郵件的協議,它使用TCP的25號端口。它在建立一個TCP連接以后,便在這個連接上進行控制和應答以及數據的發送。
(2)POP是接收電子郵件的協議,它和SMTP一樣,也是在客戶端與服務端之間建立一個TCP連接完成相應操作。
WWW
HTTP(Hyper Text Transfer Protocol)默認使用TCP的80端口,首先是客戶端向服務器的80端口建立一個TCP連接,然后在這個TCP連接上進行請求和應答以及數據報文的發送。
網絡管理
SNMP(Simple Network Management Protocol)常用于TCP/IP的網絡管理。利用SNMP可以對連接到網絡的設備進行遠程管理,例如修改設置和確認是否運行正常等等。
Ref參考資料
[日]竹下隆史,《圖解TCP/IP》
上半部分傳送門:點此閱讀
總結
以上是生活随笔為你收集整理的网络知识 | 《图解TCP/IP》读书笔记(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 国产化之路-统信UOS /Nginx /
- 下一篇: 自由软件基金会庆祝成立35周年