打印
[技术讨论]

结合W5500说一下网络通讯中的TCP与UDP

[复制链接]
188|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wassm|  楼主 | 2025-7-21 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wassm 于 2025-7-21 15:44 编辑

对于经典的OSI 参考模型将整个网络通信的功能划分为七层,从下到上依次为是物理层(PH)、数据链路层(DL)、网络层(N)、传输层(T)、会话层(S)、表示层(P)、应用层(A)。在TCP/IP协议中,将物理层数据链路层合并为网络接口层,将应用层、表示层、会话层被并为应用层,所以被简化为了四层。


  网络传输层主要是管理端到端之间的通信连接,其中包括有UDP协议和TCP协议,他们都属于TCP/IP的核心。在我们做嵌入式物联网产品设计的时候,就会遇到选择TCP还是选择UDP的问题。实际上两种通信各有各的特点。
TCP是面向连接的设计,当TCP客户端与服务端需要进行通讯时,首先需要向服务器申请建立TCP连接,连接过程包含三次握手,成功后才可以进行数据交互传输,三次握手连接既可以防止已经由历史连接,也可以避免多次握手造成资源浪费。


  而UDP是不需要进行连接的,只需要绑定对方的IP地址和端口,就可以进行数据发发送与接收。正式由于两种通讯方式的不同,导致两种方式各有优劣势。TCP因为有连接的存在,所以可以保证数据的正确性和数据的顺序,但是因为首部格式中包含了关键要素的字节表达,如端口、序号、确认号、等导致TCP首部固定字节有20个字节。而UDP通讯因为没有连接,所以并不能保证数据的正确性与完整性,是一种不可靠的传输方式,但是其首部固定字节只有8个,源端口、目的端口、长度、检验和各占2个。所以UDP在数据传输方面有速度会更快,延迟更低,实时性更好特点。


  以W5500套接字0进行UDP通讯为例,先进**的IP等配置和套接字0端口等参数初始化。在打开UDP套接字后,可以直接通过判断状态寄存器来接收数据,同样可以通过sendto();函数进行指定remote_ip和remote_port后就可以发送数据。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

17

帖子

0

粉丝