TCP通信流程

在这里插入图片描述
TCP协议对收到的每一个数据报都要进行ACK确认,否则对方会超时重传。
https://blog.csdn.net/zymill/article/details/78900922

(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。

    需要注意的是:
            (A)不要将确认序号Ack与标志位中的ACK搞混了。
            (B)确认方Ack=发起方Req+1,两端配对。 

三次握手
1客户端发送 SYN=1,SEQ=100
2服务端收到后发送 SYN=1,SEQ=200,ACK=1,ack=101
3客户端收到后发送 ACK=1,ack=201

SYN攻击: 在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行: #netstat -nap | grep SYN_RECV

四次挥手
1客户端发送 FIN=1,SEQ=100
2服务端收到后发送 ACK=1,ack=101
3服务端传输完毕发送 FIN=1,SEQ=200
4客户端收到后发送 ACK=1,ack=201

问题:客户端故障中断怎么处理?
TCP有一个计时器,时长2小时,每次收到客户端消息就重置,2小时没收到,就发送探测报文,75秒发一次,发送10次没有响应,服务端关闭连接。
问题:为什么握手三次而挥手四次?
连接的时候服务器的请求连接syn和ack是一起发送的,结束的时候只发送ack,要等到自己发送完毕再发送fin。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值