浅谈防火墙长连接与短连接

浅谈防火墙长连接与短连接
引言:在银行项目日常投产中,开发人员会发现系统上线后应用访问数据库连接中断的问题,这很有可能是因为应用程序与数据库之间的连接使用了长连接。当应用程序与数据库建立的同一个TCP会话的两个连续报文到达防火墙的时间间隔大于防火墙上默认TCP会话的保持时间间隔,会话超时后防火墙将从会话表中删除此TCP会话信息。所以当后续该TCP会话中的第二个报文到达防火墙后,防火墙发现会话表中无此会话条目,防火墙会根据自身的转发机制从而丢弃该非tcp syn报文,导致连接中断,所以开发人员要把使用长连接的需求告之运维人员,把防火墙上针对该条访问关系策略默认的会话时间设置久一点,从而可以避免会话中断的情况。由此可见项目的前期沟通显得至关重要。(注:本文防火墙的一些时间参数仅为华为某型号防火墙,不代表所有厂家防火墙的参数)
一、TCP连接建立和拆除过程
1、TCP标志位
SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个:
SYN:请求创建连接,在三次握手中前两次要SYN=1,表示这两次用于建立连接。
FIN:请求关闭连接,在四次分手时,我们发现FIN发了两遍。这是因为TCP的连接是双向的,所以一次FIN只能关闭一个方向。
ACK:确认接收,不管是三次握手还是四次分手,在回应的时候都会加上ACK=1,表示消息接收到了,并且在建立连接以后发送数据的时候,都需加上ACK=1,表示数据接收成功。
seq:序列号:当发送一个数据时,数据是被拆成多个数据包来发送,序列号就是对每个数据包进行编号,这样接收方才能对数据包进行再次拼接。
2、TCP连接的建立-三次握手
在这里插入图片描述
1.客户端首先发起连接请求,SYN=1,ACK=0,本次发送包的序列号seq=x。
2.服务端接收到后,要告诉客户端:我接收到了!ACK=1表示回应,SYN=1表示发送数据,所以就变成了ACK=1,SYN=1,本次发送包的序列号为seq=y,希望下一次收到包的序列号为ack=x+1。
3.理论上这时的连接就创建成功了,但是客户端要再发一个消息给服务端确认一下,这时只需要ACK=1就行了,发送包的序列号seq=x+1,ack=y+1。
3、TCP连接的拆除-四次挥手
在这里插入图片描述
1.

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无溪居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值