TCP连接的三次握手和Socket建立网络连接的步骤
2017-07-20 18:17
369 查看
TCP了解
详细解释:http://blog.csdn.net/omnispace/article/details/52701752
详细解释:http://www.cnblogs.com/cy568searchx/p/3711670.html
TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
详细解释:http://blog.csdn.net/yusiguyuan/article/details/22876185
LINUX Socket过程详解
详细解释:http://www.cnblogs.com/cy568searchx/p/4211124.html
Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
详细解释:http://blog.csdn.net/anxpp/article/details/51512200
谢谢,大神们的帮助!!!
TCP连接的三次握手:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
TCP关闭连接的四次挥手:
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
Socket建立网络连接的步骤:
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
详细解释:http://blog.csdn.net/omnispace/article/details/52701752
详细解释:http://www.cnblogs.com/cy568searchx/p/3711670.html
TCP/IP详解--TCP三次握手建立连接与四次握手终止连接
详细解释:http://blog.csdn.net/yusiguyuan/article/details/22876185
LINUX Socket过程详解
详细解释:http://www.cnblogs.com/cy568searchx/p/4211124.html
Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
详细解释:http://blog.csdn.net/anxpp/article/details/51512200
谢谢,大神们的帮助!!!
TCP连接的三次握手:
第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。
理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。
断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写了,就是服务器和客户端交互,最终确定断开)
TCP关闭连接的四次挥手:
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
Socket建立网络连接的步骤:
建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。
套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
1、服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
2、客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。
为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
3、连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。
而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
相关文章推荐
- TCP连接的三次握手和Socket建立网络连接的步骤
- 网络TCP建立连接为什么需要三次握手而结束要四次
- socket中TCP的三次握手建立连接详解
- TCP连接的建立与终止,三次握手和四次握手,以及在socket系列函数中的体现
- 网络TCP建立连接为什么需要三次握手而结束要四次
- 【网络】TCP三次握手建立连接和四次挥手释放链接
- 网络TCP建立连接为什么需要三次握手而结束要四次
- 网络TCP建立连接为什么需要三次握手而结束要四次
- TCP建立连接为什么进行三次握手?
- 建立TCP连接(三次握手)
- 话说,那是一次完整的连接建立过程【C/S, tcp三次握手,发包,关闭连接】
- 四、Linux网络编程-TCP/IP基础(四)传输层协议TCP、TCP报文格式、连接三次握手、终止四次挥手
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- 有关TCP方式连接建立时三次握手,为什么不是2次 或4次 5次
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- TCP的三次握手(建立连接)和四次挥手(关闭连接)
- TCP连接建立过程中为什么需要“三次握手”[转载]
- TCP为何采用三次握手来建立连接,若采用二次握手可以吗?
- TCP连接建立的三次握手理解
- TCP的三次握手(建立连接)和四次挥手(关闭连接)