TCP握手/挥手的过程分析

原创 2012年03月23日 08:13:58

TCP连接建立

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

服务器必须准备好接受外来的连接。这通过调用socket、 bindlisten函数来完成,称为被动打开(passive open)

第一次握手:客户通过调用connect进行主动打开(active open)。这引起客户TCP发送一个SYN(表示同步)分节(SYN=J),它告诉服务器客户将在连接中发送到数据的初始序列号。并进入SYN_SEND状态,等待服务器的确认。

第二次握手:服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。服务器以单个字节向客户发送SYN和对客户SYNACK(表示确认),此时服务器进入SYN_RECV状态。

第三次握手:客户收到服务器的SYN+ACK。向服务器发送确认分节,此分节发送完毕,客户服务器进入ESTABLISHED状态,完成三次握手。

1TCP握手建立连接

客户端的初始序列号为J,而服务器的初始序列号为K。在ACK里的确认号为发送这个ACK的一端所期待的下一个序列号。因为SYN只占一个字节的序列号空间,所以每一个SYNACK中的确认号都是相应的初始序列号加1.类似地,每一个FIN(表示结束)的ACK中的确认号为FIN的序列号加1.

完成三次握手,客户端与服务器开始传送数据,在上述过程中还有一些重要概念。

未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户端确认包。这些条目所标识的连接在服务器处于SYN_RECV状态,当服务器收到客户端确认包时,删除该条目,服务器进入ESTABLISHED状态。

TCP连接终止

TCP连接终止需四个分节。

2TCP挥手关闭连接

第一次握手:某个应用进程首先调用close,我们称这一端执行主动关闭。这一端的TCP于是发送一个FIN分节,表示数据发送完毕。

第二次握手:接收到FIN的另一端执行被动关闭(passive close)。这个FINTCP确认。它的接收也作为文件结束符传递给接收端应用进程(放在已排队等候应用进程接收到任何其他数据之后)

第三次握手:一段时间后,接收到文件结束符的应用进程将调用close关闭它的套接口。这导致它的TCP也发送一个FIN

第四次握手:接收到这个FIN的原发送端TCP对它进行确认。

面向字节的数据传送流(如TCP字节流、Unix管道等)也使用EOF表示在某个方向上不再有数据待传送。在TCP字节流中,EOF的读或写通过收发一个特殊的FIN分节来实现。

TCP三次握手四次挥手过程详解

TCP头部: 其中 ACK   SYN  序号  这三个部分在以下会用到,它们的介绍也在下面。 暂时需要的信息有: ACK : TCP协议规定,只有ACK=1时有效,也规定连接建立后所有发送的...
  • imilli
  • imilli
  • 2016年02月01日 18:38
  • 2636

TCP协议中的三次握手和四次挥手+利用wireshark分析包

原文地址:http://blog.csdn.net/whuslei/article/details/6667471 点击打开链接 建立TCP需要三次握手才能建立,而断开连接则需要四次握手。...
  • u013445530
  • u013445530
  • 2016年01月13日 10:17
  • 1165

TCP协议的三次握手和四次挥手以及断开时各阶段的状态分析

我们知道,https协议是在http协议之上封装了SSL协议,为了完成客户端和服务端的双向认证和可靠传输,需要在通信之前双方进行多次的握手协商。TCP协议与https协议类似。 1.TCP的连接(俗称...
  • sszgg2006
  • sszgg2006
  • 2017年02月20日 16:26
  • 907

wireshark抓包图解 TCP三次握手/四次挥手详解

一. TCP/IP协议族 TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能。 ​包含以下四个层次: 1. 链路层, ​    也称作数据链路层或...
  • fireroll
  • fireroll
  • 2016年03月01日 17:59
  • 1302

Wireshark抓包分析TCP 3次握手、4次挥手过程

Wireshark简介 更多有关Wireshark的教程、软件下载等,请见:http://www.52im.net/thread-259-1-1.html,本文只作简要介绍。 1Wir...
  • yanxi252515237
  • yanxi252515237
  • 2016年07月19日 14:39
  • 5855

TCP三次握手和四次挥手全过程及为什么要三次握手解答

TCP三次握手和四次挥手的全过程      TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有8种表示: SYN(synchrono...
  • yanxiaolx
  • yanxiaolx
  • 2016年08月04日 22:37
  • 6407

TCP 三次握手建立连接,四次挥手断开连接,图解详细分析

继文章  http://blog.csdn.net/simonchi/article/details/41722511   之后,我觉得有必要来详细的说一下TCP的三次握手和四次挥手的过程,帮助大家理...
  • chiweitree
  • chiweitree
  • 2014年12月12日 17:30
  • 1683

TCP/IP协议 三次握手与四次挥手

一、TCP报文格式         TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图: 图1 TCP报文格式         上图中有几个字段需要重点介绍下: ...
  • renzhenhuai
  • renzhenhuai
  • 2013年09月27日 17:39
  • 24848

计算机网络——TCP协议中的三次握手四次挥手以及11种状态转换

TCP的传输连接分为3个阶段:连接建立(三次握手)、数据传送和连接释放(四次挥手)。TCP传输连接的管理就是使传输连接的建立和释放都能正常地进行。...
  • a987073381
  • a987073381
  • 2016年08月14日 20:37
  • 10985

理论经典:TCP协议的3次握手与4次挥手过程详解

摘要: 本文将分别讲解经典的TCP协议建立连接(所谓的“3次握手”)和断开连接(所谓的“4次挥手”)的过程。 1、前言 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与...
  • omnispace
  • omnispace
  • 2016年09月29日 14:42
  • 7817
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP握手/挥手的过程分析
举报原因:
原因补充:

(最多只允许输入30个字)