TCP: 一种面向连接的, 可靠的基于字节流的传输层协议
特点: 点对点通信, 可靠性高, 但是占用系统资源多, 效率低
UDP: 一种无连接的传输层协议, 面向事务的简单不可靠信息传递服务
特点: 传输不可靠, 可能丢失, 但是可以广播发送, 且开销小
TCP的发送端在将报文发送给接收端时, 接收端需要发送确认包给发送端, 如果发送端没有接收到确认包, 或者接收端根本就没有接收到报文, 则发送端会超时重发一个新的报文给接收端
虽然UDP开销小, 但使用UDP并不是为了提高吞吐量, 而是为了解决延迟问题, 同时短连接可以降低嵌入式终端的能耗, 对于服务器也可以减少资源的使用
TCP三次握手, 四次挥手
三次握手: client请求建立连接发送一个报文, 标志位SYN=1, 代表建立连接, 同时生成随机序列号seq(32位序列号)
server发送一个确认消息包, 标志位SYN=1, 生成一个seq, 同时标志位ACK=1, 代表确认建立连接, 同时序列号ack=seq+1(client生成的seq), 此时client已经可以没有问题, 发送的信息server可以收到, 也可以收到server发过来的信息, 但server还不知道client是否可以接收到自己发送的信息
于是需要第三次握手, 此时client发送一个报文ACK=1, 序列号ack=seq+1(server生成的seq)
四次挥手: client断开连接, 发送一个报文, 标志物FIN=1, 代表断开连接, 发送seq(根据之前发送的报文慢慢增长)
server收到后, 也发送一个报文, ACK=1, ack=seq+1, 确认断开连接, 此时client已经断开连接, 但是server可能还未准备好断开连接可能需要client等一会才会断开
当server准备好断开连接, 也需要重复上述两次挥手