一。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的传输任务会继续发送数据,不会管是否有没有对象接受。