国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年07月15日(星期二)

2019年07月15日 | STM32開發(fā)筆記52:STM32F4+DP83848以太網(wǎng)通信指南系列(六)

發(fā)布者:rnm888 來源: eefocus關鍵字:STM32  STM32F4  DP83848  以太網(wǎng)通信  Wireshark 手機看文章 掃描二維碼
隨時隨地手機看文章

本章為系列指南的第六章,這一章我們暫時離開Keil,離開STM32,離開C語言,這一章我們要去了解一些以太網(wǎng)相關的知識,特別是學習使用大名鼎鼎的調(diào)試以太網(wǎng)通信程序的利器:WireShark。

幀結構

我們從小就聽說過計算機中全都是二進制的0和1,這個道理幾乎連考不上三本的文科生都懂,但是很難有直觀的感受,甚至連由16個bit,也就是16個二進制的0/1構成的十六進制0/F,再由兩個十六進制的0/F形成的0x00/0xFF這種Byte(字節(jié)),都很難直觀感受到,畢竟計算機世界太豐富了,各類色彩,圖片,網(wǎng)站,視頻,游戲充斥著我們的日常,所謂「亂花漸欲迷人眼,淺草才能沒馬蹄」,形形色色的計算機資源就是「亂花」,其背后單調(diào)的Byte才是「淺草」,我們在網(wǎng)絡通信時只需要Byte的顆粒度,至于細化到bit的精度,只有在研究純電子電路時才會涉及到。如果說如何傳輸bit是PHY層負責的問題,那么如何構造和解析Byte就是MAC層要肩負的責任了。

由Byte組成的一個個網(wǎng)絡幀,勢必要按照一定的格式進行排列,就像如果要你自己自己編排一個串口通信的協(xié)議,你也一定會考慮包頭、包尾、校驗位這些。

Ethernet V2協(xié)議在鏈路層規(guī)定了一個基本的幀結構,如下:

目標MAC源MAC類型數(shù)據(jù)循環(huán)冗余校驗FCS
6字節(jié)6字節(jié)2字節(jié)46-1500字節(jié)4字節(jié)

因此,最小的幀長度是6 + 6 + 2 + 46 + 4 = 64個Byte,最大長度是6 + 6 + 2 + 1500 + 4 = 1518個Byte。

上表最后4個Byte形成了一組循環(huán)冗余的CRC校驗數(shù)據(jù),很遺憾的是我們能通過軟件手段監(jiān)聽出來的幀結構都不會含有這段數(shù)據(jù),因為網(wǎng)卡在接受到報文后就會立即對數(shù)據(jù)進行校驗,凡是不滿足校驗規(guī)則的數(shù)據(jù)包會直接丟棄,不會觸發(fā)操作系統(tǒng)的以太網(wǎng)事件。因此你能監(jiān)聽到的報文都是符合規(guī)則的,網(wǎng)卡交給上層軟件應用時也會自動將校驗數(shù)據(jù)剝離。此外,具體的循環(huán)冗余CRC校驗的算法是什么大家也不用管了,在使用STM32調(diào)用發(fā)包指令時,MAC層會幫我們計算好的。

一個典型的ARP幀報文如下:

ff ff ff ff ff ff 00 11 0e 0b 03 8a 08 06 00 01

08 00 06 04 00 01 00 11 0e 0b 03 8a c0 a8 01 c7

00 00 00 00 00 00 c0 a8 01 fe 00 00 00 00 00 00

00 00 00 00 00 00 00 00 20 20 20 20


這是一個最簡單的60Byte的ARP報文(另有4個FCS校驗數(shù)據(jù)被網(wǎng)卡吞了,總長度64Byte),看上去是不是像是亂碼,完全無法理解,別著急,下面介紹網(wǎng)絡編程的神器WireShark。

WireShark·線路鯊魚

這款名字里帶有「鯊魚」的軟件,真的是名副其實,大鱷級的網(wǎng)絡編程神器:精確到微妙級別的底層網(wǎng)絡包監(jiān)聽,內(nèi)置上千種網(wǎng)絡協(xié)議,上下文分析得絲絲入扣,你通過它即可完全理解整個網(wǎng)絡上正在發(fā)生了什么。無論是初學網(wǎng)絡的思科學員想一窺網(wǎng)絡的究竟,還是努力工作的程序員需要進行協(xié)議的分析,亦或是躲在陰暗處的黑客試圖在交換機上刮起一場網(wǎng)絡風暴,WireShark都能助你一臂之力。

