您的位置:首页 > 理论基础 > 计算机网络

TCP/IP 三次握手、四次挥手原理

2013-12-26 14:08 369 查看
第一部分 TCP/IP 三次握手原理1、TCP/IP三次握手示意图

SYN:同步序号。ACK:应答回复。RST:复位连接,清除旧有的同步序号。PSH:尽可能的将数据送往接收进程。FIN:发送方完成数据发送。LISTEN:监听是否有连接请求包。SYN_RECV:该状态处于向发送连接请求方回应我已经收到了你的连接请求阶段。SYN_SEND:该状态处于已发出连接请求包,等待对方回应阶段。ESTABLISHED:建立连接状态2、三次握手步骤1)第一次握手客户端向服务器端发送连接请求包SYN(syn=j),等待服务器回应。2)第二次握手服务器端收到客户端连接请求包SYN(syn=j)后,将客户端的请求包SYN(syn=j)放入到自己的未连接队列,此时服务器需要发送两个包给客户端。①向客户端发送确认自己已收到其连接请求的确认包ACK(ack=j+1),并向客户端表明已知道了其连接请求为j。②向客户端发送连接询问请求包SYN(syn=k),询问客户端是否已经准备好建立连接,可进行数据通信;即在第二次握手时服务器向客户端发送ACK(ack=j+1)和SYN(syn=k)包,此时服务器进入SYN_RECV状态。3)第三次握手①客户端收到服务器的ACK(ack=j+1)和SYN(syn=k)包后,知道了服务器同意建立连接,此时需要发送连接已建立的消息给服务器。②向服务器发送连接建立的确认包ACK(ack=k+1),回应服务器的SYN(syn=k)告诉服务器,我们之间已经建立了连接,可以进行数据通信。③ACK(ack=k+1)包发送完毕,服务器收到后,此时服务器与客户端进入ESTABLISHED状态,开始进行数据传送。第二部分 为什么不能只两次握手?1、三次握手的目的:消除旧有连接请求的SYN消息对新连接的干扰,同步连接双方的序列号和确认号并交换TCP窗口大小信息。2、两次握手的危害。根据三次握手的描述,当第二次握手时,服务器向客户端发送ACK包后,客户端立即建立连接,而不通知服务器我已经开始传输数据。当出现网络阻塞时,因TCP/IP协议具有定时重传机制功能(即请求方向对方发送SYN请求后在规定的时间内未得到回应,会再次发出请求),会出现数据出错现象。例子如下。举例:主机A向主机B发送连接请求。1)主机A向主机B发送SYN连接请求包,若干时间后,B未收到,A再次发送一次,即共发了2次,分别对报文命名为x,y。(这2份请求因阻塞原因,他们的TCP窗口大小和数据报文长度不一致,即是有区别的)2)假设主机B收到的是请求x, y未收到。那么B就会同A成功建立X连接。由于A发了2次连接请求报文,而这个时候却已经成功建立了连接,可以传输数据。B又不告诉A连接的是x,还是y,若A采取就近原则,建立连接y,那么B处理数据时将出现问题。第三部分 TCP/IP四次挥手原理1、TCP/IP四次挥手示意图

FIN:关闭连接请求。ACK:应答回复共收到多少数据。2、为何需要四次挥手TCP成功建立连接时,使用的是全双工模式(即数据在两个方向上能同时传递),因此每个方向必须单独进行关闭,且双方确认所收到的包大小与发出的包大小一致。3、作用保证服务器与客户端都能完全的接受对方发送的数据,保证数据的完整性。4、四次挥手步骤讲解假设客户机A向服务器B请求释放TCP/IP连接1)第一次挥手 客户机A向服务器B发送FIN包;A告诉B,发给你的数据大小是N,发送完毕,请断开A到B的连接。2)第二次挥手 服务器B收到了客户机A发送的FIN包,需要向客户机A发送ACK包,告诉A实际收到的数据大小是 不是N,若是则关闭A到B的连接。3)第三次挥手 服务器B向客户机A发送FIN包,B告诉A,我发给你的数据大小是M,我发送完毕,请求断开B到A的连接。4)第四次挥手 客户机A收到了服务器B发送的FIN包,并发送ACK包告知其收到的数据大小是M,并关闭B到A的连接。
本文出自 “上尚若水” 博客,请务必保留此出处http://cntwei.blog.51cto.com/6446272/1345029
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: