從網(wǎng)卡發(fā)送數(shù)據(jù)再談TCP/IP協(xié)議—網(wǎng)絡(luò)傳輸速度計(jì)算-網(wǎng)卡構(gòu)造

在《在深談TCP/IP三步握手&四步揮手原理及衍生問題—長(zhǎng)文解剖IP》里面提到

單個(gè)TCP包每次打包1448字節(jié)的數(shù)據(jù)進(jìn)行發(fā)送(以太網(wǎng)Ethernet最大的數(shù)據(jù)幀是1518字節(jié),以太網(wǎng)幀的幀頭14字節(jié)和幀尾CRC校驗(yàn)4字節(jié)?

seq編碼,在RFC793中,建議ISN和一個(gè)假的時(shí)鐘綁在一起,這個(gè)時(shí)鐘會(huì)在每4微秒對(duì)ISN做加一操作,直到超過2^32

據(jù)此推算,貌似單一線路,網(wǎng)絡(luò)傳輸速度也就1.5*(1/4*10^6) = 375M/bs

對(duì)此的論據(jù)是:segments packets frame 是一對(duì)一的關(guān)系,層層套,一個(gè)個(gè)依次發(fā)送,如圖所示

如此,豈不是對(duì)于千兆網(wǎng)卡,千G、千T,以及5G網(wǎng)絡(luò) 是 瞎子點(diǎn)燈?

注:

在鏈路層,由以太網(wǎng)的物理特性決定了數(shù)據(jù)幀的長(zhǎng)度為(46+18)-(1500+18),其中的18是數(shù)據(jù)幀的頭和尾,也就是說數(shù)據(jù)幀的內(nèi)容最大為1500(不包括幀頭和幀尾),即MTU(Maximum Transmission Unit)為1500;

在網(wǎng)絡(luò)層,因?yàn)镮P包的首部要占用20字節(jié),所以這的MTU為1500-20=1480;

在傳輸層,對(duì)于UDP包的首部要占用8字節(jié),所以這的MTU為1480-8=1472;

所以,在應(yīng)用層,你的Data最大長(zhǎng)度為1472。當(dāng)我們的UDP包中的數(shù)據(jù)多于MTU(1472)時(shí),發(fā)送方的IP層需要分片fragmentation進(jìn)行傳輸,而在接收方IP層則需要進(jìn)行數(shù)據(jù)報(bào)重組,由于UDP是不可靠的傳輸協(xié)議,如果分片丟失導(dǎo)致重組失敗,將導(dǎo)致UDP數(shù)據(jù)包被丟棄。?

千兆網(wǎng)卡理論最大傳輸速度是(1024Mbit/s=128MByte/s),注意b與B差了8倍。

這個(gè)迷惑一直困擾著我。百思不得騎姐

然后開始

從網(wǎng)卡發(fā)送接收數(shù)據(jù)入手,對(duì)TCP/IP再開墾一番

網(wǎng)卡如何發(fā)送數(shù)據(jù)包:

IP報(bào)文可以看作一個(gè)包。

Linux網(wǎng)卡驅(qū)動(dòng)程序,將IP包添加14字節(jié)的MAC包頭,構(gòu)成MAC包。

MAC包中含有發(fā)送端和接收端的MAC地址信息。既然是驅(qū)動(dòng)程序創(chuàng)建的MAC包頭信息,當(dāng)然可以隨便輸入地址信息的,主機(jī)偽裝就是這么實(shí)現(xiàn)的。

驅(qū)動(dòng)程序?qū)AC包拷貝到網(wǎng)卡芯片內(nèi)部的緩存區(qū),就算完事了。有網(wǎng)卡芯片接手處理。網(wǎng)卡芯片對(duì)MAC包,再次封裝成物理幀,添加頭部同步信息和CRC校驗(yàn)。然后丟到網(wǎng)線上,就完成一個(gè)IP報(bào)文的發(fā)送。所有掛接到本網(wǎng)線的網(wǎng)卡都可以看到該物理幀。

網(wǎng)卡接收數(shù)據(jù)包

