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