大家都知道計(jì)算機(jī)里面存儲(chǔ)的是一堆01組成的二進(jìn)制代碼,那么計(jì)算機(jī)是怎樣把這些數(shù)字信號(hào)傳輸出去的呢?
計(jì)算機(jī)只有一根網(wǎng)線是和外界相連的,而和網(wǎng)線連接的地方叫做網(wǎng)卡,而網(wǎng)卡的作用就是把計(jì)算機(jī)的數(shù)字信號(hào)轉(zhuǎn)換成光電信號(hào)發(fā)送出去。要想知道計(jì)算機(jī)是如何傳輸數(shù)據(jù)的首先要了解的是網(wǎng)卡的工作原理。
計(jì)算機(jī)生成的數(shù)據(jù)包只是存放在內(nèi)存中的一串?dāng)?shù)字信息,沒(méi)有辦法直接發(fā)送給對(duì)方。因此,我們要將數(shù)字信息轉(zhuǎn)換為電或者光信號(hào),才能在網(wǎng)線或者光纖上傳輸。
負(fù)責(zé)這個(gè)轉(zhuǎn)換工作的設(shè)備叫網(wǎng)卡,但是網(wǎng)卡是無(wú)法單獨(dú)工作的,要控制網(wǎng)卡還需要網(wǎng)卡驅(qū)動(dòng)程序,想必大家新買的電腦第一件事肯定是裝系統(tǒng),然后是裝驅(qū)動(dòng),這里的驅(qū)動(dòng)就包含了網(wǎng)卡,顯卡,鍵盤,鼠標(biāo)的驅(qū)動(dòng)等。如果沒(méi)有網(wǎng)卡驅(qū)動(dòng),網(wǎng)卡是工作不了的,也就是上不了網(wǎng)了,同樣沒(méi)有顯卡啟動(dòng),你的電腦也就顯示不了東西。
不同廠商的網(wǎng)卡在結(jié)構(gòu)上有所不同,因此網(wǎng)卡的驅(qū)動(dòng)程序也是由各大網(wǎng)卡廠商開發(fā)的專門的應(yīng)用程序。
網(wǎng)卡的內(nèi)部結(jié)構(gòu)如下圖:
網(wǎng)卡并不是通電后就開始工作的,而是和其他硬件一樣需要初始化,計(jì)算機(jī)啟動(dòng)操作系統(tǒng)后,網(wǎng)卡驅(qū)動(dòng)程序會(huì)對(duì)硬件進(jìn)行初始化,然后網(wǎng)卡才能進(jìn)入工作狀態(tài)。
網(wǎng)卡的內(nèi)部存儲(chǔ)著全世界唯一的地址叫做MAC地址,這是在生產(chǎn)網(wǎng)卡的時(shí)候?qū)懭氲模@個(gè)地址不能被修改,因?yàn)樗菍懺?a href="http://www.1cnz.cn/tags/rom/" target="_blank">ROM當(dāng)中的,ROM是只讀存儲(chǔ)器,但是可以在Windows系統(tǒng)里面被模擬修改成其他MAC地址。
網(wǎng)卡中的保存的MAC地址會(huì)由網(wǎng)卡驅(qū)動(dòng)程序讀取并分配給MAC模塊,網(wǎng)卡驅(qū)動(dòng)從IP模塊獲取數(shù)據(jù)包后,會(huì)將其復(fù)制到網(wǎng)卡內(nèi)的緩沖區(qū)中,然后MAC模塊會(huì)將數(shù)據(jù)包從緩沖區(qū)取出,并在開頭加上報(bào)頭和起始幀分界符,在末尾加上用于檢測(cè)錯(cuò)誤的幀校驗(yàn)系列如下圖:
報(bào)頭是一串像10101010…這樣 1 和 0 交替出現(xiàn)的比特序列,長(zhǎng)度為 56 比特,它的作用是確定包的讀取時(shí)機(jī)。
當(dāng)這些 1010 的比特序列被轉(zhuǎn)換成電信號(hào)后,會(huì)形成如下圖這樣的波形。接收方在收到信號(hào)時(shí),遇到這樣的波形就可以判斷讀取數(shù)據(jù)的時(shí)機(jī)。
用電信號(hào)來(lái)表達(dá)數(shù)字信息時(shí),我們需要讓 0 和 1 兩種比特分別對(duì)應(yīng)特定的電壓和電流,例如下圖這樣的電信號(hào)就可以表達(dá)數(shù)字信息。
通過(guò)電信號(hào)來(lái)讀取數(shù)據(jù)的過(guò)程就是將這種對(duì)應(yīng)關(guān)系顛倒過(guò)來(lái)。也就是說(shuō),通過(guò)測(cè)量信號(hào)中的電壓和電流變化,還原出 0 和 1 兩種比特的值。
加上一系列報(bào)頭等數(shù)據(jù)之后,我們就可以將數(shù)據(jù)包通過(guò)網(wǎng)線發(fā)送出去了,發(fā)送信號(hào)的操作分為2種,一種是使用集線器的半雙工模式,另一種是使用交換機(jī)的全雙工模式。
什么是半雙工?什么是全雙工?半雙工就是同一時(shí)間只能一方發(fā)送一方接收。而全雙工,收發(fā)雙方可以同時(shí)發(fā)送數(shù)據(jù)。
然后MAC 模塊從報(bào)頭開始將數(shù)字信息按每個(gè)比特轉(zhuǎn)換成電信號(hào),由 PHY, 或者叫 MAU 的信號(hào)收發(fā)模塊發(fā)送出去。在這里,將數(shù)字信息轉(zhuǎn)換為電信的速率就是網(wǎng)絡(luò)的傳輸速率,例如每秒將 10 Mbit 的數(shù)字信息轉(zhuǎn)換為電信號(hào)發(fā)送出去,則速率就是 10 Mbit/s。
接下來(lái),PHY(MAU)模塊會(huì)將信號(hào)轉(zhuǎn)換為可在網(wǎng)線上傳輸?shù)母袷剑?并通過(guò)網(wǎng)線發(fā)送出去。
以太網(wǎng)規(guī)格中對(duì)不同的網(wǎng)線類型和速率以及其對(duì)應(yīng)的信號(hào)格式進(jìn)行了規(guī)定,但 MAC 模塊并不關(guān)心這些區(qū)別,而是將可轉(zhuǎn)換為任意格式的通用信號(hào)發(fā)送給 PHY(MAU)模塊,然后 PHY(MAU)模塊再將其轉(zhuǎn)換為可在網(wǎng)線上傳輸?shù)母袷健?/p>
網(wǎng)卡將包轉(zhuǎn)換為電信號(hào)并發(fā)送出去的過(guò)程到這里就結(jié)束了,有興趣深入了解的同學(xué)請(qǐng)關(guān)注我。
原文標(biāo)題:計(jì)算機(jī)是怎樣把數(shù)據(jù)通過(guò)網(wǎng)線傳輸出去的?
文章出處:【微信公眾號(hào):一口Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
計(jì)算機(jī)
+關(guān)注
關(guān)注
19文章
7488瀏覽量
87852 -
網(wǎng)卡
+關(guān)注
關(guān)注
4文章
307瀏覽量
27374 -
傳輸數(shù)據(jù)
+關(guān)注
關(guān)注
1文章
122瀏覽量
16101
原文標(biāo)題:計(jì)算機(jī)是怎樣把數(shù)據(jù)通過(guò)網(wǎng)線傳輸出去的?
文章出處:【微信號(hào):yikoulinux,微信公眾號(hào):一口Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論