軟件下載地址:https://www.wireshark.org/#download

WireShark為了能夠監(jiān)聽到網(wǎng)絡底層的數(shù)據(jù)包,在Windows上使用了叫做winpcap的技術,而winpcap又是使用了libpcap這個庫,這樣的調(diào)用關系其實是為了解決一件事:能在操作系統(tǒng)上層操作底層網(wǎng)絡數(shù)據(jù)包。

我們平時在C++,JAVA中談論到的網(wǎng)絡編程,其實所處的層級都是高層,回想一下那些Socket編程所講到的知識,一般上來就會講TCP/UDP,也就是處在高層應用開發(fā)的高度來講,網(wǎng)絡編程非TCP即UDP,別無其他。在《STM32F4+DP83848以太網(wǎng)通信指南第一章:知識儲備》里我講到以太網(wǎng)分為很多層(按照OSI模型有七層,按照TCP/IP協(xié)議有五層),除了應用層以外,我們還有很多底層的數(shù)據(jù)包跑在網(wǎng)絡上(比如ARP數(shù)據(jù)包、ICMP數(shù)據(jù)包等),這些數(shù)據(jù)包大部分不是由一般編程人員通過各種網(wǎng)絡應用程序發(fā)起的,那么它們是由誰發(fā)起的,又是由誰來負責接受和解析呢?這個答案是網(wǎng)卡、交換機,以及操作系統(tǒng),這些數(shù)據(jù)包關系到網(wǎng)絡的通路、拓撲、路由,用戶層面一般不需要了解和控制,對操作系統(tǒng)來說,一般也是不會讓用戶隨意觸碰甚至自行構建網(wǎng)絡幀的。

WireShark利用winpcap做到了監(jiān)聽底層網(wǎng)絡包,它嚴格地限制了自己無法對網(wǎng)絡數(shù)據(jù)進行修改、編輯、轉發(fā)。一旦普通用戶對以太網(wǎng)的了解更多一些,并且能夠利用WireShark處理和轉發(fā)網(wǎng)絡包,那對于網(wǎng)絡安全真是一件非??植赖氖虑?。

說了這么多,其實都是在講一些周邊知識。WireShark的安裝步驟我就不贅述了,下載和安裝都是很簡單的,現(xiàn)在我們來看看上面提到的那份看上去像亂碼的ARP數(shù)據(jù)包,其實它就是我用WireShark捕獲到的,上面的「亂碼」只不過是我用十六進制的方式直接復制出來,接下來我們看看這份數(shù)據(jù)包在WireShark的幫助下會不會更清晰一點:

如上圖所示,在WireShark的幫助下,數(shù)據(jù)包中每一個結構都清晰可見,WireShark幫助我們將一堆十六進制的Byte理解得就如同json數(shù)據(jù)一樣清晰,其內(nèi)置的數(shù)千種網(wǎng)絡協(xié)議,使得WireShark對各種各樣的網(wǎng)絡包每一位的作用都了如指掌。在軟件的下方區(qū)域點擊任意一位Byte,它都會在中部區(qū)域將這一位的含義和作用清晰地顯示出來。

我們再來看一個稍微復雜點的IPV4數(shù)據(jù)包,是我們常用的一個ping指令發(fā)出去的ICMP幀,在WireShark上顯示74個Byte:

同樣,WireShark幫助我們理解起來要非常清晰,截圖其實并不能很好地體現(xiàn),我們在使用WireShark的時候隨時可以用鼠標點擊任意字節(jié),顯示其含義。

廣播和點對點

最后我們再介紹一些交換機的附帶知識,我們知道網(wǎng)絡幀一般會在開頭的6個字節(jié)標明這個網(wǎng)絡幀的接受設備的MAC地址,如果這個包要向局域網(wǎng)內(nèi)所有設備進行廣播,比如上面那個ARP包,這六個字節(jié)一般為FF FF FF FF FF FF,如果這個包要向一個特定的設備進行通信,這六個字節(jié)則為一個確定的MAC地址,比如上面那個ICMP包,其指向了交換機,交換機收到了以后需要向上行網(wǎng)絡請求。

