tcpdump使用和TCP/IP包分析

  关于tcpdump如何抓包,本文不再总结,可以查看 tcpdump的官方地址查看http://www.tcpdump.org   

     本文重点记录两个部分:
           第一部分:tcpdump所抓包与TCP/IP协议的对应分析
           第二部分:tcpdump所抓包的分析

    先看第一部分

    一、tcpdump所抓包与TCP/IP协议的对应分析

        在使用tcpdump抓包时, 使用-X参数,可以显示IP包的包头信息;  使用-xx参数,可以显示链路层的包头信息,这里我们只看IP包,IP包包含IP包首部+TCP包首部 + TCP包数据部分。

        a、IP包的规则

  

   b、tcp包规则  

 

   在了解IP包和tcp包包头规则后,我们使用tcpdump抓包了解一下包头:

 16:44:49.073634 IP 10.215.35.230.51245 > 10.221.20.175.http: S 371739021:371739021(0) win 8192 <mss 1260,nop,wscale 2,nop,nop,sackOK>
        0x0000:  4500 0034 5cf4 4000 7c06 5387 0ad7 23e6  E..4\.@.|.S...#.
        0x0010:  0add 14af c82d 0050 1628 498d 0000 0000  .....-.P.(I.....
        0x0020:  8002 2000 d962 0000 0204 04ec 0103 0302  .....b..........
        0x0030:  0101 0402 
       
                 
       
    IP协议头
       4500 0034
       5cf4 4000
       7c06 5387
       0ad7 23e6   ===> 来源地址:10.215.35.230
       0add 14af   ===> 目的地址:10.221.20.175
       
       
    TCP协议头
       c82d 0050   ===> port 51245 to 80
       1628 498d   ===> seq  371739021
       0000 0000   ===> 确认号字段
       8002 2000   ===> 1000 000000 000010("1000":数据偏移,"000000":保留,"000010":表示SYN位为1 )     “2000”表示win大小8192
       d962 0000   ===> 检验和 和 紧急指针

 

    二、分析tcpdump抓包的描述


    下面这段是一次完整的http请求,包含3次握手建立连接,数据传输,四次挥手关闭连接。

10:21:38.331577 IP 10.215.35.230.53845 > 10.221.20.175.http: S 4180790448:4180790448(0) win 8192 <mss 1260,nop,wscale 2,nop,nop,sackOK>
10:21:38.718147 IP 10.221.20.175.http > 10.215.35.230.53845: S 3489059505:3489059505(0) ack 4180790449 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>
10:21:38.331981 IP 10.215.35.230.53845 > 10.221.20.175.http: . ack 1 win 16695
10:21:38.332420 IP 10.215.35.230.53845 > 10.221.20.175.http: P 1:339(338) ack 1 win 16695
10:21:38.332455 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54
10:21:38.335912 IP 10.221.20.175.http > 10.215.35.230.53845: P 1:383(382) ack 339 win 54
10:21:38.580123 IP 10.215.35.230.53845 > 10.221.20.175.http: . ack 383 win 16599
10:21:48.376411 IP 10.215.35.230.53845 > 10.221.20.175.http: . 338:339(1) ack 383 win 16599
10:21:48.376451 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54 <nop,nop,sack 1 {338:339}>
10:21:58.470050 IP 10.215.35.230.53845 > 10.221.20.175.http: . 338:339(1) ack 383 win 16599
10:21:58.470093 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54 <nop,nop,sack 1 {338:339}>
10:21:59.640894 IP 61.135.209.214.http > 10.221.20.76.trusted-web: S 282374585:282374585(0) ack 2250754437 win 4380 <mss 1460,nop,wscale 0,nop,nop,timestamp 816129257 3680466592,sackOK,eol>
10:22:08.469017 IP 10.215.35.230.53845 > 10.221.20.175.http: . 338:339(1) ack 383 win 16599
10:22:08.469058 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54 <nop,nop,sack 1 {338:339}>
10:22:18.467910 IP 10.215.35.230.53845 > 10.221.20.175.http: . 338:339(1) ack 383 win 16599
10:22:18.467951 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54 <nop,nop,sack 1 {338:339}>
10:22:28.467015 IP 10.215.35.230.53845 > 10.221.20.175.http: . 338:339(1) ack 383 win 16599
10:22:28.467033 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 339 win 54 <nop,nop,sack 1 {338:339}>
10:22:38.335353 IP 10.221.20.175.http > 10.215.35.230.53845: F 383:383(0) ack 339 win 54
10:22:38.335841 IP 10.215.35.230.53845 > 10.221.20.175.http: . ack 384 win 16599
10:22:38.336238 IP 10.215.35.230.53845 > 10.221.20.175.http: F 339:339(0) ack 384 win 16599
10:22:38.336255 IP 10.221.20.175.http > 10.215.35.230.53845: . ack 340 win 54

 

整体上,我们可以看出tcpdump在描述时的格式:

10:21:38.331577 IP 10.215.35.230.53845 > 10.221.20.175.http: S 4180790448:4180790448(0) win 8192 <mss 1260,nop,wscale 2,nop,nop,sackOK>
    请求时间           源地址.源端口      >  目的地址.应用协议 :包标示 序号 :确认号              窗口   < 缓存大小>

 tcpdump使用下面的字母描述TCP包头标示(CWR | ECE | URG | ACK | PSH | RST | SYN | FIN):

. ACK, S SYN, P PUSH, F FIN

从下面的分析中,我们还可以看出,包头标识的字母描述不是完全准确。像S,既可表示SYN包,也表示 SYN+ACK包,下面我们详细看一下

 

a、tcp协议的三次握手

通过上面的分析,我们知道,ip包和tcp包,包头都在20个字节(IP包存在可选字段,不确定),下面tcpdump抓到包的显示是按照两个字节两个字节的显示,一行显示16个字节,所以我们不在做处理,直接用16进制来描述包的信息。

11:10:13.363861 IP 10.215.35.89.63665 > 10.221.20.175.http: S 446912846:446912846(0) win 8192 <mss 1260,nop,wscale 2,nop,nop,sackOK>
        0x0000:  4500 0034 153a 4000 7c06 9bce 0ad7 2359  E..4.:@.|.....#Y
        0x0010:  0add 14af f8b1 0050 1aa3 594e 0000 0000  .......P..YN....
        0x0020:  8002 2000 952f 0000 0204 04ec 0103 0302  ...../..........
        0x0030:  0101 0402                                ....
11:10:13.889486 IP 10.221.20.175.http > 10.215.35.89.63665: S 4205029854:4205029854(0) ack 446912847 win 5840 <mss 1460,nop,nop,sackOK,nop,wscale 7>
        0x0000:  4500 0034 0000 4000 4006 ed08 0add 14af  E..4..@.@.......
        0x0010:  0ad7 2359 0050 f8b1 faa3 a9de 1aa3 594f  ..#Y.P........YO
        0x0020:  8012 16d0 f8fe 0000 0204 05b4 0101 0402  ................
        0x0030:  0103 0307                                ....
11:10:13.372114 IP 10.215.35.89.63665 > 10.221.20.175.http: . ack 1 win 4410
        0x0000:  4500 0028 153b 4000 7c06 9bd9 0ad7 2359  E..(.;@.|.....#Y
        0x0010:  0add 14af f8b1 0050 1aa3 594f faa3 a9df  .......P..YO....
        0x0020:  5010 113a 3f67 0000 0000 0000 0000       P..:?g........

可以看出流程如下

1、客户端发出 SYN 包,序号x= 1aa3 594e
2、服务端收到包后向客户端发回 ACK+SYN 包,发出 确认号(x+1): 1aa3 594f, 同时发出序号 y= faa3 a9de 供客户端确认
3、客户端收到服务端发回的包后,向服务端发出 ACK包 ,同时发出确认号(y+1): faa3 a9df

如上,我们看到表示包头信息的字节一般是第34个字节,可以看出 对应的3个字节,分别是(02, 12, 10)实际上对应的应该是,(SYN,  SYN+ACK, ACK),tcpdump的包标识简写对应是(S, S, .),可以看出tcpdump的对应包简写是不确切的。

 

b、在完成握手后,发起数据传输

1、下面一个可以看出来是客户端向服务端发出的http请求。看一下标识位(前面说的第34个字节)。“18” ==> “0001 1000” 在ACK位和PSH位做了标识,
    1)、在ACK位做的标识,表明应答域有效,可以看到应答域序号是 87ca 7db2
    2)、在PSH位做的标识,表明是Push操作,就是指在数据包到达接收端以后,立即传送给应用程序,而不是在缓冲区中排队;

