TCP/IP系列之網(wǎng)絡(luò)層IP協(xié)議
當(dāng)數(shù)據(jù)要在網(wǎng)際直接傳輸?shù)臅r(shí)候,路由器根據(jù)IP數(shù)據(jù)報(bào)進(jìn)行路由.
當(dāng)一臺(tái)主機(jī)要發(fā)送數(shù)據(jù)的時(shí)候,其目的主機(jī)一般為局域網(wǎng)內(nèi)的主機(jī)或者網(wǎng)外的主機(jī).
如果是局域網(wǎng)內(nèi)的主機(jī),主機(jī)發(fā)送的以太網(wǎng)幀的頭部目的mac地址為目的主機(jī)的mac地址,不需要路由.
如果是網(wǎng)外的主機(jī),則將數(shù)據(jù)發(fā)到默認(rèn)的網(wǎng)關(guān),由網(wǎng)關(guān)路由器進(jìn)行路由到目的主機(jī),主機(jī)發(fā)送的以太網(wǎng)幀
頭部的目的mac地址為網(wǎng)關(guān)的mac地址.
IP數(shù)據(jù)報(bào)的協(xié)議規(guī)定的數(shù)據(jù)報(bào)格式如下圖:
IP協(xié)議不保證送達(dá),不保證順序.可靠性由上層協(xié)議保證.上層協(xié)議如TCP,UDP的信息在IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分.
下圖是通過Wireshark抓取的一個(gè)數(shù)據(jù)包:
路由器就要通過ip包的信息來為ip包尋找到一個(gè)合適的目標(biāo)來進(jìn)行傳遞,比如合適的主機(jī),或者合適的路由.路由器或者主機(jī)將會(huì)用如下的方式來處理某一個(gè)IP數(shù)據(jù)包
如果IP數(shù)據(jù)包的TTL(生命周期)以到,則該IP數(shù)據(jù)包就被拋棄.
搜索路由表,優(yōu)先搜索匹配主機(jī),如果能找到和IP地址完全一致的目標(biāo)主機(jī),則將該包發(fā)向目標(biāo)主機(jī) 搜索路由表,如果匹配主機(jī)失敗,則匹配同子網(wǎng)的路由器,這需要“子網(wǎng)掩碼(1.3.)”的協(xié)助.
如果找到路由器,則將該包發(fā)向路由器. 搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)號(hào)路由器,如果找到路由器,則將該包發(fā)向路由器.
搜索路由表,如果以上都失敗了,就搜索默認(rèn)路由,如果默認(rèn)路由存在,則發(fā)包
如果都失敗了,就丟掉這個(gè)包.
作者 kkdelta