美文网首页
三次握手 & 四次挥手

三次握手 & 四次挥手

作者: Shaw007 | 来源:发表于2018-11-18 19:53 被阅读0次
前言

通过Wireshark实际分析TCP连接及断开过程。

Client ------SYN-----> Server
Client <---ACK/SYN---- Server
Client ------ACK-----> Server

Client ------FIN-----> Server
Client <-----ACK------ Server
Client <-----FIN------ Server
Client ------ACK-----> Server

三次握手

首先Client向Server发同步请求,动态随机产生初始序列号ISN并将SYN位设置为1,然后Server回复自己的序列号Sn以及Acknowledge编号(ISN+1), 并将SYN+ACK设置为1,最后Client确认,其序列号自增1 (ISN+1), Acknowledge编号为Sn+1,ACK位设置为1。连接建立成功,后续可进行发送HTTP请求,响应等一系列操作

  1. 其中只有第一次SYN时可以不设置ACK位为1,其余所有报文都需要设置ACK,并有相应的非0 Acknowledge number.
  2. 报文基本都要设置ACK,是因为TCP要确保对方收到了相应的数据包,防止IP传输过程造成的数据丢失。
  3. ISN是在连接初始生成的动态伪随机数,其值范围为0-2^32之间。为了提高安全性,可通过一些算法生成真随机数以及通过PRNG对随机数进行验证。
  4. SN用于已记录传输的数据长度,若没有数据发送,将保持与之前的一致。
TCP报文格式.png

*注:确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

以下通过Wireshark分析一个client从server请求一个图片的过程进行分析,HTTP请求及响应结果如下。


Session.png

TCP传输过程如下:


TCP_Session.png
  1. Client发送一个TCP session, 其Header中有source port, destination port以及动态随机产生的初始Sequence number(ISN)


    TCP_1.png
  2. Server 回复自己的SN,并将ISN+1作为Ack number, SYN, ACK位设置为1.


    TCP_2.png
  3. Client回应Server, 确认收到Server回复,将Ack number设置为SN+1。


    TCP_3.png

为什么要有三次握手
可根据SN判断不同的连接,防止已失效的连接请求报文段又传送到了服务端。

四次挥手

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭.


TCP_Disconnect.png

其中ACK与FIN可一起,表示没有数据要再发送。


TCP_Disconnect_Wireshark.png
总结
TCP_Client.png TCP_Server.png

相关文章

  • 2、tcpdump抓包分析三次握手和四次挥手

    TCP为什么需要三次握手、四次挥手 三次握手 三次握手 四次挥手 SYN flood攻击

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP连接的建立和终止

    目录(1)三次握手(2)四次挥手(3)TCP状态转换图(4)TCP连接三次握手+四次挥手+状态转换 一:三次握手 ...

  • 基础-TCP连接

    理解三次握手以及四次挥手具体过程,三次握手的原因、四次挥手原因、TIME_WAIT 的作用。 一、三次握手 假设 ...

  • tcp

    报文结构、三次握手、四次挥手 Tcp--三次握手,四次挥手[https://www.jianshu.com/p/a...

  • 三次握手与四次挥手

    三次握手 四次挥手

  • 2019-05-31

    三次握手 四次挥手

  • TCP的3次握手&4次挥手

    详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ” 为什么“握手”是三次,“挥手”却要四次? 建立连接时,被动...

  • 三次握手简单理解

    三次握手 四次挥手 建立TCP连接需要三次握手, 而断开连接需要执行四次挥手. 信号 SYN 同步 ASK 确认 ...

  • TCP的三次握手四次挥手与sync攻击

    前言 本文旨在用通俗的语言说明对TCP三次握手以及四次挥手的理解,以及为什么握手需要三次但是挥手需要四次 三次握手...

网友评论

      本文标题:三次握手 & 四次挥手

      本文链接:https://www.haomeiwen.com/subject/rmxcfqtx.html