TCP协议
英文名:Transmission Control Protocol 简称:TCP
中文名:传输控制协议
协议说明:TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。
特点:面向连接,可靠,虽然效率低,但数据传输比较安全!
UDP协议
英文名:User Datagram Protocol
中文名:数据报协议
协议说明:UDP是一种面向无连接的传输层通信协议。
特点:效率高,数据传输不安全,容易丢包!
TCP连接和释放:
TCP连接的建立和释放是采用TCP协议传输数据的双方必经的过程,TCP的连接建立在数据发送之前,而TCP的连接释放在数据发送之后。
1、TCP的连接建立。
连接的建立需要解决三个方面的问题:确定通信双方的身份、协商通信所需的参数和对运输实体资源进行分配。
2、TCP的连接释放。
四次挥手是释放或解除TCP连接,连接的释放必须是一方主动释放,另一方被动释放。
3次握手:
-
先可以用打电话场景来理解:
1、客户端:听得到吗?
2、服务端:听得到,你呢?
3、客户端:我也听得到。 -
3次握手的具体步骤如下:
(1)A发送数据“SYN=1,seq=x”,表示发送同步信号,并且数据的起始序号为x;
(2)B收到数据后,发送“SYN=1,ACK=1,seq=y,ack=x+1”,表示同步信号已接收,并对A的数据进行确认,为了验证A的身份,发出数据y让A进行确认;
(3)A收到B的数据后,确认B的存在,发送“ACK=1,seq=x+1,ack=y+1”并且对B的数据进行确认,告知自己已经准备好,可以发送数据,数据从x+1序号开始。
4次挥手
-
先用老师下课场景来理解:
1、客户端:老师,下课了。
2、服务器端:好,我知道了,我说完这点。
3、服务器端:好了,说完了,下课吧。
4、客户端:谢谢老师,老师再见! -
4次挥手的具体步骤如下:
客户端在发出关闭请求后,自己进行终止等待状态。
服务器端收到客户端的关闭请求后,进入关闭等待状态,并给客户端数据进行确认;
然后服务器端发出关闭请求指令,并验证客户端的身份,客户端给回确认。服务器在收到确认后进行最后确认状态,关闭连接。而客户端必须等待2MSL的时间后关闭连接。
面试问题:为什么“握手”是三次,“挥手”却要四次?
-
TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。即SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。
-
TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次"握手"传输的。释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。