前言
最近計網老師要求參照課本中的PPPoE協議,分析自己用wireShark抓取的ftp使用者名稱報文,分析幀結構,解析報文內容。
計算機網路體系結構
分析報文,我們就需要回頭認真地瞭解計算機網路體系結構。
(主要是因為忘了)
計算機網路是個非常複雜的系統。
設想一下:連線在網路上的兩臺計算機要互相傳送檔案。我們需要做什麼?
顯然,在這兩臺計算機之間必須有一條傳送資料的通路。
但這還遠遠不夠。我們還有很多工作需要去完成:
- 計算機保證要資料能在這條通路上正確傳送和接收
- 要告訴網路如何識別接收資料的計算機。
- 必須查明對方計算機是否已開機,並且與網路連線正常。
- 必須弄清楚,對方是否已做好接收檔案和儲存檔案的準備工作。
- 若計算機的檔案格式不相容,則至少其中一臺計算機應完成格式轉換功能。
- 對出現資料傳送錯誤、重複或丟失,網路中某個結點交換機出現故障等,應採取措施保證對方能夠收到正確的檔案。
為了設計和解決這些問題,我們最好把這些龐大而複雜的問題轉換成小的問題。也就是分層
如何把這些問題分層,形成一種體系結構呢?
- 國際標準化組織於1977年開始研究該問題,最後提出了一個 OSI標準,但可惜的是,由於實現複雜,效率較低,制定週期長等問題,並沒有得到廣泛的應用。並且在當時,基於TCP/IP的網際網路已在全球大範圍地成功執行,OSI標準的產品並沒有多少人生產。
- 而另一個標準:TCP/IP標準。如今規模最大、覆蓋全球的網際網路應用的的就是TCP/IP標準。成為了事實上的國際標準。
讓我們來看看這兩種標準是如何分層的:
OSI分為圖中的七層協議,TCP/IP標準分為圖中的四層協議。
OSL的七層協議體系結構的概念清楚,理論也較完整,但它既複雜又不實用。
TCP/IP體系結構則不同,但它現在卻得到了非常廣泛的應用。TCP/IP是一個四層
體系結構, 它包含應用層、運輸層、網際層和網路介面層(用網際層這個名字
是強調這一層是為了解決不同網路的互連問題)。
不過從實質上講,TCP/IP只有最上面的三層,因為最下面的網路介面層並沒有什麼具體內容。
因此在學習計算機網路的原理時往往採取折中的辦法,即綜合OSI和TCP/IP的優點,採用一種只有五層協議的體系結構。
資料流動
OK, 有了兩臺計算機之間傳輸資料的體系結構之後,讓我們開始傳輸資料吧。
傳輸開始。 我的計算機向小明的計算機開始傳送資料。
於是我計算機的一個應用程式 AP1 嘗試 向小明計算機的一個應用程式 AP2 傳輸資料。
我的傳輸
此時我要傳輸的資料按照五層協議自頂向下流動。
分別通過應用層,運輸層,網路層,資料鏈路層,物理層。
- 應用層: 資料經過應用層時,它給資料新增了必要的控制資訊。應用層定義了應用程式間互動的規則。 這些規則有HTTP協議、DNS協議、SMTP協議等
- 運輸層: 運輸層收到應用層傳給它的資訊後,新增了自己的控制資訊,也傳給了下一層。運輸層作用是向上面的運輸層提供通訊服務。協議有TCP,UDP。
- 網路層: 網路層將運輸層傳給它的報文段或使用者使用者資料包封裝成分組或包進行傳輸,分組的資料叫做IP資料包。協議使用的是IP協議。
- 資料鏈路層:資料鏈路層將網路層傳下來的IP資料包封裝成幀,每一幀都包括資料和必要的控制資訊,使接受端能夠知道哪一個位元開始,哪一個位元結束。並提供糾錯功能。
- 物理層: 物理層將資料位元流,通過物理傳輸媒體,如電纜等傳輸出去。
小明的接收
資料位元流通過物理傳輸媒體到了小明計算機這後,通過物理層到應用層,由下到上的層層操作,小明計算機的程式AP2就能接受到資料了。
分析FTP報文內容
這是用wireShark捕獲到的報文內容。
對應的分層如圖
Frame 物理層的資料幀
點選Frame後,底下亮起了所有的資料位元組。它代表所有的位元組。
利用捕獲工具捕獲到的是位元流,它被層層封裝,共65byte。
Ethernet II: 資料鏈路層乙太網幀頭部資訊
“地址”指的是mac地址,即硬體地址或實體地址。
- 目的地址佔6byte,即小明mac地址為34:c9:3d:99:53:c7。
- 源地址佔6byte,即本機的mac地址為:34:36:3b:d4:14:72。
- 0x0800即表示高層(網路層)使用IP資料包,利用IPv4協議, 佔2byte.
乙太網幀的結構如下:
你可能會問為什麼沒有圖中的FCS?
答:
Wireshark 抓包前,在物理層網路卡已經去掉了一些之前幾層加的東西,比如前導同步碼,FCS等等,之後利用校驗碼CRC校驗,正確時才會進行下一步操作,這時才開始進行抓包,因此,抓包軟體抓到的是去掉前導同步碼、FCS之外的資料,沒有校驗欄位。
IPV4 網路層
可以看到資料為:版本為IPv4,首部長度20byte。不使用區分服務。總長度51byte。標識為4,標誌flag為0,不分片。片偏移為0。TTL為64,協議號為6,使用TCP協議。首部檢驗和沒有確認。源ip192.168.1.13,目的ip為本機ip192.168.1.15。
TTL 欄位用來限定該包可以在 Internet上傳輸多少跳(hops),一般該值設定為 64、128等。
TCP 運輸層
可以看到資料為:源埠為50668,目的埠為21,序列號為1,確認號為1,標誌位位0x018,設定了ACK和PSH標誌位。 在
另外在捕獲的包中,可以看到通過三次握手建立TCP連線。
應用層 FTP
這裡應用層用的是FTP協議。資料內容非常簡單,請求登陸USR, 賬號為 soft
感想
在這次總結整理中對計算機網路結構體系有了更深的瞭解。想不到從應用層簡單的資料到物理層需要新增這麼多資料。
還是剛開始學習計算機網路,繼續認真學習下去。