如果局域網(wǎng)內(nèi)的主機A需要向主機B發(fā)送一個點對點的數(shù)據(jù),那么封裝后的以太網(wǎng)幀的前六個字節(jié)就為主機B的MAC地址,交換機收到后會查詢自己的維護的映射表,比如找到自己的端口2上的設備的MAC地址就是B的地址,那么交換機就向端口2上的網(wǎng)線投送這個數(shù)據(jù)包,交換機其他端口上的設備就收不到這則數(shù)據(jù)包了。

那么我們在做以太網(wǎng)協(xié)議分析時,一般是處于主機C的位置來監(jiān)聽和分析A和B的通信,大多數(shù)情況下他們之間是點對點通信,主機C在局域網(wǎng)中是觀察不到這些數(shù)據(jù)包的,因為交換機壓根就不將A和B的通信數(shù)據(jù)轉發(fā)給主機C。

這時候就要祭出又一款硬件神器了:帶有端口鏡像功能的網(wǎng)管型交換機

利用這種交換機,可以進入管理控制界面,配置端口映射,將設備A和設備B之間通信的雙向數(shù)據(jù)全都轉發(fā)給設備C,方便WireShark進行協(xié)議分析,最終我們可以根據(jù)分析出來的協(xié)議,在嵌入式STM32中編寫自己的協(xié)議棧,實現(xiàn)DIY的設備D,與設備A進行通信,取代設備B。

上圖就是我購買的一款網(wǎng)管型交換機中配置端口映射的界面。

小結

這一章我們對以太網(wǎng)的幀結構有了一個基本的認識,了解了網(wǎng)絡上跑的各種數(shù)據(jù)包在MAC層的表現(xiàn)形式,能夠運用WireShark觀察一些簡單的由各種十六進制數(shù)據(jù)組成的數(shù)據(jù)包,最后我們還了解了如何運用網(wǎng)管型交換機配置端口映射,在局域網(wǎng)中的C端監(jiān)聽A和B的通信。

以上,為下一步在STM32嵌入式設備中編寫網(wǎng)絡協(xié)議打下了基礎。


關鍵字:STM32  STM32F4  DP83848  以太網(wǎng)通信  Wireshark 引用地址:STM32開發(fā)筆記52:STM32F4+DP83848以太網(wǎng)通信指南系列(六)

上一篇:STM32開發(fā)筆記53:STM32F4+DP83848以太網(wǎng)通信指南系列(七)
下一篇:STM32開發(fā)筆記51:STM32F4+DP83848以太網(wǎng)通信指南系列(五)

推薦閱讀

隨著亞馬遜股價的一路飆升,亞馬遜CEO貝索斯的身價也隨著水漲船高。據(jù)悉,貝索斯如今的身價已經(jīng)達到了1433億美元,而處在富豪榜曾經(jīng)的“霸主”比爾蓋茨的身價也不過930億美元,相比之下整整高出了500億美元。同其他億萬富翁相比,貝索斯和蓋茨這500億美元的財富差額幾乎相當于谷歌聯(lián)合創(chuàng)始人謝爾蓋-布林(Sergey Brin)的全部凈資產(chǎn)(目前為520億美元),或億...
近年來,5G 熱度一直持續(xù)不斷,到了 2019 年,國內(nèi)外移動運營商紛紛加快 5G 網(wǎng)絡部署的腳步,5G 更是從之前虛無縹緲的概念,開始向商用落地轉型??v觀全球 5G 發(fā)展,目前至少有 87 個國家和地區(qū)總計 211 家移動運營商正在投資 5G,其中 15 家已商用;除了 5G 商用運營商的隊伍在不斷壯大,一系列 5G 套餐和資費也新鮮出爐。不過,對于...
近日,海克斯康《慧心智造》白皮書正式發(fā)布。全書共計13.5萬字,以制造業(yè)發(fā)展變革、智能制造關鍵技術、智能工廠策略架構、智能工廠實證方案與解決方案應用實例五大章節(jié)全方位地呈現(xiàn)了智能工廠圖景。 24項綜合解決方案、30家標桿企業(yè)成功案例,旨在全方位呈現(xiàn)海克斯康智能工廠解決方案,憑借以質量為核心的生態(tài)系統(tǒng),推動不同業(yè)務類型、不同智能化程度的制...
最近在學習飛思卡爾MC9S12G系列單片機底層驅動,看了很多,目前理解還不深,處于入門菜鳥級別,僅在此記錄下學習心得,后續(xù)會在實操中強化底層驅動開發(fā)能力,不能老是處于光說不練,搞些假把式。好了,言歸正傳。本文主要記錄筆者基于MC9S12G系列單片機flash擦寫,還望各路大神路過時,可指點一番。Flash本身是非易失性存儲,可以通過編程的方式擦寫其中的...

