TCP中的3次握手和4次挥手—软件测试专项技术(5)

发表于:2020-4-24 10:07

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:51Testing教研团队    来源:51Testing软件测试网原创

分享:
  1.2.3  TCP
  在数据传输中,可以认为有两个信封,TCP和IP就像是两个信封。要传递的信息被划分成若干段,把每段塞入一个小的TCP信封,并在该信封上记录分段号的信息,再将TCP信封塞入大的IP信封,把IP信封发送到网络中。在接收端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,则TCP将会要求重发。因此,TCP/IP在Internet中几乎可以无差错地传送数据。
  在上面的例子中,在大信封上写明了接收地址,而里面的内容就是要传送的数据。下面就来看一下TCP头(见图1-10)的写法,从而理解传输的原理。
  
图1-10  TCP头
  TCP协议头的组成说明如下。
  ●源端口号、目标端口号字段:各占16位。TCP使用"端口"来标识源端和目标端的应用进程。端口号可以使用0~65 535的任何数字。在收到服务请求时,操作系统动态地为客户端的应用程序分配端口号。
  ●序号字段:占32位。序号用来标识从TCP源端向TCP目标端发送的数据字节流,也就是数据被分成很多包并传送到目的地后,按这个序号进行排列才能得到正确的内容。
  ●确认号字段:占32位。只有ACK标志为1时,确认号字段才有效。它表示目标端期望收到源端的下一个数据字节。
  ●头部长度字段:占4位。它给出头部占32位的数目。没有任何选项字段的TCP头部长度为20字节,其最多可以有60字节。
  ●保留字段:为TCP的扩展预留的字段。
  ●标志位字段:占6位。标志位中各位的含义如下。
  URG:紧急指针。URG为1表示紧急指针域有效。
  ACK:确认序号有效。
  PSH:接收方收到报文后应该立即将这个报文段交给应用层,而不是在缓冲区中排队。
  RST:连接报错之后,重建连接,用来复位错误的连接。
  SYN:发起一个连接。和ACK标志位一起使用以完成三次握手的连接。
  FIN:报文传递完毕之后,释放一个连接,表示TCP连接终止。
  ●窗口大小字段:占16位。此字段用来控制流量,单位为字节,这个值是本机期望一次接收的字节数。
  ●校验和字段:占16位。该字段对整个TCP报文段(即TCP头部和TCP数据)进行校验和计算,并由目标端进行验证。
  ●紧急指针字段:占16位。它是一个偏移量,与序号字段中的值相加表示紧急数据中最后一个字节的序号。
  ●可选项字段:占32位。该字段可能包括"窗口扩大因子""时间戳"等选项。
  1.2.4  TCP中的3次握手和4次挥手
  建立TCP连接需要3次握手,而断开TCP连接则需要4次挥手。
  3次握手的过程如图1-11所示。
  
图1-11  3次握手的过程
  ●第1次握手:客户端发送一个TCP的SYN标志位置1的包以指明客户打算连接的服务器端口,以及初始序号X,X保存在包头的序号字段里。
  ●第2次握手:服务器返回确认包的应答。SYN标志位和ACK标志位均为1。
  ●第3次握手:客户端再次发送确认包,这时SYN标志位为0,ACK标志位为1。同时,把服务器发来的ACK序号字段加1,并放在确认号字段中发送给对方。
  断开TCP连接时要4次挥手,如图1-12所示。
  ●第1次挥手:客户端A发送一个FIN消息以停止从客户端A到服务器B的数据传送。
  
图1-12  4次挥手的过程
  ●第2次挥手:服务器B收到这个FIN消息后,返回一个ACK消息,确认序号为收到的序号加1。同SYN一样,一个FIN消息将占用一个序号。
  ●第3次挥手:服务器B断开与客户端A的连接,发送一个FIN消息给客户端A。
  ●第4次挥手:客户端A返回ACK报文以进行确认,并将确认序号设置为收到的序号加1。

查看《软件测试专项技术--基于Web、移动应用和微信》全部连载内容>>
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号