tcp 连接

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

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

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

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

解决方法:很多种方法

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

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

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

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

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

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

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

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

 

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

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

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

  这里用到专门的计时器,

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

 

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

 tcp  连接

 

连接管理

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

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

 

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

1,B发fin,A对fin的ack可能丢失,B会重传fin,

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

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

 

 tcp  连接

 

 

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

 

 tcp  连接

 

上一篇:一文剖析TCP三次握手、四次挥手


下一篇:TCP Connection in Detail