TCP/IP协议-连接的建立

tcp的连接过程

客户端主动发起连接:采用三次握手机制

服务器端在某一端口监听连接请求,服务器端的状态为LISTENING

客户端发送带有 syn标志的tcp连接报文,报文内容长度为0,初始序列号ISN由客户端程序设置,客户端状态变为SYN_CENT

服务器端接收客户端连接请求,确认请求,发送一个带有syn标志以及ack标志的报文,ack 序列号为ISN+1,确认请求的tcp报文 syn序列号为服务器端初始化的,服务器端状态变为SYN_REVC

客户端且接收到服务器端的ack报文,也发送一个带有ack标志的tcp报文给服务器端,ack的序列号为服务器syn的序列号ISN+1,这个时候连接状态变为ESTABLISHED

服务器端接收到客户端的ack报文,连接状态变为ESTABLISED

见下面一幅图

存在的一场情况:

客户端连接超时:

这一种情况tcp会连续三次重试,如果三次充值都失败,就会报超时异常。一般情况下第一次超时时间是6秒,第二次超时时间是18秒,第三次超时时间是48秒,这个每个系统都不一样,看具体的实现。

服务器端没有在指定端口监听:

着一种情况和客户端连接超时一样,都会重试三次。

客户端没有收到服务器端的ack报文:

这个时候客户端没有连接建立,应该和超时一样。

服务器端没有收到客户端的ack报文:

这个时候客户端连接已经建立,服务器端还没有,客户端可以发送报文,但是服务器接收不到,这种情况比较异常。