14:03:09.022006 IP 10.215.35.89.51584 > 10.221.20.175.http: P 1:344(343) ack 1 win 16695
        0x0000:  4500 017f 6a55 4000 7c06 4568 0ad7 2359  E...jU@.|.Eh..#Y
        0x0010:  0add 14af c980 0050 5779 8acc 87ca 7db2  .......PWy....}.
        0x0020:  5018 4137 459b 0000 4745 5420 2f74 6573  P.A7E...GET./tes
        0x0030:  742f 7473 7463 6f64 652e 7068 7020 4854  t/tstcode.php.HT
        0x0040:  5450 2f31 2e31 0d0a 486f 7374 3a20 3130  TP/1.1..Host:.10
        0x0050:  2e32 3231 2e32 302e 3137 350d 0a55 7365  .221.20.175..Use
        0x0060:  722d 4167 656e 743a 204d 6f7a 696c 6c61  r-Agent:.Mozilla
        0x0070:  2f35 2e30 2028 5769 6e64 6f77 7320 4e54  /5.0.(Windows.NT
        0x0080:  2036 2e31 3b20 7276 3a33 352e 3029 2047  .6.1;.rv:35.0).G
        0x0090:  6563 6b6f 2f32 3031 3030 3130 3120 4669  ecko/20100101.Fi
        0x00a0:  7265 666f 782f 3335 2e30 0d0a 4163 6365  refox/35.0..Acce
        0x00b0:  7074 3a20 7465 7874 2f68 746d 6c2c 6170  pt:.text/html,ap
        0x00c0:  706c 6963 6174 696f 6e2f 7868 746d 6c2b  plication/xhtml+
        0x00d0:  786d 6c2c 6170 706c 6963 6174 696f 6e2f  xml,application/
        0x00e0:  786d 6c3b 713d 302e 392c 2a2f 2a3b 713d  xml;q=0.9,*/*;q=
        0x00f0:  302e 380d 0a41 6363 6570 742d 4c61 6e67  0.8..Accept-Lang
        0x0100:  7561 6765 3a20 7a68 2d63 6e2c 7a68 3b71  uage:.zh-cn,zh;q
        0x0110:  3d30 2e38 2c65 6e2d 7573 3b71 3d30 2e35  =0.8,en-us;q=0.5
        0x0120:  2c65 6e3b 713d 302e 330d 0a41 6363 6570  ,en;q=0.3..Accep
        0x0130:  742d 456e 636f 6469 6e67 3a20 677a 6970  t-Encoding:.gzip
        0x0140:  2c20 6465 666c 6174 650d 0a43 6f6e 6e65  ,.deflate..Conne
        0x0150:  6374 696f 6e3a 206b 6565 702d 616c 6976  ction:.keep-aliv
        0x0160:  650d 0a43 6163 6865 2d43 6f6e 7472 6f6c  e..Cache-Control
        0x0170:  3a20 6d61 782d 6167 653d 300d 0a0d 0a    :.max-age=0....

 

2、服务端在收到客户端发出的数据包,发送一个确认包(ACK),确认客户端的应答域 87ca 7db2,同时 将确认收到的字节数。将客户端数据包tcp包头,序号+收到字节数,作为需要客户端应答的应答域。

14:03:09.022028 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54
        0x0000:  4500 0028 31ae 4000 4006 bb66 0add 14af  E..(1.@.@..f....
        0x0010:  0ad7 2359 0050 c980 87ca 7db2 5779 8c23  ..#Y.P....}.Wy.#
        0x0020:  5010 0036 aef8 0000 

 

3、服务端再向客户端发送请求处理的情况,可以看出,发送的包在ACK位和PSH位做了标识。

14:03:09.025335 IP 10.221.20.175.http > 10.215.35.89.51584: P 1:375(374) ack 344 win 54
        0x0000:  4500 019e 31af 4000 4006 b9ef 0add 14af  E...1.@.@.......
        0x0010:  0ad7 2359 0050 c980 87ca 7db2 5779 8c23  ..#Y.P....}.Wy.#
        0x0020:  5018 0036 6c87 0000 4854 5450 2f31 2e31  P..6l...HTTP/1.1
        0x0030:  2032 3030 204f 4b0d 0a53 6572 7665 723a  .200.OK..Server:
        0x0040:  206e 6769 6e78 2f31 2e30 2e38 0d0a 4461  .nginx/1.0.8..Da
        0x0050:  7465 3a20 5765 642c 2031 3820 4d61 7220  te:.Wed,.18.Mar.
        0x0060:  3230 3135 2030 363a 3033 3a30 3920 474d  2015.06:03:09.GM
        0x0070:  540d 0a43 6f6e 7465 6e74 2d54 7970 653a  T..Content-Type:
        0x0080:  2074 6578 742f 6874 6d6c 0d0a 5472 616e  .text/html..Tran
        0x0090:  7366 6572 2d45 6e63 6f64 696e 673a 2063  sfer-Encoding:.c
        0x00a0:  6875 6e6b 6564 0d0a 436f 6e6e 6563 7469  hunked..Connecti
        0x00b0:  6f6e 3a20 6b65 6570 2d61 6c69 7665 0d0a  on:.keep-alive..
        0x00c0:  582d 506f 7765 7265 642d 4279 3a20 5048  X-Powered-By:.PH
        0x00d0:  502f 352e 332e 380d 0a43 6f6e 7465 6e74  P/5.3.8..Content
        0x00e0:  2d45 6e63 6f64 696e 673a 2067 7a69 700d  -Encoding:.gzip.
        0x00f0:  0a56 6172 793a 2041 6363 6570 742d 456e  .Vary:.Accept-En
        0x0100:  636f 6469 6e67 0d0a 0d0a 3839 0d0a 1f8b  coding....89....
        0x0110:  0800 0000 0000 0003 b229 284a 5548 ce49  .........)(JUH.I
        0x0120:  2c2e b655 af48 494d 2a4d d72d 4b2c d24d  ,..U.HIM*M.-K,.M
        0x0130:  29cd 2d50 5748 c92c b255 cf29 2952 b7b3  ).-PWH.,.U.))R..
        0x0140:  29ce 4dcc c9b1 2b2e 29ca cc4b b7d1 87f0  ).M...+.)..K....
        0x0150:  146c d2f2 f34a 1492 f373 f281 ea94 9393  .l...J...s......
        0x0160:  0d80 40dd 4efd c8e3 5d87 d56d f441 9240  ..@.N...]..m.A.@
        0x0170:  3599 761a 39a9 79e9 2519 b626 9a36 fa99  5.v.9.y.%..&.6..
        0x0180:  765c 36fa 403b ed00 0000 00ff ff03 0076  v\6.@;.........v
        0x0190:  6e19 4779 0000 000d 0a30 0d0a 0d0a       n.Gy.....0....

 

4、客户端对服务端发回的数据做了应答,应答内容包括,重复客户端的确认号5779 8c23, 以及发送给服务端的确认号 87ca 7f28,确认号 87ca 7db2 + 接收到的数据长度。

14:03:09.220663 IP 10.215.35.89.51584 > 10.221.20.175.http: . ack 375 win 16601
        0x0000:  4500 0028 6a56 4000 7c06 46be 0ad7 2359  E..(jV@.|.F...#Y
        0x0010:  0add 14af c980 0050 5779 8c23 87ca 7f28  .......PWy.#...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........

 

5、下面的发送和应答,可以看出,是客户端为了保持和服务端的连接做的,保持连接是为了避免再做三次握手,我们可以看下面的过程每隔10秒,客户端发送一个ACK包,包的序号是上次客户端发给服务端的确认号减一 。  

14:03:19.020809 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6a64 4000 7c06 46af 0ad7 2359  E..)jd@.|.F...#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
        
14:03:19.020855 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b0 4000 4006 bb58 0add 14af  E..41.@.@..X....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#
        
14:03:29.021003 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6a71 4000 7c06 46a2 0ad7 2359  E..)jq@.|.F...#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
14:03:29.021048 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b1 4000 4006 bb57 0add 14af  E..41.@.@..W....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#
        
14:03:39.021319 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6a89 4000 7c06 468a 0ad7 2359  E..)j.@.|.F...#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
14:03:39.021364 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b2 4000 4006 bb56 0add 14af  E..41.@.@..V....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#
        
14:03:49.023828 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6a9c 4000 7c06 4677 0ad7 2359  E..)j.@.|.Fw..#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
14:03:49.023873 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b3 4000 4006 bb55 0add 14af  E..41.@.@..U....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#
        
14:03:59.023741 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6aaa 4000 7c06 4669 0ad7 2359  E..)j.@.|.Fi..#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
14:03:59.023787 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b4 4000 4006 bb54 0add 14af  E..41.@.@..T....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#
        
14:04:09.024169 IP 10.215.35.89.51584 > 10.221.20.175.http: . 343:344(1) ack 375 win 16601
        0x0000:  4500 0029 6abc 4000 7c06 4657 0ad7 2359  E..)j.@.|.FW..#Y
        0x0010:  0add 14af c980 0050 5779 8c22 87ca 7f28  .......PWy."...(
        0x0020:  5010 40d9 6cdf 0000 0000 0000 0000       P.@.l.........
        
14:04:09.024215 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 344 win 54 <nop,nop,sack 1 {343:344}>
        0x0000:  4500 0034 31b5 4000 4006 bb53 0add 14af  E..41.@.@..S....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  8010 0036 b032 0000 0101 050a 5779 8c22  ...6.2......Wy."
        0x0030:  5779 8c23                                Wy.#

 

c、四次挥手断开连接

1、在经过一段时间的保持连接后,服务端发起请求,要求终止连接,服务端发出ACK+FIN包,   

14:04:09.025772 IP 10.221.20.175.http > 10.215.35.89.51584: F 375:375(0) ack 344 win 54
        0x0000:  4500 0028 31b6 4000 4006 bb5e 0add 14af  E..(1.@.@..^....
        0x0010:  0ad7 2359 0050 c980 87ca 7f28 5779 8c23  ..#Y.P.....(Wy.#
        0x0020:  5011 0036 ad81 0000                      P..6....

 

2、客户端收到后,做出回答,发出ACK包应答服务端要求

14:04:09.026201 IP 10.215.35.89.51584 > 10.221.20.175.http: . ack 376 win 16601
        0x0000:  4500 0028 6abe 4000 7c06 4656 0ad7 2359  E..(j.@.|.FV..#Y
        0x0010:  0add 14af c980 0050 5779 8c23 87ca 7f29  .......PWy.#...)
        0x0020:  5010 40d9 6cde 0000 0000 0000 0000       P.@.l.........

 

3、客户端再发送ACK+FIN包

14:04:09.026382 IP 10.215.35.89.51584 > 10.221.20.175.http: F 344:344(0) ack 376 win 16601
        0x0000:  4500 0028 6abf 4000 7c06 4655 0ad7 2359  E..(j.@.|.FU..#Y
        0x0010:  0add 14af c980 0050 5779 8c23 87ca 7f29  .......PWy.#...)
        0x0020:  5011 40d9 6cdd 0000 0000 0000 0000       P.@.l.........

 

4、服务端发出ACK包应答

14:04:09.026399 IP 10.221.20.175.http > 10.215.35.89.51584: . ack 345 win 54
        0x0000:  4500 0028 0000 4000 4006 ed14 0add 14af  E..(..@.@.......
        0x0010:  0ad7 2359 0050 c980 87ca 7f29 5779 8c24  ..#Y.P.....)Wy.$
        0x0020:  5010 0036 ad80 0000                      P..6....

 

 总结:

  TCP/IP协议在做数据传输过程中是非常复杂的,要处理数据的拥塞,重传等等,这里使用tcpdump抓包来分析包,只是从实践的一方面来加深对tcp的理解。

posted @ 2015-01-27 17:07  壹木人  阅读(1272)  评论(0编辑  收藏  举报