实验目的
本节视频的目的是学习TCP/IP协议的通信原理和Wed服务器的工作原理,实现搭建轻量级Web服务器。
官方公众号:创龙教仪
官方B站号:创龙教仪
官方网站:www.tronlongtech.com
实验原理
硬件原理图
实验过程中使用的是网口。
WEB服务器
(WORLD WIDE WEB,环球信息网)
即万维网,主要功能是浏览服务。WWW 是 Internet 的多媒体信息查询工具,是 Internet 上近年才发展起来的服务,也是发展最快和目前用的最广泛的服务。正是因为有了WWW工具,才使得近年来 Internet 迅速发展,且用户数量飞速增长。
Web服务器是在运行在物理服务器上的一个程序,它永久地等待客户端(主要是浏览器,比如Chrome,Firefox等)发送请求。当收到请求之后,它会生成相应的响应并将其返回至客户端。Web服务器通过HTTP协议与客户端通信,因此也被称为HTTP服务器。
当我们在浏览器输入URL后,浏览器会先请求DNS服务器,获得请求站点的 IP 地址。然后发送一个HTTP Request(请求)给拥有该 IP 的主机,接着就会接收到服务器给我们的 HTTP Response(响应),浏览器经过渲染后,以一种较好的效果呈现给我们。这个过程中,正是Web服务器在幕后默默做贡献。
Web工作原理
Web服务器的工作原理并不复杂,一般可分成如下4个步骤:
(1)建立连接
客户机通过TCP/IP协议建立到服务器的TCP连接。
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
Web浏览器向Web服务器发送请求命令一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。
(2)请求过程
客户端向服务器发送HTTP协议请求包,请求服务器里的资源文档。
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
(3)应答过程
服务器向客户机发送HTTP协议应答包,如果请求的资源包含有动态语言的内容,那么服务器会调用动态语言的解释引擎负责处理“动态内容”,并将处理得到的数据返回给客户端。由客户端解释HTML文档,在客户端屏幕上渲染图形结果。
(4)关闭连接
Web服务器关闭TCP连接.
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
HTTP协议
(HyperText Transfer Protocol,超文本传输协议)
HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议,是基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。HTTP是一个应用层协议,由请求和响应构成,永远都是客户端发起请求,服务器回送响应,是一个标准的客户端服务器模型。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
HTTP是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
LwIP协议栈
LwIP是一个轻量级的TCP/IP协议栈,可用于各种嵌入式的系统中。LwIP协议是一套用于嵌入式系统的开放源代码TCP/IP协议栈。LwIP含义是light weight(轻型)IP协议,在实现时保持了TCP协议的主要功能基础上减少对RAM的占用,一般它只需要几十K的RAM和40K左右的ROM就可以运行,这使LwIP协议栈很适合在低端嵌入式系统中使用。
LwIP协议栈的设计采用分层结构的思想,每一个协议都作为一个模块来实现,提供一些与其它协议的接口函数。所有的TCP/IP协议栈都在一个进程当中,这样TCP/IP协议栈就和操作系统内核分开了。而应用程序既可以是单独的进程也可以驻留在TCP/IP进程中,它们之间利用ICP机制进行通讯。如果应用程序是单独的线程可以通过操作系统的邮箱、消息队列等,与协议栈进程通讯。如果应用程序驻留在协议栈进程中,则应用程序可以通过内部回调函数和协议栈进程通讯。
EMAC
(Ethernet Media Access Controller,以太网媒体访问控制器)
简单介绍集成在器件中的以太网媒体访问控制器(EMAC)和物理层(PHY)器件管理数据输入/输出(MDIO)模块的功能描述。 EMAC 模块用于在器件(device)和连接到同一网络的其他主机(host)之间搬移数据,遵从以太网协议。EMAC 控制从系统到 PHY 的包数据流。 MDIO 模块控制 PHY 配置以及状态监控。EMAC 和 MDIO 模块都是通过自定义接口连接到系统内核的,它允许高效率的数据发送和接收。这个自定义接口被称为 EMAC 控制模块,是 EMAC/MDIO 不可或缺的外设。
EMAC/MDIO 特点
EMAC/MDIO 具有以下特点:
(1)同步 10/100 Mbps 操作。
(2)到物理层器件(PHY)的标准媒体独立接口(MII)或简化媒体独立接口(RMII)。
(3)EMAC 作为到器件内外存储空间的 DMA 主控 。
程序流程
操作现象
硬件设备
本实验使用的硬件接口为网口,所需硬件为实验板、仿真器、网线、RS232 交叉串口母母线、USB转RS232串口线和电源。
硬件连接
(1)使用网线连接实验板的网口和路由器,程序默认是动态获取IP的。如果没有路由器,则使用网线连接实验板的网口和电脑的网口,请根据实验手册修改程序以及设置电脑的静态IP。
(2)使用 RS232 交叉串口母母线和 USB 转 RS232 串口线连接实验板的UART2串口和电脑的 USB口。
(3)连接仿真器和电脑的USB接口,
(4)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。
软件操作
(1)先在设备管理器查看串口的端口号;
(2)再设置串口调试工具,波特率设置为115200。
设置好串口调试工具后,在CCS里进行相关操作。
导入工程,选择Demo文件夹下的对应工程
编译工程
将CCS连接实验箱并加载程序
点击运行程序,串口终端会打印自动获取到的实验箱IP地址
在 Windows 开始菜单底部输入 cmd 进入控制台窗口,执行 ping 命令,确认实验箱的网络部分工作正常。
打开浏览器输入网址 http://192.168.0.116,就可以看到网址内容。
实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。