文章目录
目录
一、什么是TCP和UDP
TCP:
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。
UDP:
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 描述了 UDP。
二、TCP和UDP的区别
小结:
1.TCP 相比于 UDP 有着更高的传输可靠性,而 UDP 比 TCP 有更高的传输效率
2.TCP面向连接,通过三次握手建立连接,四次挥手接除连接;UDP是无连接的,即发送数据之前不需要建立连接,这种方式为UDP带来了高效的传输效率,但也导致无法确保数据的发送成功。
3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,由于连接的问题,当网络出现波动时,连接可能出现响应问题,同时也可能出现粘包问题;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低。
4.TCP 是一种可靠传输机制,有确认应答,超时重传,连接管理,滑动窗口,流量控制,拥塞控制,延时应答,捎带应答等机制来确保传输的可靠性,UDP 则不需要连接,虽然速度快,但出现数据丢失等问题的几率会更大一些。
5.每一条TCP连接只能是点到点的;而UDP不建立连接,所以可以支持一对一,一对多,多对一和多对多的交互通信,也就是可以同时接受多个人的包。
三,什么是三次握手,四次挥手
TCP三次握手:
三次握手是TCP用来确保连接可靠建立的方式:
为了便于理解,我们可以举个例子:
- 第一次握手: A给B发短信说:“B,你现在有空吗?”
- 第二次握手: B此时收到了A的信息,然后对A说: “ 我有空,你呢?有空吗? ”
- 第三次握手: A此时收到了B的确认信息,然后说:“我也有空,那我跟你说个事。”
在三次握手之后,A和B都能确定这么一件事: 双方的通信可以流畅的进行。 这样,双方就可以开始进行正常的对话了。
TCP四次挥手:
四次挥手是TCP用来确保连接可靠关闭的方式:
这个图同样不好理解,我们继续举个例子:
-
第一次挥手: A给B发短信说:“B,我要准备吃饭了?”
-
第二次挥手: B此时收到了A的信息,然后先对A说: “ 我知道了。”
-
第三次挥手: B对A说到: “ 那我也要准备吃饭了。”然后放下了手机。
-
第四次挥手: A此时收到了B的确认信息,然后向B发一个包说:“好的,我知道了。”这时才放下手机去吃饭。
在四次挥手之后,A和B都能确定这么一件事: 双方的通信可以正常关闭。 这样,双方就可以确定对方已经完全知晓自己确认要关闭连接。
四、TCP维护着一个可靠的通信方式
确认应答(安全机制):接收端接收到分片数据时,根据分片数据序号向发送端发送一个确认包。
超时重传(安全机制):发送方在发送分片后计时,若超时却没有收到相应的确认包,将会重发对应的分片。
连接管理(安全机制):TCP三次握手,四次挥手。
滑动窗口(效率机制):一次发送多条数据,每接收到一个ACK,就会让窗口滑动,传输下一个数据,以此类推。
流量控制(安全机制):TCP支持根据接收端的处理能力,来决定发送端的发送速度。
拥塞控制(安全机制):TCP引入 慢启动 机制,先发少量的数据,探探路,摸清当前的网络拥堵状态,再决定按照多大的速度传输数据。
延时应答(效率机制):延时发送ACK,使得窗口相比于立即返回ACK增大,提高传输效率。
捎带应答(效率机制):如果服务器的回应延时和ACK的延时时机重合,就可以把两个包合在一起发送,提高传输效率。
五,TCP和UDP的应用场景
UDP应用场景:
- 包总量较小的通信(DNS、SNMP)
- 视频、音频等多媒体通信(即时通信)
QQ就是使用的UDP协议。 - 广播通信
主要就是效率至上的应用场景
TCP应用场景:
TCP 使用场景:相对于 UDP,TCP 实现了数据传输过程中的各种控制,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。在对可靠性要求较高的情况下,可以使用 TCP,即不考虑 UDP 的时候,都可以选择 TCP。
特别是需要可靠连接,比如付费、加密数据等等方向都需要依靠TCP
总结
面向连接的TCP与无连接的UDP将是网络协议中不可或缺的重要知识点,要熟练掌握TCP和UDP的区别,并掌握TCP的安全机制和效率机制,TCP的三次握手和四次挥手是面试的常考点,一定要熟练掌握。