正常情況:

網(wǎng)線上的物理幀首先被網(wǎng)卡芯片獲取,網(wǎng)卡芯片會(huì)檢查物理幀的CRC,保證完整性。

其次,網(wǎng)卡芯片將物理幀頭去掉,得到MAC包。

網(wǎng)卡芯片檢查MAC包內(nèi)的目的MAC地址信息,和本網(wǎng)卡的MAC地址是否一致?不一致,拋棄。

網(wǎng)卡芯片將MAC幀拷貝到網(wǎng)卡內(nèi)部的緩沖區(qū),觸發(fā)中斷。

驅(qū)動(dòng)程序通過中斷,將MAC包拷貝到系統(tǒng)中,構(gòu)建sk_buff。告訴上層。

上層去掉MAC包頭,得到需要的IP包。

?過程中,網(wǎng)卡芯片對(duì)物理幀進(jìn)行了MAC匹配過濾。這樣做可以減小系統(tǒng)負(fù)荷。

試想一下,若網(wǎng)卡芯片對(duì)所有的MAC幀不加判斷的直接提供給驅(qū)動(dòng),讓CPU判決會(huì)是什么樣子呢?

當(dāng)總線上數(shù)據(jù)繁忙,CPU將浪費(fèi)大部分時(shí)間去判斷該MAC包是否是自己需要的,效率低下。

不正常模式(混聽):

網(wǎng)線上的物理幀首先被網(wǎng)卡芯片獲取,網(wǎng)卡芯片會(huì)檢查物理幀的CRC,保證完整性。

其次,網(wǎng)卡芯片將物理幀頭去掉,得到MAC包。

網(wǎng)卡芯片發(fā)現(xiàn)自己當(dāng)前被配置為混聽模式,就不對(duì)MAC包過濾。

網(wǎng)卡芯片將MAC幀拷貝到網(wǎng)卡內(nèi)部的緩沖區(qū),觸發(fā)中斷。

驅(qū)動(dòng)程序通過中斷,將MAC包拷貝到系統(tǒng)中,構(gòu)建sk_buff。告訴上層。

上層去掉MAC包頭,得到需要的IP包。

顯然,這里的IP包并一定是發(fā)給自己的。


驅(qū)動(dòng)的問題

網(wǎng)卡到底能不能接收其他MAC包,完全取決于網(wǎng)卡芯片中RCR(receive control register)配置。

驅(qū)動(dòng)程序是決定網(wǎng)卡能否工作與混聽模式的橋梁。

混聽模式會(huì)加重CPU的負(fù)荷,而且也是不符合標(biāo)準(zhǔn)應(yīng)用的!


所有的車輛都要從加油站穿過,(有些都不加油),加油站工作人員的任務(wù)量就可想而知。

當(dāng)然也有例外,有些程序不通過驅(qū)動(dòng),也可以直接訪問網(wǎng)卡芯片RCR達(dá)到設(shè)置混聽模式。

所謂? 條條大路通香港,就是這個(gè)道理:)沒有絕對(duì)的

本機(jī)和本機(jī)Socket通信會(huì)走網(wǎng)卡嗎

先說結(jié)論:不走網(wǎng)卡,不走物理設(shè)備,但是走虛擬設(shè)備,loopback device環(huán)回(本地回環(huán)).

本機(jī)的報(bào)文的路徑是這樣的:應(yīng)用層-> socket接口 -> 傳輸層(tcp/udp報(bào)文) -> 網(wǎng)絡(luò)層 -> back to 傳輸層 -> backto socket接口 -.> 傳回應(yīng)用程序在網(wǎng)絡(luò)層,會(huì)在路由表查詢路由,路由表(軟件路由,真正的轉(zhuǎn)發(fā)需要依靠硬件路由,這里路由表包括快速轉(zhuǎn)發(fā)表和FIB表)初始化時(shí)會(huì)保存主機(jī)路由(host route,or 環(huán)回路由), 查詢(先匹配mask,再匹配ip,localhost路由在路由表最頂端,最優(yōu)先查到)后發(fā)現(xiàn)不用轉(zhuǎn)發(fā)就不用走中斷,不用發(fā)送給鏈接層了,不用發(fā)送給網(wǎng)絡(luò)設(shè)備(網(wǎng)卡)。像網(wǎng)卡發(fā)送接收?qǐng)?bào)文一樣,走相同的接收流程,只不過net device是loopback device,最后發(fā)送回應(yīng)用程序。這一套流程當(dāng)然和轉(zhuǎn)發(fā)和接收外網(wǎng)報(bào)文一樣,都要經(jīng)過內(nèi)核協(xié)議棧的處理,不同的是本機(jī)地址不用掛net device.

網(wǎng)卡,交換機(jī),網(wǎng)橋,路由器,網(wǎng)關(guān)工作在OSI模型哪一層

網(wǎng)橋:工作在數(shù)據(jù)鏈路層,在不同或相同類型的LAN之間存儲(chǔ)并轉(zhuǎn)發(fā)數(shù)據(jù)幀,必要時(shí)進(jìn)行鏈路層上的協(xié)議轉(zhuǎn)換??蛇B接兩個(gè)或多個(gè)網(wǎng)絡(luò),在其中傳送信息包。

交換機(jī):工作在數(shù)據(jù)鏈路層,原理等同于多端口網(wǎng)橋。作用是連接數(shù)個(gè)相同網(wǎng)段的不同主機(jī),減少網(wǎng)內(nèi)沖突,隔離沖突域。利用存儲(chǔ)轉(zhuǎn)發(fā)和過濾技術(shù)來從物理上分割網(wǎng)段

路由器:工作在網(wǎng)絡(luò)層,在不同的網(wǎng)絡(luò)間存儲(chǔ)并轉(zhuǎn)發(fā)分組??稍诋惙N網(wǎng)絡(luò)之間(即不同類型的局域網(wǎng)互連,局域網(wǎng)與廣域網(wǎng),廣域網(wǎng)與廣域網(wǎng))傳輸數(shù)據(jù)并進(jìn)行路徑選擇,使用專門的軟件協(xié)議從邏輯上對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行劃分。

網(wǎng)關(guān):對(duì)高層協(xié)議(包括傳輸層及更高層次)進(jìn)行轉(zhuǎn)換的網(wǎng)間連接器。允許使用不兼容的協(xié)議,比如SPX/IPX和TCP/IP的系統(tǒng)和網(wǎng)絡(luò)互連。因?yàn)閰f(xié)議轉(zhuǎn)換是網(wǎng)關(guān)最重要的功能,所以答案是工作在傳輸層及以上層次。

網(wǎng)卡:在物理層上網(wǎng)卡主要是完成物理接口的連接,電信號(hào)的傳送以及將數(shù)據(jù)分解為適當(dāng)大小的數(shù)據(jù)包之后向網(wǎng)絡(luò)上發(fā)送的功能. 數(shù)據(jù)鏈路層功能包括鏈路建立和拆除,幀定界同步順序差錯(cuò)控制這些。大多認(rèn)為主要工作在物理層。

網(wǎng)卡核心電器元件

網(wǎng)卡的組成:

主芯片:網(wǎng)卡的主控制芯片是網(wǎng)卡的核心元件,一塊網(wǎng)卡性能的好壞和功能的強(qiáng)弱多寡,主要就是看這塊芯片的質(zhì)量

BOOTROM槽:BOOTROM 插座也就是常說的無盤啟動(dòng)ROM 接口,其是用來通過遠(yuǎn)程啟動(dòng)服務(wù)構(gòu)造無盤工作站的

數(shù)據(jù)泵:作用一是傳輸數(shù)據(jù);二是隔離網(wǎng)線連接的不同網(wǎng)絡(luò)設(shè)備間的不同電平,還能對(duì)設(shè)備起到一定的防雷保護(hù)作用

晶振即石英振蕩器:提供基準(zhǔn)頻率

?MAC 控制器&PHY

