tcp 连接

Posted ts65214

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tcp 连接相关的知识,希望对你有一定的参考价值。

三次握手:能确定双方都做好了传输数据的准备,并且彼此知道对方已经准备好,

   通知对方自己的初始序号isn,设置其他初始化的参数和状态变量。

   前两次握手不能携带数据,第三次握手可以携带数据。

syn flood攻击:攻击者发送syn,服务器创建半开连接并发送synack,攻击者不发送ack

解决方法:很多种方法

   syn cookies技术:当半连接队列满后,服务器不再生成半开连接,

   根据发送端和接收端的ip和端口号以及一个秘密数,

   用某个散列函数,生成cookie发给发送端,合法的发送端会返回一个ack

   服务器根据两端的ip和端口号以及秘密数,生成新的cookie,如果新cookie+1等于ack

   服务器就生成一个全开的连接

nmap端口扫描工具:发送syn,如果返回synack,则有进程在监听该端口。

返回rst,没有进程监听,但报文可以到达目的主机。

什么都不返回,可能被防火墙拦截。

 

四次挥手:对称释放方式,发送fin后不会再发送段,但可以继续接收段。

   第一个ack可以和第二个fin合并成一个段

   经过两倍最大数据包生存期后,没有收到对finackfin的发送方直接释放连接,

  这里用到专门的计时器,

   传输层无法保证释放连接时不丢失数据,这需要应用层的介入。

 

syn占用一个序号,ack不占用序号

 技术图片

 

连接管理

粗线是一般情形,细线是不常发生的情形

实线是客户端,虚线是服务器

 

主动关闭的一端会经历Time_Wait状态,其作用为:

1BfinAfinack可能丢失,B会重传fin

      A处于Time_Wait状态,就可以收到重传的fin,并再次发送ack

2Time_Wait持续2MSL,连接关闭后再重新建立连接,老的连接的报文都消失了。

 

 技术图片

 

 

下图每条线上都标记了 事件/动作

 

 技术图片

 

以上是关于tcp 连接的主要内容,如果未能解决你的问题,请参考以下文章

Linux 下怎么释放 TCP 连接

windows怎么查看tcp连接数

swoole tcp突然断开连接

计算机网络—— 运输层:TCP的连接建立和连接释放

tcp的连接数量

tcp长连接和短连接