一。TCP/IP協議簇
1.應用層:FTP,HTTP,Telent,DNS,RIP
2.傳輸層:TCP,UDP
3.網絡層:IPV4,IPV6,OSPF,EIGRP
4.數據鏈路層:Ethernet,FrameRelay,Is-Is
注意:IWIP是完全按照TCP/IP協議來創建
2.OSI七層模型與TCP/IP協議模型
3.通訊過程
應用層:FTP協議
傳輸層:TCP協議
網絡層:IP協議
鏈路層:以太網驅動程序
4.全雙工vs半雙工
半雙工同時只能一方傳輸消息,否則沖突
全雙工兩方可以同時傳遞消息
?5.以太網的幀格式
就是在發送數據時,需要知道目標地址原地址,甚至是哪一個應用程序等這些信息都需要記錄。
6.C/S與B/S架構
C/S架構;
? ? ? ? 百度網盤客戶端與服務器端。
B/S架構:
? ? ? ? 百度網盤網頁端與服務器端。
二者的區別:
? ? ? ? C/S是直接與服務器端相連,優點是可以傳輸大容量的文件,缺點是相對于B/S架構來說,需要下載一個客戶端不方便。其次是開發軟件時需要對不同的操作系統開發,例如Windows,Linux,Android等等,開發困難。
? ? ? ? B/S是通過網頁連接服務器端,所以容易連接,但是同時有大量的人加入服務器端,信息會難以傳遞。這也是在百度網盤網頁版在下載大容量任務時,會要求用戶下載客戶端的一個原因。
具體區別如下圖:
二。IWIP物理層設計
1.系統連線圖
MII:稱為m-two
RMII:稱為r-m-two?
上述兩個就是接口,是物理層模塊連接stm32的接口
2.MII與RMII
MII為8數據線,6控制線,2時鐘線,2PHY線
RMII為4數據線,3控制線,1時鐘線,2PHY線?
(1)上述接口的解釋
MII_TX_CLK:發送數據使用的時鐘信號,對于10M位/s的數據傳輸,此時鐘為2.5MHz,對于100M位/s的數據傳輸,此時鐘為25MHz。?
MII_RX_CLK:接收數據使用的時鐘信號,對于10M位/s的數據傳輸,此時鐘為2.5MHz,對于100M位/s的數據傳輸,此時鐘為25MHz。?
MII_TX_EN:傳輸使能信號,此信號必需與數據前導符的起始位同步出現,并在傳輸完畢前一直保持。 ????????????????????????????????
MII_TXD[3:0]:發送數據線,每次傳輸4位數據,數據在MII_TX_EN信號有效時有效。MII_TXD[0]是數據的最低位,MII_TXD[3]是最高位。當MII_TX_EN信號無效時,PHY忽略傳輸的數據。?
MII_CRS:載波偵聽信號,僅工作在半雙工模式下,由PHY控制,當發送或接收的介質非空閑時,使能此信號。 PHY必需保證MII_CRS信號在發生沖突的整個時間段內都保持有效,不需要此信號與發送/接收的時鐘同步。?
MII_COL:沖突檢測信號,僅工作在半雙工模式下,由PHY控制,當檢測到介質發生沖突時,使能此信號,并且在整個沖突的持續時間內,保持此信號有效。此信號不需要和發送/接收的時鐘同步。?
MII_RXD[3:0]:接收數據線,每次接收4位數據,數據在MII_RX_DV信號有效時有效。MII_RXD[0]是數據的最低位,MII_RXD[3]是最高位。當MII_RX_EN無效,而MII_RX_ER有效時,MII_RXD[3:0]數據值代表特定的信息??
MII_RX_DV:接收數據使能信號,由PHY控制,當PHY準備好數據供MAC接收時,使能該信號。此信號必需和幀數據的首位同步出現,并保持有效直到數據傳輸完成。在傳送最后4位數據后的第一個時鐘之前,此信號必需變為無效狀態。為了正確的接收一個幀,有效電平不能滯后于數據線上的SFD位出現。?
MII_RX_ER:接收出錯信號,保持一個或多個時鐘周期(MII_RX_CLK)的有效狀態,表明MAC在接收過程中檢測到錯誤。具體錯誤原因需配合MII_RX_DV的狀態及MII_RXD[3:0]的數據值。
以下為四種MII接口
(1)一個 25Mhz 外部晶振 MII接口
(2)一個 25Mhz 外部晶振 + 一個50Mhz外部晶振 RMII接口
(3)一個50Mhz外部晶振 RMII接口
(4)一個 25Mhz 外部晶振 RMII接口
3.PHY,稱為pai
(1)DP83848CVV功能框圖
????????圖的上方interfaces與MII等接口連接,與stm32通信,下方為數據輸入輸出與外設接口連接。?
以下是PHY的一些功能
?以下是stm32f407的原理圖
以下是stm32f407的網絡變壓器接口。
一。以太網
1.nc模擬UDP
(1)COMMBOX通信調試工具
(2) 控制臺輸入nc -u 127.0.0.1 8000,此時串口也可以獲得數據
?(3)串口調試程序發送字符串,電腦控制臺也會展示同樣字符串(說明UDP雙向通信)
?2.nc模擬TCP
(1)串口調試助手創建Socket服務器
(2)相互發送數據
輸入: nc 127.0.0.1 8001創建TCP連接(TCP的端口號是8001,UDP端口號設置為8000)
(3)在控制臺中按Ctrl+C會導致錯誤
?綜上得出結論:
? ? ? ? TCP在連接和斷開時,會有連接與釋放。UDP是無連接的。所以在控制臺強制中斷連接時(按Ctrl+c),TCP連接的任務發送數據會報錯,而UDP的傳輸任務會繼續發送數據,不會管是否有沒有對象接受。