vs一对多的udp通信_学习笔记-TCP&UDP

本文目的

前两章节已经详细的向大家介绍过TCP和UDP,具体请看学习笔记-TCP简单理解和学习笔记-UDP简单理解。本章大致介绍TCP与UDP的区别

6c7667550a2ef09c3de712eb2eca0162.png

基本介绍

TCP(传输控制协议)提供的是面向连接、可靠的字节流服务。当客户端和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP(用户数据报协议)是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

e893d7f838beb5d23f559f7efd480c73.png

可靠性

UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。

TCP

TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。因此,TCP协议是可靠的。

UDP

与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据包的丢失,协议本身并不能做出任何检测或提示。因此, UDP协议是不可靠的。

通信模型

TCP

TCP通信模型中,在通信开始之前,一定要通过"三次握手"建立相关连接(详见学习笔记-TCP三次握手),才能发送数据。通信结束后需要"四次挥手"断开连接(详见学习笔记-TCP四次挥手)。类似于生活中,"打电话"

UDP

UDP通信模型中,在通信开始之前,不需要建立相关的连接,只需要发送数据即可,通信结束也无需断开连接。类似于生活中,"写信"

相关协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

头部格式

TCP

TCP首部复杂,有20个字节,多个字段组成。

20bf97ca4774f96463bb3d57324179f2.png

UDP

UDP首部字段很简单,只有8个字节,由四个字段组成,每个字段都是两个字节

692717d9c92bde50ad3d6739a58e54c4.png

编程步骤

TCP:

TCP编程的服务器端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt(),可选 参数;

3、绑定IP地址、端口等信息到socket上,用函数bind();

4、开启监听,用函数listen();

5、接收客户端上来的连接,用函数accept();

6、收发数据,用函数send()和recv(),或者read()和write();

7、关闭网络连接; closesocket(SocketListen);closesocket(SocketWaiter);

8、关闭监听;

TCP编程的客户端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt();* 可选

3、绑定IP地址、端口等信息到socket上,用函数bind(),可选 参数;

4、设置要连接的对方的IP地址和端口等属性;

5、连接服务器,用函数connect();

6、收发数据,用函数send()和recv(),或者read()和write();

7、关闭网络连接;

UDP:

UDP编程的服务器端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt();* 可选

3、绑定IP地址、端口等信息到socket上,用函数bind();

4、循环接收数据,用函数recvfrom();

5、关闭网络连接;

UDP编程的客户端一般步骤是:

1、创建一个socket,用函数socket();

2、设置socket属性,用函数setsockopt();* 可选

3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选

4、设置对方的IP地址和端口等属性;

5、发送数据,用函数sendto();

6、关闭网络连接;

简单总结

e89c7bd1dffaeff05b12a691b1b6f382.png

连接方面

TCP(如打电话要先拨号建立连接)。

UDP是无连接的,即发送数据之前不需要建立连接。

安全方面的区别

TCP提供可靠的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。

UDP尽最大努力交付,即不保证可靠交付。

数据可靠性

TCP提供面向连接的、可靠的数据流传输。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达。

UDP提供的是非面向连接的、不可靠的数据流传输。尽最大努力交付,即不保证可靠交付。

传输效率的区别

TCP传输效率相对较低。

UDP传输效率高,适用于对高速传输和实时性有较高的通信或广播通信。

连接数量

TCP连接只能是点到点、一对一的。

UDP支持一对一,一对多,多对一和多对多的交互通信。

传输单位

TCP传输单位称为TCP报文段,

UDP传输单位称为用户数据报。

资源消耗

TCP对系统资源要求较多,

UDP对系统资源要求较少。

本文的初衷为学习笔记的分享,部分图文来源于网络,如侵,联删。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值