以太網(wǎng)卡中數(shù)據(jù)鏈路層的芯片一般簡(jiǎn)稱之為 MAC 控制器,物理層的芯片我們簡(jiǎn)稱之為PHY。即使把它們做到同一塊芯片,但是MAC 和PHY 的機(jī)制還是單獨(dú)存在的,只是外觀的表現(xiàn)形式是一顆單芯片。

?數(shù)據(jù)鏈路層MAC 控制器

以太網(wǎng)數(shù)據(jù)鏈路層其實(shí)包含MAC(介質(zhì)訪問控制)子層和LLC(邏輯鏈路控制)子層。

一塊以太網(wǎng)卡MAC 芯片的作用不但要實(shí)現(xiàn)MAC 子層和LLC 子層的功能,還要提供符合規(guī)范的PCI 界面以實(shí)現(xiàn)和主機(jī)的數(shù)據(jù)交換。

MAC 從PCI 總線收到IP 數(shù)據(jù)包(或者其他網(wǎng)絡(luò)層協(xié)議的數(shù)據(jù)包)后,將之拆分并重新打包成最大1518Byte,最小64Byte 的幀。這個(gè)幀里面包括了目標(biāo)MAC 地址、自己的源MAC 地址和數(shù)據(jù)包里面的協(xié)議類型(比如IP 數(shù)據(jù)包的類型用80 表示)。最后還有一個(gè)DWORD(4Byte)的CRC 碼。

可是目標(biāo)的 MAC 地址是哪里來的呢?這牽扯到一個(gè)ARP 協(xié)議(介乎于網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的一個(gè)協(xié)議)。第一次傳送某個(gè)目的IP 地址的數(shù)據(jù)的時(shí)候,先會(huì)發(fā)出一個(gè)ARP 包,其MAC 的目標(biāo)地址是廣播地址,里面說到:"誰是xxx.xxx.xxx.xxx 這個(gè)IP 地址的主人?"因?yàn)槭菑V播包,所有這個(gè)局域網(wǎng)的主機(jī)都收到了這個(gè)ARP 請(qǐng)求。收到請(qǐng)求的主機(jī)將這個(gè)IP地址和自己的相比較,如果不相同就不予理會(huì),如果相同就發(fā)出ARP 響應(yīng)包。這個(gè)IP 地址的主機(jī)收到這個(gè)ARP 請(qǐng)求包后回復(fù)的ARP 響應(yīng)里說到:"我是這個(gè)IP 地址的主人"。這個(gè)包里面就包括了他的MAC 地址。以后的給這個(gè)IP 地址的幀的目標(biāo)MAC 地址就被確定了。(其它的協(xié)議如IPX/SPX 也有相應(yīng)的協(xié)議完成這些操作。)IP 地址和MAC 地址之間的關(guān)聯(lián)關(guān)系保存在主機(jī)系統(tǒng)里面,叫做ARP 表,由驅(qū)動(dòng)程序和操作系統(tǒng)完成。在Microsoft 的系統(tǒng)里面可以用 arp -a 的命令查看ARP 表。

收到數(shù)據(jù)幀的時(shí)候也是一樣,做完CRC 以后,如果沒有CRC 效驗(yàn)錯(cuò)誤,就把幀頭去掉,把數(shù)據(jù)包拿出來通過標(biāo)準(zhǔn)的借口傳遞給驅(qū)動(dòng)和上層的協(xié)議客棧,最終正確的達(dá)到我們的應(yīng)用程序。還有一些控制幀,例如流控幀也需? ? ?要MAC 直接識(shí)別并執(zhí)行相應(yīng)的行為。以太網(wǎng)MAC芯片的一端接計(jì)算機(jī)PCI 總線,另外一端就接到PHY 芯片上。以太網(wǎng)的物理層又包括MII/GMII(介質(zhì)獨(dú)立接口)子層、PCS(物理編碼子層)、PMA(物理介質(zhì)附加)子層、PMD(物理介質(zhì)相關(guān))子層、MDI 子層。而PHY 芯片是實(shí)現(xiàn)物理層的重要功能器件之一,實(shí)現(xiàn)了前面物理層的所有的子層的功能。

