TCP和UDP的区别
协议 | TCP | UDP |
---|---|---|
面向 | 字节流 | 报文 |
建立连接 | 三次握手建立连接,四次挥手关闭连接 | 无连接 |
流量控制 | 拥塞控制 | 无 |
应用 | 可靠数据传输场景,如浏览网页,收发邮件 | 视频电话、网络会议 |
总之,TCP提供可靠的、面向连接的、有序的数据传输,适用于对数据完整性和顺序性有较高要求的场景;UDP则是无连接的、不可靠的、快速的数据传输协议,适用于实时性要求高、对数据传输可靠性要求相对较低的场景。
TCP依据什么来保证可靠性
建立连接时,使用三次握手
数据传输时,使用拥塞控制避免拥堵,使用序号和确认号确保数据可靠
传输失败时,使用重传机制
TCP面向什么进行传输
TCP 面向字节流,UDP 面向报文。
什么叫面向字节流呢?
假如你要传输文本、图像、音频等不同格式的文件,只要使用了 TCP,以为着这些数据包都将拆分为一个一个较小的数据包,即字节流。
即使你发的是语音、文字、图片,对于 TCP 来讲,都是字节流。
因为 TCP 提供的是一种无差别的数据传输服务,它仅负责按照顺序传输字节流,而不对传输的数据做任何解释或处理。
比如你在聊天,先发了一段文字,又发了一段语音,TCP 可以区分出来语音和文字吗?
答案是不能。因为辨别哪些字节流是文字,哪些是语音,是应用层自己需要做的事情。也就是说,应用层需要自行处理数据的结构和边界。