TCP/IP的三次握手和四次挥手
2017-07-21 09:47
495 查看
TCP/IP,通常放在一起,但是TCP和IP是两个不同的协议。
IP协议是用来查找地址的,对应着网际互联层,TCP协议是用来规范传输规则的,对应着传输层。
IP只负责找到地址,具体传输的工作交给TCP来完成。就像快递的送递一样,填写的规则和内容相当于IP协议,最后打电话,送货物,客户签收 相当于TCP协议。
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
SYN: 同步位,用于建立连接时同步序号,发起连接。作用就是当接收端收到SYN = 1,的报文会直接将ACK设置为接收到的seq+1的值
seql: sequence number, 表示所传数据的序号。
ACK:确认位,用于建立连接时同步序号。正常通信时ACK = 1,第一次等于0
ack: acknoledgement number: 表示确认号。接收端用它来给发送端反馈已经成功接收到的数据,它的值为希望接收的下一个数据包起始序号。它的值表示前面数据已经成功接收到了。
FIN: 终止位,用来数据传输完毕后释放连接。
第一次握手: 客户端发送一个SYN标志 = 1,以及初始序号X;Client进入SYN_SENT状态,等待Server确认。
第二次握手:服务端发送ACK确认。SYN = 1, ACK = 1同时,将确认序号设置为刚才第一次从客户端收到的序号X+1,即ACK = X+1;Server进入SYN_RCVD状态;
第三次握手:客户端再次发送ACK确认。再将确认序号设置为ACK = Y+1, 同时发送数据。这时,客户端和服务端开始对话,传输数据。
第一次挥手: Server收到FIN后,用来关闭CIient到Server的数据传送,但并未关闭Server到CIient和Client到Server的数据传送(因为Server收到FIN报文,不会立即关闭连接,需要选回复一个ACK告诉Client我收到你的关闭请求了,但是等我先把数据传送完,之后再发送FIN报文); Client进入FIN_WAIT_1状态;
第二次挥手: 在ACK=1下,Server发送ack等于收到的报文序号+1,ack=u+1传送给Client数据为seq=v;同时处于CLOSE_WAIT状态
第三次挥手: Server发送给Client一个FIN=1,关闭Server到Client的连接;Server处于LAST_ACK
第四次挥手: CIient收到FIN后处于TIME_WAIT状态,并没有立即关闭Cilent到Server的连接,还是可以发送数据,发送一个确认序号ACK+1,Server就Close了。然后Client在TIME_WAIT状态下等待2MSL(最大生存时间)关闭Client连接,此状态用于重新发送可能丢失的ACK报文。至此,TCP的四次挥手结束,连接关闭
IP协议是用来查找地址的,对应着网际互联层,TCP协议是用来规范传输规则的,对应着传输层。
IP只负责找到地址,具体传输的工作交给TCP来完成。就像快递的送递一样,填写的规则和内容相当于IP协议,最后打电话,送货物,客户签收 相当于TCP协议。
三次握手
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
SYN: 同步位,用于建立连接时同步序号,发起连接。作用就是当接收端收到SYN = 1,的报文会直接将ACK设置为接收到的seq+1的值
seql: sequence number, 表示所传数据的序号。
ACK:确认位,用于建立连接时同步序号。正常通信时ACK = 1,第一次等于0
ack: acknoledgement number: 表示确认号。接收端用它来给发送端反馈已经成功接收到的数据,它的值为希望接收的下一个数据包起始序号。它的值表示前面数据已经成功接收到了。
FIN: 终止位,用来数据传输完毕后释放连接。
第一次握手: 客户端发送一个SYN标志 = 1,以及初始序号X;Client进入SYN_SENT状态,等待Server确认。
第二次握手:服务端发送ACK确认。SYN = 1, ACK = 1同时,将确认序号设置为刚才第一次从客户端收到的序号X+1,即ACK = X+1;Server进入SYN_RCVD状态;
第三次握手:客户端再次发送ACK确认。再将确认序号设置为ACK = Y+1, 同时发送数据。这时,客户端和服务端开始对话,传输数据。
四次挥手
第一次挥手: Server收到FIN后,用来关闭CIient到Server的数据传送,但并未关闭Server到CIient和Client到Server的数据传送(因为Server收到FIN报文,不会立即关闭连接,需要选回复一个ACK告诉Client我收到你的关闭请求了,但是等我先把数据传送完,之后再发送FIN报文); Client进入FIN_WAIT_1状态;
第二次挥手: 在ACK=1下,Server发送ack等于收到的报文序号+1,ack=u+1传送给Client数据为seq=v;同时处于CLOSE_WAIT状态
第三次挥手: Server发送给Client一个FIN=1,关闭Server到Client的连接;Server处于LAST_ACK
第四次挥手: CIient收到FIN后处于TIME_WAIT状态,并没有立即关闭Cilent到Server的连接,还是可以发送数据,发送一个确认序号ACK+1,Server就Close了。然后Client在TIME_WAIT状态下等待2MSL(最大生存时间)关闭Client连接,此状态用于重新发送可能丢失的ACK报文。至此,TCP的四次挥手结束,连接关闭
相关文章推荐
- TCP/IP三次握手和四次挥手
- TCP/IP的三次握手与四次挥手详解
- TCP/IP 三次握手、四次挥手
- 掌握TCP/IP三次握手,四次挥手
- TCP/IP三次握手四次挥手
- TCP/IP三次握手与四次挥手
- TCP/IP三次握手四次挥手详解
- 理解TCP/IP三次握手与四次挥手的正确姿势
- TCP/IP的三次握手与四次挥手解释
- TCP/IP三次握手 四次挥手
- TCP、IP的三次握手和四次挥手解析
- tcp/ip主机到主机的数据传输,以及三次握手和四次挥手的简单理解
- TCP/IP的三次握手与四次挥手详解
- 以女朋友为例讲解 TCP/IP 三次握手与四次挥手
- TCP/IP 协议三次握手与四次挥手
- TCP/IP三次握手及四次挥手
- [TCP/IP]三次握手与四次挥手
- tcp/ip的三次握手和四次挥手图解
- TCP/IP三次握手与四次挥手学习笔记