史海拾趣

問答坊 | AI 解惑

現(xiàn)在還有帶COM口的筆記本嗎?

本信息來自合作QQ群:AVR單片機學習與交流群(17727270) 群管理員在壇子里的ID:銅河 要有COM口,有并口。有網(wǎng)口…

查看全部問答∨

EP3C120F780 等效門數(shù)多少??

EP3C120F780是CYCLONE III 中比較大的FPGA,其相關介紹資料如下圖: 780個管腳,F(xiàn)BGA封裝,工業(yè)溫度(-40 到100度),商業(yè)溫度(0~85度) ES: 工程樣品, LEAD-FREE 表示啥意思?   此外上面也沒有介紹,其等效的邏輯門數(shù)量? 這而也 ...…

查看全部問答∨

WINCE USB攝像頭驅動成功,結果實時視頻速度太慢

這是一個大喜又大悲的結果,前天搞定了6410下USB攝像頭驅動,可以捕獲320X240 YUV420格式圖像,昨天修改成了實時視頻流的程序,結果大失所望,S3C6410的USB HOST是USB1.1協(xié)議的,全速12Mbps,所以我想獲取30FPS的圖像很難呀,實際測試結果是160MS一 ...…

查看全部問答∨

獲取-5v電源

用7805獲取+5v電源,當然用7905就可以獲取-5v電源 我的想法是,我能不能用運放把+5v輸出經(jīng)過運放反相輸出做-5電源輸出,我估計這樣的-5V電源不穩(wěn)定,忘高手說說我的想法行嗎? …

查看全部問答∨

補充一點

關鍵是ARN9,S3C2410的功耗問題,在有一定的外圍電路時,靜態(tài)功耗和工作功耗?…

查看全部問答∨

(慳錢十月)我的淘寶購物經(jīng)

淘寶購物特點是,一次性的,退不了的,所以\"兵者國之大事,不可不察也\" 一句話,挑最近成交多的,而且貨比三家,再有同賣家談好,別發(fā)生不愉快.   我上淘寶買東西主要有以下幾種方式: 一,急 我對急用的東東,不賣不行非買不可的,我貨比三家后,找 ...…

查看全部問答∨

阻塞賦值和非阻塞賦值,綜合出來硬件上的區(qū)別??

據(jù)我的總結如下: begin-end語句的各句話是順序執(zhí)行的; fork-join語句各句話是并行執(zhí)行的; 阻塞賦值“=”計算表達式和賦值一起進行; 非阻塞賦值“<=”先計算表達式,再在語句塊中統(tǒng)一賦值; 但是,唉,說實話還是搞得不明不白的??!比如begin- ...…

查看全部問答∨

STM32F103VC的FSMC同步模式怎么用啊

                                 請教版主主,有沒有相關的應用筆記,我用異步模式可以讀寫,但用同步模式就會跳到硬件錯誤中斷?!?

查看全部問答∨

BeagleBone 學習筆記03_2012_10_08

開貼說說sqlite移植 1)下載sqlite的源碼,解壓后進入文件夾,新建build文件夾 2)可使用../configure -help查看配置的參數(shù)說明項 3)進入build文件夾使用命令生成makefile文件:../configure --host=arm-arago-linux-gnueabi --prefix=/hom ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved