区别
- TCP提供面向连接的、可靠的数据流传输,UDP提供的是非面向连接的、不可靠的数据流传输。
- TCP传送数据之前建立连接,传送结束后释放连接,UDP传送数据之前不建立连接,收到后不给出任何确认。
- tcp:提供可靠交付的服务(无差错,不丢失,不重复,且按序到达)(校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。)。
- udp:尽最大努力交付(不保证可靠交付)。
- TCP适用于大文件,UDP适用于小文件。
- TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
- TCP面向字节流,UDP面向报文。
- 每一条TCP连接只能是点对点的(一对一),UDP支持一对一、一对多、多对一和多对多的交互通信。
- TCP提供全双工通信,UDP无拥塞控制。
- TCP注重数据安全性,传输慢;UDP数据传输快,但是其安全性却一般。
- TCP对应的协议和UDP对应的协议不同。
- UDP无拥塞控制,适用于实时应用;
- UDP首部开销小,8B,TCP20B。
其他
-
TCP的主要特点是:
面向连接。
每一条TCP连接只能是点对点的(一对一)。
提供可靠交付的服务(无差错,不丢失,不重复,且按序到达)(校验和、重传控制、序号标识、滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。)。
提供全双工通信。
面向字节流。
-
UDP的主要特点是:
无连接。
尽最大努力交付(不保证可靠交付)。
面向报文。
无拥塞控制。
支持一对一、一对多、多对一和多对多的交互通信。
首部开销小(只有四个字段:源端口、目的端口、长度、检验和)。
TCP对应的协议和UDP对应的协议
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5) HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trivial File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
TCP如何实现可靠性传输?
- 校验,序号,确认机制、重传机制、滑动窗口。
- 重传:超时和冗余ACK
怎么让udp实现可靠连接
UDP不属于连接协议,具有资源消耗少,处理速度快的优点,所以通常音频,视频和普通数据在传送时,使用UDP较多,因为即使丢失少量的包,也不会对接受结果产生较大的影响。
传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。
最简单的方式是在应用层模仿传输层TCP的可靠性传输。下面不考虑拥塞处理,可靠UDP的简单设计。
1、添加seq/ack机制,确保数据发送到对端
2、添加发送和接收缓冲区,主要是用户超时重传。
3、添加超时重传机制。
详细说明:送端发送数据时,生成一个随机seq=x,然后每一片按照数据大小分配seq。数据到达接收端后接收端放入缓存,并发送一个ack=x的包,表示对方已经收到了数据。发送端收到了ack包后,删除缓冲区对应的数据。时间到后,定时任务检查是否需要重传数据。
目前有如下开源程序利用udp实现了可靠的数据传输。分别为RUDP、RTP、UDT。