浅谈TCP连接的三次握手与四次挥手
来源:互联网 发布:女神联盟2英雄进阶数据 编辑:程序博客网 时间:2024/05/16 12:20
TCP连接的建立与释放
三次握手(建立TCP连接)
TCP连接建立有如下几个目的,首先,要使双方都知道对方已经准备好了。其次,双方要协商如最大报文长度、最大窗口长度和服务质量等通信参数。第三,分配和初始化如缓存长度,各状态变量和连接表中的表项等运输实体资源。
第一次握手(客户机向服务器发送请求)
客户机进程向服务器进程发送一个SYN报文段(封装在一个IP数据报中、不包含应用层数据),其首部中的标志SYN比特位被置为1,序号字段中会选择一个起始序号x,即seq=x。第二次握手(服务器做出请求响应)
SYN报文段到达服务器后,服务器首先会为该TCP连接分配TCP缓存和变量,并向该客户机TCP发送允许连接的报文段(SYNACK报文段、不包含应用层数据)。该报文段首部设置设置了三个重要信息。首先,首部中的标志SYN和ACK比特位均被置为1。其次该报文段首部的确认号字段被置为x+1,即ack=x+1。最后服务器将自己的序号字段设置为自己的起始序号y,即seq=y。第三次握手(客户机向服务器发送应用层数据)
收到SYNACK报文段后,客户机为该连接分配缓存和变量,并向服务器发送第三个报文段,再次对服务器允许连接的报文段进行确认。之后该客户机将确认号字段ack的值置为y+1。这样客户机就可以发送应用层数据了,序号seq=x+1。标志SYN比特位被置为0,标志ACK比特位被置为1。
以三次握手方式管理TCP连接的优缺点:以三次握手方式管理TCP连接可以更好的避免错误连接,但是这种协议为SYN洪泛攻击提供了可趁之机。在这种攻击中,攻击者大量的发送TCP SYN报文段,但有意不进行第三次握手的步骤,直至服务器消耗完为第一次握手保留的有限资源。(这种攻击为Dos攻击的一种,其目的是使服务器的连接资源迅速的消耗殆尽)。
四次挥手(释放TCP连接)
第一次挥手(客户机释放连接,主机A不再发送数据)
在数据传输结束后,客户机可以发出一个关闭连接的命令,这会引起客户机向服务器发送一个特殊的TCP报文段,这个报文段首部中的FIN比特位为1,起始序号seq=x。第二次挥手(通知应用进程对方关闭连接)
在服务器收到该报文段后,就向客户机回送一个确认报文段,该报文段的ACK比特位置为1,起始序号seq=y,确认号字段ack=x+1。第三次挥手(服务器释放连接,主机B且不再发送数据)
服务器可以继续发送它自己的报文段,直至发送最后的报文段并使其FIN比特位置为1,这时,FIN=1,ACK=1,seq=y,ack=x+1。第四次挥手(连接关闭)
客户机对服务器的终止报文段进行确认(ACK=1,seq=x+1,ack=y+1),所有资源被释放。
参考文献:计算机网络:原理与实践/陈鸣编著.-北京:高等教育出版社,2013.2:222-234
- 浅谈TCP连接的三次握手与四次挥手
- TCP 连接三次握手与四次挥手
- TCP连接的三次握手,四次挥手
- TCP连接的“三次握手”与“四次挥手”
- TCP连接的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- TCP的三次握手与四次挥手
- 浅谈TCP三次握手和四次挥手
- TCP连接与断开(三次握手和四次挥手)
- TCP连接/撤离中的三次握手与四次挥手过程
- TCP 连接管理与释放(三次握手,四次挥手)
- 【TCP连接】三次握手和四次挥手
- wordpress的avada 5.0主题添加百度分享盒的方法
- 图数据挖掘--六度分隔
- 医学论文撰写的内容
- Fragment
- 包含键值对的Map属性的初始化方式
- 浅谈TCP连接的三次握手与四次挥手
- JSP九大内置对象
- Web开发性能优化---UI界面篇
- 二重调度(三):只使用虚函数
- Web容器 与Spring容器 启动
- SQL(八)-用AND/OR过滤
- Ansible学习笔记
- android adb shell获取和设置IP相关信息
- Js数组去重