一梨撞、概念
TCP/IP:利用IP進(jìn)行通信時(shí)所必須用到的協(xié)議群的統(tǒng)稱飘庄。有時(shí)也稱TCP/IP為網(wǎng)際協(xié)議族(網(wǎng)際協(xié)議族(Internet Protocol Suite):組成網(wǎng)際協(xié)議的一組協(xié)議)篡撵。
互聯(lián)網(wǎng):“互聯(lián)網(wǎng)”是指由ARPANET發(fā)展而來害晦、互連全世界的計(jì)算機(jī)網(wǎng)絡(luò)∩枘猓現(xiàn)在蛮瞄,“互聯(lián)網(wǎng)”已經(jīng)是一個(gè)專有名詞了置济,其對(duì)應(yīng)的英文單詞“The Internet”也早已成為固有名詞解恰。
互聯(lián)網(wǎng)進(jìn)行通信時(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協(xié)議分層模型
1)硬件(物理層)
TCP/IP的最底層是負(fù)責(zé)數(shù)據(jù)傳輸?shù)挠布鳌CP/IP是在網(wǎng)絡(luò)互連的設(shè)備之間能夠通信的前提下才被提出的協(xié)議脏款。
2)網(wǎng)絡(luò)接口層(數(shù)據(jù)鏈路層)
網(wǎng)絡(luò)接口層(有時(shí)人們也將網(wǎng)絡(luò)接口層與硬件層合并起來稱作網(wǎng)絡(luò)通信層。)
利用以太網(wǎng)中的數(shù)據(jù)鏈路層進(jìn)行通信裤园,因此屬于接口層撤师。也就是說,把它當(dāng)做讓NIC起作用的“驅(qū)動(dòng)程序”也無妨拧揽。
3)互聯(lián)網(wǎng)層(網(wǎng)絡(luò)層)
互聯(lián)網(wǎng)層使用IP協(xié)議剃盾,它相當(dāng)于OSI模型中的第3層網(wǎng)絡(luò)層。IP協(xié)議基于IP地址轉(zhuǎn)發(fā)分包數(shù)據(jù)淤袜。
TCP/IP分層中的互聯(lián)網(wǎng)層與傳輸層的功能通常由操作系統(tǒng)提供痒谴。
IP
IP是跨越網(wǎng)絡(luò)傳送數(shù)據(jù)包,使整個(gè)互聯(lián)網(wǎng)都能收到數(shù)據(jù)的協(xié)議铡羡。
IP還隱含著數(shù)據(jù)鏈路層的功能积蔚。通過IP,相互通信的主機(jī)之間不論經(jīng)過怎樣的底層數(shù)據(jù)鏈路都能夠?qū)崿F(xiàn)通信烦周。
雖然IP也是分組交換的一種協(xié)議尽爆,但是它不具有重發(fā)機(jī)制。即使分組數(shù)據(jù)包未能到達(dá)對(duì)端主機(jī)也不會(huì)重發(fā)读慎。因此漱贱,屬于非可靠性傳輸協(xié)議。
ICMP
IP數(shù)據(jù)包在發(fā)送途中一旦發(fā)生異常導(dǎo)致無法到達(dá)對(duì)端目標(biāo)地址時(shí)夭委,需要給發(fā)送端發(fā)送一個(gè)發(fā)生異常的通知幅狮。ICMP就是為這一功能而制定的。它有時(shí)也被用來診斷網(wǎng)絡(luò)的健康狀況。
ARP
從分組數(shù)據(jù)包的IP地址中解析出物理地址(MAC地址)的一種協(xié)議崇摄。
4)傳輸層
傳輸層最主要的功能就是能夠讓應(yīng)用程序之間實(shí)現(xiàn)通信擎值。
TCP
TCP是一種面向有連接的傳輸層協(xié)議。它可以保證兩端通信主機(jī)之間的通信可達(dá)逐抑。TCP能夠正確處理在傳輸過程中丟包幅恋、傳輸順序亂掉等異常情況。
此外泵肄,TCP還能夠有效利用帶寬,緩解網(wǎng)絡(luò)擁堵淑翼。
然而腐巢,為了建立與斷開連接,有時(shí)它需要至少7次的發(fā)包收包玄括,導(dǎo)致網(wǎng)絡(luò)流量的浪費(fèi)冯丙。
此外,為了提高網(wǎng)絡(luò)的利用率遭京,TCP協(xié)議中定義了各種各樣復(fù)雜的規(guī)范胃惜,因此不利于視頻會(huì)議(音頻、視頻的數(shù)據(jù)量既定)等場(chǎng)合使用哪雕。
UDP
UDP有別于TCP船殉,它是一種面向無連接的傳輸層協(xié)議。
UDP不會(huì)關(guān)注對(duì)端是否真的收到了傳送過去的數(shù)據(jù)斯嚎,如果需要檢查對(duì)端是否收到分組數(shù)據(jù)包利虫,或者對(duì)端是否連接到網(wǎng)絡(luò),則需要在應(yīng)用程序中實(shí)現(xiàn)堡僻。
UDP常用于分組數(shù)據(jù)較少或多播糠惫、廣播通信以及視頻通信等多媒體領(lǐng)域。
5)應(yīng)用層(會(huì)話層以上的分層)
TCP/IP的分層中钉疫,將OSI參考模型中的會(huì)話層硼讽、表示層和應(yīng)用層的功能都集中到了應(yīng)用程序中實(shí)現(xiàn)。這些功能有時(shí)由一個(gè)單一的程序?qū)崿F(xiàn)牲阁,有時(shí)也可能會(huì)由多個(gè)程序?qū)崿F(xiàn)固阁。
因此,細(xì)看TCP/IP的應(yīng)用程序功能會(huì)發(fā)現(xiàn)咨油,它不僅實(shí)現(xiàn)OSI模型中應(yīng)用層的內(nèi)容您炉,還要實(shí)現(xiàn)會(huì)話層與表示
層的功能。
WWW
WWW(中文叫萬維網(wǎng)役电,是一種互聯(lián)網(wǎng)上數(shù)據(jù)讀取的規(guī)范赚爵。有時(shí)也叫做Web、WWW或W3。) 可以說是互聯(lián)網(wǎng)能夠如此普及的一個(gè)重要原動(dòng)力冀膝。
瀏覽器與服務(wù)端之間通信所用的協(xié)議是HTTP(HyperText Transfer Protocol)唁奢。所傳輸數(shù)據(jù)的主要格式是HTML(HyperText Markup Language)。WWW中的HTTP屬于OSI應(yīng)用層的協(xié)議窝剖,而HTML屬于表示層的協(xié)議麻掸。
電子郵件(E-mali)
發(fā)送電子郵件時(shí)用到的協(xié)議叫做SMTP(Simple Mail Tranfer Protocol)。
電子郵件使用MIME(在互聯(lián)網(wǎng)上廣泛使用的赐纱、用來定義郵件數(shù)據(jù)格式一種規(guī)范脊奋。)協(xié)議,是郵件內(nèi)容更豐富疙描。這里提到的MIME屬于OSI參考模型的第6層--表示層诚隙。
電子郵件與TCP/IP的發(fā)展相輔相成。電子郵件協(xié)助改善協(xié)議起胰,更加完善的協(xié)議又可以令電子郵件的形式多樣化久又。
文件傳輸(FTP)
該過程使用的協(xié)議叫做FTP(File Transfer Prototol)。
傳輸過程中可以選擇用二進(jìn)制方式還是文本方式效五,使用文本方式時(shí)會(huì)自動(dòng)修改換行符地消。這也屬于表示層的功能。
在FTP中進(jìn)行文件傳輸時(shí)會(huì)建立兩個(gè)TCP連接畏妖,分別是發(fā)出傳輸請(qǐng)求時(shí)所要用到的控制連接與實(shí)際傳輸數(shù)據(jù)時(shí)所要用到的數(shù)據(jù)連接(這兩種連接的控制管理屬于會(huì)話層的功能脉执。)
遠(yuǎn)程登錄(TELNET與SSH)
TCP/IP網(wǎng)絡(luò)中遠(yuǎn)程登錄常用TELNET(TELetypewriter NETwork的縮寫。有時(shí)也稱作默認(rèn)協(xié)議戒劫。)和SSH(SSH是Secure SHell的縮寫适瓦。) 兩種協(xié)議。
三谱仪、TCP/IP通信過程
數(shù)據(jù)包首部
每個(gè)分層中玻熙,都會(huì)對(duì)所發(fā)送的數(shù)據(jù)附加一個(gè)首部,在這個(gè)首部中包含了該層必要的信息疯攒,如發(fā)送的目標(biāo)地址以及協(xié)議相關(guān)信息嗦随。通常,為協(xié)議提供的信息為包首部敬尺,所要發(fā)送的內(nèi)容為數(shù)據(jù)枚尼。
發(fā)送數(shù)據(jù)包
以發(fā)郵件為例,主要會(huì)經(jīng)歷以下幾個(gè)過程應(yīng)用程序處理
會(huì)對(duì)郵件進(jìn)行編碼處理砂吞,相當(dāng)于OSI的表示層功能署恍。
不同的郵件軟件有不同的發(fā)送郵件的機(jī)制,立即發(fā)送或者是由接收方發(fā)起接收才開始發(fā)送蜻直。這種從何時(shí)建立連接的機(jī)制類似于OSI的會(huì)話層的功能盯质。
TCP模塊處理
TCP負(fù)責(zé)建立連接袁串、發(fā)送數(shù)據(jù)和斷開連接等功能。
如何將應(yīng)用端的數(shù)據(jù)準(zhǔn)確傳輸呢呼巷?
需要在應(yīng)用發(fā)過來的數(shù)據(jù)上增加一個(gè)TCP首部包囱修,其中包括源端口號(hào),目標(biāo)端口號(hào)王悍,序號(hào)(判斷發(fā)送的數(shù)據(jù)包中那部分是數(shù)據(jù))和校驗(yàn)(判斷數(shù)據(jù)是否能正常讀绕屏)。隨后將附加TCP首部的數(shù)據(jù)發(fā)送給IP模塊压储。
IP模塊處理
IP將TCP傳過來的TCP首部和TCP數(shù)據(jù)合起來當(dāng)做自己的數(shù)據(jù)鲜漩,并在TCP首部的前端在加上自己的IP首部。因此集惋,IP數(shù)據(jù)包中IP首部后面緊跟著TCP首部宇整,然后才是應(yīng)用的數(shù)據(jù)首部和數(shù)據(jù)本身。
IP首部中包含接收端IP地址以及發(fā)送端IP地址芋膘。緊隨IP首部的還有用來判斷其后面數(shù)據(jù)是TCP還是UDP的信息。
IP包生成后霸饲,參考路由控制表決定接受此IP包的路由或主機(jī)为朋。隨后,IP包將被發(fā)送給連接這些路由器或主機(jī)網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序厚脉,以實(shí)現(xiàn)真正發(fā)送數(shù)據(jù)习寸。
如果尚不知道接收端的MAC地址,可以利用ARP(Address Resolution Protocol)查找傻工。只要知道了對(duì)端的MAC地址霞溪,就可以將MAC地址和IP地址交給以太網(wǎng)的驅(qū)動(dòng)程序,實(shí)現(xiàn)數(shù)據(jù)傳輸中捆。
網(wǎng)絡(luò)接口(以太網(wǎng))處理
從IP傳過來的IP包鸯匹,對(duì)于以太網(wǎng)驅(qū)動(dòng)來說不過就是數(shù)據(jù)。給這數(shù)據(jù)附加上以太網(wǎng)首部并進(jìn)行發(fā)送處理泄伪。
以太網(wǎng)首部中包含接收端MAC地址殴蓬、發(fā)送端MAC地址以及標(biāo)志以太網(wǎng)類型的以太網(wǎng)數(shù)據(jù)的協(xié)議。
根據(jù)上述信息產(chǎn)生的以太網(wǎng)數(shù)據(jù)包將通過物理層傳輸給接收端蟋滴。
發(fā)送處理中的FCS(Frame Check Sequence) 由硬件計(jì)算染厅,添加到包的最后。設(shè)置FCS的目的是為了判斷數(shù)據(jù)包是否由于噪聲而被破壞津函。
發(fā)接收數(shù)據(jù)包
接收程序的處理過程剛好與發(fā)送時(shí)相反的肖粮。不做多余解釋了。
整個(gè)發(fā)送郵件的過程
文章內(nèi)容摘自:圖解TCP/IP(第五版)