TCP与UDP的异同及各自特点
目录
写在前面
此学习笔记为个人学习笔记,部分内容参考自业内官网、学习网站、他人博客等,欢迎交流与指正。
定义
TCP:传输控制协议,Transmission Control Protocol。
是一种面向连接的、可靠的、基于字节流的传输层通信协议
UDP:用户数据报协议,User Datagram Protocol。
UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。
区别
1.面向连接与无连接 TCP有三次握手过程; UDP适合消息的多波发布,从单个点向多个点传输。 2.可靠性 TCP可靠,利用三次握手确认和重传机制,提供可靠性保证; UDP可能会丢包。 3.有序性 TCP利用序列号保证消息的顺序交付,到达可能无序,但最终会排序; UDP不具备。 4.速度 TCP较慢,因要保证顺序和可靠性; UDP适合对速度敏感的程序,比如在线视频、广播、游戏等。 5.量级 TCP属于重量级,UDP轻量级,体现在元数据的头大小,TCP是20字节,UDP为8字节。 TCP首部较长20字节,UDP首部较短8字节;
相同点
两者都是OSI模型中的运输层协议。
特点
TCP
可靠的,有状态的,基于流的协议,有明确的客户端和服务端,且只能连接两个端点(即两个套接字)ServerSocket和Socket,点对点;
TCP协议的主要特点
(1)TCP是面向连接的运输层协议;
(2)每一条TCP连接只能有两个端点(即两个套接字),只能是点对点的;
(3)TCP提供可靠的传输服务。传送的数据无差错、不丢失、不重复、按序到达;
(4)TCP提供全双工通信。允许通信双方的应用进程在任何时候都可以发送数据,因为两端都设有发送缓存和接受缓存;
(5)面向字节流。虽然应用程序与TCP交互是一次一个大小不等的数据块,但TCP把这些数据看成一连串无结构的字节流,它不保证接收方收到的数据块和发送方发送的数据块具有对应大小关系,例如,发送方应用程序交给发送方的TCP10个数据块,但就受访的TCP可能只用了4个数据块久保收到的字节流交付给上层的应用程序,但字节流完全一样。
TCP的可靠性原理
可靠传输有如下两个特点:
a.传输信道无差错,保证传输数据正确;
b.不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据;
(1)首先,采用三次握手来建立TCP连接,四次握手来释放TCP连接,从而保证建立的传输信道是可靠的。
(2)其次,TCP采用了连续ARQ协议(回退N,Go-back-N;超时自动重传)来保证数据传输的正确性,使用滑动窗口协议来保证接方能够及时处理所接收到的数据,进行流量控制。
UDP
不可靠,无状态无连接,速度快,靠发包传输数据,最大包64k。
UDP协议特点
(1)UDP是无连接的传输层协议;
(2)UDP使用尽最大努力交付,不保证可靠交付;
(3)UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界;
(4)UDP没有拥塞控制,因此即使网络出现拥塞也不会降低发送速率;
(5)UDP支持一对一 一对多 多对多的交互通信;
(6)UDP的首部开销小,只有8字节.
基于TCP和UDP的常用协议
HTTP、HTTPS、FTP、TELNET、SMTP(简单邮件传输协议)协议基于可靠的TCP协议。TFTP、DNS、DHCP、TFTP、SNMP(简单网络管理协议)、RIP基于不可靠的UDP协议
应用场景
TCP:访问网页、发邮件、上传或下载文件等。
UDP:在线视频、广播、游戏等。