TCP协议的三次握手

/ 计算机基础 / 没有评论 / 26浏览

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接.

位码即tcp标志位,有6种标示:

  1. SYN(synchronous建立联机)
  2. ACK(acknowledgement 确认)
  3. PSH(push传送)
  4. FIN(finish结束)
  5. RST(reset重置)
  6. URG(urgent紧急)

序列号和确认号

TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收。

  1. Sequence number(顺序号码)
  2. Acknowledge number(确认号码)

三次握手过程

alt alt

  1. 第一次握手

client端向server端发送一个由同步请求SYN=1(表示请求建立连接,SYN置1表请求,置0则省略)和在服务端随机生成的一个32位顺序号seq=client_isn组成的请求

  1. 第二次握手

server端接收到cilent端的同步请求后向client端发送一个由SYN=1,server端随机生成的32位顺序号seq=server_isn,和ACK=1(ACK置1表示server端确认收到第一次握手的请求),以及ack=client_isn+1(在client端发送过来的顺序号的基础上加上数据包的大小)组成的请求

  1. 第三次握手

client端接收到server端发送过来的第二次握手请求时,最后向server端发送一个由ACK=1,seq=client_isn+1以及ack=server_isn+1的请求

至此,三次握手完成,一个TCP连接完成。接下来client就可以和server进行一些不可描述的行为了。ACK包就是仅ACK标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置ACK位。

扩展阅读

SYN攻击原理
SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,通过发送大量的半连接请求,耗费CPU和内存资源。SYN攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,只要这些系统打开TCP服务就可以实施。从上图可看到,服务器接收到连接请求(syn=j),将此信息加入未连接队列,并发送请求包给客户(syn=k,ack=j+1),此时进入SYN_RECV状态。当服务器未收到客户端的确认包时,重发请求包,一直到超时,才将此条目从未连接队列删除。配合IP欺骗,SYN攻击能达到很好的效果,通常,客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送syn包,服务器回复确认包,并等待客户的确认,由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统运行缓慢,严重者引起网络堵塞甚至系统瘫痪。 三、SYN攻击工具 SYN攻击实现起来非常的简单,互联网上有大量现成的SYN攻击工具。(https://baike.baidu.com/item/SYN%E6%94%BB%E5%87%BB/14762413?fr=aladdin)