網路架構大概論2-網路模型、封包架構、解析OSI 7層作用

ADVERTISEMENT

4大層級的協定解析

如果前面的東西已經讓你頭昏腦脹、昏昏欲睡,筆者建議改天再來看下半段的內容;如果反而覺得精神抖擻,就請你把點心和飲料準備好,因為接下來是更難的東西,實際進入網路資料傳輸的過程,並了解有些什麼欄位,這些東西又是依據什麼製造出來的。

網路架構大概論2-網路模型、封包架構、解析OSI 7層作用▲DNS的訊息格式

應用層

應用層的協定非常多,像是網頁HTTP、郵件POP3、檔案FTP……接下來將舉幾個常用的協定說明,避免腦袋超載燒毀。

DNS

在我們實際和網頁伺服器連結之前,都必須先向DNS伺服器發送出請求,詢問www.techbang.com這個網址的實際IP位址,才能夠獲得60.199.208.218這串數字,網頁瀏覽器才能向正確的伺服器請求網頁資料。

DNS的訊息長度可變,主要分為5個區段:header、question、answer、authority、additional。其中header標明了其後4個區段相關的資訊,question有自行的格式,而其後3個區段的格式相同。

header長度固定為12 Byte,其中包含ID 16 bit,讓這個問題有個號碼,之後回傳過來的答案也會包含相同的號碼,讓電腦知道回傳的答案是對應哪個問題。QR欄位僅1  bit,數值為0時表示這個訊息為問題,為1時表示答案。OPCode(4 bit)為問題的型態,0為標準查詢、1為反向查詢、2為要求伺服器狀態、4為通知、5為更新,剩餘的值為空白或是未定義。

AA(1 bit)為1時表示給予回應的DNS伺服器,有獲得網域擁有者的授權。TC表示資料是否太大遭到截斷,RD為請求以遞回方式查詢,RA為回傳可以遞回方式查詢,Z部分有3個位元保留不使用。RCode為回應訊息的狀態,0表示正常、1表示問題有錯誤、2為DNS伺服器發生問題、3表示所查詢的網域不存在、5表示DNS伺服器因為設定策略的緣故,不回應問題,其它數值還有其它意義,或是保留未定義。QDCount、ANCount、NSCount、ARCount各為16 bit,分別代表後面有幾個問題/答案/管轄/額外資訊。

question欄位較為簡單,僅包含question  name、QType、QClass  3種,question name就是想要查詢的網域名稱、QType表示回應的格式、QClass為問題的等級,大部分設為1。

剩下的3種欄位格式皆相同,name擺放詢問的網域、type指出RData的類型、class為RData的等級、TTL為此答覆有效的時間,電腦便可建立此DNS查詢快取的有效時間、RData length為RData的資料長度、RData當然就是存放回覆的答案啦。

DNS查詢欄位內容,除header之外,並沒有固定的長度,但name會在結尾處加入0定位,其它3種欄位使用RData length得知資料長度。

DHCP

DHCP的發明給了網管莫大的好處,不必再逐台電腦設定IP位址這種煩人的東西。當有新電腦加入網路時,會向1個廣播位置發送查詢訊息,在此網路中的DHCP伺服器撈到這個查詢時,會回傳1個提供訊息(內含相關IP位址設定資料),表示我能夠提供IP位址給你。之後這台新加入網路的電腦繼續向廣播位址發送請求(因為可能不只1台DHCP伺服器可提供IP位址,所以要以廣播的方式告知沒被選中的DHCP伺服器),DHCP再回應1個確認訊息,至此新電腦獲取IP位址的流程宣告結束。

OP為封包傳遞方向,1表示由客戶端傳給伺服器端,相反傳遞方向時為2。HType表示網路類型,常用的Ethernet為1。HL定義網路硬體位址(MAC)的長度,在Ethernet環境下,其MAC長度為6 Byte,所以值為6。

hops開始由客戶端發送時的值為0,但若是需要跨不同子網路,每經過1個路由器,此值就加1。transsaction ID是個隨機數字,用戶端發送時會任意填入,伺服器回應時便把此號碼照抄,用戶端便可得知回應的封包是針對哪個要求封包。seconds丟出DHCP請求後經歷的時間,可讓伺服器在接收到大量請求後決定先回應誰(經過時間越久可能優先回覆)。flags為1時表示此封包利用廣播方式傳送,其餘皆未定義。Ciaddr、Yiaddr、Siaddr、Giaddr、Chaddr欄位都是填入位址,若是用戶端希望繼續使用上次的IP位址,則在Ciaddr中填入,Yiaddr則是填入伺服器欲分配給用戶端的位址。Siaddr為DHCP伺服器的自身IP位址,Giaddr則是在跨網域時,路由器的位址,Chadder則是用來填入用戶端網卡的MAC位址。

SName放入DHCP伺服器的名稱,File則是當用戶端需要經由網路開機時,等會兒將傳送的開機檔案名稱。options是選用欄位,包含DHCP用戶端可接受的DHCP封包長度,或是用戶端租用IP位址的期限……

網路架構大概論2-網路模型、封包架構、解析OSI 7層作用▲DHCP的欄位資料

改變埠號逃過網管過濾

絕大多數的應用程式,都喜歡使用特定的埠號,因此網管人員可在防火牆中設立黑名單,將部分封包擋下(如BitTorrent、Live Messenger、Skype⋯⋯),便可達到阻止用戶使用這些程式的目的,因此我們可以手動更改埠號,繞過這些限制。

如果網管人員比較狠,只在防火牆裡使用白名單,僅允許HTTP常用的80埠,那麼換埠號也無濟於事。

HTTP

HTTP超文本傳輸協定(HyperText Transfer Protocol),是現今網頁最常使用的協定。HTTP的格式並不像DNS有欄位可以填,而是直接以文字方式要求、回應,像是人與人溝通的模式。但這並不代表電腦能夠識別自然語言,HTTP還是有制定句型格式,以及什麼指令該做什麼事,整體來說偏向高階程式語言的感覺。HTTP使用method(方法)、path(路徑)、protocol(協定)下面就是1個簡單的HTTP協定範例:

GET /image/image001 HTTP/1.1

GET是HTTP中經常使用的指令,代表向伺服器要求某件檔案,而這檔案就是在image資料夾之下的image001。HTTP/1.1代表所使用的HTTP協定版本,在網路中有著1.0和1.1版,其它指令還有HEAD(不傳回整個資料,僅傳回header的訊息),DELETE(刪除特定檔案),POST(上傳資料請伺服器處理)等。

除了向伺服器發送檔案請求之外,還會附加一些header上去,例如下面這個例子:

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

User-Agent代表之後跟著的字串為目前網頁瀏覽器使用的版本,在此例中為Mozilla 4.0,還與Microsoft公司的Internet Explorer 5.5相容,以及使用Windows NT 5.0作業系統。所以以後遇到網頁上顯示你正在使用的網頁瀏覽器版本以及作業系統,不用再那麼訝異,以為自己的電腦被入侵了,其實是網頁瀏覽器發送出去的訊息。

以上列舉3個應用層的協定,若讀者對其它協定有興趣,可查閱TCP/IP相關書籍。

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則