网站建设如何控标,动漫设计与制作就业前景怎么样,怎样在网上做宣传,商铺装修效果图设计一、三次握手的过程 TCP需要三次握手才能建立连接#xff0c;整个过程如下图所示#xff1a; 假设A运行的是TCP客户端进程#xff0c;而B运行的是TCP服务端进程。最开始的时候两端的TCP进程都处于ClOSED#xff08;关闭#xff09;状态。
这时候#xff0c;A主动打开连接…一、三次握手的过程 TCP需要三次握手才能建立连接整个过程如下图所示 假设A运行的是TCP客户端进程而B运行的是TCP服务端进程。最开始的时候两端的TCP进程都处于ClOSED关闭状态。
这时候A主动打开连接而B被动打开连接B在打开连接之后进入LISTEN收听状态。 1第一次握手 A的TCP客户进程向B发出建立连接请求报文段其中SYN同步位1ACK确认位0seq序号x。 TCP规定当报文段的SYN1且ACK0时表明这是一个请求建立连接的SYN报文段SYN1的报文段不能携带数据但是要消耗掉一个序号。 在A发送完毕之后A的TCP客户端进程进入SYN-SENT同步已发送状态。 2第二次握手 B在收到连接请求报文段之后如果同意建立连接则向A发送确认报文段。其中SYN1ACK1ack确认号x1同时设置自己的初始序号seqy。 TCP规定当报文段的SYN1且ACK1时表明这是一个同一建立连接响应报文段这个报文段也不能携带数据同样需要消耗掉一个序号。 在B发送完毕之后B的TCP服务端进程进入SYN-RCVD同步收到状态。 3第三次握手 A在收到B的确认报文段之后还需要向B给出确认报文段。其中ACK1seqx1acky1。 TCP规定这个ACK报文段可以携带数据如果不携带数据则不消耗序号即A下一个数据报文段的序号仍然是seqx1。 在A发送完毕之后A的TCP客户端进程进入ESTABLISHED已建立连接状态B在接收到A的确认报文段之后B的服务端进程也进入ESTABLISHED已建立连接状态。 以上就是所说的三次握手过程。二、三次握手的原因 为什么A还需要发送一次确认进行第三次握手呢主要是为了防止已失效的请求连接报文段突然又传送到了B因而产生错误。 原因如下 先假如出现了一种异常情况即A发出的第一个连接请求报文段因为在某些网络节点上滞留了。由于超时重传于是A又向B发起请求并成功建立了连接在传输完数据之后AB同之间释放了连接。 而在A和B已经释放连接之后那个在网络上滞留的报文段又达到了B。这时候B接收到报文以为是A发起的新的一次建立连接的请求于是就向A发出确认建立连接报文段。而A此时并没有发起建立连接的请求于是不予理睬。但是B以为新的连接已经建立一直等待A发送数据于是B的许多资源就浪费了。 参考资料
1、TCP协议中的三次握手和四次挥手(图解) http://blog.csdn.net/whuslei/article/details/6667471
2、简析TCP的三次握手与四次分手 http://www.jellythink.com/archives/705
3、TCP三次握手详解及释放连接过程 http://blog.csdn.net/oney139/article/details/8103223