tcp的三次握手。

说一说tcp的三次握手。

TCP报文的头部:
端口是属于传输层的,TCP和udp报文中没有IP协议。
两个进程要进行通讯的前提是能够唯一标识另外一个进程。(PID只在本地能够唯一标识,如果是两台计算机之间的通讯就不够用了。)IP可以唯一标识主机。TCP加端口号可以唯一标识一个进程。IP+TCP+端口号标识网络中的一个进程,这种模式叫做套接字。
为1有效,为0无效。
URG:紧急指针标志。ACK:确认序号标志。PUH:push标志。RST:重置连接标志。SYN:同步序号,用于建立连接过程。FIN:finish标志,用于释放连接。

在这里插入图片描述

TCP的连接是全双工,三次握手的过程如下:
在建立连接之前,客户和服务器端都要先生成一个传输控制块TCB;在进行连接
第一次握手:建立连接时:客服端发送SYN包(seq=x)到服务器,并进入SYN-SEND状态,等待服务器确认。
第二次握手:服务器收到了SYN包,必须确认客户的SYN包(ack+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包。,此时服务器进入SYN-RECV状态;
第三次握手:客服端收到服务器的SYN+ACK包以后,向服务器端发送确认包ACK(ack=y+1),该包发送完毕服务器端和客户端进入ESTABLISHED状态,完成三次握手。

为什么需要三次握手呢?
为了初始化Sequence Numbwer;
通讯的双方需要互相通知对方自己初始化的Sequence Numbwer;
就是xy值,作为下一次通讯的序号,保证不会出现乱序问题。

首次握手中存在的隐患;syn超时:
问题起因:服务器端收到客服端的SYN,回复SYN+ACK的时候未收到ACK;
服务器端不断尝试导致超时,LINux下面尝试五次以后默认等待63(1+2+4+8+16+32)秒才断开连接。
针对SYN Flood的防护:通过tcp-syncookies参数回发SYN cookie
如果为正常连接,客户会回发SYN cookie直接建立连接。

建立连接后客户端出问题了怎么办?
像对方发送保活探测秘密报文。如果没有回应继续发送。
尝试次数达到保活探测数仍未得到相应则中断连接。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

划水的阿瞒

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

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

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

打赏作者

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

抵扣说明:

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

余额充值