嵌入式 TCP_IP 协议栈说明
书
杨文斌
2008-9-1
一、 总则
本文件是嵌入式 TCP/IP 协议栈的说明文件,嵌入式 TCP/IP 应用开发人员可通过阅读本文件,掌握在嵌入
式 TCP/IP 协议栈的基础上开发服务器和客户端应用程序,如 FTP 服务器,WEB 服务器,串口服务器等等。
二、 参考文件
1) TCP_IP 详解卷 1,2,3
2) RFC 959 (rfc959) - File Transfer Protocol.htm
3) rfc1945- Hypertext Transfer Protocol -- HTTP/1.0
三、 技术说明
1) 用户应用协议栈则需要编写以太网的数据报收发驱动,就可以使用协议栈提供的标准 SOCKET
API,完成服务器和客户端应用程序的开发。
2) 协议栈运行于非操作系统的环境下,因此它的运行速度与一般采用多任务操作系统的 TCP/IP 协
议,速度相对说来要快。
3) 协议栈完成的功能包括 ARP,IP,ICMP(ping), TCP,UDP,暂不支持 IGMP,RARP。
4) 协议栈采用 C 代码编写,可方便的移植于各种单片机平台。
5) 协议栈在 ARM7+RTL8019 硬件环境下测试,并建立了 FTP 服务器和 WEB 服务器,性能稳定。
6) 协议栈建立的 FTP 服务器和 WEB 服务器与 Internet Explorer 浏览器和 ftp.exe 相互兼容。
7) 协议栈每一个 SOCKET 上建了数据缓冲队列(数据结构),用于接收 SOCKET 的并发数据,实现
多 SOCKET 的并发数据报处理,可同时运行 FTP 服务器和 WEB 服务器。
8) 协议栈实现了 ACK 的延时答应(200ms),支持 TCP 多包发送和接收,但未支持 TCP 数据报
的失序处理,因此适合局域网内使用。
四、 SOCKET API 函数
1) 函数 SOCKET * socket(u16 af,u16 type,u16 protocol)
本函数功能是从 SOCKET pool 中分配一个 SOCKET 插口,供应用程序使用,其参数说明如下:
1. 参数 af—无意义,保留为扩充功能使用。
2. 参数 type—为分配的插口类型:其类型包括 SOCKET_For_Listening(为 PASV 插口,该类
型的插口不会被保活定时器 timeout 自动清除), OTHER(当保活定时器 timeout,该类型的
插口将被自动清除)。
3. 参数 protocol—为分配 SOCKET 的类型,包括 TCP_PROTOCOL 和 UDP_PROTOCOL 两个
类型。
4. 返回值:函数执行成功,返回 SOCKET*指针指向一个 SOCKET,失败返回 NULL
2) 函数 u16 bind(SOCKET * sock,struct sockaddr * address,u8 len)
本函数功能是将 IP 地址和端口绑定到一个 SOCKET 指针* sock 指向的 SOCKET。
1. SOCKET * sock—指向被绑定的 SOCKET。
2. struct sockaddr * address—指向 IP 地址和端口。
3. len—无意义,保留为扩充功能使用。
4. 返回值:SUCC。
3) 函数 u16 listen(SOCKET * sock, u16 QTY)
本函数功能是启动被绑定了地址和端口的 SOCKET * sock,触发其为监听状态。本函数由服务
器端应用程序使用。
1. SOCKET * sock—指向被 bind 的 SOCKET。
2. 返回值:SUCC。
- 1
- 2
- 3
- 4
前往页