TCP vs UDP
1 传输控制协议/用户数据报协议
2 先建立连接再收发数据/不需建立连接直接收发数据
3 保证数据顺序/不保证
4 数据收发可靠/可能丢包
TCP的三次握手和四次挥手
三次握手
1 C发SYN给S,进入SYN_SEND状态。
2 S发ACK+SYN给C,进入SYN_RECV状态。
3 C发ACK给S,C和S进入ESTABLISHED状态。
SYN包:同步序列号。
ACK包:用于确认,一般为对方SYN包中的值+1。
四次挥手
1 C发FIN给S
2 S发ACK给C
3 S发FIN给C
4 C发ACK给S
为什么挥手多一次?
建立TCP连接时,没有数据通信,所以S可以一次发送ACK+SYN包。
断开TCP连接时,S收到FIN请求,只能说明C的数据收发已经完成,而S的数据收发可能还没有结束,故不能马上发送FIN给C。
TCP收发数据时,确认序列号=原始序列号+TCP段的长度。