物理層PHY

PHY 在發(fā)送數(shù)據(jù)的時(shí)候,收到MAC 過來的數(shù)據(jù)(對(duì)PHY 來說,沒有幀的概念,對(duì)它來說,都是數(shù)據(jù)而不管什么地址,數(shù)據(jù)還是CRC),每4bit 就增加1bit 的檢錯(cuò)碼,然后把并行數(shù)據(jù)轉(zhuǎn)化為串行流數(shù)據(jù),再按照物理層的編碼規(guī)則(10Based-T 的NRZ 編碼或100based-T的曼徹斯特編碼)把數(shù)據(jù)編碼,再變?yōu)槟M信號(hào)把數(shù)據(jù)送出去。(注:關(guān)于網(wǎng)線上數(shù)據(jù)是數(shù)字的還是模擬的比較不容易理解清楚。最后我再說)收數(shù)據(jù)時(shí)的流程反之。發(fā)送數(shù)據(jù)時(shí),PHY 還有個(gè)重要的功能就是實(shí)現(xiàn)CSMA/CD 的部分功能,它可以檢測(cè)到網(wǎng)絡(luò)上是否有數(shù)據(jù)在傳送。網(wǎng)卡首先偵聽介質(zhì)上是否有載波(載波由電壓指示),如果有,則認(rèn)為其他站點(diǎn)正在傳送信息,繼續(xù)偵聽介質(zhì)。一旦通信介質(zhì)在一定時(shí)間段內(nèi)(稱為幀間縫隙IFG= 9.6 微秒)是安靜的,即沒有被其他站點(diǎn)占用,則開始進(jìn)行幀數(shù)據(jù)發(fā)送,同時(shí)繼續(xù)偵聽通信介質(zhì),以檢測(cè)沖突。在發(fā)送數(shù)據(jù)期間,如果檢測(cè)到?jīng)_突,則立即停止該次發(fā)送,并向介質(zhì)發(fā)送一個(gè)“阻塞”信號(hào),告知其他站點(diǎn)已經(jīng)發(fā)生沖突,從而丟棄那些可能一直在接收的受到損壞的幀數(shù)據(jù),并等待一段隨機(jī)時(shí)間(CSMA/CD 確定等待時(shí)間的算法是二進(jìn)制指數(shù)退避算法)。在等待一段隨機(jī)時(shí)間后,再進(jìn)行新的發(fā)送。如果重傳多次后(大于16 次)仍發(fā)生沖突,就放棄發(fā)送。接收時(shí),網(wǎng)卡瀏覽介質(zhì)上傳輸?shù)拿總€(gè)幀,如果其長(zhǎng)度小于64 字節(jié),則認(rèn)為是沖突碎片。如果接收到的幀不是沖突碎片且目的地址是本地地址,則對(duì)幀進(jìn)行完整性校驗(yàn),如果幀長(zhǎng)度大于1518 字節(jié)(稱為超長(zhǎng)幀,可能由錯(cuò)誤的LAN 驅(qū)動(dòng)程序或干擾造成)或未能通過CRC校驗(yàn),則認(rèn)為該幀發(fā)生了畸變。通過校驗(yàn)的幀被認(rèn)為是有效的,網(wǎng)卡將它接收下來進(jìn)行本地處理許多網(wǎng)友在接入 Internt 寬帶時(shí),喜歡使用"搶線"強(qiáng)的網(wǎng)卡,就是因?yàn)椴煌腜HY 碰撞后計(jì)算隨機(jī)時(shí)間的方法設(shè)計(jì)上不同,使得有些網(wǎng)卡比較"占便宜"。不過,搶線只對(duì)廣播域的網(wǎng)絡(luò)而言的,對(duì)于交換網(wǎng)絡(luò)和ADSL 這樣點(diǎn)到點(diǎn)連接到局端設(shè)備的接入方式?jīng)]什么意義。而且"搶線"也只是相對(duì)而言的,不會(huì)有質(zhì)的變化。

