以太網是一種計算機局域網技術。IEEE組織的IEEE 802.3標準制定了以太網的技術標準,它規定了包括物理層的連線、電子信號和介質訪問層協議的內容。以太網的協議層是建立在OSI模型的基礎上的,OSI模型,即開放式通信 系統互聯參考模型(Open System Interconnection),是國際標準化組織(ISO)提出的一個試圖使各種計算機在世界范圍內互連為網絡的標準框架,簡稱OSI。主要包括七層,具體如下:
(1)、物理層 Physical Layer
(2)、數據鏈路層 Data Link Layer
(3)、網絡層 Network Layer
(4)、傳輸層 Transport Layer
(5)、會話層 Session Layer
(6)、表示層 Presentation Layer
(7)、應用層 Application Layer
因為我是做FPGA的,因此只關注了物理層,數據鏈路層,網絡層,傳輸層;更上層協議沒有做過多了解。
1,以太網物理層,
物理層為OSI中的第一層,主要包括PCS,PMA,PMD,
PCS:物理編碼子層,完成完成對傳輸的MAC協議數據的編、譯碼;以便物理介質傳輸;
PMA:物理介質連接子層,生成線路的傳輸信號;接收線路信號完成時鐘恢復;
PMD:物理介質相關子層,定義不同傳輸介質的接口標準,提供物理連接。
物理層與鏈路層接口:主要包括:MII、RMII接口、GMII接口、RGMII接口、SGMII接口、 XGMII接口。
MII:支持10兆和100兆的操作,一個接口由14根線組成,它的支持還是比較靈活的,但是有一個缺點是因為它一個端口用的信號線太多,如果一個8端口的交換機要用到112根線,16端口就要用到224根線,到32端口的話就要用到448根線,一般按照這個接口做交換機,是不太現實的,所以現代的交換機的制作都會用到其它的一些從MII簡化出來的標準,比如RMII、SMII、GMII等。
RMII:簡化的MII接口,在數據的收發上它比MII接口少了一倍的信號線,所以它一般要求是50兆的總線時鐘。RMII一般用在多端口的交換機,它不是每個端口安排收、發兩個時鐘,而是所有的數據端口公用一個時鐘用于所有端口的收發,這里就節省了不少的端口數目。RMII的一個端口要求7個數據線,比MII少了一倍,所以交換機能夠接入多一倍數據的端口。和MII一樣,RMII支持10兆和100兆的總線接口速度。
SMII:由思科提出的一種媒體接口,它有比RMII更少的信號線數目,S表示串行的意思。因為它只用一根信號線傳送發送數據,一根信號線傳輸接受數據,所以在時鐘上為了滿足100的需求,它的時鐘頻率很高,達到了125兆,為什么用125兆,是因為數據線里面會傳送一些控制信息。SMII一個端口僅用4根信號線完成100信號的傳輸,比起RMII差不多又少了一倍的信號線。SMII在工業界的支持力度是很高的。同理,所有端口的數據收發都公用同一個外部的125M時鐘。
XGMII:是10Gb的物理層接口,接口時鐘為156.25Mhz。
GMII :是千兆網的MII接口,這個也有相應的RGMII接口,表示簡化了的GMII接口;GMII是8bit并行同步收發接口,采用8位接口數據,工作時鐘125MHz,因此傳輸速率可達1000Mbps。同時兼容MII所規定的10/100 Mbps工作方式。
發送接口信號:
◇ GTXCLK——吉比特TX..信號的時鐘信號(125MHz)
◇ TXCLK——10/100M信號時鐘
◇ TXD[7..0]——被發送數據
◇ TXEN——發送器使能信號
◇ TXER——發送器錯誤(用于破壞一個數據包)
接收接口信號:
◇ RXCLK——接收時鐘信號(從收到的數據中提取,因此與GTXCLK無關聯)
◇ RXD[7..0]——接收數據
◇ RXDV——接收數據有效指示
◇ RXER——接收數據出錯指示
◇ COL——沖突檢測(僅用于半雙工狀態)
注:在千兆速率下,向PHY提供GTXCLK信號,TXD、TXEN、TXER信號與此時鐘信號同步。否則,在10/100M速率下,PHY提供 TXCLK時鐘信號,其它信號與此信號同步。其工作頻率為25MHz(100M網絡)或2.5MHz(10M網絡)。
2,以太網數據鏈路層
數據鏈路層為OSI中的第二層,主要將從物理層拿到的數據幀解析后拿到IP數據報傳遞給網絡層;或把網絡層拿到的IP數據報,增加前導碼,MAC地址,幀類型校驗后組成新的數據幀傳遞給物理層;具體協議數據幀如下:
數據幀中的數據為IP數據報;
數據幀前會有8個字節的前導碼,然后和上述的數據幀一塊構成一個完成對MAC層數據報。
注意:
幀間最小間隔 :幀間最小間隔為 9.6 us (10Mbps) ,相當于96 bit 的發送時間(等待12個時鐘之后)。一個站在檢測到總線開始空閑后,還要等待 9.6 us (10Mbps)才能再次發送數據。這樣做是為了使剛剛收到數據幀的站的接收緩存來得及清理,做好接收下一幀的準備。
最大幀長度:為了保證信道使用的相對公平性,讓更多的站能搶占到信道,規定了最大幀長度;超過了最大幀長度就需要分多次完成;以太網規定了數據幀中傳送數據的最大長度為1500字節。
最短有效幀長:如果發生沖突,就一定是在發送的前 64 字節之內。由于一檢測到沖突就立即中止發送,這時已經發送出去的數據一定小于 64 字節。以太網規定了最短有效幀長為 64 字節,凡長度小于 64 字節的幀都是由于沖突而異常中止的無效幀。
3,以太網網絡層
網絡層是OSI中的第三層;位于傳輸層和數據鏈路層之間;實現將傳輸層數據報打包為IP數據報,或解析IP數據報。
IP數據報如下:(藍色部分為IP數據報首部來;黃色部分為UDP/TCP數據報,也是IP數據報的報文)
首部介紹:
版本:占 4 位,指 IP 協議的版本,通信雙方使用的IP協議的版本必須一致,目前的 IP 協議版本號為 4 (即 IPv4)
首部長度:占4位,可表示的最大數值是15個單位(一個單位為 4 字節),因此IP 的首部長度的最大值是 60 字節。最常用的是20字節(0101)
區分服務:占 8 位,一般不使用
總長度:占 16 位,指首部和數據之和的長度,單位為字節,因此數據報的最大長度為 65535 字節,總長度必須不超過最大傳送單元MTU
標識:占 16 位,它是一個計數器,用來產生數據報的標識,在分片時被使用,用于數據的重組條件
標志:占 3 位,目前只有前兩位有意義,標志字段的最低位是 MF(More Fragment),MF=1 表示后面“還有分片”。MF=0 表示最后一個分片;標志字段中間的一位是 DF (Don’t Fragment),只有當 DF=0 時才允許分片
片偏移:占13位,指較長的分組在分片后某片在原分組中的相對位置.片偏移以 8 個字節為偏移單位
生存時間:占 8 位,記為 TTL (Time To Live) 數據報在網絡中可通過的路由器數的最大值,TTL 字段是由發送端初始設置一個 8 bit 字段.推薦的初始值由分配數字 RFC 指定,當前值為 64.發送ICMP 回顯應答時經常把 TTL 設為最大值 255
協議:占 8 位,指出此數據報攜帶的數據使用何種協議以便目的主機的 IP 層將數據部分上交給哪個處理過程, 1 表示為 ICMP 協議, 2 表示為 IGMP 協議, 6 表示為 TCP 協議, 17 表示為UDP 協議
首部檢驗和:占 16 位,只檢驗數據報的首部不檢驗數據部分.這里不采用 CRC 檢驗碼而采用簡單的計算方法
源地址和目的地址:都各占 4 字節,分別記錄源地址和目的地址
可選字段和填充字段 : 很少使用,新協議中已經取消IPv6
4,以太網傳輸層
傳輸層是OSI中的第四層;主要完成UDP/TCP的裝配然后傳輸給網絡層;
UDP:不可靠傳輸;但能保證實時性;多用于視頻通話或會議等;
TCP:可靠傳輸;建立在連接的基礎之上;保證數據完整性;多用于郵件,信息等;
UDP數據報:
TCP數據報:
帶陰影的幾個字段需要重點說明一下:
1) 序號:Seq(Sequence Number)序號占32位,用來標識從計算機A發送到計算機B的數據包的序號,計算機發送數據時對此進行標記。
2) 確認號:Ack(Acknowledge Number)確認號占32位,客戶端和服務器端都可以發送,Ack = Seq + 1。
3) 標志位:每個標志位占用1Bit,共有6個,分別為 URG、ACK、PSH、RST、SYN、FIN,具體含義如下:
URG:緊急指針(urgent pointer)有效。
ACK:確認序號有效。
PSH:接收方應該盡快將這個報文交給應用層。
RST:重置連接。
SYN:建立一個新連接。
FIN:斷開一個連接。
審核編輯 :李倩
-
FPGA
+關注
關注
1630文章
21759瀏覽量
604373 -
以太網
+關注
關注
40文章
5441瀏覽量
172041 -
計算機
+關注
關注
19文章
7520瀏覽量
88233
原文標題:基于FPGA的以太網協議介紹
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論