TCP和UDP的概念、区别以及优缺点
TCP是传输控制协议,是面向连接的通讯协议,通过三次握手建立连接,四次握手断开连接,一般应用在对安全性和完整性有严格要求的场景。
优点:TCP具有高可靠性,确保数据传输的准确性,不会出现丢失或乱序的情况。
缺点:相比UDP,TCP速度较慢,效率低,要求系统资源较多,每次连接都会占用系统CPU,内存等硬件资源。
UDP是数据报协议,是面向无连接的通讯协议
优点:速度快,操作简单,占用系统资源较少。
缺点:不可靠,可能出现丢包或乱序,数据不完整的情况。
区别:
- TCP是面向连接的传输控制协议,UDP是面向无连接,提供数据报协议。
- TCP具有高可靠性,UDP可能丢包,乱序等情况。
- UDP具有较好的实时性,工作效率比TCP高。
- 每一条TCP连接只能是一对一,而UDP连接可以一对一,一对多,多对一,多对多的交互通信。
- TCP对系统资源要求较多,UDP对系统资源要求较少。
TCP协议的三次握手与四次挥手
三次握手是建立连接时使用的。
第一次握手:客户端向服务器发送SYN请求连接信号。
第二次握手:服务器收到客户端的信号后,回复ACK应答信号和SYN请求连接信号。
第三次握手:客户端接收到信号后,回复发送ACK应答信号,此时表示连接成功。
四次挥手是断开连接时使用的。
第一次挥手:客户端向服务器发送FIN断开连接信号。
第二次挥手:服务器收到客户端的信号后,回复ACK应答信号。
第三次握手:服务器在发送ACK应答信号后延迟一会,向客户端发送FIN断开信号。
第四次挥手:客户端接受服务器所有信号后,回复ACK应答信号,此时正式断开连接。
扩展:
TCP协议的三次握手为什么是三次?
- 二次握手只能保证单向连接是通畅的,TCP是一个双向运输协议,只有经过三次握手才能保证双方都能接受到对方的数据。
- 为了防止已经失效的连接请求报文突然又传给服务器,从而导致不必要的错误与资源的浪费。
TCP结束时为什么要四次挥手?
因为TCP有一种连接方式叫做半关协议,指的是客户端发送FIN信号表明客户端不再发送数据,但可以接收数据,此时服务器也未必把数据全都发送完毕,此时服务器可以选择立即发送FIN信号,也可以选择等数据发送完毕之后再发送FIN信号表示关闭,所以服务器的ACK和FIN信号一般分为两次发送,故比三次握手多一次。