关于TCP和UDP的区别,是一个老生常谈的问题了。在面试的时候很容易被问到,那么两者到底有什么区别呢?首先看我从网上找的一个图。
很清晰的能够看出,UDP是无连接的,这是什么意思呢?这就是在传送数据的时候,UDP是不需要进行连接的,远方的主机在收到UDP的请求时,不需要经过任何的确认,虽然它不提高可靠的交付,但是在某种情况下,UDP的价值是最大的,比如视频连接,直播,语音等等功能。
而TCP呢,是一个面向连接的服务,也就是说只有先建立连接,才能传送数据,同样在结束时还要释放连接,同样TCO不提供广播或者多播服务。那么为什么TCP传输时可靠的呢?
1.应用数据被分割成TCP认味最适合发送的数据块。
2.TCP给每个包进行了编号,接收方把数据包进行排序,然后讲将有序数据传送给应用层。
3.校检和:TCP将保持他首部和数据的校检和,这是一个端到端的校检和,目的是为了检测数据在传输过程中的变化,如果校检和出现了差错,TCP将丢弃这个报文段,并不确认收到此报文段。
4.TCP的接收端会丢弃重复的数据。
5.流量控制:TCP连接的每一方都有一个固定的大小缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据,当接收方来不及处理发送方的数据时,就能提示发送方降低发送速率,防止包的丢失。TCP使用的流量控制协议时可变大小的华东窗口协议。
6.拥塞控制:当网络拥塞时,减少数据的发送
7.ARQ协议:每发完一个分组就停止继续发送,等待对方的确认,在收到确定后在发下一个分组。
8.超时重传:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能即使确认,就将重发这个报文段。
TCP在传输数据之前要还会有三次握手时来建立连接,而且在数据传输时,还会有确认,窗口,重传,拥塞这些控制机制,在数据传完之后,还会断开连接来节约资源。这也就增加了很大的资源消耗,所以TCP一般用于远程登陆,发送邮件,文件传输等场景。
原文地址:https://www.cnblogs.com/ffdsj/p/12375373.html