TCP/IP详解html
OSI模型和TCP/IP模型可参见:TCP/IP四层模型与OSI参考模型网络
TCP/IP工做原理:TCP/IP详解学习笔记tcp
概念:学习
IP:网络上每个节点都必须有一个独立的Internet地址(也叫作IP地址)。如今,一般使用的IP地址是一个32bit的数字,也就是咱们常说的IPv4标准,这32bit的数字分红四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为五类,咱们经常使用的是B类地址。具体的分类请参考其余文档。须要注意的是IP地址是网络号+主机号的组合,这很是重要。 IP协议是TCP/IP协议的核心,全部的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达之后的处理机制--这被认为是上层协议--TCP或UDP要作的事情。因此这也就出现了TCP是一个可靠的协议,而UDP就没有那么可靠的区别。ui
IP协议帧详见:IP协议帧格式spa
IP地址详见:详解IP地址 .net
关于路由器表原理:IP路由和路由表3d
这里注意IP协议帧和IP地址是两个不一样的概念,前者是对数据的封装,后者表明了地址(网络ID+主机ID),如何分离网络ID和主机ID则靠子网掩码来区分。code
ARP:地址解析协议,是用IP地址换MAC地址的一种协议。最特殊的状况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就能够了。至因而怎么直接传递的,这就要靠ARP协议了。htm
RARP:逆地址解析协议,在tcp/ip协议的后面章节会介绍它们(在局域网里面用ARP协议能够很容易的搞瘫痪网络哦)
网络数据封装
开发板原理图部分:
电路原理图
LAN8720芯片有32个寄存器,前16个由IEEE820.3规定,后16个由厂家规定,下图的特殊功能寄存器就是由厂家规定:
特殊功能寄存器
stm32官方库使用的不是LAN8720芯片,所以移植时候须要修改stm32f4XX_eth_conf.h:
#define PHY_SR ((uint16_t)0x1F) /* PHY status register Offset */ #define PHY_SPEED_STATUS ((uint16_t)0x0004)/* PHY Speed mask */ #define PHY_DUPLEX_STATUS ((uint16_t)0x0010) /* PHY Duplex mask */
PHY_SPEED_STATUS,PHY_DUPLEX_STATUS实际上是一个掩码,功能是取出特殊寄存器中4:2中的第2位和第4位,以肯定PHY芯片的工做模式和速率。
SMI帧管理:用以在一个时间对一个PHY的一个寄存器进行读写
RMII和MII介绍参见:RMII和MII接口区别
显然,咱们的开发板用的是RMII精简接口。
嵌入式上移植的也通常都是LwIP(轻量级TCP/IP协议栈)