TCP(传输控制协议),是面向连接且可靠的传输层协议,面向连接是说在开始传输数据之前会在客户端和服务器之间建立一条虚拟链路,可靠是说可以保证传输数据的有序性和正确性。为了保证传输数据的有序性,需要对接收到的数据报进行编号确认,还需要通过超时重传和流量控制等机制保证网络状况不好时出现丢包,为了保证数据传输的正确性,会对每一个接收到的数据报都进行校验。
三次握手建立连接
1、第一次握手,客户端向服务器发送一个数据包,并将AYN置1,表示希望建立连接,假设此时序列号为x;
2、第二次握手,服务器接收到客户端的建立连接请求后,发放一个数据包,将ACK和SYN都置1,并将确认好设为x+1,序列号假设为y。
3、第三次握手,客户端收到服务器的回应以后,发送数据包,将ACK置1,确认号置为y+1,序列号置为x+1。
为什么需要三次握手呢?目的有两个,信息对等和防止超时。
信息对等是希望客户端和服务器双方都需要确认,对方可以发报也可以接收,自己可以发报也可以接收。
防止超时因为如果只有两次握手的话,假设A发送的希望建立连接的请求超时,A机器不在同步发送状态,B机器收到超时的连接请求以后,发送响应并建立连接,这个时候就只是B机器单方面建立了连接。
网友评论