關(guān)于網(wǎng)絡(luò)間的沖突

現(xiàn)在交換機(jī)的普及使得交換網(wǎng)絡(luò)的普及,使得沖突域網(wǎng)絡(luò)少了很多,極大地提高了網(wǎng)絡(luò)的帶寬。但是如果用HUB,或者共享帶寬接入Internet 的時(shí)候還是屬于沖突域網(wǎng)絡(luò),有沖突碰撞的。交換機(jī)和HUB 最大的區(qū)別就是:一個(gè)是構(gòu)建點(diǎn)到點(diǎn)網(wǎng)絡(luò)的局域網(wǎng)交換設(shè)備,一個(gè)是構(gòu)建沖突域網(wǎng)絡(luò)的局域網(wǎng)互連設(shè)備。我們的 PHY 還提供了和對(duì)端設(shè)備連接的重要功能并通過LED 燈顯示出自己目前的連接的狀態(tài)和工作狀態(tài)讓我們知道。當(dāng)我們給網(wǎng)卡接入網(wǎng)線的時(shí)候,PHY 不斷發(fā)出的脈沖信號(hào)檢測(cè)到對(duì)端有設(shè)備,它們通過標(biāo)準(zhǔn)的"語言"交流,互相協(xié)商并卻定連接速度、雙工模式、是否采用流控等。通常情況下,協(xié)商的結(jié)果是兩個(gè)設(shè)備中能同時(shí)支持的最大速度和最好的雙工模式。這個(gè)技術(shù)被稱為Auto Negotiation 或者NWAY,它們是一個(gè)意思--自動(dòng)協(xié)商。

PHY 的輸出部分

現(xiàn)在來了解 PHY 的輸出后面部分。一顆CMOS 制程的芯片工作的時(shí)候產(chǎn)生的信號(hào)電平總是大于0V 的(這取決于芯片的制程和設(shè)計(jì)需求),但是這樣的信號(hào)送到100 米甚至更長(zhǎng)的地方會(huì)有很大的直流分量的損失。而且如果外部網(wǎng)現(xiàn)直接和芯片相連的話,電磁感應(yīng)(打雷)和靜電,很容易造成芯片的損壞。再就是設(shè)備接地方法不同,電網(wǎng)環(huán)境不同會(huì)導(dǎo)致雙方的0V 電平不一致,這樣信號(hào)從A傳到B,由于A 設(shè)備的0V 電平和B 點(diǎn)的0V 電平不一樣,這樣會(huì)導(dǎo)致很大的電流從電勢(shì)高的設(shè)備流向電勢(shì)低的設(shè)備。我們?nèi)绾谓鉀Q這個(gè)問題呢?這時(shí)就出現(xiàn)了 Transformer(隔離變壓器)這個(gè)器件。它把PHY 送出來的差分信號(hào)用差模耦合的線圈耦合濾波以增強(qiáng)信號(hào),并且通過電磁場(chǎng)的轉(zhuǎn)換耦合到連接網(wǎng)線的另外一端。這樣不但使網(wǎng)線和PHY 之間沒有物理上的連接而換傳遞了信號(hào),隔斷了信號(hào)中的直流分量,還可以在不同0V 電平的設(shè)備中傳送數(shù)據(jù)。隔離變壓器本身就是設(shè)計(jì)為耐 2KV~3KV 的電壓的。也起到了防雷感應(yīng)(我個(gè)人認(rèn)為這里用防雷擊不合適)保護(hù)的作用。有些朋友的網(wǎng)絡(luò)設(shè)備在雷雨天氣時(shí)容易被燒壞,大都是PCB 設(shè)計(jì)不合理造成的,而且大都燒毀了設(shè)備的接口,很少有芯片被燒毀的,就是隔離變壓器起到了保護(hù)作用。

關(guān)于傳輸介質(zhì)

