找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1494|回復(fù): 0
收起左側(cè)

IP協(xié)議

[復(fù)制鏈接]
ID:107189 發(fā)表于 2016-3-5 23:31 | 顯示全部樓層 |閱讀模式
把這三個協(xié)議放到一起學(xué)習(xí)是因為這三個協(xié)議處于同一層,ARP協(xié)議用來找到目標主機的Ethernet網(wǎng)卡Mac地址,IP則承載要發(fā)送的消息。數(shù)據(jù)鏈路層可以從ARP得到數(shù)據(jù)的傳送信息,而從IP得到要傳輸?shù)臄?shù)據(jù)信息。
1.IP協(xié)議IP協(xié)議是TCP/IP協(xié)議的核心,所有的TCP,UDP,IMCP,IGCP的數(shù)據(jù)都以IP數(shù)據(jù)格式傳輸。要注意的是,IP不是可靠的協(xié)議,這是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達以后的處理機制--這被認為是上層協(xié)議--TCP或UDP要做的事情。所以這也就出現(xiàn)了TCP是一個可靠的協(xié)議,而UDP就沒有那么可靠的區(qū)別。這是后話,暫且不提
1.1.IP協(xié)議頭如圖所示

挨個解釋它是教科書的活計,我感興趣的只是那八位的TTL字段,還記得這個字段是做什么的么?這個字段規(guī)定該數(shù)據(jù)包在穿過多少個路由之后才會被拋棄(這里就體現(xiàn)出來IP協(xié)議包的不可靠性,它不保證數(shù)據(jù)被送達),某個ip數(shù)據(jù)包每穿過一個路由器,該數(shù)據(jù)包的TTL數(shù)值就會減少1,當該數(shù)據(jù)包的TTL成為零,它就會被自動拋棄。這個字段的最大值也就是255,也就是說一個協(xié)議包也就在路由器里面穿行255次就會被拋棄了,根據(jù)系統(tǒng)的不同,這個數(shù)字也不一樣,一般是32或者是64,Tracerouter這個工具就是用這個原理工作的,tranceroute的-m選項要求最大值是255,也就是因為這個TTL在IP協(xié)議里面只有8bit。
現(xiàn)在的ip版本號是4,所以也稱作IPv4,F(xiàn)在還有IPv6,而且運用也越來越廣泛了。
1.2.IP路由選擇當一個IP數(shù)據(jù)包準備好了的時候,IP數(shù)據(jù)包(或者說是路由器)是如何將數(shù)據(jù)包送到目的地的呢?它是怎么選擇一個合適的路徑來"送貨"的呢?
最特殊的情況是目的主機和主機直連,那么主機根本不用尋找路由,直接把數(shù)據(jù)傳遞過去就可以了。至于是怎么直接傳遞的,這就要靠ARP協(xié)議了,后面會講到。
稍微一般一點的情況是,主機通過若干個路由器(router)和目的主機連接。那么路由器就要通過ip包的信息來為ip包尋找到一個合適的目標來進行傳遞,比如合適的主機,或者合適的路由。路由器或者主機將會用如下的方式來處理某一個IP數(shù)據(jù)包
  • 如果IP數(shù)據(jù)包的TTL(生命周期)以到,則該IP數(shù)據(jù)包就被拋棄。
  • 搜索路由表,優(yōu)先搜索匹配主機,如果能找到和IP地址完全一致的目標主機,則將該包發(fā)向目標主機
  • 搜索路由表,如果匹配主機失敗,則匹配同子網(wǎng)的路由器,這需要“子網(wǎng)掩碼(1.3.)”的協(xié)助。如果找到路由器,則將該包發(fā)向路由器。
  • 搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)號(第一章有講解)路由器,如果找到路由器,則將該包發(fā)向路由器。
  • 搜索陸游表,如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發(fā)包
  • 如果都失敗了,就丟掉這個包。
這再一次證明了,ip包是不可靠的。因為它不保證送達。
1.3.子網(wǎng)尋址IP地址的定義是網(wǎng)絡(luò)號+主機號。但是現(xiàn)在所有的主機都要求子網(wǎng)編址,也就是說,把主機號在細分成子網(wǎng)號+主機號。最終一個IP地址就成為 網(wǎng)絡(luò)號碼+子網(wǎng)號+主機號。例如一個B類地址:210.30.109.134。一般情況下,這個IP地址的紅色部分就是網(wǎng)絡(luò)號,而藍色部分就是子網(wǎng)號,綠色部分就是主機號。至于有多少位代表子網(wǎng)號這個問題上,這沒有一個硬性的規(guī)定,取而代之的則是子網(wǎng)掩碼,校園網(wǎng)相信大多數(shù)人都用過,在校園網(wǎng)的設(shè)定里面有一個255.255.255.0的東西,這就是子網(wǎng)掩碼。子網(wǎng)掩碼是由32bit的二進制數(shù)字序列,形式為是一連串的1和一連串的0,例如:255.255.255.0(二進制就是11111111.11111111.11111111.00000000)對于剛才的那個B類地址,因為210.30是網(wǎng)絡(luò)號,那么后面的109.134就是子網(wǎng)號和主機號的組合,又因為子網(wǎng)掩碼只有后八bit為0,所以主機號就是IP地址的后八個bit,就是134,而剩下的就是子網(wǎng)號碼--109。
2. ARP協(xié)議還記得數(shù)據(jù)鏈路層的以太網(wǎng)的協(xié)議中,每一個數(shù)據(jù)包都有一個MAC地址頭么?我們知道每一塊以太網(wǎng)卡都有一個MAC地址,這個地址是唯一的,那么IP包是如何知道這個MAC地址的?這就是ARP協(xié)議的工作。
ARP(地址解析)協(xié)議是一種解析協(xié)議,本來主機是完全不知道這個IP對應(yīng)的是哪個主機的哪個接口,當主機要發(fā)送一個IP包的時候,會首先查一下自己的ARP高速緩存(就是一個IP-MAC地址對應(yīng)表緩存),如果查詢的IP-MAC值對不存在,那么主機就向網(wǎng)絡(luò)發(fā)送一個ARP協(xié)議廣播包,這個廣播包里面就有待查詢的IP地址,而直接收到這份廣播的包的所有主機都會查詢自己的IP地址,如果收到廣播包的某一個主機發(fā)現(xiàn)自己符合條件,那么就準備好一個包含自己的MAC地址的ARP包傳送給發(fā)送ARP廣播的主機,而廣播主機拿到ARP包后會更新自己的ARP緩存(就是存放IP-MAC對應(yīng)表的地方)。發(fā)送廣播的主機就會用新的ARP緩存數(shù)據(jù)準備好數(shù)據(jù)鏈路層的的數(shù)據(jù)包發(fā)送工作。
一個典型的arp緩存信息如下,在任意一個系統(tǒng)里面用“arp -a”命令:
Interface: 192.168.11.3 --- 0x2
  Internet Address      Physical Address      Type
  192.168.11.1          00-0d-0b-43-a0-2f     dynamic
  192.168.11.2          00-01-4a-03-5b-ea     dynamic

都會得到這樣的結(jié)果。
這樣的高速緩存是有時限的,一般是20分鐘(伯克利系統(tǒng)的衍生系統(tǒng))。

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表