前言
最近計網老師要求參照課本中的PPPoE協議,分析自己用wireShark抓取的ftp用户名報文,分析幀結構,解析報文內容。
計算機網絡體系結構
分析報文,我們就需要回頭認真地瞭解計算機網絡體系結構。
(主要是因為忘了)
CNI_HKQ.jpg" title="[}9[L$G%~%1MMT
CNI_HKQ.jpg">
計算機網絡是個非常複雜的系統。
設想一下:連接在網絡上的兩台計算機要互相傳送文件。我們需要做什麼?
顯然,在這兩台計算機之間必須有一條傳送數據的通路。
但這還遠遠不夠。我們還有很多工作需要去完成:
- 計算機保證要數據能在這條通路上正確發送和接收
- 要告訴網絡如何識別接收數據的計算機。
- 必須查明對方計算機是否已開機,並且與網絡連接正常。
- 必須弄清楚,對方是否已做好接收文件和存儲文件的準備工作。
- 若計算機的文件格式不兼容,則至少其中一台計算機應完成格式轉換功能。
- 對出現數據傳送錯誤、重複或丟失,網絡中某個結點交換機出現故障等,應採取措施保證對方能夠收到正確的文件。
為了設計和解決這些問題,我們最好把這些龐大而複雜的問題轉換成小的問題。也就是分層
如何把這些問題分層,形成一種體系結構呢?
- 國際標準化組織於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
感想
在這次總結整理中對計算機網絡結構體系有了更深的瞭解。想不到從應用層簡單的數據到物理層需要添加這麼多數據。
還是剛開始學習計算機網絡,繼續認真學習下去。