精华内容
下载资源
问答
  • 在做计组FTP试验时,有部分知识点掌握的不是很好,把上网收集到的资料整合一下,加强记忆。

    在做计组FTP试验时,有部分知识点掌握的不是很好,把上网收集到的资料整合一下,加强记忆,方便查找。

    一、wireshark的部分功能

    表达式规则
    1. 协议过滤
    比如TCP,只显示TCP协议。
    2. IP 过滤
    比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,
    ip.dst==192.168.1.102, 目标地址为192.168.1.102
    3. 端口过滤
    tcp.port ==80, 端口为80的
    tcp.srcport == 80, 只显示TCP协议的源端口为80的。
    4. Http模式过滤
    http.request.method=="GET", 只显示HTTP GET方法的。
    5. 逻辑运算符为 AND/ OR
    常用的过滤表达式
    有ip.src ==192.168.1.102 or ip.dst==192.168.1.102

    源地址或者目标地址是192.168.1.102

    各行信息分别为
    Frame: 物理层的数据帧概况
    Ethernet II: 数据链路层以太网帧头部信息
    Internet Protocol Version 4: 互联网层IP包头部信息
    Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
    Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议


    二、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连接双方的应用层解释。

    源端口号和目的端口号与udp中类似,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接,在网络编程中,一般一个IP地址和一个端口号组合称为一个套接字(socket)。
    序号:用来标识从TCP发端向TCP收端发送的数据字节流,它表示在这个报文段中的的第一个数据字节。在tcp中tcp用序号对每个字节进行计数(这个值与发送的帧数没有关系,而是与发送的数据字节数有关系,后面会有说明)。
    确认序号:包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加 1(不是单纯的序号加1,还包括数据字节数)。
    首部长度:用于记录tcp数据报首部的长度,一般为20字节,实际值为首部长度除以4。 
    ACK: 确认序号有效。  
    RST: 重建连接。
    SYN: 同步序号用来发起一个连接。
    FIN: 发端完成发送任务。 
    CWR(Congestion Window Reduced)
    简单来说就是网络不是很畅通了,通知对方减少阻塞窗口,发包速度发慢一点。
    ECN(ECN-Echo)
    ECN两个作用,在TCP三次握手时表明TCP端是否支持ECN;在传输数据时,发送方是无法知道网络是否畅通的,但是经过重重的路由后,路由根据网络的情况可以知道是否阻塞,路由会设置在IP层会设置的相应的标志,即接收端发现了拥塞。CWR为发送端缩小拥塞窗口标志,用来通知发送端它已经收到了设置ECN标志,应该减慢发包速度。关于ECN的详细描述请参考:ECN
    URG(Urgent)
    这就是传说中的带外数据。因为TCP是没有消息边界的,假如有一种情况,你已经发送了一些数据,但是此时,你要发送一些数据优先处理,就可以设置这些标志,同时如果设置了这个标志,紧急指针也会设置为相应的偏移。当接受方收到URG数据时,不缓存在接收窗口,直接往上传给上层。具体的使用可以参考TCP带外数据。大体来说,就是,调用send和recv是要加上MSG_OOB参数。同时接收方要处理SIGURG信号。不过据说这个带外数据在实际上,用得很少。
    PSH(Push)
    简单来说,就是告诉对方,我发这么多数据了,你可以处理了,不用缓冲在接收窗口了,直接交数据给上层吧。如果设置了SO_NODELAY选项,可以强制设置这个标志,如果设置了这个标志,数据就不缓冲在发送窗口那里,直接发送。
    窗口大小:用于流量控制。
    检验和:检验和覆盖了整个的 TCP报文段: TCP首部和TCP数据,与udp相似需要计算伪首部。

    TCP报文SYN ACK的计算如下:
    A -> B SYN J ACK K LEN L
    B -> A SYN K ACK J+L LEN M
    A -> B SYN J+L ACK K+M

    三次握手:
            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)。
    四次挥手:
         1. TCP客户端发送一个FIN,关闭客户端到服务器端的数据传送。(客户端不再发送报文给服务器端,但可接受服务器端报文)
      2. 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。
      3.服务器关闭客户端的连接,发送一个FIN给客户端。(服务器端关闭到客户端的数据传送)
      4.客户段发回ACK报文确认,并将确认序号设置为收到序号加1。


    、FTP的PORT和PASV的连接方式以及数据连接端口号计算

    FTP(File Transfer Protocal),是文件传输协议的简称。FTP使得主机间可以共享文件,用于控制Internet上文件的双向传输。它是一个客户机/服务器系统。用户通过一个支持FTP协议的客户机程序,连接到在远程主机上的FTP服务器程序。用户通过客户机程序向服务器程序发出命令,服务器程序执行用户所发出的命令,并将执行的结果返回到客户机。 当FTP客户端与服务器建立FTP连接时,将与服务器上的两个端口建立联系:端口20和21。FTP使用不同的端口号传输不同的内容,会建立不同的TCP连接。首先,使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。


    FTP的工作过程: FTP使用2个TCP端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21——命令端口和20——数据端口,但根据FTP工作在主动模式还是被动模式,21和20端口的使用方法略有不同。 主动模式的FTP是这样的:客户机从一个任意的非特权端口N(N≥1024),连接到FTP服务器的命令端口,也就是21端口,建立一个控制连接。这个连接用于传递客户端的命令和服务器端对命令的响应,生存期是整个FTP会话时间。
    如果期间需要传输文件和其它数据,例如:目录列表等,客户端就需要建立数据连接了。这种连接在需要数据传输时建立,而一旦数据传输完毕就关闭,整个FTP期间可能会建立多次。在主动模式下,建立数据连接时,客户端会开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1),开始进行数据传输。


    PORT(主动)方式的连接过程是:

    客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。

    当需要传送数据时,客户端在命令链路上用 PORT命令告诉服务器:“我打开了****端口,你过来连接我”。

    于是服务器从20端口向客户端的****端口发送连接请求,建立一条数据链路来传送数据。

    PASV(被动)方式的连接过程是:

    客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。

    当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了****端口,你过来连接我”。

    于是客户端向服务器的****端口发送连接请求,建立一条数据链路来传送数据。

     

    FTP PORT/PASV 数据连接端口号计算:

    FTP的PORT/PASV端口号
    在 227 entering pasv mode (192,168,1,2,47,87)

    端口号:47 X 256 + 87 = 12119


    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
    在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
    总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。


    四、ICMP协议


    ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。
    ICMP的协议号为1。
    ICMP报文是在IP报文内部的。

    ICMP报文主要有两大功能:查询报文和差错报文。当路由器收到一个无法传递下去的IP报文时,会发送ICMP目的不可达报文(Type为3)给IP报文的源发送方。报文中的Code就表示发送失败的原因。
    Code
    0 = net unreachable;
    1 = host unreachable;
    2 = protocol unreachable;
    3 = port unreachable;
    4 = fragmentation needed and DF set;
    5 = source route failed.

    网络传输IP数据报的过程中,如果IP数据包的TTL值逐渐递减为0时,需要丢弃数据报。这时,路由器需要向源发送方发送ICMP超时报文(Type为11),Code为0,表示传输过程中超时了。

    一个IP数据报可能会因为过大而被分片,然后在目的主机侧把所有的分片重组。如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。

    当路由器或主机处理数据报时,发现因为报文头的参数错误而不得不丢弃报文时,需要向源发送方发送参数错误报文(Type为12)。当Code为0时,报文中的Pointer表示错误的字节位置。

    路由器在处理报文时会有一个缓存队列。如果超过最大缓存队列,将无法处理,从而丢弃报文。并向源发送方发一个ICMP源冷却报文(Type为4)。

    当路由收到IP数据报,发现数据报的目的地址在路由表上没有,它就会发ICMP重定向报文(Type为5)给源发送方,提醒它想要发送的地址不在。
    时间戳报文是用来记录收发以及传输时间的报文。Originate Timestamp记录的是发送方发送报文的时刻;Receive Timestamp记录的是接收方收到报文的时刻;Transmit Timestamp表示回显这最后发送报文的时刻。
    信息请求或信息响应报文是用来找出一个主机所在的网络个数(一个主机可能会在多个网络中)。报文的IP消息头的目的地址会填为全0,表示this,源地址会填为源IP所在的网络IP。


    引用网址:
    wireshark的部分功能
    http://blog.csdn.net/xifeijian/article/details/9280435
    TCP协议详解
    http://www.cnblogs.com/imlgc/p/3864264.html
    http://blog.csdn.net/ahafg/article/details/51039584
    FTP的PORT和PASV的连接方式以及数据连接端口号计算
    http://blog.csdn.net/bestone0213/article/details/41892921

    http://blog.chinaunix.net/uid-21778123-id-1815451.html

    http://blog.csdn.net/chongshangyunxiao321/article/details/51095390

    ICMP协议

    http://www.cnblogs.com/jingmoxukong/p/3811262.html

    展开全文
  • 记录学习Wireshark的一些问题,主要是: 1.过滤表达式 2.本机搭建ftp站点 3.利用wireshark捕获ftp协议交互过程并对此进行分析

    本文的主题,记录学习Wireshark的一些问题。首先Wireshark是一个网络封包分析软件,其功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料,你可以把它想像成 “电工技师使用电表来量测电流、电压、电阻” 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。

    网上下载好wireshark一路默认前进安装后就可以进入wireshark,我们可以看到主要界面大概是这样的。如果底下显示“找不到接口”,你可以尝试管理员打开wireshark解决。
    这里写图片描述

    选择无线网就可以看到一个吊炸天的界面(当然大家对应自己想捕获的网络进行选择)

    这里写图片描述
    我们用wireshark的目的是捕获数据包再做后续处理(了解还不深入,更多的作用以后用到了再和大家分享),所以现在出现了这么一大堆结果难道要我们在MMP的九千多行中找结果吗,肯定不是哇,所以进入第一个知识点Wireshark过滤表达式。

    一、过滤表达式
    这里写图片描述
    在顶上有一个搜索栏就是我们写过滤表达式的地方。主要实用有针对性的一些过滤表达式有按协议过滤;按目的端口过滤;按源IP地址过滤;按目的MAC地址过滤;针对长度和内容的过滤等,我们逐个说明,读者可以在自己wireshark进行实验(有点像在写sql的where语句,对的语句搜索栏是绿色的,有错误就是红色的)。

    1、针对IP地址的过滤
    Cmd输入ipconfig
    这里写图片描述
    (1)对源地址为10.136.157.37的包的过滤,即抓取源地址满足要求的包。
    表达式为:ip.src ==10.136.157.37
    (2)对目的地址为10.136.157.37的包的过滤,即抓取目的地址满足要求的包。
    表达式为:ip.dst ==10.136.157.37
    (3)对源或者目的地址为10.136.157.37的包的过滤,即抓取满足源或者目的地址的ip地址是10.136.157.37的包。
    表达式为:ip.addr ==10.136.157.37或者ip.src ==10.136.157.37 or ip.dst ==10.136.157.37
    (4)要排除以上的数据包,我们只需要将其用括号囊括,然后使用 “!”或者”not”即可。
    表达式为:!(表达式) not(表达式)
    这里写图片描述
    2、针对协议的过滤
    (1)仅仅需要捕获某种协议的数据包,表达式很简单仅仅需要把协议的名字输入即可。
    表达式为:http
    (2)需要捕获多种协议的数据包,也只需对协议进行逻辑组合即可。
    表达式为:http or telnet (多种协议加上逻辑符号的组合即可)
    (3)排除某种协议的数据包
    表达式为:not arp or !tcp
    这里写图片描述

    3、针对端口的过滤(视协议而定)
    (1)捕获某一端口的数据包
    表达式为:tcp.port == 80
    (2)捕获多端口的数据包,可以使用and来连接,下面是捕获高端口的表达式
    表达式为:udp.port >= 2048
    这里写图片描述

    4、针对长度和内容的过滤
    (1)针对长度的过虑(这里的长度指定的是数据段的长度)
    表达式为:udp.length < 30 http.content_length <=20
    (2)针对数据包内容的过滤
    表达式为:http.request.uri matches “blog” (匹配http请求中含有vipscu字段的请求信息)
    这里写图片描述

    5、过滤目的Mac地址
    在cmd输入ipconfig/all得到mac地址,即物理地址
    这里写图片描述

    表达式为:eth.addr==DC-85-DE-F2-06-7D
    这里写图片描述

    6、过滤出MAC地址为本机MAC地址,IP地址为非本机IP地址的数据包。
    表达式为:eth.addr== DC-85-DE-F2-06-7D and ip.addr != 10.136.157.37
    这里写图片描述

    二、利用wireshark捕获ftp的协议交互过程并对此进行分析

    接下来我们干点有意思的事情。
    首先插个话题,很多人可能想知道如何在本机上搭建ftp服务器。本人win8系统,搭建方法如下:
    1.打开“控制面板“,进入“程序”
    这里写图片描述

    2.找到“启用或关闭windows功能”,点击打开
    这里写图片描述

    3.在“windows功能”中找到“Internet信息服务”,并选中“FTP服务”、“FTP扩展性”和“IIS管理控制台”前的复选框,点击“确定”
    等待成功后,在开始屏幕的搜索中输入“IIS”,然后点击打开“IIS管理器”
    这里写图片描述

    4.在左栏的“网站”上点击右键,打开“添加FTP站点”,填写相应信息。其中,站点名随意设置,物理路径就是本机电脑上的一个目录,ip地址可设为自己此时的ip地址。其他勾选可以参照自己需求。
    这里写图片描述

    这里写图片描述

    这里写图片描述

    5.点击完成就在本机上搭建了一个ftp站点。你可以打开浏览器输入ftp://刚刚输入的ip地址访问。

    //——————————————蜜汁分割线——————————————

    我们进入正题,打开wireshark,我们以访问ftp.nankai.edu.cn并下载一个文件为例看看在文件传输过程中发生了什么。

    首先我们打开wireshark,打开捕获器,输入ip.src ==10.136.157.37 or ip.dst ==10.136.157.37(10.136.157.37改为大家自己的ip,还可以加上“and (tcp or ftp or ftp-data)”)进行监听。
    打开cmd,输入ftp ftp.nankai.edu.cn,这时候看wireshark那边可以看到捕获了四个tcp报文和一个ftp报文。这是著名的“三次握手”嘛,不对为啥有四个tcp报文?仔细分析一下,先是客户(我的ip)给服务器(南开的这个ip)发送一个请求报文,之后服务器回复一个ACK报文并为这次连接分配资源,而我们客户端也回复了一个ACK报文并为这次连接分配资源,于是我们收到了服务器发来的ftp报文来欢迎我们“welcome to nankai ftp service”,接到服务器这个报文后客户端又发给服务器一个ACK报文,注意这个报文我们发现和上一个发过去的ACK报文作用应该是一样的,只是明确一下客户端这边建立好连接了,准备发送东西了,所以应该是回应了一下服务器发来的ftp文件而已,还是三次握手。
    这里写图片描述
    总结一下:
    TCP/IP协议中,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状态,完成三次握手。
    完成三次握手,客户端与服务器开始传送数据。
    确认号:其数值等于发送方的发送序号 +1(即接收方期望接收的下一个序列号)。

    用的一张图感受一下
    这里写图片描述

    好的,挥别三次握手,再次来到cmd,我们使用匿名访问南开ftp站点,用户输入anonymous,cmd这边告诉我们“230 Login successful”。我们来看看wireshark,发现这次我们客户端在上边已经告诉服务器我们要发东西了的情况下果不其然丢出一个ftp报文,带着我们的用户号一起给到了服务器端,于是对面来了一个ACK报文带着FTP报文传来,也就是我们在cmd看到的那个消息。然后,我们又发了一个ACK报文过去,当然作用和刚刚说的一样,“大哥我们还没死呢,你继续等着我的消息哈”。
    这里写图片描述
    这时我们点击重新捕获的按钮,接下来好好看看下载文件时传输线上发生了什么。在下载文件前,先做好一些准备工作,首先cmd中输入dir可以看看站点资源,我选择了index.html文件一会下载。然后cmd键入‪lcd C:\Users\as\Desktop\yao把下载地址定在目标位置。接下来我们开始捕获。在cmd键入get index.html,转身看看这边wireshark,霎时间捕获了一堆东西,主要包含的协议有tcp、ftp和ftp-data。我们仔细分析一下。

    首先我们发现前三个FTP报文出现两个关键字PORT和PASV,这是什么呢?百度百科一下:
    PORT(主动)方式的连接过程是,服务器开放一个端口,通知客户端连接,服务端接受连接,建立一条命令链路。当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:“我打开了一个1024+的随机端口,你过来连接我”。于是服务器从20端口向客户端的1024+随机端口发送连接请求,建立一条数据链路来传送数据。
    PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务器在命令链路上用 PASV命令告诉客户端:“我打开了一个1024+的随机端口,你过来连接我”。于是客户端向服务器的1024+端口发送连接请求,建立一条数据链路来传送数据。

    所以这一段交互就是我们像南开站点发了一个port请求,服务器接受请求顺便告诉我们“port请求我们收到啦,不过建议你们用pasv比较好啊”,然后我们像服务器发出RETR(retireve)请求下载index.html,于是服务器发来报文,内容就是百科里说的,“我(服务器)开放了一个端口,你可以来连接了”,我们反手就是一个报文回复“连接上啦哈”,于是服务器又发了一个ftp的报文作为回应“我们服务器端用二进制方式来对index.html文件进行数据传输PS.它有41495bytes这么大”,并且发来ACK报文建立连接。这之后,很明显,index.html这个文件被分成了好多个小号文件以ftp-data方式传输过来,过程中还出现了一下ACK的报文我想应该是重新确认一下连接的作用。

    这里写图片描述

    当所有ftp-data的报文发完以后,也就是文件传输完成时候,服务器发来报文告诉我们“所有文件都传完啦”,并且直接有扔过来一个ACK报文,我们客户端也丢回去一个ACK报文,虚晃一枪“大哥谢谢啦,你等等别走我看看还有没需求要找你”

    这里写图片描述

    实验做完了当然没需求啦,所以我们cmd键入quit要断开连接,得到回应goodbye。很牛逼,我们看看wireshark那边,先是两个ftp互相告别,接下来就是著名的“四次挥手”。四个TCP一字排开,先是服务器发来了一个FIN,ACK报文告诉对面我不会再读你给我发的消息了,接着我们客户端知道后愤怒地甩回去一个ACK报文告诉服务器“你行,我们热脸不贴冷屁股,既然你不听我也不给你发消息了”。还没完,气还没消我们客户端也丢过去一个FIN,AVK报文,告诉对面礼尚往来,我也不会再鸟你的消息了,作为聊天的最后,服务器来了个最后的了结“断绝一切联系,我再给你发消息我就不是一个好的服务器!”。

    嗯,然后嘛他们就失忆了,下一次我们找服务器大哥还是能握握手成为好朋友。

    这里写图片描述

    再来总结一下:
    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
    TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。
    (1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
    (2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
    (3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
    (4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。

    再用一张图让大家看的更直观
    这里写图片描述

    这就是这次wireshark抓ftp包的实验全过程和分析内容啦。

    That’s all thank you

    展开全文
  • WiresharkFTP协议分析(二)

    千次阅读 2018-11-15 23:19:42
    以实际抓包来分析ftp协议,加深理解。 环境: win7电脑+linux设备,linux设备为ftp服务端,win7电脑通过WinSCP的ftp主动方式(我得版本winscp默认是被动方式,需要从高级选项修改)来连接ftp服务端。 过程: ...

    以实际抓包来分析ftp协议,加深理解。

    环境:

    win7电脑+linux设备,linux设备为ftp服务端,win7电脑通过WinSCP的ftp主动方式(我得版本winscp默认是被动方式,需要从高级选项修改)来连接ftp服务端。

    过程:

    电脑(192.168.3.206)与设备建立ftp(192.168.3.100)连接,然后电脑向设备传输一个2084字节的文件。然后电脑主动关闭连接。

    设备上进行抓包,只抓取tcp port 20和21的报文。

    实际抓包报文如下(一个一个包来分析):

    第1-3包为tcp的三次握手,服务端端口21,即ftp控制连接建立;

    第4包为服务端应答客户端报文,220:服务就绪,附加参数为服务端ftp版本号;

    第5包客户端发送请求认证用户名,命令USER,参数实际用户名;

    第6包为服务端tcp ack回应包;

    第7包为服务端对客户端USER命令的应答,331:要求密码;

    第8包客户端像服务端传送密码,命令PASS,后跟明文密码;

    第9包为服务端tcp ack回应包;

    第10包为服务端对客户端PASS命令的应答,230:登录成功;

    第11包为客户端像服务端请求系统版本,命令SYST;

    第12包为服务端tcp ack回应包;

    第13包为服务端对客户端SYST命令的应答,215:系统名;

    第14包为客户端向服务端请求服务端采用的特性列表,命令FEAT;

    第15包为服务端对客户端命令FEAT的应答,211:系统状态回复;

    第16-24包为服务端应答回复;

    第25、26包为客户端tcp ack包;

    第27-38包为客户端指定UTF8格式、获取服务器目录并切换命令及服务端的应答,不再赘述;

    第39包为客户端向服务端请求LIST命令;

    第40-42为服务端与客户端的数据连接建立(注意:是服务端发起的连接请求),服务端端口为20,连接的客户端端口为192*256+13(根据第37包客户端PORT给服务端的端口,计算公式为256*倒数第二位+倒数第一位)

    第43-44包为服务端开始向客户端发送文件列表,注意只有实际列表传送走的数据连接,即第44包,第43包还是控制连接;

    第45-47包为tcp 四次挥手包(剩余两个挥手包为第49、50包),从这可以看出文件列表传送完毕,数据连接立马关闭;

    第52-68包又是一次客户端获取服务端列表的通信过程,可以看到又经历了一次建立数据连接并关闭的过程,不在赘述;

    第68-89包为客户端向服务端传送文件的过程,先是确定为二进制模式,传输文件为sysctl.conf文件,然后建立数据连接进行传输,实际传送数据大小为2084字节,然后关闭数据连接;

    第86包服务端应答传输完成;

    第88包客户端向服务端传入文件的修改时间,这里不清楚为啥是20171115,明明是2018年;

    第89包服务端应答客户端文件时间已修改;

    第90-106包又是一次文件列表的获取过程,不再赘述;

    第107-109为客户端主动断开与服务端的ftp连接的四次挥手包(闹么为啥只抓到三个包。。。);

    四次挥手注意的是,因为数据连接采用的是服务端主动连接的,而控制连接为客户端主动连接的,屡一下,ftp客户端与服务端是针对控制连接而言的。数据连接主动模式下,实际是服务端充当客户端,不讲了有点乱,睡觉~~~

     

    展开全文
  • WiresharkFTP协议分析(一)

    千次阅读 2018-11-15 22:05:17
    故对ftp协议进行了简单学习,总结如下。 1. ftp协议概述 这部分内容我参考的百度文库的一篇文档: https://wenku.baidu.com/view/fef7d6d658fb770bf68a55ae.html 里面讲的很详细。在此对重点的部分进行总结一下...

    最近项目需求,需要抓取并还原网络中通过ftp传输的文件。故对ftp协议进行了简单学习,总结如下。

    1. ftp协议概述

    这部分内容我参考的百度文库的一篇文档:

    https://wenku.baidu.com/view/fef7d6d658fb770bf68a55ae.html

    里面讲的很详细。在此对重点的部分进行总结一下。

    1)ftp服务端的用到两个端口20和21。

    2)FTP使用不同的端口号传输不同的内容,会建立不同的TCP连接。首先,使用 TCP 生成一个虚拟连接用于控制信息,然后再生成一个单独的 TCP 连接用于数据传输。

    3)FTP有两种工作模式,分别是主动模式(PORT)和被动模式(PASV)两种模式,这两种模式是按照FTP服务器的“角度”来说的,更通俗一点说就是:在传输数据时,如果是服务器主动连接客户端,那就是主动模式;如果是客户端主动连接服务器,那就是被动模式。主动模式下,服务端采用端口20做数据连接。

    4)目前ftp客户端与服务端的 传输方式为流方式,传输类型为ASCII或是二进制,传输结构为文件结构(文件被认为一个连续的字节流)。

    5)ftp命令

        ftp命令和应答在客户和服务端的控制连接上以NVT ASCII码(百度了解)形式传输。

         从客户发送给服务端的ftp命令超过30种,这些命令都是3或4个字节的大写ASCII字符,其中一些带选项参数。我从Wikipedia中拷贝过来如下:

    Command RFC Description
    ABOR   Abort an active file transfer.
    ACCT   Account information.
    ADAT RFC 2228 Authentication/Security Data
    ALLO   Allocate sufficient disk space to receive a file.
    APPE   Append (with create)
    AUTH RFC 2228 Authentication/Security Mechanism
    AVBL Streamlined FTP Command Extensions Get the available space
    CCC RFC 2228 Clear Command Channel
    CDUP   Change to Parent Directory.
    CONF RFC 2228 Confidentiality Protection Command
    CSID Streamlined FTP Command Extensions Client / Server Identification
    CWD RFC 697 Change working directory.
    DELE   Delete file.
    DSIZ Streamlined FTP Command Extensions Get the directory size
    ENC RFC 2228 Privacy Protected Channel
    EPRT RFC 2428 Specifies an extended address and port to which the server should connect.
    EPSV RFC 2428 Enter extended passive mode.
    FEAT RFC 2389 Get the feature list implemented by the server.
    HELP   Returns usage documentation on a command if specified, else a general help document is returned.
    HOST RFC 7151 Identify desired virtual host on server, by name.
    LANG RFC 2640 Language Negotiation
    LIST   Returns information of a file or directory if specified, else information of the current working directory is returned.
    LPRT RFC 1639 Specifies a long address and port to which the server should connect.
    LPSV RFC 1639 Enter long passive mode.
    MDTM RFC 3659 Return the last-modified time of a specified file.
    MFCT The 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTP Modify the creation time of a file.
    MFF The 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTP Modify fact (the last modification time, creation time, UNIX group/owner/mode of a file).
    MFMT The 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTP Modify the last modification time of a file.
    MIC RFC 2228 Integrity Protected Command
    MKD   Make directory.
    MLSD RFC 3659 Lists the contents of a directory if a directory is named.
    MLST RFC 3659 Provides data about exactly the object named on its command line, and no others.
    MODE   Sets the transfer mode (Stream, Block, or Compressed).
    NLST   Returns a list of file names in a specified directory.
    NOOP   No operation (dummy packet; used mostly on keepalives).
    OPTS RFC 2389 Select options for a feature (for example OPTS UTF8 ON).
    PASS   Authentication password.
    PASV   Enter passive mode.
    PBSZ RFC 2228 Protection Buffer Size
    PORT   Specifies an address and port to which the server should connect.
    PROT RFC 2228 Data Channel Protection Level.
    PWD   Print working directory. Returns the current directory of the host.
    QUIT   Disconnect.
    REIN   Re initializes the connection.
    REST RFC 3659 Restart transfer from the specified point.
    RETR   Retrieve a copy of the file
    RMD   Remove a directory.
    RMDA Streamlined FTP Command Extensions Remove a directory tree
    RNFR   Rename from.
    RNTO   Rename to.
    SITE   Sends site specific commands to remote server (like SITE IDLE 60 or SITE UMASK 002). Inspect SITE HELP output for complete list of supported commands.
    SIZE RFC 3659 Return the size of a file.
    SMNT   Mount file structure.
    SPSV FTP Extension Allowing IP Forwarding (NATs) Use single port passive mode (only one TCP port number for both control connections and passive-mode data connections)
    STAT   Returns the current status.
    STOR   Accept the data and to store the data as a file at the server site
    STOU   Store file uniquely.
    STRU   Set file transfer structure.
    SYST   Return system type.
    THMB Streamlined FTP Command Extensions Get a thumbnail of a remote image file
    TYPE   Sets the transfer mode (ASCII/Binary).
    USER   Authentication username.
    XCUP RFC 775 Change to the parent of the current working directory
    XMKD RFC 775 Make a directory
    XPWD RFC 775 Print the current working directory
    XRCP RFC 743  
    XRMD RFC 775 Remove the directory
    XRSQ RFC 743  
    XSEM RFC 737 Send, mail if cannot
    XSEN RFC 737 Send to terminal

    6)ftp应答

    ftp应答都是ASCII码形式的3位数字,并跟有报文选项。应答3位码中每一位数字都有不同的含义,这里就不详细列出(脑袋记不住)。直接拷贝Wikipedia的常见的应答码,如下:

    Code Explanation
    100 Series The requested action is being initiated, expect another reply before proceeding with a new command.
    110 Restart marker replay . In this case, the text is exact and not left to the particular implementation; it must read: MARK yyyy = mmmm where yyyy is User-process data stream marker, and mmmm server's equivalent marker (note the spaces between markers and "=").
    120 Service ready in nnn minutes.
    125 Data connection already open; transfer starting.
    150 File status okay; about to open data connection.
    200 Series The requested action has been successfully completed.
    202 Command not implemented, superfluous at this site.
    211 System status, or system help reply.
    212 Directory status.
    213 File status.
    214 Help message. Explains how to use the server or the meaning of a particular non-standard command. This reply is useful only to the human user.
    215 NAME system type. Where NAME is an official system name from the registry kept by IANA.
    220 Service ready for new user.
    221 Service closing control connection.
    225 Data connection open; no transfer in progress.
    226 Closing data connection. Requested file action successful (for example, file transfer or file abort).
    227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
    228 Entering Long Passive Mode (long address, port).
    229 Entering Extended Passive Mode (|||port|).
    230 User logged in, proceed. Logged out if appropriate.
    231 User logged out; service terminated.
    232 Logout command noted, will complete when transfer done.
    234 Specifies that the server accepts the authentication mechanism specified by the client, and the exchange of security data is complete. A higher level nonstandard code created by Microsoft.
    250 Requested file action okay, completed.
    257 "PATHNAME" created.
    300 Series The command has been accepted, but the requested action is on hold, pending receipt of further information.
    331 User name okay, need password.
    332 Need account for login.
    350 Requested file action pending further information
    400 Series The command was not accepted and the requested action did not take place, but the error condition is temporary and the action may be requested again.
    421 Service not available, closing control connection. This may be a reply to any command if the service knows it must shut down.
    425 Can't open data connection.
    426 Connection closed; transfer aborted.
    430 Invalid username or password
    434 Requested host unavailable.
    450 Requested file action not taken.
    451 Requested action aborted. Local error in processing.
    452 Requested action not taken. Insufficient storage space in system.File unavailable (e.g., file busy).
    500 Series Syntax error, command unrecognized and the requested action did not take place. This may include errors such as command line too long.
    501 Syntax error in parameters or arguments.
    502 Command not implemented.
    503 Bad sequence of commands.
    504 Command not implemented for that parameter.
    530 Not logged in.
    532 Need account for storing files.
    534 Could Not Connect to Server - Policy Requires SSL
    550 Requested action not taken. File unavailable (e.g., file not found, no access).
    551 Requested action aborted. Page type unknown.
    552 Requested file action aborted. Exceeded storage allocation (for current directory or dataset).
    553 Requested action not taken. File name not allowed.
    600 Series Replies regarding confidentiality and integrity
    631 Integrity protected reply.
    632 Confidentiality and integrity protected reply.
    633 Confidentiality protected reply.
    10000 Series Common Winsock Error Codes[2] (These are not FTP return codes)
    10054 Connection reset by peer. The connection was forcibly closed by the remote host.
    10060 Cannot connect to remote server.
    10061 Cannot connect to remote server. The connection is actively refused by the server.
    10066 Directory not empty.
    10068 Too many users, server is full.

    总结这么多,还是得抓包实际分析来看,下一节以实际抓包来分析ftp的整个连接过程。

     

    参考:

    《TCP/IP详解 卷1:协议》

    https://wenku.baidu.com/view/fef7d6d658fb770bf68a55ae.html

    https://en.wikipedia.org/wiki/List_of_FTP_commands

    https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes

     

    展开全文
  • wireshark分析仪网站. http://www.wireshark.org/ 了解ICMP协议 ICMP(Internet Control Message Protocol)网际报文控制协议,是Internet协议族的核心协议之一,它主要用在网络计算机的操作系统中发送出错信息。...
  • 转载自网络今天刚刚申请了一个虚拟主机,上传数据成为问题,Google一下,呵呵哒,看到了flashfxp这个软件,这个叫什么鬼东西,原谅小客...wireshark 抓包分析协议 FTP协议的数据包分析与总结本文主要是针对在wiresh...
  • FTP数据报文分析 从数据6号帧中我们可以看到“USER administrator”,这个是用户名;从数据9号帧中我们可以看到“PASS Admin.123”,这个是密码; FTP数据重组 数据重组步骤一:选中TCP流进行过滤 数据重组步骤二:出去...
  • ftp 文件 还原 问题 引出的 包的丢失 进行的 简要分析。   Understanding [TCP ACKed unseen segment] [TCP Previous segment not captured]   That very well may be a false ...
  • FTP是客户端-服务器协议,客户端将请求文件,而本地或远程服务器将提供该文件。我们熟知的FTP客户端:WinSCP、WS FTP、FileZilla等都是使用文件传输协议,它是一种标准的Internet 协议。用于通过TCP / IP 连接在...
  • Wireshark数据抓包分析FTP协议

    万次阅读 多人点赞 2018-04-17 20:09:58
    实验步骤一 配置FTP服务器,并在测试者机器上登录FTP服务器在局域网环境中,我们使用一个小工具来(Quick Easy FTP Server)实现FTP服务器。配置Quick Easy FTP Server 软件双击桌面的Quick Easy FTP Server,如下...
  • Wireshark嗅探和协议分析

    千次阅读 2018-11-29 21:21:21
    2、通过对Wireshark抓包实例进行分析,实现捕捉DHCP、ARP、FTP、HTTP等协议的数据包;理解TCP/IP协议中多种协议的数据结构、会话连接建立和终止的过程;了解FTP、HTTP等协议明文传输特性,增强安全意识。 二、实验...
  • wireshark抓包分析FTP

    千次阅读 2019-11-06 18:29:19
    简单通过抓把分析ftp从登陆步骤 首先找到网上一个公用的ftp地址进行抓包测试,这里采用地址(瑞典Umeå universitet...首先包28,35,36 tcp三次握手建立连接,说明ftp是建立在tcp协议之上的。 首先客户端主...
  • FTP协议分析实验

    千次阅读 2017-03-14 10:43:48
    分析FTP协议的安全性。 【实验步骤】 1. 配置 Serv-U 服务器;建立用户名和密码(例如用户名是USER,密码PASS); (有很多可参考的网络资源。比如 http://www.jb51.net/article/28530.htm) 2. 使用协议分析软件 ...
  • Wireshark分析数据包

    2017-11-22 17:52:23
    Wireshark分析数据包一.协议TCP/IP协议栈:应用层,运输层,网络层,数据链路层 1.应用层协议 文件传输类:HTTP、FTP、TFTP; 远程登录类:Telnet; 电子邮件类:SMTP; 网络管理类:SNMP; 域名解析类...
  • 目录   内容 步骤 (一)、FTP原理 ...(六)、WiresharkFTP流量包分析 (附录)FTP的C语言代码实现 内容 1、FTP原理 2、FTP工作方式 3、FTP传输模式 4、iis搭建ftp服务器(fil...
  • Wireshark协议层对应关系   数据包的结构 主要针对wireshark所捕获的信息窗口及数据包结构进行信息图文解读。操作界面中的信息窗口结构图如下:对单个FTP数据包的各字段信息含义进行描述,并形像地与OSI模型...
  • FTP协议分析实验报告 实验步骤 1打开WFTPD软件设置好ftp的账号和密码可看到如下图 2打开命令提示符ping对方的电脑 3在ping通了的情况下现在按照先前设置好的用户名和密码连接登陆如下图 上图界面显示登录成功 4登录...
  • 【理论课程FTP协议与NFS协议】 实验目的 1、NFS协议的应用范围 ??文件读写的时候? 2、NFS挂载操作的原理 整个协议,与文件的读写有什么关联?? 3、NFS的安全机制 NFS的安全机制到底是啥?? SSL这种原理有借鉴之...
  • 首先我们通过wireshark看看FTP的登陆是怎么完成的。(1)选一个当前在用的网络,我是WLAN(2)选择TCP过滤器方便找到FTP的包(没有过滤FTP的,最多只能过滤出TCP)(3)开始捕捉后我们就可以找到需要的包了。右键一...
  • 1.分析FTP协议 2.分析DNS协议 3. 分析HTTP协议 二.分析要求 (1)ftp部分: 学习 Serv-U FTP Server 服务软件的基本配置和FTP 客户端命令的使用 设计应用以获取ftp报文 分析ftp报文的格式与...
  • 本书共分3篇。第1篇介绍Wireshark的各项功能,包括基础知识、Wireshark的定制、捕获过滤器和显示过滤器的使用、数据包的着色、导出和重组等;...第3篇介绍借助Wireshark分析操作系统启动过程中的网络通信情况。
  • 准备好两台局域网内的电脑,一台配置为FTP服务器,另一台进行登录,并使用Wireshark抓包。 此时两台电脑的基本状态为:两台电脑(Win7系统)直接通过网线相连,其中FTP服务器的IP设为192.168.1.1,客户端的IP为192...
  • 涉及实验:使用网络协议分析器捕捉和分析协议数据包 利用Quick Easy FTP Server工具将该pc机模拟成FTP服务器端,安装与配置比较简单,网上有很多教程可以参考。 配置完成后,点击左上角绿色播放键开启FTP服务,点击...
  • FTP 是File Transfer Protocol(文件传输协议)的英文简称,用于Internet上的控制文件的双向传输。FTP一共会创建两条信道,其中一条为命令信道,另一条是专门的数据信道。通常,FTP服务器会用端口21来监听连接,...
  • wireshark数据包分析实战读书笔记 1、tcpdump wireshark omnipeek 网络通信原理 TCP 传输控制协议 IP 互联网协议 ARP 地址解析协议 DHCP 动态主机配置协议 七层OSI参考模型 应用层 HTTP SMTP FTP ...
  • Wireshark网络分析实战 中文完整版带目录 PDF

    千次下载 热门讨论 2016-04-12 07:39:34
    11.3 FTP故障分析 289 11.4 E-mail协议(POP、IMAP、SMTP)流量及故障分析 295 11.5 MS-TS 和Citrix故障分析 305 11.6 NetBIOS协议故障分析 308 11.7 数据库流量及常见故障分析 317 第12章 SIP、多媒体和IP电话 322 ...
  • 基于离线pcap包的FTP协议网络流量数据提取 最近要利用python程序对离线pcap数据包进行分析,工作的环境是win10系统,python3.6 一、需要用到的几个python库 struct io sys 附:利用wireshark进行辅助分析 二...
  • Wireshark既然可以解析网络中的各种数据流量,那么通过网络传输协议,例如ftp协议传输的文件数据wireshark也可以对其解析,本质上FTP协议是基于传输层TCP协议的,并且一个完整的文件会分割为多个tcp数据包传输(这些...
  • 源(source)为被ping的ip的mac地址 目标(destination)不再为广播,而是发起ping的主机的mac地址 且 ==opcode为2==(reply) ICMP(网络控制消息协议) 完全理解icmp协议 ICMP协议的基本概念 利用wireshark分析由...

空空如也

空空如也

1 2 3 4
收藏数 73
精华内容 29
关键字:

wireshark分析ftp协议