關(guān)于網(wǎng)絡(luò)的知識,我這里主要是從OSI分層,網(wǎng)絡(luò)協(xié)議等相關(guān)的知識。


(資料圖片僅供參考)

談談對OSI七層模型和TCP/IP四層模型的理解?

所謂七層模型和四層模型是前輩們?yōu)榱嗽鰪娡ㄓ眯秃图嫒菪裕O(shè)計出來的層次結(jié)構(gòu),每一層都遵守一定的規(guī)則。

物理層:通過光纜,網(wǎng)線等物理方式把電腦連接起來,是傳遞比特流,并且規(guī)定了電平,速度,電纜針腳。數(shù)據(jù)鏈路層:把比特流封裝成數(shù)據(jù)幀的格式,幀是數(shù)據(jù)鏈路層的傳送單位。電腦連接起來之后,數(shù)據(jù)都是經(jīng)過網(wǎng)卡傳輸,而網(wǎng)卡定義了世界唯一的mac地址,通過廣播的形式向局域網(wǎng)所有的電腦發(fā)送數(shù)據(jù),根據(jù)數(shù)據(jù)中的mac地址和自身的進行對比判斷是否發(fā)送給自己。數(shù)據(jù)鏈路層主要是幀編碼和誤差糾正控制。網(wǎng)絡(luò)層:網(wǎng)絡(luò)層定義了IP協(xié)議和子網(wǎng)掩碼,通過對IP和子網(wǎng)掩碼進行運算能確定是否是通一個子網(wǎng),通過路由器和交換機進行傳輸。網(wǎng)絡(luò)層具有尋址和路由選擇,連接的建立,保持,終止等功能。傳輸層:傳輸層是端到端的連接,為了確定數(shù)據(jù)包是從哪個進程發(fā)送過來的,就需要端口號,通過端口來建立通信,比如TCP和UDP屬于這一層的協(xié)議。會話層:負責建立,管理,斷開表示層實體間的通信會話。表示層:服務于應用層數(shù)據(jù)編碼和轉(zhuǎn)換功能,保證一個系統(tǒng)的應用層數(shù)據(jù)發(fā)送到另外一個應用層能識別。應用層:最靠近用戶的一層,是為計算機用戶提供應用接口,最終供用戶的能理解使用的一層。

TCP/IP模型是四層,對于OSI的模型簡化:

網(wǎng)絡(luò)接口層,也叫網(wǎng)絡(luò)訪問層,包含OSI模型的物理層和數(shù)據(jù)鏈路層,把電腦連接起來。網(wǎng)絡(luò)層,也叫做IP層,處理IP數(shù)據(jù)包的傳輸、路由,建立主機間的通信。傳輸層,為兩臺主機設(shè)備提供端到端的通信。應用層,包含OSI的會話層、表示層和應用層,提供了一些常用的協(xié)議規(guī)范,比如FTP、SMPT、HTTP等。OSI模型總結(jié)

物理層通過物理手段把電腦連接起來,數(shù)據(jù)鏈路層是對比特流的封裝編碼,網(wǎng)絡(luò)層來建立主機對主機的通信,傳輸層建立端口到端口的通信,表示層處理數(shù)據(jù)編碼和轉(zhuǎn)換,應用層最終負責建立連接,數(shù)據(jù)格式轉(zhuǎn)換,呈現(xiàn)給用戶。

在OSI七層參考模型中,每一層都有哪些協(xié)議?物理層協(xié)議有:EIA/TIA-232, EIA/TIA-499,V.35, V.24,RJ45, Ethernet, 802.3,F(xiàn)DDI數(shù)據(jù)鏈路層協(xié)議有:Frame Relay,HDLC,PPP, IEEE 802.3/802.2網(wǎng)絡(luò)層協(xié)議有:IP,IPX,AppleTalk DDP傳輸層協(xié)議有:TCP,UDP會話層協(xié)議有:RPC,SQL,NFS,NetBIOS,names,AppleTalk表示層協(xié)議有:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption應用層協(xié)議有:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP如何知道兩臺機器是否相通?

判斷兩臺機器是否相通,我們從上面的OSI模型中能知道在IP層實現(xiàn)就行了,IP層是實現(xiàn)兩臺機器的通信,關(guān)于IP層我們從上面也知道有IP協(xié)議,IPX協(xié)議等,其實我們只要能知道實現(xiàn)IP層協(xié)議的一些命令就能知道如何通過命令知道兩臺機器是否相通。

如何知道兩臺機器是否相通,我們可以通過ping或者traceroute命令,ping和traceroute命令基于ICMP協(xié)議實現(xiàn)。下面我們來分析一下ping和traceroute命令以及ICMP協(xié)議。

