通俗易懂圖解網(wǎng)絡(luò)面試知識—第一篇
關(guān)于網(wǎng)絡(luò)的知識,我這里主要是從OSI分層,網(wǎng)絡(luò)協(xié)議等相關(guān)的知識。
談?wù)剬SI七層模型和TCP/IP四層模型的理解?
所謂七層模型和四層模型是前輩們?yōu)榱嗽鰪娡ㄓ眯秃图嫒菪?,設(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地址和自身的進(jìn)行對比判斷是否發(fā)送給自己。數(shù)據(jù)鏈路層主要是幀編碼和誤差糾正控制。
- 網(wǎng)絡(luò)層:網(wǎng)絡(luò)層定義了IP協(xié)議和子網(wǎng)掩碼,通過對IP和子網(wǎng)掩碼進(jìn)行運算能確定是否是通一個子網(wǎng),通過路由器和交換機進(jìn)行傳輸。網(wǎng)絡(luò)層具有尋址和路由選擇,連接的建立,保持,終止等功能。
- 傳輸層:傳輸層是端到端的連接,為了確定數(shù)據(jù)包是從哪個進(jìn)程發(fā)送過來的,就需要端口號,通過端口來建立通信,比如TCP和UDP屬于這一層的協(xié)議。
- 會話層:負(fù)責(zé)建立,管理,斷開表示層實體間的通信會話。
- 表示層:服務(wù)于應(yīng)用層數(shù)據(jù)編碼和轉(zhuǎn)換功能,保證一個系統(tǒng)的應(yīng)用層數(shù)據(jù)發(fā)送到另外一個應(yīng)用層能識別。
- 應(yīng)用層:最靠近用戶的一層,是為計算機用戶提供應(yīng)用接口,最終供用戶的能理解使用的一層。
TCP/IP模型是四層,對于OSI的模型簡化:
- 網(wǎng)絡(luò)接口層,也叫網(wǎng)絡(luò)訪問層,包含OSI模型的物理層和數(shù)據(jù)鏈路層,把電腦連接起來。
- 網(wǎng)絡(luò)層,也叫做IP層,處理IP數(shù)據(jù)包的傳輸、路由,建立主機間的通信。
- 傳輸層,為兩臺主機設(shè)備提供端到端的通信。
- 應(yīng)用層,包含OSI的會話層、表示層和應(yīng)用層,提供了一些常用的協(xié)議規(guī)范,比如FTP、SMPT、HTTP等。
OSI模型總結(jié)
物理層通過物理手段把電腦連接起來,數(shù)據(jù)鏈路層是對比特流的封裝編碼,網(wǎng)絡(luò)層來建立主機對主機的通信,傳輸層建立端口到端口的通信,表示層處理數(shù)據(jù)編碼和轉(zhuǎn)換,應(yīng)用層最終負(fù)責(zé)建立連接,數(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
- 應(yīng)用層協(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ù)包來檢測兩臺計算機間的連接狀況。當(dāng)出現(xiàn)網(wǎng)絡(luò)故障的時候,我們就可以用ping命令來預(yù)估故障點,如果ping命令沒有成功,那么就該考慮硬件連接是否出錯,比如網(wǎng)卡設(shè)置是否正確、比如網(wǎng)線是否連通,再考慮IP地址設(shè)置是否正確。也可以用于數(shù)據(jù)包一去一回所需耗的時間。使用命令:Ping IP地址。
ping命令就會將目的服務(wù)器的 IP 地址,數(shù)據(jù)大小,往返花費的時間打印到屏幕上。如下圖:
traceroute命令:traceroute命令是一款充分利用 ICMP 差錯報文類型的應(yīng)用,其主要用作追蹤路由信息。它的實現(xiàn)是利用從每個機器節(jié)點之間的IP報的TTL從1開始遞增同時發(fā)送UDP包,當(dāng)出錯則接受ICMP包的超時錯誤信息。
我們參考下圖,就能清楚的描述 traceroute 的整個過程。
tracerouter發(fā)UDP,為啥出錯會回ICMP?正常情況下,協(xié)議棧能正常走到UDP,當(dāng)然正常返回UDP。但是,你主機不可達(dá),是IP層的(還沒到UDP)。IP層,當(dāng)然只知道回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ā)送的問題作出診斷,從而采取適當(dāng)措施來解決問題。
ICMP本身是網(wǎng)絡(luò)層的一個協(xié)議,但是它的報文不是直接傳送給數(shù)據(jù)鏈路層,而是要封裝IP數(shù)據(jù)包,然后再傳送給數(shù)據(jù)鏈路層。ICMP的差錯和控制信息傳輸只是要解決IP可能出現(xiàn)的不可靠問題,它不能獨立于IP而單獨存在,因此應(yīng)該把它視為IP的一個部分,歸于IP體系。
ICMP協(xié)議報文
協(xié)議報文
ICMP報文中各字段含義如下:
- 類型:占1字節(jié),表示ICMP消息的類型。
- 代碼:占l字節(jié),進(jìn)一步劃分ICMP消息的子類型,如對類型3(目的不可達(dá))又細(xì)分為目的網(wǎng)絡(luò)不可達(dá)(代碼0)、目的主機不可達(dá)(代碼2)、目的協(xié)議不可達(dá)(代碼3)、目的端口不可達(dá)(代碼4)等。
- 校驗和:占2字節(jié),對ICMP報文首部和數(shù)據(jù)進(jìn)行校驗。
- 第4個字段:占4字節(jié),內(nèi)容取決于ICMP報文的類型,有的類型不定義該字段。
- 數(shù)據(jù)部分:內(nèi)容和長度取決于ICMP報文的類型。
ICMP消息的類型分為查詢報文,差錯控制報文:
ICMP報文類型 | 類型的值 | 說明
查詢報文 | 8 | 回應(yīng)請求
查詢報文 | 0 | 應(yīng)答報文
查詢報文 | 13 | 時間戳請求
查詢報文 | 14 | 應(yīng)答報文
查詢報文 | 17 | 子網(wǎng)掩碼請求
查詢報文 | 18 | 應(yīng)答報文
查詢報文 | 10 | 路由查詢
查詢報文 | 9 | 通告報文
差錯控制報文 | 3 | 目標(biāo)不可達(dá)
差錯控制報文 | 4 | 源端控制
差錯控制報文 | 5 | 重定向
差錯控制報文 | 11 | 超時
差錯控制報文 | 12 | 報文參數(shù)出錯
ICMP代碼類型:
代碼 | 含義
0 | 目標(biāo)網(wǎng)絡(luò)不可達(dá)
1 | 目標(biāo)主機不可達(dá)
2 | 目標(biāo)協(xié)議不可達(dá)
3 | 目標(biāo)端口不可達(dá)
4 | 需要分段且已設(shè)置DF
5 | 源路由失敗
6 | 目的網(wǎng)絡(luò)未知
7 | 目的主機未知
8 | 源主機被隔離
9 | 目的網(wǎng)絡(luò)被強制禁止
10 | 目的主機被強制禁止
11 | 網(wǎng)絡(luò)不能達(dá)到指定的服務(wù)類型
12 | 主機不能達(dá)到指定的服務(wù)類型
13 | 因管理結(jié)構(gòu)的主機設(shè)置了過濾器而不可達(dá)
14 | 因主機所設(shè)置的優(yōu)先級收到破壞而不可達(dá)
15 | 因優(yōu)先級被刪除而使主機不可達(dá)
了解了ICMP協(xié)議的報文了,我們來看下ping命令實現(xiàn)的ICMP協(xié)議的整個傳輸流程。ICMP 是 IP 的上層協(xié)議,但是ICMP也分擔(dān)了IP的一部分功能。下面展示了ICMP協(xié)議的實現(xiàn)的圖解。
? ?