TCP与UDP的区别

TCP协议       

       传输控制协议 TCP(Transmission Control Protocol)是一种面向连接、可靠的传输层协议;

        每一条TCP连接都只能是点对点的(客户端、服务器),只能一个收一个发;

        TCP连接是面向字节流的,他会把应用层的报文看作是字节流,再将字节流分成多份报文段;

        TCP也具有了流量控制、可靠性传输、拥塞控制等功能;

TCP的连接:三次握手

第一次握手:

         客户端会先向服务器发送一个请求连接的数据包,发送之后客户端就会进入SYN-SENT状态;

        控制位:同步SYN = 1;确认ACK = 0

第二次握手:

        如果服务器同意连接,也会向客户端发送一个数据包,接着进入SYN-RECEIVED 状态;

        控制位:同步SYN = 1;确认ACK = 1

第三次握手:

        客户端向服务器发送确认数据包,表示自己已收到同意连接的数据包,然后进入ESTABLISHED状态;

        控制位:同步SYN = 0;确认ACK = 1

在服务器收到客户端的第三次握手的数据包后也会进入ESTABLISHED状态;

        在这里大家可能会疑惑,明明两次握手已经建立好连接了,为什么还要进行第三次握手?

        第三次握手的作用在于,告诉服务器第二次握手时,发给客户端的确认数据包客户端收到了,是有效的。避免服务器等待造成资源浪费。

TCP断开连接:四次挥手

 四次挥手时客户端和服务器的状态:

 第一挥手:

        当客户端的数据发送完毕时,它会向服务器发送请求释放连接的数据包;

        控制位:终止FIN = 1;确认ACK = 0

第二次挥手:

        服务器会先向客户端发送一个确认数据包,表示同意释放连接,此时客户端和服务器的链接已经释放,服务器不会;再接收客户端发送的数据包,如果此时服务器还有要发给客户端的数据,仍可以继续发送

        控制位:终止FIN = 0;确认ACK = 1

第三次挥手:

        如果服务器没有要给客户端发送的数据了,服务器会向客户端发送请求释放连接的数据包;

        控制位:终止FIN = 1;确认ACK = 1

第四次挥手:

        客户端收到了来自服务器请求释放连接的数据包后,向服务器发送确认报文段;

        控制位:终止FIN = 0;确认ACK = 1

UDP

        用户数据报协议UDP(User Datagram Protocol)是一种面向无连接、不可靠的传输层协议;

        UDP支持一对一、一对多、多对一、多对多的传输方式;

        UDP只管将数据发送出去,它不在乎接收方是否可以接收到数据,也不会进行数据重传;

区别总结

TCPUDP
是否面向连接面向连接无连接
传输可靠性可靠不可靠
传输形式字节流数据报文端
传输效率
所需资源
首部字节20-60字节8字节

应用场景

        TCP:通信数据可靠(文件传输、收发邮件等)

        UDP:通信速度快(QQ语音、视频电话、直播等)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值