tcp三次握手后被马上rst_TCP协议 三次握手

TCP协议三次握手

小测试带你走进TCP协议~

— 初识TCP协议 —

1

什么是TCP协议?

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

2

TCP报文头部详解

b07d4d02a0ef6f5ffccc2a749e50dca9.png

上面就是TCP协议头部格式,下面就一起深入浅出的了解以下它们:

● 源端口/目的端口

源端口和目的端口分别占用16位,用于区别主机中的不同进程。而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一的确定一个IP地址。

● 序号

占32位,用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的第一个数据字节在数据流中的序号,主要用来解决网络报乱序的问题。

● 确认序列号

占32位,确认号包含发送确认的一端所期望收到的下一个序列号,因此,确认序列号应当是上次已成功收到数据字节加1。不过只有标志位中的ACK标志(下面介绍)为1时,该确认序列号的字段才有效。主要用来解决不丢包的问题。

● 数据偏移(首部长度)

给出TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部的长度。需要这个值是因为任选字段的长度时可变的。这个字段占4Bit(最多能表示15个32Bit的字即4*15=60个字节的首部长度),因此TCP最多有60个字节的首部。然而,没有任选字段,正常的长度是20字节。

● 标志位(flags)TCP首部有6个标志bit,他们中的多个可同时被设置位1,主要是用与操控TCP的状态的。依次为:URG、ACK、PSH、RST、SYN、FIN

● 窗口大小

也就是有名的滑动窗口,用来进行流量控制

— TCP标志位 —

URG(紧急指针):

此标志用于将输入数据标识为“紧急”。这样的进入段不必等待直到先前段被接收端消耗,而是直接发送并立即处理。用来保证TCP连接不中断,并且督促中间层设备要尽快处理这些数据。

ACK(表示响应)

确认标志用于确认数据包的成功接受,ACK 置1时表示确认号为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。

PSH(推送标志):

用来表示push操作,所谓push操作就是指在数据包到达客户端以后,立即发送给应用程序,而不是在缓冲区中排队。

置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。

RST(复位标志):

用来表示连接的复位请求,用来复位那些产生错误的连接,也被用来拒绝错误和非法的数据包。

RST标志位用来复位一条连接。当RST=1时,表示出现严重错误,必须释放连接,然后再重新建立。

SYN(表示连接):

表示同步序列号,用来建立连接。SYN标志位和ACK标志位搭配使用,当请求的时候:SYN=1,ACK=0;连接被响应的时候:SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来,就表明这台主机存在这个端口;但是这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器很不安全,一台安全的主机会强制要求一个连接严格的进行TCP三次握手。

FIN(表示关闭连接):

表示发送端已经达到数据末尾,也就是说双方的数据传输已经完成,没有数据传送了,发送FIN标志位的TCP数据包后,连接将被断开。

— TCP三次握手 —

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。

在TCP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确定号并交换TCP的窗口大小信息。这就是面试中经常被问到的三次握手,以下是三次握手的过程:

d163b6cf0aa248c9987c40403e672e58.png
  1. 第一次握手:

    客户端发送连接请求报文段,将SYN位置为1,Sequence Number(序号)为X;然后客户端进入SYN_SEND状态,等待服务器确认。

  2. 第二次握手:

    服务器收到SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number(确认号)为X+1(sequence number+1);同时,自己还要发送SYN确认请求信息,将SYN设置为1,sequence number为Y;服务器端将上述的所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECVD状态

  3. 第三次握手:

    客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为Y+1,向服务器发送ACK报文段这个报文段发送完毕以后,客户端和服务器都进入ESTABLISHED状态,完成TCP三次握手。

完成了三次握手,客户端和服务端就可以开始传送数据,以上就是TCP三次握手的介绍。

我只是个小测试

972f3539b48df278199de6f1f2686777.png

微信号 : minitest

Email:chfanliu@foxmail.com

星河在上,波光在下。我在你身边,等着你的 点赞,分享,关注

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值