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