ping命令:。它是基于網(wǎng)絡(luò)層、通過發(fā)送和接收數(shù)據(jù)包來檢測兩臺計算機間的連接狀況。當出現(xiàn)網(wǎng)絡(luò)故障的時候,我們就可以用ping命令來預估故障點,如果ping命令沒有成功,那么就該考慮硬件連接是否出錯,比如網(wǎng)卡設(shè)置是否正確、比如網(wǎng)線是否連通,再考慮IP地址設(shè)置是否正確。也可以用于數(shù)據(jù)包一去一回所需耗的時間。使用命令:Ping IP地址。

ping命令就會將目的服務器的 IP 地址,數(shù)據(jù)大小,往返花費的時間打印到屏幕上。如下圖:

traceroute命令:traceroute命令是一款充分利用 ICMP 差錯報文類型的應用,其主要用作追蹤路由信息。它的實現(xiàn)是利用從每個機器節(jié)點之間的IP報的TTL從1開始遞增同時發(fā)送UDP包,當出錯則接受ICMP包的超時錯誤信息。

我們參考下圖,就能清楚的描述 traceroute 的整個過程。

tracerouter發(fā)UDP,為啥出錯會回ICMP?正常情況下,協(xié)議棧能正常走到UDP,當然正常返回UDP。但是,你主機不可達,是IP層的(還沒到UDP)。IP層,當然只知道回ICMP。

ICMP協(xié)議

ICMP是 Internet Control Message Protocol 的縮寫,即互聯(lián)網(wǎng)控制消息協(xié)議。它是互聯(lián)網(wǎng)協(xié)議族的核心協(xié)議之一。它是IP層中發(fā)送控制消息,提供可能發(fā)生在通信環(huán)境中的各種問題反饋,通過這些信息,使網(wǎng)絡(luò)管理者可以對所發(fā)送的問題作出診斷,從而采取適當措施來解決問題。

ICMP本身是網(wǎng)絡(luò)層的一個協(xié)議,但是它的報文不是直接傳送給數(shù)據(jù)鏈路層,而是要封裝IP數(shù)據(jù)包,然后再傳送給數(shù)據(jù)鏈路層。ICMP的差錯和控制信息傳輸只是要解決IP可能出現(xiàn)的不可靠問題,它不能獨立于IP而單獨存在,因此應該把它視為IP的一個部分,歸于IP體系。

ICMP協(xié)議報文

協(xié)議報文

ICMP報文中各字段含義如下:

類型:占1字節(jié),表示ICMP消息的類型。代碼:占l字節(jié),進一步劃分ICMP消息的子類型,如對類型3(目的不可達)又細分為目的網(wǎng)絡(luò)不可達(代碼0)、目的主機不可達(代碼2)、目的協(xié)議不可達(代碼3)、目的端口不可達(代碼4)等。校驗和:占2字節(jié),對ICMP報文首部和數(shù)據(jù)進行校驗。第4個字段:占4字節(jié),內(nèi)容取決于ICMP報文的類型,有的類型不定義該字段。數(shù)據(jù)部分:內(nèi)容和長度取決于ICMP報文的類型。

ICMP消息的類型分為查詢報文,差錯控制報文:

ICMP報文類型 | 類型的值 | 說明查詢報文 | 8 | 回應請求查詢報文 | 0 | 應答報文查詢報文 | 13 | 時間戳請求查詢報文 | 14 | 應答報文查詢報文 | 17 | 子網(wǎng)掩碼請求查詢報文 | 18 | 應答報文查詢報文 | 10 | 路由查詢查詢報文 | 9 | 通告報文差錯控制報文 | 3 | 目標不可達差錯控制報文 | 4 | 源端控制差錯控制報文 | 5 | 重定向差錯控制報文 | 11 | 超時差錯控制報文 | 12 | 報文參數(shù)出錯

ICMP代碼類型:

代碼 | 含義0 | 目標網(wǎng)絡(luò)不可達1 | 目標主機不可達2 | 目標協(xié)議不可達3 | 目標端口不可達4 | 需要分段且已設(shè)置DF5 | 源路由失敗6 | 目的網(wǎng)絡(luò)未知7 | 目的主機未知8 | 源主機被隔離9 | 目的網(wǎng)絡(luò)被強制禁止10 | 目的主機被強制禁止11 | 網(wǎng)絡(luò)不能達到指定的服務類型12 | 主機不能達到指定的服務類型13 | 因管理結(jié)構(gòu)的主機設(shè)置了過濾器而不可達14 | 因主機所設(shè)置的優(yōu)先級收到破壞而不可達15 | 因優(yōu)先級被刪除而使主機不可達

了解了ICMP協(xié)議的報文了,我們來看下ping命令實現(xiàn)的ICMP協(xié)議的整個傳輸流程。ICMP 是 IP 的上層協(xié)議,但是ICMP也分擔了IP的一部分功能。下面展示了ICMP協(xié)議的實現(xiàn)的圖解。

? ?

標簽: 網(wǎng)絡(luò)協(xié)議