隔離變壓器本身是個(gè)被動(dòng)元件,只是把PHY 的信號(hào)耦合了到網(wǎng)線上,并沒有起到功率放大的作用。那么一張網(wǎng)卡信號(hào)的傳輸?shù)淖铋L(zhǎng)距離是誰決定的呢?一張網(wǎng)卡的傳輸最大距離和與對(duì)端設(shè)備連接的兼容性主要是 PHY 決定的。但是可以將信號(hào)送的超過100 米的PHY 其輸出的功率也比較大,更容易產(chǎn)生EMI 的問題。這時(shí)候就需要合適的Transformer 與之配合。作PHY 的老大公司Marvell 的PHY,常??梢詡魉?80~200米的距離,遠(yuǎn)遠(yuǎn)超過IEEE 的100 米的標(biāo)準(zhǔn)。RJ-45 的接頭實(shí)現(xiàn)了網(wǎng)卡和網(wǎng)線的連接。它里面有8 個(gè)銅片可以和網(wǎng)線中的4 對(duì)雙絞(8根)線對(duì)應(yīng)連接。其中100M 的網(wǎng)絡(luò)中1、2 是傳送數(shù)據(jù)的,3、6 是接收數(shù)據(jù)的。1、2 之間

是一對(duì)差分信號(hào),也就是說它們的波形一樣,但是相位相差180 度,同一時(shí)刻的電壓幅度互為正負(fù)。這樣的信號(hào)可以傳遞的更遠(yuǎn),抗干擾能力強(qiáng)。同樣的,3、6 也一樣是差分信號(hào)。網(wǎng)線中的 8 根線,每?jī)筛ぴ谝黄鸪蔀橐粚?duì)。我們制作網(wǎng)線的時(shí)候,一定要注意要讓1、2 在其中的一對(duì),3、6 在一對(duì)。否則長(zhǎng)距離情況下使用這根網(wǎng)線的時(shí)候會(huì)導(dǎo)致無法連接或連接很不穩(wěn)定?,F(xiàn)在新的 PHY 支持AUTO MDI-X 功能(也需要Transformer 支持)。它可以實(shí)現(xiàn)RJ-45接口的1、2 上的傳送信號(hào)線和3、6 上的接收信號(hào)線的功能自動(dòng)互相交換。有的PHY 甚至支持一對(duì)線中的正信號(hào)和負(fù)信號(hào)的功能自動(dòng)交換。這樣我們就不必為了到底連接某個(gè)設(shè)備需要使用直通網(wǎng)線還是交叉網(wǎng)線而費(fèi)心了。這項(xiàng)技術(shù)已經(jīng)被廣泛的應(yīng)用在交換機(jī)和SOHO 路由器上。在 1000Basd-T 網(wǎng)絡(luò)中,其中最普遍的一種傳輸方式是使用網(wǎng)線中所有的4 對(duì)雙絞線,其中增加了4、5 和7、8 來共同傳送接收數(shù)據(jù)。由于1000Based-T 網(wǎng)絡(luò)的規(guī)范包含了AUTOMDI-X 功能,因此不能嚴(yán)格確定它們的傳出或接收的關(guān)系,要看雙方的具體的協(xié)商結(jié)果。

PHY 和MAC 之間如何進(jìn)行溝通

下面繼續(xù)讓我們來關(guān)心一下 PHY 和MAC 之間是如何傳送數(shù)據(jù)和相互溝通的。通過IEEE 定義的標(biāo)準(zhǔn)的MII/GigaMII(Media Independed Interfade,介質(zhì)獨(dú)立界面)界面連接MAC和PHY。這個(gè)界面是IEEE 定義的。MII 界面?zhèn)鬟f了網(wǎng)絡(luò)的所有數(shù)據(jù)和數(shù)據(jù)的控制。而 MAC 對(duì)PHY 的工作狀態(tài)的確定和對(duì)PHY 的控制則是使用SMI(Serial ManagementInterface)界面通過讀寫PHY 的寄存器來完成的。PHY 里面的部分寄存器也是IEEE 定義的,這樣PHY 把自己的目前的狀態(tài)反映到寄存器里面,MAC 通過SMI 總線不斷的讀取PHY 的狀態(tài)寄存器以得知目前PHY 的狀態(tài),例如連接速度,雙工的能力等。當(dāng)然也可以通過SMI設(shè)置PHY 的寄存器達(dá)到控制的目的,例如流控的打開關(guān)閉,自協(xié)商模式還是強(qiáng)制模式等。我們看到了,不論是物理連接的 MII 界面和SMI 總線還是PHY 的狀態(tài)寄存器和控制寄存器都是有IEEE 的規(guī)范的,因此不同公司的MAC 和PHY 一樣可以協(xié)調(diào)工作。當(dāng)然為了配合不同公司的PHY 的自己特有的一些功能,驅(qū)動(dòng)需要做相應(yīng)的修改。

