TCP与UDP协议
1、UDP主要特点——无连接的协议,不可靠
1.UDP是无连接的;
2.UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参 数);
3.UDP是面向报文的;
4.UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等);
5.UDP支持一对一、一对多、多对一和多对多的交互通信;
6.UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短。
2、TCP主要特点——面向连接的协议,可靠
1.TCP是面向连接的;
2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
3.TCP提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
4.TCP提供全双工通信。TCP允许通信双方的应用进程在任何时候都能发送数据。TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
5.面向字节流。TCP中的“流”(stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。
TCP“三次握手”和“四次挥手”
图解:三次握手(建立连接)
客户端–发送带有SYN标志的数据包–一次握手–服务端
服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端
客户端–发送带有带有ACK标志的数据包–三次握手–服务端
为什么要传回SYN(发起一个新链接)?
接收端传回发送端所发送的SYN是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。
传了SYN,为啥还要传ACK(确认序号有效)?
双方通信无误必须是两者互相发送信息都无误。传了SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要ACK信号来进行验证。
图解:四次挥手(断开连接)
客户端-发送一个FIN,用来关闭客户端到服务器的数据传送
服务器-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1 。和SYN一样,一个FIN将占用一个序号
服务器-关闭与客户端的连接,发送一个FIN给客户端
客户端-发回ACK报文确认,并将确认序号设置为收到序号加1
3、TCP与UDP的区别
链接:https://juejin.im/post/5b5f20686fb9a04f844adbdd