2013年7月18日:
使用stm32对lwip中的tcp操作时候的笔记:
首先要注意:
Tcp操作一般是使用到socket的。
然后,注意的是TCP的操作的时候,在lwip是有分层的概念的,尽管它并不是严格的分层,主要是考虑到了处理速度和内存分配的问题。
层:
应用层:
运输层:涉及到的函数为,实现输出的一部分函数,tcp_write(),tcp_enqueqe(),tcp_output(),涉及到输入(接收)的一部分函数,tcp_receive(),tcp_process(),tcp_input()
网络层:输出的为:ip_route(),ip_output_if(),输入的为:ip_input()
网络接口层(也可看作是物理层):输出为,netif->output()
实现的图形为:
数据发送过程是:
将数据分成适当大小的数据块,并由tcp_enqueue()指定顺序编号。数据被打包进pbufs结构并附加进tcp_seg结构。在pbufs内,tcp头被建立。在tcp_enqueue()格式化和排队了段之后,tcp_output()函数被调用。它会检查当前的窗口是否还有更多的空间来存储更多的数据。