镜像博客
后台登陆
返回首页
经典文章 程序参考 电路收藏 开发工具 电子导航
 快速通道
-------------------------------------
 
 
 
 
 免费电话
-------------------------------------------------------------------------------------------------------------------------------------------------------------

校园梦网网络电话,中国最优秀的网络电话

 
 友情连接
-------------------------------------
 
 
 最新主题
-------------------------------------------------------------------------------------------------------------------------------------------------------------

TCP/IP协议栈在MSP430单片机上的实现 --- 2/2  2008-4-7 9:40:00 --- 免费电话想打就打

 

IP 协议

  

UIP 的IP 协议主要负责验证输入包的IP 头的正确性,以及在ICMP 和TCP 之间复用数据包。IP 层没有实现数据包的分段和重组,从而代码得到极大的简化。

  

ICMP 协议

  

ICMP 中echo 和echo reply 信息常常用在ping 程序里,以检查目的主机能否连通。在uIP 只实现echo 。在处理收到的echo 信息时,只需要把ICMP 类型字段从“echo”类型改变到“echo reply”类型,调整ICMP 校验和,并互掉IP 数据包头里的目的地址和源地址,把包发回到发送方。

  

TCP

  

为了减少储存器的使用,在UIP 里,TCP 不再实现发送和接收数据的窗口调整;不会缓存刚刚收到的TCP 段,而是立即由应用程序处理,应用程序可以自己缓冲数据;在输出数据时,在每个连接只能有一个正在传输的TCP 段。

  

以上四个协议实现的过程中,极大的简化了代码和处理过程,节省了存储空间和缓存空间。

  

UIP 协议栈的接口

  

UIP 协议通过一系列接口函数与底层系统和上层应用通信,它内部的协议集合对外部系统来说是透明的,从而增强了该协议的通用性和独立性,可以非常方便地移植到不同系统和应用平台。

  

图1 描述了UIP、底层系统和应用程序三者之间的调用关系。其中UIP 提供了三个函数给底层系统:UIP_init ( ) ,UIP_input ( ) ,UIP_periodic ( ) 。应用程序向UIP 提供一个调用函数UIP_ APPCALL( ) ,在网络事件或计时事件发生时进行调用;同时,UIP 也要向应用程序提供一些与协议栈的接口函数,应用程序根据接口函数提供的信息或者状态,执行相应的操作。

图1  UIP 协议栈接口

UIP 应用接口

  

UIP 使用基于事件的程序模式,应用程序由C 语言函数实现。当收发数据、新连接建立或者数据需要重新传输时,UIP 都会调用应用程序。同时,应用程序还要周期查询是否有新的数据收发。因为应用程序只提供了一个回调函数,所以应用程序还要把不同的网络服务映射到不同的端口和连接。

  

UIP 在接受到底层传来的数据包后,如果需要送上层应用程序处理,就调用UIP_APPCALL( ) 。同时,UIP 设置结构体UIP_conn 指针指向当前连接。UIP_conn 记录一条TCP 连接的所有相关信息,它是维持uIP 运行的关键结构,定义如下:

struct uip_conn {

  u8_t  tcpstateflags ;  PPTCP 的状态和标志

  u16_t lport , rport ;  PP当地和远端端口

  u16_t ripaddr[2] ;  PP远端的IP 地址

  u8_t  rcv- nxt [4] ;  PP下一个要接收的序列号

  u8_t  snd- nxt [4] ;  PP上一个已发送的序列号

  u8_t  ack- nxt [4] ;  PP对端下一个应答序列号

  u8_t  timer ;  PP重传时间

  u8_t  nrtx ;  PP计算特殊段的重发数量

  u8_t  mss ;  PP连接中最大分段的大小

  u8_t  appstate[UIP_APPSTATE_SIZE] ;

    } ;

  

UIP提供给应用程序的接口函数如: uip_listen ( ) 、uip_connect ( ) 、uip_send( ) 、uip_datalen( ) 、uip_close ( ) 、uip_abort ( ) 、uip_stop ( ) 、uip_stopped( ) 、uip_restart ( ) 等,实现了TCP/IP 协议栈的基本功能。

 
载入中...
 
   文章来源网络如无您的大名或您不同意我的收藏请到: 白沙的香烟盒管理之吧  告知白沙,我会做尽快处理!
------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
  • 标签:TCP IP MSP430 
  • 发表评论:
    载入中...
     
     
     
     统计信息
    -------------------------------------
     
     免费电话
    -------------------------------------------------------------------------------------------------------------------------------------------------------------

    校园梦网网络电话,中国最优秀的网络电话