精华内容
下载资源
问答
  • 后 学 开 实验八 使用Wireshark 分析FTP 协议 年 每 一实验目的 分析FTP 协议 展 二实验环境 开 的 与因特网连接的计算机操作系统为Windows 安装有Wireshark IE 等 作 工 软件 本 三实验步骤 HTTP 和FTP 都可以用来...
  • 本节我们看看ftp协议的数据包格式,同时使用代码加以实现。首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示,我将连接端口设置为2100,...
  • wireshark过滤表达式&wireshark捕获ftp协议分析

    万次阅读 多人点赞 2017-10-15 20:40:59
    记录学习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 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中拷贝过来如下:

    CommandRFCDescription
    ABOR Abort an active file transfer.
    ACCT Account information.
    ADATRFC 2228Authentication/Security Data
    ALLO Allocate sufficient disk space to receive a file.
    APPE Append (with create)
    AUTHRFC 2228Authentication/Security Mechanism
    AVBLStreamlined FTP Command ExtensionsGet the available space
    CCCRFC 2228Clear Command Channel
    CDUP Change to Parent Directory.
    CONFRFC 2228Confidentiality Protection Command
    CSIDStreamlined FTP Command ExtensionsClient / Server Identification
    CWDRFC 697Change working directory.
    DELE Delete file.
    DSIZStreamlined FTP Command ExtensionsGet the directory size
    ENCRFC 2228Privacy Protected Channel
    EPRTRFC 2428Specifies an extended address and port to which the server should connect.
    EPSVRFC 2428Enter extended passive mode.
    FEATRFC 2389Get the feature list implemented by the server.
    HELP Returns usage documentation on a command if specified, else a general help document is returned.
    HOSTRFC 7151Identify desired virtual host on server, by name.
    LANGRFC 2640Language Negotiation
    LIST Returns information of a file or directory if specified, else information of the current working directory is returned.
    LPRTRFC 1639Specifies a long address and port to which the server should connect.
    LPSVRFC 1639Enter long passive mode.
    MDTMRFC 3659Return the last-modified time of a specified file.
    MFCTThe 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTPModify the creation time of a file.
    MFFThe 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTPModify fact (the last modification time, creation time, UNIX group/owner/mode of a file).
    MFMTThe 'MFMT', 'MFCT', and 'MFF' Command Extensions for FTPModify the last modification time of a file.
    MICRFC 2228Integrity Protected Command
    MKD Make directory.
    MLSDRFC 3659Lists the contents of a directory if a directory is named.
    MLSTRFC 3659Provides 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).
    OPTSRFC 2389Select options for a feature (for example OPTS UTF8 ON).
    PASS Authentication password.
    PASV Enter passive mode.
    PBSZRFC 2228Protection Buffer Size
    PORT Specifies an address and port to which the server should connect.
    PROTRFC 2228Data Channel Protection Level.
    PWD Print working directory. Returns the current directory of the host.
    QUIT Disconnect.
    REIN Re initializes the connection.
    RESTRFC 3659Restart transfer from the specified point.
    RETR Retrieve a copy of the file
    RMD Remove a directory.
    RMDAStreamlined FTP Command ExtensionsRemove 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.
    SIZERFC 3659Return the size of a file.
    SMNT Mount file structure.
    SPSVFTP 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.
    THMBStreamlined FTP Command ExtensionsGet a thumbnail of a remote image file
    TYPE Sets the transfer mode (ASCII/Binary).
    USER Authentication username.
    XCUPRFC 775Change to the parent of the current working directory
    XMKDRFC 775Make a directory
    XPWDRFC 775Print the current working directory
    XRCPRFC 743 
    XRMDRFC 775Remove the directory
    XRSQRFC 743 
    XSEMRFC 737Send, mail if cannot
    XSENRFC 737Send to terminal

    6)ftp应答

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

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

     

    展开全文
  • 在做计组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

    展开全文
  • 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客户端与服务端是针对控制连接而言的。数据连接主动模式下,实际是服务端充当客户端,不讲了有点乱,睡觉~~~

     

    展开全文
  • Wireshark数据分析FTP协议

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

    千次阅读 2019-11-06 18:29:19
    简单通过分析ftp从登陆步骤 首先找到网上一个公用的ftp地址进行包测试,这里采用地址(瑞典Umeå universitet于默奥大学公共FTP服务器):ftp://ftp.acc.umu.se/ 打开wireshark,条件过滤:ip.addr==194....
  • 实验五使用Wireshark分析TCP协议 一实验目的 分析TCP协议 二实验环境 与因特网连接的计算机操作系统为Windows安装有WiresharkIE等软件 三实验步骤 1捕获一个从你电脑到远程服务器的TCP数据 打开FTP客户端连接用TCP为...
  • wireshark分析仪网站. http://www.wireshark.org/ 了解ICMP协议 ICMP(Internet Control Message Protocol)网际报文控制协议,是Internet协议族的核心协议之一,它主要用在网络计算机的操作系统中发送出错信息。...
  • FTP协议解析之Wireshark报文分析

    千次阅读 2021-02-27 21:40:14
    FTP是客户端-服务器协议,客户端将请求文件,而本地或远程服务器将提供该文件。我们熟知的FTP客户端:WinSCP、WS FTP、FileZilla等都是使用文件传输协议,它是一种标准的Internet 协议。用于通过TCP / IP 连接在...
  • Wireshark抓分析POP3和SMTP协议
  • Wireshark抓包——TCP协议分析

    万次阅读 多人点赞 2019-06-11 00:34:17
    一. 实验目的 通过本次实验,掌握使用Wireshark抓取TCP/IP协议数据包的技能,能够深入分析TCP帧格式及“TCP三次握手”。...2.本次实验难点:分析抓到的TCP包。 3.本次实验环境:Windows 7,Wiresha...
  • 计算机网络IP FTP协议分析.ppt
  • Wireshark 包理解 FTP 传输过程

    千次阅读 2019-09-12 17:23:26
    FTP概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中...FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。 FTP协议简介 FTP是仅基于TCP的服务,不支持...
  • 一. WireShark 包及常用协议分析

    千次阅读 多人点赞 2019-10-28 10:22:30
    WireShark 包及常用协议分析简介WireShark 简介和包原理及过程实战:WireShark 包及快速定位数据包技巧实战:使用 WireShark 对常用协议抓包并分析原理实战:WireShark 包解决服务器被黑上不了网总结: ...
  • 配置FTP服务器,并在测试者机器上登录FTP服务器 在局域网环境中,我们使用一个小工具来(Quick Easy FTP Server)实现FTP服务器。 配置Quick Easy FTP Server 软件 双击桌面的Quick Easy FTP Server,如下图(如果...
  • Ftp协议分析实验报告

    2013-04-17 13:20:25
    计算机网络实验课第一次实验报告,Ftp协议分析实验报告
  • Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。网络封包分析软件...
  • FTP数据报文分析 从数据6号帧中我们可以看到“USER administrator”,这个是用户名;从数据9号帧中我们可以看到“PASS Admin.123”,这个是密码; FTP数据重组 数据重组步骤一:选中TCP流进行过滤 数据重组步骤二:出去...
  • WiresharkFTP分析

    2021-04-09 18:32:11
    Wireshark FTP抓包分析 Xlight+FlashFXP抓包FTP分析①TCP三次握手建立连接请求②登录FTP服务器③...经查阅资料发现Wireshark通过网卡抓包,无法在本地传输到本地的情况下抓FTP包。 因此利用另一台在局域网内的电脑进行
  • ftp 文件 还原 问题 引出的 包的丢失 进行的 简要分析。   Understanding [TCP ACKed unseen segment] [TCP Previous segment not captured]   That very well may be a false ...
  • Wireshark抓分析TCP协议 版权声明:本文为作者原创文章,可以随意转载,但必须在明确位置表明出处!!! 之前有一篇文章介绍了http协议「初识http协议」, http协议协议是基于tcp协议的,所以作者...
  • 山东建筑大学计算机学院的计算机网络实验报告,实验一 利用WireShark分析HTTP和DNS
  • ftp站点wiresharkz协议

    千次阅读 2018-09-28 09:19:11
    我们来了解一下ftp协议 ftp是一个文件传输协议,主要用来上传和下载文件 由于一般文件比较大,他会将文件分为多个数据包,我们在wireshark分析传输文件需要将数据重组后才可以 首先我们要利用wireshark来进行...
  • wireshark分析http协议

    千次阅读 2018-06-06 16:08:45
    协议过滤比如TCP,只显示TCP协议。HTTP,只显示HTTP协议2. IP 过滤比如 ip.src ==192.168.1.102 显示源地址为192.168.1.102,ip.dst==192.168.1.102, 目标地址为192.168.1.1023. 端口过滤tcp.port ==80, 端口为80...
  • WireShark捕捉不到FTP数据包

    千次阅读 2020-06-22 10:22:32
    涉及实验:使用网络协议分析器捕捉和分析协议数据包 利用Quick Easy FTP Server工具将该pc机模拟成FTP服务器端,安装与配置比较简单,网上有很多教程可以参考。 配置完成后,点击左上角绿色播放键开启FTP服务,点击...
  • wireshark抓

    2018-10-19 21:30:12
    本学期还是在学wireshark抓包,捕获各种协议,最近一段时间因为在学攻防,又补充了一点点wireshark的作用和知识点,希望对小白有用。
  • Wireshark学习FTP流程

    万次阅读 2015-01-25 12:01:46
    Wireshark是通过底层的winpcap来实现包的。winpcap是用于网络封包抓取的一套工具,可适用于32/64位的操作平台上解析网络封包,包含了数据包截获驱动程序,一个底层动态链接库,和一个高层静态链接库,winpcap在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,303
精华内容 2,521
关键字:

wireshark分析ftp协议