關於區域網內兩主機之間單向ping通的問題

2021-06-20 15:19:49 字數 1099 閱讀 9325

在區域網內為什麼主機a可以ping通主機b,主機b卻ping不通主機a呢?

大家可以看一下ping命令的工作流程

假定主機a的ip位址是192.168.1.3,主機b的ip位址是192.168.1.2,都在同一子網內,則當你在主機a上執行「ping 192.168.1.2」後,都發生了些什麼呢?

首先,ping命令會構建乙個固定格式的icmp請求資料報,然後由icmp協議將這個資料報連同位址「192.168.1.2」一起交給ip層協議(和

icmp一樣,實際上是一組後台執行的程序),ip層協議將以位址「192.168.1.2」作為目的位址,本機ip位址作為源位址,加上一些其他的控制

資訊,構建乙個ip資料報,並在乙個對映表中查詢出ip位址192.168.1.2所對應的實體地址(也叫mac位址,熟悉網絡卡配置的朋友不會陌生,這是

資料鏈路層協議構建資料鏈路層的傳輸單元——幀所必需的),一併交給資料鏈路層。後者構建乙個資料幀,目的位址是ip層傳過來的實體地址,源位址則是本機

的實體地址,還要附加上一些控制資訊,依據乙太網的介質訪問規則,將它們傳送出去。

主機b收到這個資料幀後,先檢查它的目的位址,並和本機的實體地址對比,如符合,則接收;否則丟棄。接收後檢查該資料幀,將ip資料報從幀中提取出來,交

給本機的ip層協議。同樣,ip層檢查後,將有用的資訊提取後交給icmp協議,後者處理後,馬上構建乙個icmp應答包,傳送給主機a,其過程和主機a

傳送icmp請求包到主機b一模一樣。

至於只能單向ping通的原因有以下兩點:

1.主機a的防火牆沒有關閉,解決方法:執行service iptables stop

2.主機a上有兩張或以上的網絡卡跟主機b在同一網段內,

當從這台主機ping其他的機器時,會存在這樣的問題:

(1)主機不知道將資料報發到哪個網路介面,因為有兩個網路介面都連線在同一網段;

(2)主機不知道用哪個位址作為資料報的源位址。因此,從這台主機去ping其他機器,ip層協議會無法處理,超時後,ping

就會給出乙個「超時無應答」的錯誤資訊提示。

此中部分內容是從網上查的資料,但確實解決了長期困擾我的問題,即單向ping通問題,在此寫出來是為了讓更多的人知道,讓有類似問題的朋友早日解決問題。

區域網內的單向ping通問題。

怎麼辦?於是我就試試ping,其實我不願意用,因為我認為在乙個網段內,都能上www,怎麼就不通呢?結果讓我深思?單向ping通。為什麼?不解。於是乎,google搜尋 區域網內 單方向ping 果然有討論的 什麼原因引起只能單方向ping通呢?當網路出現問題時,我們最常用的測試工具就是 ping 命...

區域網內兩台Ubuntu主機傳遞檔案的方法

用交叉網線直接連線兩台ubuntu主機,構成區域網後,互傳檔案的命令如下 從遠端主機拷貝資料夾至本地主機的命令 scp r highlight 10.110.61.238 home highlight document home highlight這裡,highlight是遠端主機的使用者名稱,10...

允許區域網內其他主機訪問本地MySql資料庫

今天資料庫出現點問題,請教同事給我看看,發現他不能通過 ip 位址訪問我的本地 mysql 伺服器。於是上網找了一下,步驟如下 1 cmd 開啟指令頁面 c mysql u root p 輸入密碼 mysql 2 開啟 mysql 資料庫 use mysql 檢索 user 和 host 字段 my...