前言:網(wǎng)絡(luò)協(xié)議棧主要是TCP/ip協(xié)議棧,同時也是構(gòu)成今天全球互聯(lián)網(wǎng)的基礎(chǔ),具體它們是怎樣運(yùn)行的,運(yùn)行原理又是怎樣,這就是今天我們需要講述的知識。 協(xié)議棧的四個基本層次:數(shù)據(jù)鏈路層: 本層實現(xiàn)了所有的網(wǎng)卡驅(qū)動程序,并且為上層協(xié)議數(shù)據(jù)包和下層物理鏈路幀提供了通用的轉(zhuǎn)換接口。主要的協(xié)議就是arp協(xié)議和rarp協(xié)議。 網(wǎng)絡(luò)層: 本層主要實現(xiàn)數(shù)據(jù)包在網(wǎng)絡(luò)上選路和轉(zhuǎn)發(fā),提供主機(jī)到主機(jī)的傳輸。在本層中,ip協(xié)議通過目的地址逐跳的選擇下一跳路由,知道數(shù)據(jù)包到達(dá)目的主機(jī);或者是在中間傳輸失敗被丟棄。 在本層中,主要協(xié)議是ip協(xié)議,但是通常會把icmp協(xié)議也歸入這一層,嚴(yán)格意義山說icmp也是使用ip協(xié)議來進(jìn)行數(shù)據(jù)包請求,按照上層協(xié)議使用下層協(xié)議的規(guī)范,應(yīng)該歸為傳輸層。 傳輸層: 本層主要是提供數(shù)據(jù)包的端到端的可信通信,本層主要協(xié)議是tcp、udp和sctp協(xié)議,本次我們主要是講述tcp和udp。 tcp協(xié)議:主要是為應(yīng)用層提供可靠的、面向連接的以及面向流的服務(wù)。后續(xù)詳解。 udp協(xié)議:主要是為應(yīng)用層提供不可靠的、基于數(shù)據(jù)包的協(xié)議。 應(yīng)用層: 本層主要是負(fù)責(zé)處理數(shù)據(jù)包的內(nèi)容邏輯,前面的三個協(xié)議主要是保證數(shù)據(jù)包能夠到達(dá)目的端,而應(yīng)用層就是對數(shù)據(jù)包的內(nèi)容進(jìn)行處理。 協(xié)議棧的使用方式:1)發(fā)送時封裝: 當(dāng)數(shù)據(jù)包從應(yīng)用層->傳輸層->網(wǎng)絡(luò)層->數(shù)據(jù)鏈路層時,每一層都會在上層數(shù)據(jù)包頭部添加本層頭部,這種使用使用方式我們稱之為數(shù)據(jù)包的封裝。如到傳輸層時,添加tcp頭部或者是udp頭部,此時數(shù)據(jù)就是tcp報文段。最后發(fā)送到網(wǎng)絡(luò)上就是經(jīng)過數(shù)據(jù)鏈路層封裝好的幀數(shù)據(jù)。 2)接收時分用: 分用的過程和封裝的過程正好相反,但是分用是根據(jù)報文中的類型字段來區(qū)分?jǐn)?shù)據(jù)包將傳給上層哪一個協(xié)議的,如以太網(wǎng)幀的類型字段可以區(qū)分是傳給arp模塊還是ip模塊,ip報文中根據(jù)協(xié)議字段區(qū)分傳給的是tcp還是udp,tcp報文中根據(jù)目的端口號來傳給應(yīng)用層的具體程序的。 arp協(xié)議原理講解:
注意:arp報文的長度為28字節(jié),因此發(fā)送的以太網(wǎng)arp數(shù)據(jù)包的長度為18+28=46個字節(jié),但是以太網(wǎng)標(biāo)準(zhǔn)規(guī)定數(shù)據(jù)部分的長度至少為46字節(jié),因此在進(jìn)行請求或者是響應(yīng)時可能數(shù)據(jù)包長度為64自己。 |
|