1.若dns快取中沒有相關資料,則ie瀏覽器先向dns
伺服器發出dns請求:
這一過程的目的是獲取www.sina.com這個網域名稱所對應的ip位址;
ie瀏覽器向本機dns模組發出dns請求,dns模組生成相關的dns報文;
dns模組將生成的dns報文傳遞給傳輸層的udp協議單元;
udp協議單元將該資料封裝成udp資料報,傳遞給網路層的ip協議單元;
ip協議單元將該資料封裝成ip資料報,其中目的ip位址為dns伺服器的ip位址;
封裝好的ip資料報將傳遞給資料鏈路層的協議單元進行傳送;
傳送時如果arp快取中沒有相關資料,則傳送arp廣播請求,等待arp回應;
得到arp回應後,將ip位址與路由下一跳mac位址對應的資訊寫入arp快取表;
這個**過程可能會進行多次,這取決於dns伺服器在校園網中的位置;
dns請求被傳送到dns伺服器的資料鏈路層協議單元;
dns伺服器的資料鏈路層協議單元解析收到的資料幀,將其內部所含有的ip資料報傳遞給網路層ip協議單元;
dns伺服器的ip協議單元解析收到的ip資料報,將其內部所含有的udp資料報傳遞給傳輸層的udp協議單元;
dns伺服器的udp協議單元解析收到的udp資料報,將其內部所含有的dns報文傳遞給該伺服器上的dns服務單元;
dns服務單元收到dns請求,將網域名稱解析為對應的ip位址,產生dns回應報文;
(所有應用層報文必須通過傳輸層、網路層和資料鏈路層,因此在下面的敘述中,我將簡化這一過程的敘述,簡化形式如下面的樣子,其中單箭頭為本機內部傳遞,雙箭頭為網路上的傳送)
dns回應報文→udp→ip→mac→→請求網域名稱解析的主機;
請求網域名稱解析的主機收到資料幀,該資料幀→ip→udp→dns→ie瀏覽器;
將網域名稱解析的結果以網域名稱和ip位址對應的形式寫入dns快取表。
2.ie瀏覽器與www.sina.com.cn建立tcp連線:
ie瀏覽器向www.sina.com.cn發出tcp連線請求報文;
該請求tcp報文中的syn標誌位被設定為1,表示連線請求;
該tcp請求報文→ip(dns)→mac(arp)→→校園網關→→www.sina.com.cn主機;
該tcp請求報文經過ip層時,填入的目的ip位址就是上面dns過程獲得的ip位址;
經過資料鏈路層時,若mac位址不明,還要進行上面所敘述的arp過程;
www.sina.com.cn收到的資料幀→ip→tcp,tcp協議單元會回應請求應答報文;
該請求應答tcp報文中的syn和ack標誌位均被設定為1,表示連線請求應答;
該tcp請求應答報文→ip→mac(arp)→→校園網關→→請求主機;
請求主機收到資料幀→ip→tcp,tcp協議單元會回應請求確認報文;
該請求應答tcp報文中的ack標誌位被設定為1,表示連線請求確認;
該tcp請求確認報文→ip→mac(arp)→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的資料幀→ip→tcp,連線建立完成;
在這個過程中,任何乙個報文出錯或超時,都要進行重傳;
這個過程被稱為tcp建立連線的三次握手。
3.ie瀏覽器開始http訪問過程
ie瀏覽器向www.sina.com.cn發出http-get方法報文;
該http-get方法報文→tcp→ip→mac→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的資料幀→ip→tcp→http,http協議單元會回應http協議格式封裝好的html超文字形式資料;
http-html資料→tcp→ip→mac(arp)→→校園網關→→請求主機;
請求主機收到的資料幀→ip→tcp→http→ie瀏覽器,瀏覽器會以網頁形式顯示html超文字,就是我們所看到的網頁。
4.斷開tcp連線
ie瀏覽器向www.sina.com.cn發出tcp連線結束請求報文;
該請求tcp報文中的fin標誌位被設定為1,表示結束請求;
該tcp結束請求報文→ip→mac(arp)→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的資料幀→ip→tcp,tcp協議單元會回應結束應答報文;
該結束應答tcp報文中的fin和ack標誌位均被設定為1,表示結束應答;
該tcp結束應答報文→ip→mac(arp)→→校園網關→→請求主機;
這個過程需要雙向進行,因此www.sina.com.cn主機也會按上述流程再做一次;
整個過程被稱為tcp斷開連線的四次握手。
呵呵,好麻煩的乙個過程對不對?我也寫了好長時間誒,希望對你有所幫助!
這個人很耐心,已經解釋得很詳細了。不過我是個吹毛求疵的人,非得把每個細節都弄得很清楚。其中最讓我糾結的是ip位址轉換到mac位址的過程。或許你說那不就是arp協議嗎?那你就想的簡單了點。
首先ip位址是網路層(layer 3)的概念,mac位址是資料鏈路層(layer 2)的概念。
網路層主要任務是路由,而資料鏈路層是提供相鄰兩個網路實體間端到端的資料傳輸,可以理解成為區域網內兩台機器間的資料傳輸。
資料鏈路層的作用範圍是區域網,那麼其mac位址肯定是區域網內某台機器的mac位址。並且arp協議的作用範圍也是區域網。但是ip資料報的目的位址未必都是區域網內的,如果不是,在區域網內進行arp廣播查詢該ip位址對應的mac位址,肯定沒有人回應,因為大家誰都不擁有這個ip位址。
於是先要知道ip位址是不是同乙個區域網裡的,這個不難,使用子網掩碼就可以確定。如果是同乙個區域網,那麼就可以arp了。那如果不是呢??
這就要靠網路層了。到這時候我才驚訝地發現,路由表不是只在路由器上才有的(以前我可都是這麼以為的),本機上照樣有,而且也有路由過程。在 windows下cmd下輸入命令「route print」,就可以看到本機上的路由表(linux下是"route")。部分路由表項如下(我機器的ip是10.77.100.113,子網掩碼是 255.255.255.0 ):
network destination netmask gateway inte***ce metric
0.0.0.0 0.0.0.0 10.77.100.1 10.77.100.113 10
10.77.100.0 255.255.255.0 10.77.100.113 10.77.100.113 10
最後一條其實意思就是,如果ip位址是同乙個區域網中的位址,則直接傳送到該ip位址就可以了(表中看起來是路由給自己,我估計是這個意思,linux下就是乙個星號表示的,更能理解)。
中間那條其實就是預設路由路徑(因為任何乙個ip位址 and 0.0.0.0 後肯定都是 0.0.0.0 的),其意思就是,如果其他路由項都不符合,則傳送到預設閘道器。
扯遠一點。預設情況下,windows機器不會充當路由器的功能,它不會**(forward)自己接受到的但是目的位址不是自己的包。但是這是可以設定的,通過開啟路由**功能,就能充當乙個路由器了。這樣,區域網中另一台機器就可以把預設閘道器設定為你的ip,然後他的所有到外網的包都先交給你,然後你再路由**出去。貌似多次一舉,但是這樣你的機器可以控制別人的上網功能。譬如乙個家裡,老爸把他兒子的機器的預設閘道器設定為自己的機器的,當這個狡猾的老爸不想讓兒子上網的時候,就關閉自己機器的路由**功能,可憐的兒子就上不了網了,而且不知道為什麼。-_-!!
譬如xp下可以修改登錄檔項:hkey_local_machine \system\currentcontrolset\services\tcpip \parameters 中的 ipenablerouter=1。
順便說說命令「route -f」,它可以刪除路由表中涉及預設閘道器的項。我曾經使用該命令刪除掉中間那條,結果訪問外網就不行了,實際錯誤就是找不到路由項。
和同宿舍乙個哥們討論該問題,當他發現「route -f」可以讓機器不能上外網時,立馬說可以用這個搞惡作劇啊,讓人上不了網,估計沒幾個人能找出問題來,只有重啟機器。我汗-_-!!
1、首先得到ip包需要送達的目的位址 ip-des ;
3、在arp快取中查詢 ip-next 對應的mac位址,如果快取中沒有,再到區域網中使用arp協議進行詢問;
4、得到了mac位址,一切就好辦了----將mac位址放到幀頭,傳送資料。
由此看出絕不是僅僅arp那麼簡單。
幾個有用的命令(注意linux下需要root許可權):
檢視本地路由表:
windows: route print
linux: route
檢視本地arp快取:
windows: arp -a
linux: arp
瀏覽器訪問乙個位址的大概操作步驟
如我們需要訪問www.imooc.com位址,過程如下 1.瀏覽器 如chrome 搜尋自身的dns 快取 2.搜尋作業系統自身的dns快取 瀏覽器沒有找到快取或快取已經失效 3.讀取本地的 host 檔案 4.瀏覽器 發起乙個dns 的 乙個系統呼叫 1 寬頻運營商伺服器檢視本身快取 2 運營商伺...
瀏覽器訪問網頁過程
在瀏覽器輸入 最後,瀏覽器呈現出相應網頁,這個過程究竟發生了什麼?第一步,解析網域名稱,找到主機ip 1 瀏覽器會快取dns一段時間,一般2 30分鐘不等。如果有快取,直接返回ip,否則下一步。2 快取中無法找到ip,瀏覽器會進行乙個系統呼叫,查詢hosts檔案。如果找到,直接返回ip,否則下一步。...
當你在瀏覽器中輸入乙個位址(一) 瀏覽器檢查位址
瀏覽器是我們日常都會用的乙個軟體,那麼,當你向瀏覽器的位址列輸入乙個位址 url 時,它背後究竟發生了哪些故事呢?對於瀏覽器來說,一般可以支援兩種位址的輸入 ip 192.直接訪問和通過網域名稱 www.com 訪問。在你輸入乙個位址後,瀏覽器最先做的就是檢查你的位址是否 合法 譬如,用ip的時候有...