从今天开始,我觉得学一个东西,要有系统规划,学了一个东西要总结 ,然后将所以综合一下,做成一个项目,这样才叫学习致用,下面我会将学习TCP/IP(net)的过程心得上传,
里面全是本人一点一滴的学习过程,因为有前人的总结和引导,我今天学习起来更容易了,不过我将会将这块项目做得很完美的:请大家期待。。。。。。
以下内容均以RL实时库指导为基础。。。。。。
一.TCPNET的应用
1.TCPnet的概念
RLTCPnet非常适合小型客户使用,如嵌入式系统。它是TCP/IP协议栈的实现,该协议的主要目的减小内存的使用和代码的大小,也相当于一种代码和内存的优化协议了。
RL-TCPnet是适用于ARM7/9 CM3的体系结构的软件的一种底层实现部分。
2.TCPnet的组成部分
RL-TCPnet完全是由C代码构成的,编译环境必须是REALVIEW编译器,它是RL-ARM的一部分。RL-ARM是一个独立的产品,不包含在REALVIEW MDK-MICROCONTROLLER DEVELOPMENT KIT中。
3.TCP SOCKET
TCP协议运行平台是IP协议。TCP协议是一种面向连接的可靠的字节流服务。
面向连接:两个应用程序使用TCP协议时,须在数据传输前建立TCP连接;
字节流服务:TCP是一个双工通信协议,每一个TCP连接支持一对字节流,收发双方各一个。
对于错误的处理机制:TCP对于每一个由错误没有到达目标文件的数据进行重传。如果数据坏了,它进行重发。
4.TCP 连接
RL-TCPnet的操作模式是C/S模式,TCP协议也是基于这个模式的。C/S都是通过打开操作来准备连接。
打开操作分为两种,
主动打开:客户机使用TCP,处理且通过发送TCP信息来启动并初始化连接(SYN信息);
被动打开:一个服务器进程使用TCP,使用一个更加宽松的方法。这个服务器除了指示服务进程外不做任何事,其实就是一个等等来自一特殊客户的主动打开。
5.TCP主动打开与被动打开
主动打开:
当连接一个远程server时,嵌入式应用程序使用TCP Active Open(如发邮件)。这种情况下,TCPNET系统是TCP连接的发起者。
打开活动的TCP连接步骤:
(1)在Net Config.c配置文件中打开TCP socket;
(2) 使用tcp_get_socket()得到一个空闲的tcp socket;
(3)调用 tcp_connect()函数初始化TCP连接。
被动打开:
运行服务器应用程序时TCP被以被动方式打开,如WEB浏览器。TCP SOCKET以被动方式打开,并等待输入连接 。
打开TCP连接步骤:
(1)同上(1);
(2)同上(2);
(3)利用tcp_listen()函数,允许TCP socket监听模式。
6.发送TCP数据
TCP协议不关心数据格式,只是简单的接收数据,将其压缩成TCP包,并发送给远程对等体。之后TCP Socket把最后的包保存在内存里,并等待远程对等体的响应回复。如果等待超时,则会重新发送此包,直到sorcket连接fail,或者包得到响应。内存中保存的是最后的发送包,这是为解决内存不足减小协议的实现占用率而设定的。当最后的发送包得到响应后,释放包所占的空间。
7.发送数据示例
下面我将给出一个仿写的例子说明的是使用TCP Socket发送大量数据的概念。该例子发送 64 Kbytes的数据 到远程 IP地址172.20.134.76(本机IP地址,哈哈,这个地址才能连网我就不想改动了),监听着端口 1000。当数据发送或连接关闭时,TCP Socket分配不变,也不释放。
。。。。由于关灯了,我马上回寝室了。例子已实现,明天将整理给出。
上面只是简单地说了一下学习的第一章的内容。。。。后续部分就会在连续的几天内发出。。
|