網(wǎng)卡的供電

最后就是電源部分了。大多數(shù)網(wǎng)卡現(xiàn)在都使用 3.3V 或更低的電壓。有的是雙電壓的。因此需要電源轉(zhuǎn)換電路。而且網(wǎng)卡為了實(shí)現(xiàn) Wake on line 功能,必須保證全部的PHY 和MAC 的極少一部分始終處于有電的狀態(tài),這需要把主板上的5V Standby 電壓轉(zhuǎn)換為PHY 工作電壓的電路。在主機(jī)開機(jī)后,PHY 的工作電壓應(yīng)該被從5V 轉(zhuǎn)出來的電壓替代以節(jié)省5V Standby 的消耗。(許多劣質(zhì)網(wǎng)卡沒有這么做)。有 Wake on line 功能的網(wǎng)卡一般還有一個(gè)WOL 的接口。那是因?yàn)镻CI2.1 以前沒有PCI設(shè)備喚醒主機(jī)的功能,所以需要著一根線通過主板上的WOL 的接口連到南橋里面以實(shí)現(xiàn)WOL 的功能。新的主板合網(wǎng)卡一般支持 PCI2.2/2.3,擴(kuò)展了PME#信號(hào)功能,不需要那個(gè)接口而通過PCI 總線就可以實(shí)現(xiàn)喚醒功能。

電腦之間通過網(wǎng)線傳送的信號(hào)是交流高頻信號(hào),電壓不超過3伏,帶不動(dòng)任何負(fù)載。

需要帶負(fù)載的POE電壓是48V。RJ45的接口 最大持續(xù)工作電壓是8V

電話通過網(wǎng)線傳送的信號(hào)直流48—50V,摘機(jī)狀態(tài)下是直流6-12V,振鈴信號(hào)是交流90V 100m以太網(wǎng)的數(shù)據(jù)發(fā)送和接收時(shí)傳送的信號(hào)是交流高頻信號(hào),電壓不超過3伏。

電話線上的電壓平時(shí)是直流48V,而且是高內(nèi)阻的電源,手碰上絕對(duì)安全。但如果動(dòng)手時(shí)正好有電話打入,此時(shí)振鈴電壓是75V交流電壓,會(huì)有很強(qiáng)的麻手感覺,但沒有危險(xiǎn)。為了保險(xiǎn),可以在動(dòng)手時(shí)將電話機(jī)外線臨時(shí)短路,電壓為0,也不會(huì)再有電話能打入。裝好以后將短路線拆除。

最后附上經(jīng)典:

英文版地址:http://pcvr.nl/tcpip/

參考文章:

TCP、UDP數(shù)據(jù)包大小的限制

Maximum Segment Size,TCP一次傳輸發(fā)送的最大數(shù)據(jù)段長(zhǎng)度

網(wǎng)卡,交換機(jī),網(wǎng)橋,路由器,網(wǎng)關(guān)工作在OSI模型哪一層

網(wǎng)卡工作原理詳解

本文來自:從網(wǎng)卡發(fā)送數(shù)據(jù)再談TCP/IP協(xié)議-網(wǎng)絡(luò)傳輸速度計(jì)算-網(wǎng)卡構(gòu)造 - Network - 周陸軍的個(gè)人網(wǎng)站?

————總結(jié)性長(zhǎng)文,非原創(chuàng),如有不妥之處,請(qǐng)告知,多謝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容