淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 《手把手教你学STM32》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 开源电子网 公众平台:“正点原子” 官方网站:www.alientek.com 联系电话:13922348612 ddddd ALIENTEK 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 《手把手教你学STM32》 TCP协议基础知识 适用平台 适用平台 STM32F1xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) STM32F4xx 开发板 (正点原子) ENC28J60 模块 (正点原子) ddddd 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 本视频重点参考资料 参考资料: 1,探索者STM32F407开发板 《STM32F4 LWIP开发手册》——第四章 RAW编程接口TCP客户端实验 2,以太网参考资料 《STM32F4xx中文参考手册》-第29章 以太网(ETH) 3,LWIP参考资料 《嵌入式网络那些事LWIP协议深度剖析与实战演练》 作者:朱升林 4,LAN8720参考资料 见光盘:硬件资料芯片资料 ① LAN820A.pdf 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 目录 TCP协议介绍 1 TCP连接的建立和终止 2 TCP状态图 3 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
RAW_UDP实验 声明 本视频所有有关LWIP原理部分的内容均参考自《嵌入式网络那些事LWIP协议深度剖析与实战演练》,并且已经征得作者朱升林先生的同意。在此,感谢朱升林先生的支持。
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 1、TCP协议介绍 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。面向连接就意味着两个TCP应用(通常是客户端和服务器)在进行网络通信之前必须先建立一个TCP连接,这点和UDP是不同的,UDP是无连接的。 在TCP连接中,仅有两方通信,广播和组播是不能用TCP协议的!! TCP是提供传输的可靠性的,TCP协议通过以下方式提供可靠性: 1、应用数据会被分割成TCP认为最适合的发送的数据块,最大传输段MSS受MTU限制。 2、当TCP发出一个报文段后,会开启一个定时器,等待目的端确认收到这个报文。 3、当TCP收到另一端发送过来的数据以后会想对方发送一个确认。 4、采用分段传输的话到达目的主机的报文段可能顺序会乱,TCP会对这些报文段进行重新排序。 5、TCP还提供流量控制。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 1、TCP协议介绍 TCP数据包结构如下: 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 2、TCP连接的建立和终止 2.1、 TCP连接建立 TCP连接的建立就是著名的三次握手: 1、客户端发送SYN标志置1 的TCP报文段,并且发送自己的初始序号ISN,假设为j。 2、服务器收到客户端发送的SYN,然后返回一个SYN+ACK,ACK报文包含了有效的确认段,这个值就是客户端发送的初始序号j+1。同时服务器还发送一个SYN报文,SYN表明服务器响应连接,并且在报文中包含了服务器自身的初始序号ISN,假设为k。 3、客户端收到服务器发送来的SYN报文后会再次产生一个ACK报文,在这个ACK报文中包含了对服务器发送来的SYN报文的有效确认号,该值为服务器发送的ISN加1,也就是k+1。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
2、TCP连接的建立和终止 2.1、 TCP连接终止 1、首先客户端主动发起断开连接,发送FIN报文,用来关闭从客户端到服务器的数据传输,该报文的序号字段假设为X。 2、服务器接收到客户端发来的FIN字报文,返回一个ACK报文,这个ACK报文的序号字段为X+1,当客户端收到这个ACK后,那么客户端到服务器的连接就断开了。 3、服务器TCP向上层通知客户端断开操作,这样服务器会发送一个FIN报文来关闭服务器到客户端的连接。FIN报文的序号字段假设为Y。 4、客户端也会返回一个ACK报文,此ACK报文的序号字段为Y+1。这样该方向上的连接也就断开了。 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 2、TCP状态图 TCP协议一共有11种状态,LWIP中tcp.h文件中通过一个枚举类型定义列出了这11个状态,如下: enum tcp_state { CLOSED = 0, //连接断开,没有连接 LISTEN = 1, //服务器进入侦听状态,等待客户端的连接请求 SYN_SENT = 2, //连接请求已发送,等待确认 SYN_RCVD = 3, //已收到对方的连接请求 ESTABLISHED = 4, //连接已建立 FIN_WAIT_1 = 5, //程序已关闭该连接 FIN_WAIT_2 = 6, //另一端已接收关闭该连接 CLOSE_WAIT = 7, //等待程序关闭连接 CLOSING = 8, //两端同时收到对方的关闭请求 LAST_ACK = 9, //服务器等待对方接受关闭操作 TIME_WAIT = 10 //关闭成功,等待网络中可能出现的剩余数据 }; 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com
2、TCP状态图
淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 谢谢您对“正点原子”团队的支持 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com 淘宝店铺:http://eboard.taobao.com 技术论坛:www.openedv.com