精华内容
下载资源
问答
  • 利用wireshark分析tcp协议
    2022-07-22 21:51:59

    抓包结果已上传可免费下载对应观看:
    wireshark抓包结果

    一、流程梳理

    我的机子192.168.1.131简称A与服务端机子223.166.138.30简称B先三次握手建立TCP连接,再进行HTTP请求,最后四次挥手断开TCP连接
    1.三次握手:
    在这里插入图片描述
    A先给B发出一个SYN包请求建立连接
    B给A发回一个ACK SYN包针对上一个SYN请求且发出请求建立连接
    A再给B发回一个ACK包针对上一个SYN请求

    2.PSH
    在这里插入图片描述
    TCP segment of a reassembled PDU,字面意思是要重组的协议数据单元(PDU:Protocol Data Unit)的TCP段。比如由多个数据包组成的HTTP协议的应答包,如下

    这里的分段是指:上层协议HTTP的应答由多个分段组成,每个分段都是TCP协议的。TCP本身没有分段的概念,它的sequence number和acknowledge number 是使TCP是基于流的协议的支撑,TCP segment of a reassembled PDU的出现是因为Wireshark分析了其上层的HTTP协议而给出的摘要,如果配置Wireshark不支持HTTP协议解析

    参考:https://blog.csdn.net/weixin_30439067/article/details/97999147?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-97999147-blog-103210932.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-97999147-blog-103210932.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=2

    PSH(Push):告诉对方收到该报文段后是否立即把数据推送给上层。如果值为 1,表示应当立即把数据提交给上层,而不是缓存起来。

    3.HTTP的请求与相应
    在这里插入图片描述
    HTTP的工作方式是先由客户端向服务器发起一个请求,再由服务器回复一个相应,根据不同需要,客服端发送的请求会用到不同的方法,有GET、POST、PUT等,
    这里使用了POST方法,多用于网站上登录账号,用来传输实体的主体
    /cloudquery.php表示请求URI
    HTTP/1.1表示协议版本
    对于POST方法的相应是服务端接收主体的处理结果
    200OK表示从客服端发来的请求在服务器端被正常处理了

    4.TCP的四次挥手
    在这里插入图片描述
    由于TCP是全双工连接,需要双方互相通知断开连接,然后对端应答这个通知
    这里和书上的例子顺序会有所不同
    A主机先发送断开连接请求
    B主机紧接着发送断开连接请求
    B主机相应A主机的断开连接请求
    A主机响应B主机的断开连接请求

    二、读网络包

    现在打开B主机响应A主机建立连接请求的第80号包:
    在这里插入图片描述
    最下方的为整个数据包的16进制形式,由于是对于建立连接请求的相应包,所以并没有携带要传输的信息,只有各个层的数据头

    第一行:因为这个包是在主机上抓的,所以最外层的是通过数据链路层封装的,数据链路层会将数据包封装陈帧(Frame),帧的序号就是这个包的序号,该包共64字节
    第二行:数据链路层,从中可以看到相邻两个设备的MAC地址,源MAC地址还能看到路由器的型号捏,因此该网络包才能以接力的方式送达目的地址
    第三行:网络层,在该数据包中本层主要任务是把TCP层传下来的数据加上目的地址和源地址
    第四行:传输层,指明使用了TCP协议及原端口号和目的端口号,以及TCP连接中的一些信息
    第五行:填充的意思。
    因为在以太网中,规定最小的数据包为64个字节,如果数据包不足64字节,则会由网卡填充。
    在sniffer中显示padding,而wiershark则显示trailer。

    点开网络层,再点开其中的源IP地址:
    在这里插入图片描述
    223对应df,166对应a6,138对应8a,30对应1e
    1e:16+14=30
    再点开传输层:
    在这里插入图片描述
    可以看到源端口号为80,目标端口号为55469
    序列号为11769945
    确认应答号为1205542292
    数据偏移,保留,控制位一起记录在flags中:
    在这里插入图片描述
    16进制70转为二进制:0111 1110
    首部长度0111转为十进制为7,TCP首部长度单位为4字节,即28字节
    保留位1110,主要是为了以后扩展使用,暂时忽略
    16进制12转为二进制:0001 0010
    对应图上只有SYN与ACK置1,确实符合
    在这里插入图片描述
    窗口大小14600
    校验和0x0376
    紧急指针0
    选项:选项字段主要用于提高TCP的传输性能
    在这里插入图片描述
    对TCP首部一个更直观的展示:
    在这里插入图片描述

    三、关于TCP的三次握手与四次挥手

    在这里插入图片描述
    A与B单独维护其发送法术网络包的序列号
    A发送表示建立连接的网络包序列号为1205542291
    B也发送表示建立连接的网络包,其序列号为117691945,其中确认号为1205542292,在建立和断开连接时发送的SYN包和FIN包虽然并不携带数据,但是也会作为一个字节增加对应的序列号,否则其序列号就是上一个数据包的序列号加上其长度,这个确认号既表示收到了上一个数据包,又表示对方下次发数据包的起始序列号应该是多少
    A针对B发送的建立连接请求发出一个确认,其序列号为1205542292,确认号为117691946
    在这里插入图片描述

    大部分与握手时相似,注意的点:
    TCP连接断开前进行是HTTP的响应,该响应的序列号117691946,长度为482,加起来为117692428,也就是B下次再发数据包的序列号
    倒数第二个包既不是syn包也不是fin包,其中也没有数据,因此B端的syn计数不会加1

    四、关于窗口大小的变化

    MSS:maximum segment size最大消息长度

    MSS (Maximum Segment Size)是 TCP Layer (L4) 的属性, MSS 指的是 TCP payload 的长度. 当在 MTU 1500 的网络上传输时, MSS 为 1460 (即 1500 减去 20 字节 IP 头, 20 字节 TCP 头).
    发送窗口决定了一口气能发送多少字节,而MSS决定了这些字节要分成多少个段发送
    如发送窗口是16000字节时,MSS是1000字节,就要分成16个段进行发送

    在建立TCP连接时,两端互相发送MSS然后取最小的MSS投入使用
    在这里插入图片描述
    这里两个MSS一样

    流控制:TCP提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量,具体操作:接收端主机向发送端主机通知主机可以接收数据的大小,于是发送端会发送不超过这个限度的数据,当接收端的缓冲区溢出时,窗口大小的 值也会随之设置成一个更小的值通知发给发送端,从而控制数据发送量。
    注意window size不是指发送窗口,而是告诉对方自己的接受窗口,也就是自己的缓冲区大小

    更多相关内容
  • 前期准备: IntelliJ IDEA 2021.1.3 (Ultimate Edition) Build #IU-211.7628.21, built on June 30, 2021...1、对TCP协议进行分析 (1)利用java编写TCP服务端和客户端(略) (2)打开包软件    &nb

    前期准备:

    • IntelliJ IDEA 2021.1.3 (Ultimate Edition) Build #IU-211.7628.21, built on June 30, 2021
    • JDK 1.8或以上版本
    • WireShark网络协议解析器 Version 2.4.13 (v2.4.13-0-gf2c6a94a3f)
    • 查询本地回环的工具RawCap

    分析过程:

    1、对TCP协议进行分析

    (1)利用java编写TCP服务端和客户端(略)
    (2)打开抓包软件

           Wireshark虽然可以抓任何协议的包,但当你测试一个本机的socket程序,发送/接收到本地端口的时候,却无法抓取本地回环数据。这个时候需要借助一个工具RawCap进行本地环路的抓包
    在这里插入图片描述

    注意,抓包软件和RawCap.exe要放在一个目录下

    打开cmd,进入到抓包工具所在目录,输入

    RawCap.exe 本地IP  TCPfile.pcap
    

    即可运行RawCap抓包程序,此时不要按Ctrl+C或终止程序,之后进行后续操作
    在这里插入图片描述

    (3)进行调试,打开客户端和服务端,客户端发送消息,服务端就会接收到消息

    服务端:接收到客户端发来的消息并响应
    在这里插入图片描述
    客户端:发送消息后收到响应
    在这里插入图片描述

    (4)上述步骤完成后,切换到cmd界面,此时我们看到packets的数量发生变化,此时我们按Ctrl+C终止程序(不要点右上角×号),在工具目录下就会生成一个TCPdump.pcap文件,我们用WireShark打开这个文件

    在这里插入图片描述
    打开之后如图所示
    这就是所有在127.0.0.1的通讯数据
    在这里插入图片描述

    (5)但这里我们要找TCP协议的通讯,所以使用过滤器 tcp.stream eq 8,之后显示TCP通讯的数据,或者随便找一个TCP流,右键“追踪流”–“追踪TCP流”,一个流一个流的查找即可,这里显示过滤后和追踪的结果

    过滤后结果
    在这里插入图片描述
    追踪后结果

    注:若数据流有中文,则将“显示和保存数据为”那一栏改为utf-8,不然无法显示中文数据,在这里我们看到客户端发送的消息是蓝色背景,服务端发送的消息是红色背景,点击可查看对应信息的数据流情况。
    在这里插入图片描述

    (6)对数据流进行分析

    看前三条数据流,代表着TCP的三次握手
    在这里插入图片描述

    TCP三次握手:
    (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
    (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
    (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。

    直接双击一条服务器端的数据流进行分析
    分析情况见下图
    在这里插入图片描述

    可以看到使用ipv4协议,版本号为4
    TTL为128,通讯协议为TCP
    IP头长度为20
    源地址和目的地址ip:127.0.0.1
    信息总长度40,源端口5000(服务端),目的地端口49848(客户端)

    再点击一条客户端的数据流进行分析
    在这里插入图片描述

    可以看到使用ipv4协议,版本号为4
    TTL为128,通讯协议为TCP
    IP头长度为20
    源地址和目的地址ip:127.0.0.1
    信息总长度70,源端口49898(客户端),目的地端口5000(服务端)


    2、对UDP协议进行分析

    (1)(2)步与上面差不多大致相同,输出的文件改成UDPdump.pcap即可
    (3)进行调试,打开客户端和服务端,客户端发送消息,服务端就会接收到消息

    客户端:发送消息后收到响应,统计发送的次数
    在这里插入图片描述
    在这里插入图片描述
    服务端:接收到客户端发来的消息,并显示发送的数据
    在这里插入图片描述

    (4)上述步骤完成后,同样切换到cmd界面,此时我们看到packets的数量发生变化,此时我们按Ctrl+C终止程序(不要点右上角×号),在工具目录下就会生成一个UDPdump.pcap文件,我们用WireShark打开

    在这里插入图片描述

    (5)但这里我们要找UDP协议的通讯,所以使用过滤器 udp.stream eq 0,之后显示UDP通讯的数据,或者随便找一个TCP流,右键“追踪流”–“追踪TCP流”,一个流一个流的查找即可,这里显示过滤后和追踪的结果

    过滤后结果
    在这里插入图片描述

    追踪后结果
    注:若数据流有中文,则将“显示和保存数据为”那一栏改为utf-8,不然无法显示中文数据,在这里我们看到客户端发送的消息是蓝色背景,服务端发送的消息是红色背景,点击可查看对应信息的数据流情况。
    在这里插入图片描述

    (6)对数据流进行分析

    直接双击一条服务器端的数据流进行分析
    分析情况见下图
    在这里插入图片描述

    可以看到使用ipv4协议,版本号为4
    可以看到使用ipv4协议,版本号为4
    TTL为128,通讯协议为UDP
    IP头长度为20
    源地址和目的地址ip:127.0.0.1
    信息总长度49,源端口5000(服务端),目的地端口10000(客户端),数据长度21

    再点击一条客户端的数据流进行分析
    在这里插入图片描述

    可以看到使用ipv4协议,版本号为4
    TTL为128,通讯协议为UDP
    IP头长度为20
    源地址和目的地址ip:127.0.0.1
    信息长度44,源端口10000(客户端),目的地端口5000(服务端),数据长度16

    展开全文
  • 利用Wireshark进行TCP协议分析.doc
  • 本资料为word版本可以直接编辑和打印感谢您的下载 利用Wireshark进行TCP协议分析 利用Wireshark进行TCP协议分析 甲 方_ 乙 方_ 日 期_ 说明 说明本合同资料适用于约定双方经过谈判协商而共同承认共同遵守的责任与...
  • Wireshark抓包——TCP协议分析

    万次阅读 多人点赞 2019-06-11 00:34:17
    一. 实验目的 通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,...1.本次实验重点:利用WiresharkTCP包及TCP包的分析。 2.本次实验难点:分析抓到的TCP包。 3.本次实验环境:Windows 7,Wiresha...

    一. 实验目的

    通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,能够深入分析TCP帧格式及“TCP三次握手”。通过抓包和分析数据包来理解TCP/IP协议,进一步提高理论联系实践的能力。

    二. 实验内容

    1.本次实验重点:利用Wireshark抓TCP包及TCP包的分析。

    2.本次实验难点:分析抓到的TCP包

    3.本次实验环境:Windows 7,Wireshark

    4.本次实验内容:

    TCP协议是在计算机网络中使用最广泛的协议,很多的应用服务如FTP,HTTP,SMTP等在传输层都采用TCP协议,因此,如果要抓取TCP协议的数据包,可以在抓取相应的网络服务的数据包后,分析TCP协议数据包,深入理解协议封装,协议控制过程以及数据承载过程。两幅图分别是TCP帧格式及TCP三次握手。

    三.实验过程

    1. TCP包抓取及分析过程如下:

    第一步,确定使用的协议,使用HTTP服务。选择http://www.sina.com.cn/作为目标地址。

    第二步,启动抓包:点击【start】开始抓包,在浏览器地址栏输入http://www.sina.com.cn。

    第三步,通过显示过滤器得到先关数据包:通过抓包获得大量的数据包,为了对数据包分析的方便,需要使用过滤器,添加本机IP地址和TCP协议过滤条件。

    (1)打开命令提示符,通过ipconfig /all来查看本机IP地址。

    (2)在工具栏上的Filter对话框中填入过滤条件:tcp and ip.addr==196.168.100.131,过滤结果如下:

    结果发现效果不是很好,于是将过滤条件中的IP地址更换为http://www.sina.com.cn的IP地址,操作过程如下:

    (1)打开命令提示符,通过ping www.sina.com.cn来查看目标IP地址。

    (2)打开命在工具栏上的Filter对话框中填入过滤条件:tcp and ip.addr==218.30.66.248,过滤结果如下:

    其中,红色框内即为一个三次握手过程:

    第四步,分析TCP数据包,根据第一幅图中的数据帧格式,分析TCP包的各部分。

    • 原端口/目的端口(16bit)。如下图所示,源端口为443,标识了发送进程;目的端口为3201,标识了接收方进程。

    • 序列号(32bit)。如下图所示,发送序列号Sequence Number为0,标识从源端向目的端发送的数据字节流,它表示在这个报文端中的第一个数据字节的顺序号,序列号是32位的无符号类型,序号表达达到2^32 - 1后又从0开始, 当建立一个新的连接时,SYN标志为1,系列号将由主机随机选择一个顺序号ISN(Initial Sequence Number)。

    • 确认号(32bit)。如下图所示,确认号Acknowledgment Number为1,包涵了发送确认一端所期望收到的下一个顺序号。因此确认序列号应当是上次成功接收到数据的顺序号加1。只有ACK标志为1时确认序号字段才有效。TCP为应用层提供全双工服务,这意味着数据能在两个方向上独立的进行传输,因此连接的两断必须要保证每个方向上的传输数据顺序。

    • 偏移(4bit)。如下图所示,偏移32bytes,这里的偏移实际指的是TCP首部的长度Header length,它用来表明TCP首部中32bit字的数目,通过它可以知道一个TCP包它的用户数据从哪里开始。

    • 保留位(6bit)。如下图所示,保留位Reserved未设置。

    • 标志(6bit)。在TCP首部中有6个标志比特,他们中的多个可同时被置为1。如下图所示:

    URG(Urgent Pointer Field Significant):紧急指针标志,用来保证TCP连接不被中断,并且督促中间设备尽快处理这些数据,图中其值为1。

    ACK(Acknowledgement Field Signigicant):确认号字段,该字段为1时表示应答字段有效,即TCP应答号将包含在TCP报文中,图中其值为1。

    PSH(Push Function): 推送功能,所谓推送功能指的是接收端在接收到数据后立即推送给应用程序,而不是在缓冲区中排队,图中其值为0。

    RST(Reset the connection): 重置连接,不过一搬表示断开一个连接,图中其值为0。

    SYN(Synchronize sequence numbers):同步序列号,用来发起一个连接请求,图中其值为1。

    FIN(No more data from sender)表示发送端发送任务已经完成(既断开连接)。

    • 窗口大小(16bit)。 如下图所示,窗口大小Windows size value为29200,表示源主机最大能接收29200字节。

    • 校验和(16bit)。如下图所示,校验和Checksum为0xc24f,包含TCP首部和TCP数据段,这是一个强制性的字段,一定是由发送端计算和存储,由接收端进行验证。

    • 紧急指针(16bit)。如下图所示,URG标志为1,只有当URG标志置为1时该字段才有效,紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。TCP的紧急方式是发送端向另一段发送紧急数据的一种方式。

    • TCP选项。至少1个字节的可变长字段,标识哪个选项有效。Kind=0:选项表结束, Kind=1:无操作, Kind=2:最大报文段长度,Kind=3:窗口扩大因子, Kind=8:时间戳。如下图所示,Kind为2,代表最大报文长度MSS size。

    • 数据部分。当前数据包的数据部分,如下图所示:

    2. TCP三次握手:

    第一次握手数据包:客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接,如下图所示(第一条):

    第二次握手的数据包:服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1,如下图所示(第二条):

    第三次握手的数据包:客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方。在进过三次握手后和服务器建立了TCP连接,如下图所示(第三条):

    展开全文
  • 利用Wireshark进行TCP协议分析报告.doc
  • Wireshark-TCP协议分析

    千次阅读 2021-01-09 12:15:34
    TCP:传输控制协议  TCP是一种面向连接的、... 可靠性:tcp协议通过下列方式来提高可靠性: 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递...

    https://blog.csdn.net/ahafg/article/details/51039584

     

    TCP:传输控制协议

      TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。 
      面向连接: 面向连接意味着使用tcp的应用程序在传输数据前必须先建立连接,就如打电话一样,要先进行拨号,等待对方响应才能开始说话。 
      可靠性:tcp协议通过下列方式来提高可靠性: 

    • 应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。由TCP传递给I P的信息单位称为报文段或段
    • 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
    • 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
    • TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段(希望发端超时并重发)。
    • 既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
    • 既然I P数据报会发生重复,TCP的接收端必须丢弃重复的数据。
    • TCP还能提供流量控制。TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲 
      区溢出。

      字节流:两个应用程序通过TCP连接交换8 bit字节构成的字节流。

        另外,TCP对字节流的内容不作任何解释。TCP不知道传输的数据字节流是二进制数据,还是ASCII字符或者其他类型数据。对字节流的解释由TCP连接双方的应用层解释。

    TCP首部格式

      tcp数据是被封装在IP数据包中的,和udp类似,在IP数据包的数据部分。tcp数据包的格式如下: 
       
      这里写图片描述

      源端口号和目的端口号与udp中类似,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接,在网络编程中,一般一个IP地址和一个端口号组合称为一个套接字(socket)。 
      序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。在tcp中tcp用序号对每个字节进行计数(这个值与发送的帧数没有关系,而是与发送的数据字节数有关系,后面会有说明)。 
      确认序号:包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加 1(不是单纯的序号加1,还包括数据字节数)。 
      首部长度:用于记录tcp数据报首部的长度,一般为20字节,实际值为首部长度除以4。 
      URG: 紧急指针( urgent pointer)有效。 
      ACK: 确认序号有效。 
      PSH: 接收方应该尽快将这个报文段交给应用层。 
      RST: 重建连接。 
      SYN: 同步序号用来发起一个连接。 
      FIN: 发端完成发送任务。 
      窗口大小:用于流量控制。 
      检验和:检验和覆盖了整个的 TCP报文段: TCP首部和TCP数据,与udp相似需要计算伪首部。

    Wireshark抓包分析TCP结构

      利用wireshark抓取一个tcp数据包,查看其具体数据结构和实际的数据:

    这里写图片描述

    这里写图片描述

    TCP连接的建立

      利用TCP传输数据前,需要建立tcp连接,tcp连接的建立有3个主要过程,叫做3次握手,具体过程如下图所示: 
      这里写图片描述 
      

    过程: 
       1. 首先客户端发送一个SYN包给服务器(SYN=1,Seq为主机选择的这个连接的初始序号),然后等待应答。 
       2. 服务器端收到SYN包,回应给客户端一个ACK =x+1、SYN=1的TCP数据段(ACK表示确认序号有效,即收到上一个包,这里加1并不是ACK的值加1,ACK是一个标志位,这里会变成1,而x+1则是希望收到的下一个包的序列号,这个值放在包的确认序列号字段中,而只有ACK=1时,确认序列号才有效)。 
       3. 客户必须再次回应服务器端一个ACK确认数据段(这里的Seq为x+1)。 
       
       经过上面3个过程就建立了一个tcp连接,接着就可以发送数据了,因为建立连接使用了一个序列号x,所以发送数据的第一个字节序号为x+1。 
       
       注意:这里tcp为应用层提供全双工服务,意味数据能在两个方向上独立地进行传输,因此连接的每一段都有各自的传输数据序号(对应于上图中的x和y,这两个值是没有必然联系的)。 
       
    Wireshark抓包分析TCP3次握手

      下面通过利用http应用层连接一个网络,实现tcp的3次握手和简单的数据交换过程,下面通过抓包来实际观察这个过程,首先我们先看看抓到的包: 
      这里写图片描述

      从第一行的tcp往下看,前面3个tcp包为3次握手的过程,接着http包说明成功建立连接,主机向服务器发送一个http应用请求,服务器收到请求后,返回一个tcp确认帧,接着发送一个http应答给主机,主机收到服务器的http应答数据后,又发送一个tcp确认帧,确认收到了数据。这样图中的前7个包实现了主机和服务器建立连接,并实现一次简单的数据请求应答过程。即下图所示的交互按键回显过程:

    这里写图片描述

    接下来是按照顺序的7个数据帧的数据结构。数据帧顺序分别为: 

      1. 主机发起一个tcp连接请求(tcp), 
      2. 服务器响应连接请求(tcp), 
      3. 主机返回ACK完成3次握手成功建立连接(tcp), 
      4. 主机发送一个http网页请求(http), 
      5. 服务器收到请求返回一个ACK帧(tcp), 
      6. 服务器根据请求发送数据到主机(http), 
      7. 主机收到服务器数据返回一个ACK帧(tcp),具体帧细节见下图:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    TCP连接的释放

      当通信双方完成数据传输,需要进行TCP连接的释放,由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。因为正常关闭过程需要发送4个TCP帧,因此这个过程也叫作4次挥手。具体过程如下图: 
      这里写图片描述 
      


    过程(默认客户端发起关闭): 
      1. TCP客户端发送一个FIN,关闭客户端到服务器端的数据传送。(客户端不再发送报文给服务器端,但可接受服务器端报文) 
      2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。 
      3.服务器关闭客户端的连接,发送一个FIN给客户端。(服务器端关闭到客户端的数据传送) 
      4.客户段发回ACK报文确认,并将确认序号设置为收到序号加1。

    下面通过wireshark抓包了解具体的释放连接过程,通过断开一个连接,抓取到4个TCP帧,帧顺序依次为: 

      1. 主动关闭放发送一个FIN帧给被动方 
      2. 被动方收到关闭信息返回一个确认ACK帧 
      3. 被动方发送一个FIN帧给主动方 
      4. 主动方收到被动方的FIN关闭信息返回一个ACK帧,连接释放

    下面为按照顺序的帧数据结构详细信息:

    这里写图片描述

    这里写图片描述

    这里写图片描述

    这里写图片描述

    TCP的最大报文段长度

      上面介绍了TCP连接的建立和释放过程,下面介绍一下TCP的最大报文段长度。 
      最大报文段长度(MSS)表示TCP传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的MSS。一般来说,MSS越大越好,因为报文段越大允许每个报文段传送的数据就越多,相对IP和TCP首部有更高的网络利用率。 
      MSS选项只能出现在SYN报文段中,所以只能在SYN=1的帧中才会有MSS选项说明报文的最大段长度。 
    具体参考: 
    http://baike.baidu.com/link?url=c-fTckuehGMSiI5c2xCQDe3MUOKRwgdK6Q4CeO3tms8s6V3hIv5OmOQvUJvp67e90jUDAIjZfmhk8deiIjw1tK

    其他

      关于TCP的内容还有很多,这里不再详细说明,但是需要知道,TCP连接的建立和释放还有几种比较特殊的情况,同时打开(SYN)建立连接,同时关闭或半关闭来释放连接的情况都是存在的,还有一些TCP的可选字段,这里都不再讲了,具体可以参考:TCP/IP 详解卷1。

    展开全文
  • Wireshark抓分析TCP协议

    千次阅读 2019-07-12 12:30:21
    之前有一篇文章介绍了http协议「初识http协议」,http协议协议是基于tcp协议的,所以作者觉得有必要针对tcp协议做一个介绍,希望各位读者能够静下心来认真阅读,也可以自己去看看TCP/IP协议详解这...
  • Wireshark数据包分析之...相关课程及专业:TCP协议分析、网络编程实例教程、计算机网络 实验时数(学分):4学时 实验类别:实践实验类 预备知识 1.TCP协议的由来 上一次的课程详细介绍了UDP协议,可以知道该协议实
  • wireshark——TCP&UDP协议

    千次阅读 2022-04-11 21:59:04
    文章目录TCP协议TCP三次握手TCP通信断开TCP 通信重置UDP协议 TCP协议 定义: Transmission Control Protocol,即传输控制协议。是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议,由IETF的RFC793...
  • Telnet协议TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在...
  • 所以如果分析一条 TCP 连接的 window size,必须到握手阶段的包,不然就不可以知道协商的 factor 是多少。 cwnd 查看方式 Congestion control 是发送端通过算法得到的一个动态变量,会试试调整,并不会体现在协议...
  • Wireshark抓包-TCP协议

    万次阅读 多人点赞 2018-08-04 19:46:47
    TCP首部格式     源端口号、目的端口号:用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接,在网络编程中,一般一个IP地址和一个端口号组合称为一个套接字...
  • 所以如果分析一条 TCP 连接的 window size,必须到握手阶段的包,不然就不可以知道协商的 factor 是多少。 cwnd 查看方式 Congestion control 是发送端通过算法得到的一个动态变量,会试试调整,并不会体现在协议...
  • 文章目录TCP 报文端口号(protocol port number)TCP报文段分析ARQ协议(通信模型)累积确认ARP协议和停止等待协议TCP 报文设计其他主题三次握手四次挥手字段所占字节与位的混淆 TCP 报文 TCP/IP 的运输层有两个主要协议...
  • 这个是转载的,不过结合这个看更好https://www.cnblogs.com/freefish12/p/5394876.html我是为了理解keep-liveTCP:传输控制协议TCP是一种面向连接的、可靠的、基于字节流的传输层...可靠性:tcp协议通过下列方式来...
  • 山东建筑大学计算机学院的计算机网络实验报告,实验一 利用WireShark分析HTTP和DNS
  • 实验二.利用Wireshark分析IP协议

    千次阅读 2020-04-28 19:04:58
    学会利用Wireshark抓分析IP协议 实验环境 Wireshark软件 Windows 计算机 实验预备知识 1.IP数据报的格式 固定部分:20字节 首部:20字节 总长度=首部+数据部分20+1480 网络层总长度<...
  • ICMP(Internet control message protocol)协议是互联网控制报文协议,这里的控制是指监控网络的状态,比如主机是否可达,路由是否可达,端口是否可达等,以便于上层做一些差错处理。
  • TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;如下图中报文No.7 第二次...
  • 查找 tcp 握手的三个包: 方法一:随便找一个 http 协议的包,观察其地址(不同于本机 IP 地址-192.168.……)的地址,查询输入 ip.src == 183.3.233.225 or ip.dst ==183.3.233.225 来搜寻相关包。在搜寻出来的包...
  • 使用 wireshark 软件对协议进行还原 需要一些计算机网络的基础,还是比较容易分析的 ...(1) TCP协议分析 源IP: 172.20.120.252 目的IP:167.71.198.221 源端口:59267 目的端口:443(https
  • WireSharkTCP解析

    2020-09-29 19:43:00
    利用WireShark抓包,追踪流,抓取到一个会话的数据包。前三个TCP数据包对应了TCP建立连接的三次握手 上图为TCP的报文段格式 SYN字段 SYN:同步序列编号(Synchronize Sequence Numbers)。是TCP/IP建立连接时使用...
  • 利用wireshark抓取TCP的整个过程分析

    千次阅读 2019-11-05 14:11:38
    TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;如下图中报文No.7 第二...
  • wireshark TCP三次握手实验

    千次阅读 2020-02-07 19:59:22
    我使用了windows上的python作为客户端和ipad下载的TCP应用作为服务器。 实验步骤 从客户端192.168.0.109向服务器192.168.0.106的12000端口发起连接 从客户端向服务器发送 hello,这是5个字符 从客户端向服务器发送 ...
  • 《计算机网络实验-使用Wireshark分析TCP和UDP...1、实验3 Wireshark分析TCP和UDP协议一、实验目的1、通过利用Wireshark抓分析TCP和UDP报文,理解TCP和UDP报文的封装格式.2、理解TCP和UDP的区别。二、实验环境与...
  • 网络安全:WireShark 包及常用协议分析

    千次阅读 多人点赞 2022-04-11 19:46:00
    网络安全:WireShark 包及常用协议分析

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,664
精华内容 3,865
热门标签
关键字:

利用wireshark分析tcp协议