TCP/IP 系列文章
網(wǎng)絡(luò)基礎(chǔ)知識(一)
TCP/IP基礎(chǔ)知識(二)
物理層(三)
數(shù)據(jù)鏈路層(四)
IP 協(xié)議(五)
IP 協(xié)議相關(guān)技術(shù)(六)
TCP與UDP(七)
一、TCP/IP 是什么?
字面上來看,有人認(rèn)為 TCP/I 是指 TCP 和 IP 這兩種協(xié)議。實(shí)際生活中偶爾確實(shí)是指這兩種協(xié)議。但是在大多數(shù)情況下,意思并不單單是如此狹窄,是指利用 IP 進(jìn)行通信時(shí)所必須用到的協(xié)議群的統(tǒng)稱
。IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP 以及 HTTP 等都屬于 TCP/IP 協(xié)議,TCP/IP 一詞泛指這些協(xié)議。
二、互聯(lián)網(wǎng)和TCP/IP的關(guān)系
互聯(lián)網(wǎng)原意是網(wǎng)際網(wǎng),就是連接一個(gè)又一個(gè)網(wǎng)絡(luò)的意思。互聯(lián)網(wǎng)通信時(shí),需要相應(yīng)的網(wǎng)絡(luò)協(xié)議,而TCP/IP原本就是為使用互聯(lián)網(wǎng)而開發(fā)定制的協(xié)議族。所以互聯(lián)網(wǎng)的協(xié)議就是 TCP/IP, TCP/IP就是互聯(lián)網(wǎng)的協(xié)議。
三、TCP/IP 與 OSI 參考模型
通過上圖可以看出:
- TCP/IP 參考模型分為五層:物理層、數(shù)據(jù)鏈路層、互聯(lián)網(wǎng)層、傳輸層、應(yīng)用層。
- OSI 參考模型更注重“通信協(xié)議必要的功能是什么”;TCP/IP 更強(qiáng)調(diào)“在計(jì)算機(jī)上實(shí)現(xiàn)協(xié)議應(yīng)該開發(fā)哪種應(yīng)用程序”。
3.1 硬件(物理層)
TCP/IP 的最底層是負(fù)責(zé)傳輸數(shù)據(jù)的硬件。這種硬件相當(dāng)于以太網(wǎng)或電話線路等物理層的設(shè)備。
3.2 網(wǎng)絡(luò)接口層(數(shù)據(jù)鏈路層)
網(wǎng)絡(luò)接口層是利用以太網(wǎng)的數(shù)據(jù)鏈路層進(jìn)行通信,因此屬于接口層。把它當(dāng)做讓 NIC 起作用的驅(qū)動(dòng)程序。驅(qū)動(dòng)程序是在操作系統(tǒng)與硬件之間起到橋梁作用的軟件。更換一個(gè)新的 NIC 網(wǎng)卡不僅需要硬件,還需要軟件的配合才能使用。因此,嘗嘗需要在操作系統(tǒng)的基礎(chǔ)上安裝一些驅(qū)動(dòng)軟件以便使用一些附加硬件。
3.3 互聯(lián)網(wǎng)層(網(wǎng)絡(luò)層)
互聯(lián)網(wǎng)層使用 IP 協(xié)議,IP 協(xié)議基于 IP 地址轉(zhuǎn)發(fā)分包數(shù)據(jù)。TCP/IP 分層中的互聯(lián)網(wǎng)層和傳輸層的功能通常有操作系統(tǒng)提供。
路由器必須實(shí)現(xiàn)轉(zhuǎn)發(fā)分組數(shù)據(jù)包的功能。連接互聯(lián)忘得所有主機(jī)和路由器都必須實(shí)現(xiàn) IP 的功能。而網(wǎng)橋、中繼器或集線器等就沒有必要實(shí)現(xiàn) IP 或 TCP 的功能。
- IP
IP 協(xié)議可以跨越網(wǎng)絡(luò)傳送數(shù)據(jù)包,使整個(gè)互聯(lián)網(wǎng)都能收到數(shù)據(jù),傳送期間使用 IP 地址作為主機(jī)的標(biāo)識。雖然 IP 也是分組交換的一種協(xié)議,但是不具備重發(fā)機(jī)制。即使分組數(shù)據(jù)包未能到達(dá)接收端主機(jī),也不會(huì)重發(fā),因此 IP 協(xié)議屬于非可靠傳輸協(xié)議。 - ICMP
IP 數(shù)據(jù)包在發(fā)送圖中一旦發(fā)生異常,將導(dǎo)致無法到達(dá)對端目標(biāo)地址,此時(shí)需要給發(fā)送端一個(gè)發(fā)生異常的通知。 ICMP 就是謂詞定制的。利用這點(diǎn),通常 ICMP 可以用來診斷網(wǎng)絡(luò)的健康狀況。 - ARP
ARP 協(xié)議的主要職責(zé)是從分鐘數(shù)據(jù)包的 IP 地址中解析出物理地址( MAC 地址)。
3.4 傳輸層
傳輸層的主要功能是讓應(yīng)用程序之間實(shí)現(xiàn)通信。通常計(jì)算機(jī)內(nèi)部運(yùn)行著多個(gè)程序,識別不同的應(yīng)用程序要根據(jù)應(yīng)用程序的端口號做依據(jù)。TCP/IP 傳輸層有兩個(gè)具有代表行的協(xié)議。即 TCP 和 UDP。
- TCP
是面向有連接的傳輸協(xié)議。關(guān)于面向連接型和面向無連接型的區(qū)分,筆者在第一節(jié)有講到。TCP 能夠正確處理丟包、順序錯(cuò)亂等異常情況。此外黑能狗有效利用寬帶,環(huán)節(jié)網(wǎng)絡(luò)擁堵。 - UDP
是面向無連接的傳輸協(xié)議。UDP 不會(huì)關(guān)注接收端是否階段是否接收到自己傳輸過去的數(shù)據(jù)。如果需要檢查對端是否接收到分組數(shù)據(jù)包,則需要在應(yīng)用程序中實(shí)現(xiàn)(如:收到消息后主動(dòng)給發(fā)送方會(huì)消息)。UDP 常用語分組數(shù)據(jù)較少、多播、廣播以及視頻通信等多媒體領(lǐng)域。
3.5 應(yīng)用層(會(huì)話層以上的分層)
TCP/IP 的分層中,將 OSI 參考模型中的會(huì)話層、表示層和應(yīng)用層的功能都幾種到了應(yīng)用程序中實(shí)現(xiàn)。這些功能優(yōu)勢由一個(gè)單一的程序?qū)崿F(xiàn),有時(shí)也可能會(huì)有多個(gè)程序?qū)崿F(xiàn)。
四、對協(xié)議的理解以及協(xié)議分層的意義
協(xié)議可以理解為人與人之間的對話。有三個(gè)人A、B、C, A會(huì)漢語,B會(huì)英語,C即會(huì)漢語又會(huì)英語。其中漢語和英語可以看做是協(xié)議,聊天當(dāng)做是通信,說話內(nèi)容當(dāng)做是數(shù)據(jù)。A和B之間語言不同,無法溝通。A和C之間協(xié)議一致,通信自如。
協(xié)議的分層如同軟件開發(fā)中的模塊化。分層可以使每個(gè)模塊獨(dú)立,即使系統(tǒng)中某些分層發(fā)生變化,也不會(huì)波及整個(gè)系統(tǒng)。因此可以構(gòu)造一個(gè)擴(kuò)展性和靈活性都較強(qiáng)的系統(tǒng)。分層的劣勢,可能就在于過分模塊化,使處理變的更加沉重以及每個(gè)模塊都不得不實(shí)現(xiàn)相似的處理邏輯問題。
還是通過上述對話的例子理解分層的意義。A和C通話,通話的方式可以是無線電通話,也可以是電話機(jī)通話。且兩人可以是都使用漢語或都使用英語通話,都是行的通的。其中語言可以看做是語言層,通訊方式可以看做是通信設(shè)備層。如下圖: