软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)

TCP 报文是 TCP 层传输的数据单元,也叫报文段。 TCP 报文的格式如下图所示

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(1)

我们从 TCP 的报文格式中能看到 6 个标志位:URG ACK PSH RST SYN FIN,每一个标志位表示一个控制功能。

  • URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
  • ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
  • PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。
  • RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
  • SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
  • FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

TCP 的连接和断开的过程和这几个标志位有关

TCP分段中6个编码位的含义

当值设为1时,表示分段中包含相应的控制信息

编码位(从左到右)的标识

该位置“为1”的含义

URG

表示启用了紧急指针字段

ACK

表示确认字段是有效的

PSH

请求急迫操作,即分段一到马上送应用程序而不等到接收缓冲区满时才送应用程序

RST

连接复位。复位因主机崩溃或其他原因而出现错误的连接,也可用于拒绝非法的分段或拒绝连接请求

SYN

与ACK合用以建立TCP连接。如SYN=1, ACK=0表示连接请求;而SYN=1,ACK=1表示同意建立连接

FIN

表示发送方已无数据要发送从而释放连接,但接收方仍可继续接收发送方此前发送的数据


实验所需工具:

  • 客户机操作系统:windows xp IP 地址为 192.168.1.100
  • 服务器操作系统:Windows 2000 Advance Server 地址为 192.168.1.101
  • 抓包软件 Sniffer4.7.5

在客户机上连接服务器的 FTP 服务:在客户机上启动 Sniffer, 然后在 DOS 命令下使用 FTP 指令连接服务器的 FTP 服务器,如图

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(2)

默认情况下,FTP 服务器支持匿名访问,输入的用户命是 ftp,密码是 ftp。退出对方 的 ftp 使用的命令是 bye。停止 Sniffer,查看抓取的 FTP 会话过程

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(3)

观察抓取到的 TCP 的三次握手的过程

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(4)

第 1 次握手:由客户机的应用层进程向其传输层 TCP 协议发出建立连接的命令,则客户 机 TCP 向服务器上提供某特定服务的端口发送一个请求建立连接的报文段,该报文段中 SYN 被置 1,同时包含一个初始序列号 x(系统保持着一个随时间变化的计数器,建立连接时该 计数器的值即为初始序列号,因此不同的连接初始序列号不同)

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(5)

第 2 次握手:服务器收到建立连接的请求报文段后,发送一个包含服务器初始序号 y,SYN 被置 1,确认号(ACK)置为 x 1 的报文段作为应答。确认号加 1 是为了说明服务器已正确收到一个 客户连接请求报文段,因此从逻辑上来说,一个连接请求占用了一个序号

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(6)

第 3 次握手:客户机收到服务器的应答报文段后,也必须向服务器发送确认号(ACK)为 y 1 的 报文段进行确认。同时客户机的 TCP 协议层通知应用层进程,连接已建立,可以进行数据传输了。 完成三次握手,客户端与服务器开始传送数据

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(7)

TCP三次握手如图所示

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(8)


观察抓取到的 TCP 的四次手的过程

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(9)

第 1 次挥手:由客户机的应用进程向其 TCP 协议层发出终止连接的命令,则客户 TCP 协议层向服务器 TCP 协议层发送一个 FIN 被置 1 的关闭连接的 TCP 报文段

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(10)

第 2 次挥手:服务器的 TCP 协议层收到关闭连接的报文段后,就发出确认,确认号为 已收到的最后一个字节的序列号加 1,同时把关闭的连接通知其应用进程,告诉它客户机已经终止了数据传送。在发送完确认后,服务器如果有数据要发送,则客户机仍然可以继续接收数据,因此把这种状态叫半关闭(Half-close)状态,因为服务器仍然可以发送数据,并 且可以收到客户机的确认,只是客户方已无数据发向服务器了

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(11)

第 3 次挥手:如果服务器应用进程也没有要发送给客户方的数据了,就通告其 TCP 协议层关闭连接。这时服务器的 TCP 协议层向客户机的 TCP 协议层发送一个 FIN 置 1 的 报文段,要求关闭连接。

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(12)

第 4 次挥手:同样,客户机收到关闭连接的报文段后,向服务器发送一个确认,确认号为已 收到数据的序列号加 1。当服务器收到确认后,整个连接被完全关闭。

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(13)

如下图所示,这就是 TCP 的四次挥手

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(14)


知识补充

TCP连接的拒绝建立

  • 若主机B拒绝建立连接,则在收到主机A的连接请求后,发送一个置RST= "1" 的应答分段
  • 在第三次握手阶段,发送第一次握手的主机A还有机会拒绝建立连接:发送一个置RST= "1" 的应答分段

软考初级程序员案例真题和答案(软考-信息安全工程师-实验1)(15)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页