三次握手建立连接

建立连接的步骤例如以下:

  1. client发送一个SYN段表示发起连接请求,该段中包括一个初始序号ISN。
  2. server也发送一个SYN段并包括它自己的初始序号ISN。同一时候设置ACK标志表示对上一个client的SYN的确认。确认序号为client的ISN值加1,该确认序号表示server希望下一次收到的起始序号。
  3. client再发送一个ACK以确认server发来的SYN,确认序号为serverISN加1,含义同上。

三次握手完毕,连接建立。

以下以HTTP为例。

在HTTP发送第一个请求之前,须要建立TCP连接。也就是三次握手,这三个TCP数据包不包括不论什么有效数据字节。通过Wireshark来分析三次握手的详细流程。这里有一点须要记住:确认信号应当是上一次已成功收到数据字节序号加1。

第一次握手:

这是client(我的电脑)发出的TCP头。client的port号是59313。server的port号是80,client生成的初始序列号x为0。标志位为SYN表示client请求建立连接。

第二次握手:

这是server返回的应答TCP头。

server也生成一个初始序列号y为0。同一时候将确认序号设为x加1以对client的SYN报文段进行确认,标志位为SYN和ACK。

第三次握手:

client收到server的应答后再次发送一个ACK作为应答。响应序号为y+1以响应server的SYN报文段。由于是第二次发送,所以该ACK的序号为1,但由于ACK不消耗序号。在连接建立之后发送第一个数据时,该序号仍然是1.

注意。Wireshark在这里所显示的序号均为相对序号,相对于某个基准值。该基准值的产生随时间变化。

基准值加上相对序号才是TCP包真正的序号。

參考:

《TCP/IP具体解释》 P174-P176.

时间: 2024-12-20 16:16:19

三次握手建立连接的相关文章

TCP 三次握手建立连接,四次挥手断开连接,图解详细分析,有个疑点求帮忙解答????

继文章  http://blog.csdn.net/simonchi/article/details/41722511   之后,我觉得有必要来详细的说一下TCP的三次握手和四次挥手的过程,帮助大家理解这个过程. 首先来看一下tcpdump抓取的网络数据包,如何抓包分析参考 上面给出的链接 图中红色框选的是三次握手建立连接 第一次:客户端发送SYN报文,并设置seq=0, 第二次:服务端收到SYN报文,知道对方要求建立连接,发送SYN和ACK报文,并设置seq=0,ack=0(第一次的seq)+

HTTP 三次握手  建立连接 和  四次握手断开连接

三次握手建立连接 第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机: 第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包 第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的se

Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)

我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().

Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)

本文的主要内容如下: 1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().connect()函数 3.4.accept()函数 3.5.read().write()函数等 3.6.close()函数 4.socket中TCP的三次握手建立连接详解 5.socket中TCP的四次握手释放连接详解 6.一个例子(实践一下) 7.留下一个问题,欢迎大家回帖回答!!! 1.网络中进程之间如何

TCP的三次握手(建立连接)和四次挥手(关闭连接)

http://www.cnblogs.com/Jessy/p/3535612.html http://blog.csdn.net/whuslei/article/details/6667471

TCP中三次握手建立和四次握手释放以及相关问题

本文基于个人所学和网上博文所整理,若有不妥处,欢迎留言指出 TCP连接过程中标志位的意义: 字符缩写 描述 SYN 同步序号,表示此报文是一个连接请求或连接接受报文 ACK 确认位,对接收到的报文的确认 FIN 终止位,表示发送方完成数据发送,用来释放一个连接 RST 复位连接,表示TCP连接中出现严重错误 PSH 推送位,尽可能快递将数据送往接受进程 一.三次握手建立 1.三次握手建立连接详解 TCP建立连接要进行"三次握手",即交换三个分组.大致流程如下: (1)客户端向服务器发送

三次握手“释放”连接

我们通常会背书,Tcp 三次握手建立连接,四次握手释放连接.但其实,这只是常见现象.通过抓包,发现了 Tcp 三次握手"释放"连接. 背景: 192.168.40.1 主机:zookeeper 服务器,dubbo provider 192.18.40.8 主机:dubbo consumer zookeeper 默认端口 2181,dubbo 服务默认端口 20880, consumer 调用服务后,结束程序,并会断开所有连接.使用 wireshark 抓取释放连接的 Tcp 包: 从上

TCP三次握手建立链接与四次挥手断开链接

防伪码:从基础开始,一步一个脚印 先简单介绍一下TCP协议. TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层协议.很复杂,但属于不论程序员还是运维人员都必会的基本功. 面向对象的--连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话,电话必须拨通了以后才能交流. 可靠的--TCP协议中有诸多的规则来保障通信链路的可靠性,含应用数据分隔.重传机制.对首部和数据校验.对收到的数据进行排序,然后交给应用层.接收

TCP连接的三次握手和四次解散过程

客户端和服务器在使用TCP连接传输数据的过程中,需要经过三次握手建立连接和四次握手断开连接操作. 具体如下图所示 上图描述了TCP连接从建立到断开的详细过程,以下就其中的具体报文细节展开讨论. 在TCP三次握手建立连接阶段,客户端首先向服务器发送一个SYN=1,Sequence=p的请求包. 如果服务器同意授予客户端该链接,则发送ACK=p+1,SYN=1,Sequence=q的回应包. 最后在客户端收到服务器的回应包以后,也会向服务器发送一个回应包,具体内容为ACK=q+1,SYN=0,Seq