門戶網(wǎng)站html模板app推廣公司
以太網(wǎng)簡(jiǎn)介
以太網(wǎng)(Ethernet)是一種計(jì)算機(jī)局域網(wǎng)技術(shù)。IEEE組織的IEEE 802.3標(biāo)準(zhǔn)制定了以太網(wǎng)的技術(shù)標(biāo)準(zhǔn),它規(guī)定了包括物理層的連線、電子信號(hào)和介質(zhì)訪問控制的內(nèi)容。以太網(wǎng)是目前應(yīng)用最普遍的局域網(wǎng)技術(shù),取代了其他局域網(wǎng)標(biāo)準(zhǔn)如令牌環(huán)、FDDI和ARCNET。
以太網(wǎng)的標(biāo)準(zhǔn)拓?fù)浣Y(jié)構(gòu)為總線型拓?fù)?#xff0c;但目前的快速以太網(wǎng)(100BASE-T、1000BASE-T標(biāo)準(zhǔn))為了減少?zèng)_突,將能提高的網(wǎng)絡(luò)速度和使用效率最大化,使用交換機(jī)(Switch hub)來進(jìn)行網(wǎng)絡(luò)連接和組織。如此一來,以太網(wǎng)的拓?fù)浣Y(jié)構(gòu)就成了星型;但在邏輯上,以太網(wǎng)仍然使用總線型拓?fù)浜虲SMA/CD(Carrier Sense Multiple Access/Collision Detection,即載波多重訪問/碰撞偵測(cè))的總線技術(shù)。
以太網(wǎng)只是組成互聯(lián)網(wǎng)的一個(gè)子集,以太網(wǎng)是現(xiàn)在主流的局域網(wǎng)標(biāo)準(zhǔn),而互聯(lián)網(wǎng)是指將大量的局域網(wǎng)連接起來,進(jìn)行資源的分享。另外,互聯(lián)網(wǎng)與以太網(wǎng)是兩個(gè)不同的概念,前者是范圍概念,后者是技術(shù)概念?;ヂ?lián)網(wǎng)(Internet)、廣域網(wǎng)(WAN)、局域網(wǎng)(LAN)可以算作一類,它們都是按照區(qū)域和范圍來分類的。而以太網(wǎng)(Ethernet)、ATM網(wǎng)和FDDI網(wǎng)可以算作一類,它們是按照傳輸技術(shù)分類的。
下面是一個(gè)局域網(wǎng)的示意圖:
-
OSI七層模型
為了實(shí)現(xiàn)網(wǎng)絡(luò)通信的標(biāo)準(zhǔn)化,國(guó)際標(biāo)準(zhǔn)化組織(International Organization for Standardization,ISO)將整個(gè)以太網(wǎng)通信結(jié)構(gòu)制定了?OSI (Open System Interconnection)模型,即開放式系統(tǒng)互聯(lián)模型,也就是著名的7層網(wǎng)絡(luò)模型。其示意圖如下:
OSI7層模型只是個(gè)理想模型,相當(dāng)于開發(fā)商提供的參考設(shè)計(jì),它并不是強(qiáng)制規(guī)范,一般的網(wǎng)絡(luò)系統(tǒng)只涉及其中幾層就可以完成通信。以最常見的TCP/IP協(xié)議為例,它就只分為了4層或者5層。4層和5層的差異在于,是否將最底層的兩層合并了。
-
第一層與第二層
以太網(wǎng)在第 1 層上涉及信號(hào)、在介質(zhì)中傳輸?shù)谋忍亓?、將信?hào)放到介質(zhì)上的物理組件以及各種拓?fù)?#xff0c;它在設(shè)備之間的通信中扮演主要角色。
數(shù)據(jù)鏈路子層極大地促進(jìn)了技術(shù)兼容性和計(jì)算機(jī)通信。
(1)MAC 子層負(fù)責(zé)將要用于傳送信息的物理組件,并且準(zhǔn)備通過介質(zhì)傳輸?shù)臄?shù)據(jù)。
(2)邏輯鏈路控制 (LLC) 子層保持通信過程所用物理設(shè)備的相對(duì)獨(dú)立性。
LLC 子層獲取網(wǎng)絡(luò)協(xié)議數(shù)據(jù)(通常是IPv4 數(shù)據(jù)包)并加入控制信息,幫助將數(shù)據(jù)包傳送到目的節(jié)點(diǎn)。第 2 層通過 LLC 與上層通信。
邏輯鏈路控制(LLC)
1.建立與上層的連接
2.將網(wǎng)絡(luò)層數(shù)據(jù)包封裝成幀
3.標(biāo)識(shí)網(wǎng)絡(luò)層協(xié)議
4.保持物理設(shè)備的相對(duì)獨(dú)立性
MAC——獲取到介質(zhì)的數(shù)據(jù)
介質(zhì)訪問控制 (MAC) 是數(shù)據(jù)鏈路層以太網(wǎng)子層的下半層,由硬件(NIC)實(shí)現(xiàn)
以太網(wǎng) MAC 子層主要有兩項(xiàng)職責(zé)
(1)數(shù)據(jù)封裝
(2)介質(zhì)訪問控制
數(shù)據(jù)封裝:幀定界、編址、錯(cuò)誤檢測(cè)
介質(zhì)訪問控制:對(duì)于將幀放入介質(zhì)中和從介質(zhì)中取下幀實(shí)施控制、介質(zhì)恢復(fù)
-
其它層
網(wǎng)絡(luò)層:網(wǎng)絡(luò)層通過 IP 尋址來建立兩個(gè)節(jié)點(diǎn)之間的連接,為源端的運(yùn)輸層送來的組,選擇合適的路由和交換節(jié)點(diǎn),正確無誤地按照地址傳送給目的端的傳輸層,就是我們常說的 IP 層。
傳輸層:傳輸層的作用是為上層協(xié)議提供端到端的可靠和透明的數(shù)據(jù)傳輸服務(wù),包括處理差錯(cuò)控制和流量控制等問題。該層向高層屏蔽了下層數(shù)據(jù)通信的細(xì)節(jié),使高層用戶看到的只是在兩個(gè)傳輸實(shí)體間的一條主機(jī)到主機(jī)的、可由用戶控制和設(shè)定的、可靠的數(shù)據(jù)通路。主要協(xié)議 TCP、UDP。
應(yīng)用層:OSI 參考模型中最靠近用戶的一層,為計(jì)算機(jī)用戶提供應(yīng)用接口和各種網(wǎng)絡(luò)服務(wù)。主要協(xié)議:HTTP,HTTPS,FTP,POP3、SMTP、SNMP、DHCP、 DNS。
傳輸層用得最多的兩個(gè)協(xié)議:TCP和UDP。它們倆最大的區(qū)別就是TCP是通信雙方是有鏈接的,可靠的通信;而UDP則是無連接的,不可靠的通信。
????????TCP通信需要通過“3次握手,4次揮手”來建立連接,所以通信比較可靠,但是因?yàn)槎喑鰜砹诉@些多余的動(dòng)作,所以傳輸速度通常比UDP慢,適合可靠性要求高的場(chǎng)合。UDP通信則不需要建立連接,直接往對(duì)面發(fā)就完事了,管你收到?jīng)]收到,收到你命好,收不到也不關(guān)我的事,反正就是一句話:聽天由命。因?yàn)檫@個(gè)特性UDP傳輸不可靠,容易丟包,誤碼率高,但是對(duì)應(yīng)的,傳輸速度就比較快一點(diǎn),比較適合語音通話、視頻通話這種應(yīng)用場(chǎng)合,偶爾丟幾幀沒關(guān)系,只要?jiǎng)e一直卡著就行。
????????網(wǎng)絡(luò)層用得最多的是IP協(xié)議,它解決的是如何從一個(gè)局域網(wǎng)傳輸?shù)搅硪粋€(gè)局域網(wǎng)的問題,實(shí)現(xiàn)這一功能主要依靠IP地址和路由交換機(jī)制。
-
MAC地址
MAC地址,全稱為 Media Access Control address,即媒體訪問控制地址,由6個(gè)字節(jié)共48 位組成,理論上,每臺(tái)主機(jī)(網(wǎng)卡)的MAC地址都是唯一的。
MAC 地址是由 IEEE(電氣和電子工程師協(xié)會(huì))的注冊(cè)管理機(jī)構(gòu)分配的。地址的前半部分(前三組十六進(jìn)制數(shù)字,稱為 OUI,組織唯一標(biāo)識(shí)符)用于標(biāo)識(shí)設(shè)備制造商。每個(gè)制造商都有一個(gè)或多個(gè)唯一的 OUI 代碼。后半部分(后三組十六進(jìn)制數(shù)字)則由制造商自行分配給其生產(chǎn)的每個(gè)設(shè)備,確保每個(gè)設(shè)備的 MAC 地址在其生產(chǎn)的所有設(shè)備中是唯一的。
為了處理好MAC地址和交換機(jī)端口的對(duì)應(yīng)關(guān)系,在交換機(jī)內(nèi)部還維護(hù)著一張MAC地址表,它記錄著每一個(gè) MAC 地址的設(shè)備,連接在其交換機(jī)的哪一個(gè)端口上。
在一個(gè)局域網(wǎng)中,不同的設(shè)備通過交換機(jī)來進(jìn)行信息的傳遞,假設(shè)一個(gè)局域網(wǎng)網(wǎng)中有三臺(tái)設(shè)備,主機(jī)0想要與主機(jī)1進(jìn)行通信,那么就需要向交換機(jī)發(fā)送信息+主機(jī)1的MAC地址,交換機(jī)再向所有設(shè)備都發(fā)送信息+MAC地址,主機(jī)接收到之后與自己的MAC地址進(jìn)行比較,如果不相同則說明信息不是發(fā)送給自己的,將信息丟棄;如果相同則說明信息是發(fā)送給自己的,接收信息。同時(shí)給交換機(jī)發(fā)送一個(gè)信號(hào),說明自己收到了信息,那么交換機(jī)就知道了本次接收信息主機(jī)的MAC地址,并將該地址記錄到MAC地址表中。
-
IP地址
盡管MAC地址是唯一的,但是它有個(gè)致命的問題就是:一個(gè)局域網(wǎng)內(nèi)的MAC地址很可能沒規(guī)則。MAC地址就像人的姓名,因?yàn)椴煌木W(wǎng)卡可能來自不同的設(shè)備商,所以編碼很難有什么相同的地方,但是學(xué)號(hào)就是IP地址,它是有地域性的,一個(gè)局域網(wǎng)內(nèi)不同主機(jī)分配的IP都有相同的前綴。
IP地址有兩個(gè)版本,IPv4和IPv6,因?yàn)槟壳?/span>IPv4仍是主流,所以本文就只講IPv4了。IPv4一共有4個(gè)字節(jié)32位,一共可以表示的地址數(shù)是2^32 = 4,294,967,296,約43億個(gè)。IP 地址(IPv4 地址)由32位正整數(shù)來表示,IP 地址在計(jì)算機(jī)是以二進(jìn)制的方式處理的。人類為了方便記憶采用了點(diǎn)分十進(jìn)制的標(biāo)記方式,也就是將 32 位 IP 地址以每 8 位為組,共分為4組,每組以?.?隔開,再將每組轉(zhuǎn)換成十進(jìn)制。
IP 地址分類成了 5 種類型,分別是 A 類、B 類、C 類、D 類、E 類。
最大主機(jī)個(gè)數(shù),就是要看主機(jī)號(hào)的位數(shù),如 C 類地址的主機(jī)號(hào)占 8 位,那么 C 類地址的最大主機(jī)個(gè)數(shù):2^8 - 2 = 254。
為什么要減 2 呢?因?yàn)樵?IP 地址中,有兩個(gè) IP 是特殊的,分別是主機(jī)號(hào)全為 1 和 全為 0 地址。主機(jī)號(hào)全為 1 指定某個(gè)網(wǎng)絡(luò)下的所有主機(jī),用于廣播;主機(jī)號(hào)全為0指定某個(gè)網(wǎng)絡(luò)。
這種IP 分類方式有兩個(gè)大的缺點(diǎn):
- 同一網(wǎng)絡(luò)下沒有地址層次,比如一個(gè)公司里用了 B 類地址,但是可能需要根據(jù)生產(chǎn)環(huán)境、測(cè)試環(huán)境、開發(fā)環(huán)境來劃分地址層次,而這種 IP 分類是沒有地址層次劃分的功能,所以這就缺少地址的靈活性。
- A、B、C類有個(gè)尷尬處境,就是不能很好的與現(xiàn)實(shí)網(wǎng)絡(luò)匹配。
- C 類地址能包含的最大主機(jī)數(shù)量實(shí)在太少了,只有 254 個(gè),一個(gè)大點(diǎn)兒的網(wǎng)吧都不夠用。
- 而 B 類地址能包含的最大主機(jī)數(shù)量又太多了,6 萬多臺(tái)機(jī)器放在一個(gè)網(wǎng)絡(luò)下面,一般的企業(yè)基本達(dá)不到這個(gè)規(guī)模,閑著的地址就是浪費(fèi)。
這兩個(gè)缺點(diǎn),都可以在CIDR無分類地址解決。CIDR無分類地址這種方式不再有分類地址的概念,32 比特的 IP 地址被劃分為兩部分,前面是網(wǎng)絡(luò)號(hào),后面是主機(jī)號(hào)。表示形式?a.b.c.d/x
,其中?/x
?表示前 x 位屬于網(wǎng)絡(luò)號(hào), x 的范圍是0~32,這就使得 IP 地址更加具有靈活性。
比如 192.168.1.2/24,這種地址表示形式就是 CIDR,/24 表示前 24 位是網(wǎng)絡(luò)號(hào),剩余的 8 位是主機(jī)號(hào)。
還有另一種劃分網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)形式,那就是子網(wǎng)掩碼,掩碼的意思就是掩蓋掉主機(jī)號(hào),剩余的就是網(wǎng)絡(luò)號(hào)。將子網(wǎng)掩碼和 IP 地址按位計(jì)算 AND,就可得到網(wǎng)絡(luò)號(hào)。子網(wǎng)掩碼實(shí)際上就是前面一串1加后面1串0,因?yàn)槿魏螖?shù)和1相與都是其自身,而任何數(shù)和0相與都是0,所以子網(wǎng)掩碼實(shí)際上就是那串1規(guī)定了IP地址的網(wǎng)絡(luò)號(hào)長(zhǎng)度,比如子網(wǎng)掩碼為255.255.255.0,就是前面24個(gè)1加后面8個(gè)0,這樣和IP地址相與,得到的實(shí)際就是前面24位的值+后面8個(gè)0。
子網(wǎng)掩碼最大的作用就是判斷兩個(gè)IP是否在同一個(gè)子網(wǎng),比如192.168.1.1/24和192.168.1.2/24,它們的子網(wǎng)掩碼都是255.255.255.0,進(jìn)行相與運(yùn)算后,值都是192.168.1.0,所以這兩個(gè)IP都是處于同一個(gè)子網(wǎng)(即同一個(gè)局域網(wǎng)內(nèi))。
回到上面的多臺(tái)主機(jī)通信的案例,不同的局域網(wǎng)的主機(jī)之間通信,如果只靠MAC地址,那么尋址是非常不方便的。
如何連接多個(gè)局域網(wǎng)呢?此時(shí)每臺(tái)主機(jī)除了MAC地址外,還有一個(gè)IP地址:
因?yàn)橥痪钟蚓W(wǎng)的主機(jī)的MAC地址沒有規(guī)律,所以路由器不得不為所有的主機(jī)都建立一個(gè)MAC地址的對(duì)應(yīng)關(guān)系,隨著主機(jī)的增多,這個(gè)表將會(huì)變得巨大,所需要的存儲(chǔ)空間也非常大,這無疑顯得性價(jià)比和效率都極低。而使用了IP地址,則同一局域網(wǎng)內(nèi)的主機(jī)都有相同的網(wǎng)絡(luò)號(hào),為此,一個(gè)網(wǎng)絡(luò)號(hào)可以對(duì)應(yīng)多臺(tái)主機(jī),那么路由器所需要的存儲(chǔ)空間就小了很多。2個(gè)子網(wǎng)連接的示意圖如下:
當(dāng)子網(wǎng)比較多的時(shí)候一個(gè)路由器明顯是不夠的,因此不同的路由器之間也可以互相連接,所以每個(gè)路由器的每個(gè)端口也應(yīng)該有一個(gè)ip地址。
?同樣的,因?yàn)椴煌淖泳W(wǎng)間主機(jī)無法直接通信(不是同一個(gè)局域網(wǎng)的設(shè)備),它們?nèi)绻ㄐ胖荒芡ㄟ^各自對(duì)應(yīng)的路由器端口來通信,所以路由器的每個(gè)端口也需要一個(gè)MAC地址,這樣才能完成局域網(wǎng)的通信。
現(xiàn)在有個(gè)新問題,就是主機(jī)怎么知道誰是路由器?或者說路由器的IP是多少呢?
其實(shí)說發(fā)給路由器不準(zhǔn)確,應(yīng)該說 A 會(huì)把包發(fā)給默認(rèn)網(wǎng)關(guān)。對(duì) A 來說,A 只能直接把包發(fā)給同處于一個(gè)子網(wǎng)下的某個(gè) IP 上,所以發(fā)給路由器還是發(fā)給某個(gè)電腦,對(duì) A 來說也不關(guān)心,只要這個(gè)設(shè)備有個(gè) IP 地址就行。所以默認(rèn)網(wǎng)關(guān),就是 A 在自己電腦里配置的一個(gè) IP 地址,以便在發(fā)給不同子網(wǎng)的機(jī)器時(shí),發(fā)給這個(gè) IP 地址。
?不同子網(wǎng)主機(jī)的通信,比如A發(fā)數(shù)據(jù)給C,A發(fā)現(xiàn)和C不在一個(gè)子網(wǎng)后,就會(huì)把數(shù)據(jù)發(fā)給路由器即默認(rèn)網(wǎng)關(guān),那么路由器是怎么知道C在哪里的呢?
前面說過交換機(jī)里邊有個(gè)對(duì)應(yīng)MAC地址和端口映射關(guān)系的表,同樣的道理,也可以在路由器里邊搞個(gè)路由表來存儲(chǔ)不同的IP地址和端口之間的映射關(guān)系。但是要注意的是,因?yàn)槎丝谑怯邢薜?#xff0c;而連接的子網(wǎng)卻可以有很多個(gè),所以有時(shí)候兩個(gè)子網(wǎng)之間并不會(huì)有直接映射關(guān)系,而是要通過多個(gè)路由表才能到達(dá)最后的子網(wǎng)。這就好比,你要從縣城去紐約,可能首先需要去省城,然后從省城去北京,最后才從北京飛到紐約。
從一個(gè)路由器跳到下一個(gè)路由器稱之為下一跳(Hop),只要路由算法算好了,那就一定可以通過有限個(gè)路由器把數(shù)據(jù)傳遞出去,那么每一個(gè)路由器只要記錄下一跳地址就行了。就像你想從縣城去紐約,跑到火車站買票,工作人員說不行,你只能先去省城(對(duì)縣城的工作人員來說,下一跳地址就是省城)。去了省城的飛機(jī)場(chǎng)買票,工作人員又說去不了,只能去北京做飛機(jī)(對(duì)省城的工作人員來說,下一跳地址就是北京),到了北京就終于能去紐約了,這幾段路程就是在不同路由器之間的下一跳。
-
以太網(wǎng)幀格式
在以太網(wǎng)鏈路上的數(shù)據(jù)包稱作以太網(wǎng)幀。以太網(wǎng)幀起始部分由前導(dǎo)碼和幀開始符組成。后面緊跟著一個(gè)以太網(wǎng)報(bào)頭,以MAC地址說明目的地址和源地址。幀的中部是該幀負(fù)載的包含其他協(xié)議報(bào)頭的數(shù)據(jù)包(例如IP協(xié)議、ARP協(xié)議)。以太幀由一個(gè)32位冗余校驗(yàn)碼結(jié)尾。它用于檢驗(yàn)數(shù)據(jù)傳輸是否出現(xiàn)損壞。以太網(wǎng)幀格式如下圖所示。
1.前導(dǎo)碼和幀開始符是固定的,為7個(gè)0x55緊跟著1個(gè)0xd5
2.目的MAC地址指明幀的接受者
3.源MAC地址指明幀的發(fā)送者
4.以太網(wǎng)類型,指示幀的類型,比如0x0800表示該幀是IP數(shù)據(jù)包,0x0806表示該幀是ARP協(xié)議數(shù)據(jù)包
5.數(shù)據(jù)和填充就是所承載的數(shù)據(jù)包,跟前面以太網(wǎng)類型對(duì)應(yīng)。
6.幀校驗(yàn)序列是一個(gè)32位的循環(huán)校驗(yàn)碼(FCS)。
ARP協(xié)議,全稱為Address?Resolution Protocol,即地址解析協(xié)議,ARP協(xié)議屬于以太網(wǎng)幀的一種,前面以太網(wǎng)幀介紹中有說到,我們?nèi)绻麖脑O(shè)備A發(fā)送以太網(wǎng)幀到設(shè)備B,我們不可能每次都進(jìn)行廣播,那么設(shè)備A如何知道設(shè)備B的物理地址呢?ARP協(xié)議就是為了解決這個(gè)問題。
首先設(shè)備A廣播,發(fā)送ARP請(qǐng)求,等收到設(shè)備B的ARP應(yīng)答以后就能知道設(shè)備B的MAC地址。ARP幀格式如下圖所示
ARP字段就是前面以太網(wǎng)幀待填充的數(shù)據(jù)。硬件類型、上層協(xié)議類型、MAC地址長(zhǎng)度、IP地址長(zhǎng)度均固定不變。
假設(shè)設(shè)備A的IP地址為192.168.0.2,MAC地址為0x00_0a_35_01_fe_c0,我們知道目的IP地址為192.168.0.3,不知道該IP地址對(duì)應(yīng)的MAC地址,如果設(shè)備A想要和IP地址為192.168.0.3的設(shè)備B進(jìn)行通信(如UDP或者IP通信),就必須知道它的MAC地址。此時(shí)設(shè)備A就需要廣播發(fā)送ARP請(qǐng)求,接收方MAC地址填0xff_ff_ff_ff_ff_ff。這樣IP地址為192.168.0.3的設(shè)備就會(huì)解析出這是一個(gè)ARP請(qǐng)求,它詢問自身的MAC地址,此時(shí)它就會(huì)做出ARP應(yīng)答,將自身的MAC地址發(fā)送給對(duì)應(yīng)IP地址的設(shè)備A。
注意發(fā)送ARP請(qǐng)求時(shí),操作碼為0x0001,應(yīng)答時(shí)操作碼為0x0002。
基于FPGA的以太網(wǎng)設(shè)計(jì)(1)----大白話解釋什么是以太網(wǎng)_zynq 以太網(wǎng)描述符-CSDN博客
基礎(chǔ)知識(shí)——以太網(wǎng)(Ethernet )-CSDN博客
FPGA學(xué)習(xí)之路:深入剖析以太網(wǎng)原理_以太網(wǎng)數(shù)據(jù)幀格式fpga-CSDN博客