UDP (User Datagram Protocol) 用户数据报协议
TCP (Transmission Control Protocol)传输控制协议
一、
TCP和UDP都是用来发送和接收数据的。
TCP是面向连接的。即两台采用tcp协议的服务器,需要先通过三次握手建立连接,然后才开始进行数据传输,在数据传输之后通过四次挥手释放连接。
UDP是无连接的直接发送数据。
二、
TCP是每条连接只能有两个端点,只能进行一对一的通信。
UDP是可以进行单播,广播,多播的,也就是可以进行一对一,一对多,多对一,多对多的交互通信。
三、
TCP是面向字节流的, S1把字节流发送给TCP1,TCP1把字节流分成数据块,加上首部后进行传输给TCP2,TCP2再把字节流发送给S2。在传输的过程中S1到S2的数据块可能大小不一样,但字节流是一样的。
UDP是直接把应用层交付的报文直接打包,加上首部后进行传输。
四、
TCP是可靠的,完整的,不会丢包,使用了流量控制好的拥塞控制,所有的数据包都是按照顺序接收的,如果出现错误或丢失会重新发送。即TCP1发送数据给TCP2,无误,TCP2给TCP1发送确认后再,发送接下来的数据。如出现丢包或者误码则TCP2不会给TCP1发送确认,TCP会自动进行超时重发。所以,由于完整性和可靠性比较高,TCP一般用于进行文件传输。
UDP是即发即忘,进最大努力交付,但不在意接收方的情况,不可靠,也没有使用流量控制和拥塞控制。即在数据传输的过程中,如果发现有误码的情况,可以通过首部进行检测到,但不做处理,直接丢弃,所以如果网页用是这种方式进行传输,那么就可能会出现丢失图片,文字,或者排版混乱的情况。因为不可靠,网络开销比较小,比较适用于实时性要求比较高的应用,比如视频会议,IP电话,游戏等。
五、
TCP首部开销较大,有20字节的固定开销和最大40字节的扩展,共计20~60字节。
UDP首部开销很小,只有四部分,每部分两个字节,共计8字节。
总结、
Tcp | Udp |
有连接 | 无连接 |
一对一 | 单播,广播,多播的交互通信 |
面向字节流分块传输 | 整体打包直接传输 |
安全可靠不丢包 | 即发即忘 |
首部开销20~60字节 | 首部开销8字节 |