新闻中心

EEPW首页>嵌入式系统>设计应用> 基于SX单片机实现WebServer和网络协议栈

基于SX单片机实现WebServer和网络协议栈

作者: 时间:2012-03-14 来源:网络 收藏

首部长度指的是首部占32bit字的数目。由于它是一个4位字段,因此首部最长为60个字节。在这里,IP数据报字段的值是5。

服务类型字段包括一个3位的优先权子字段(现在已被忽略)、4位的TOS子字段和1位未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit 。如果所有4bit 均为0,那么就意味着是一般服务。

总长度字段是指整个I P 数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道I P 数据报中数据内容的起始位置和长度。

标识字段唯一地标识主机发送的每一份数据报。

标志字段用来指定目的地址是一个完整的主机地址还是一个地址。

生存时间字段设置了数据报可以经过的最多路由器数。

首部检验和字段是根据IP首部计算的检验和码。

源地址和目的地址都是32位的数据。

可选项定义安全和处理限制、记录路径、时间戳、宽松的源站选路、严格的源站选路等信息。

(2)栈对IP层的

52BD100的栈中,IP层的就是把要发送出去的消息进行IP打包,即加上IP包头,使之符合IP数据包的格式发送到物理层;将接收到的来自物理层的数据包进行IP解包,即去掉包头,送到TCP层。应注意,栈不接收分片的IP包,因为它并不对接收到的数据进行重新打包。

2. 传输层

(1)TCP 协议

TCP提供一种面向连接的、可靠的字节流传送服务。TCP数据包的结构如图5所示。

37.jpg

每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP包头中的源端IP地址和目的端IP地址,唯一确定一个TCP连接。

序号用来标识从T C P 发端向T C P 收端发送的数据字节流。它表示在这个报文段中的第一个数据字节。

确认序号包含发送确认的一端所期望收到的下一个序号。

首部长度给出首部中32bit字的数目。

紧急指针是一个正的偏移量,与序号字段中的值相加表示紧急数据最后一个字节的序号。其余字段的意义和IP包中的差不多。

为了保证TCP层的数据能有效地传输,在建立TCP连接时,用到了三向握手机制。具体过程如下(假设在A、B间通信,A、B的初始化序号为X、Y):

  ① 由A向B发出SYN信号,告诉B,A的初始化序号为X。

  ② 由B向A发出ACK和SYN信号,告诉A,B知道A的初始化序号为X,B的是Y。

  ③ 由A向B发出ACK信号,告诉B,A知道B的初始化序号是Y。

经过这样的初始化后,TCP连接的建立就完成了,A与B之间的数据传输也可靠了。

(2)协议栈对TCP层的

在SX52BD100的协议栈中,对TCP层的实现是通过提供的TCP API(应用程序接口)来实现。TCP的API主要包括下面的函数和变量:

TCPApp1Init():建立第一个TCP连接的初始化函数;
TCPApp2Init():建立第二个TCP连接的初始化函数;
TCPAppTxBytes():TCP连接中发送数据的字节数;
TCPAppRxBytes():TCP连接中接收数据的字节数;
TCPAppTxData():发送数据;
TCPAppRxData():接收数据;
TCPAppTxDone():发送完毕;
TCPAppRxDone():接收完毕;
TCPAppPassiveOpen():被动TCP连接;
TCPAppActiveOpen():主动TCP连接;
Sock1RomoteIP、Sock2RomoteIP:TCP连接的远程主机的IP地址;
MyIP:本机的IP地址;
tcb1LocalPortMSB、tcb1LocalPortLSB、tcb2LocalPortMSB、tcb2LocalPortLSB:本机的TCP连接端口;
tcb1RemotePortMSB、tcb1RemotePortLSB、tcb2RemotePortMSB、tcb2RemotePortLSB:远程主机的TCP连接端口;



评论


相关推荐

技术专区

关闭