ブログというのは、更新をすると連続してしまうもので、昨日更新したら今日も更新したくなってしまいました。
で、今日のお題は、講義ネタについてです。ええと今週末に情報処理技術者試験があるので、嫌で嫌でたまらなかった講義での試験対策も今週で終わり、来週からはまともな(?)ネットワークの講義ができちゃうんですねぇ。学生さんからみたら、災厄のはじまりなんですけどね。
で、まず初回の講義で、HTTPサーバとWebブラウザのデータのやりとりを tcpdump でリアルタイムに観測するのを実演しようと思って、とりあえず自分でやってみたんですけどね。
とりあえず、職場のサーバにかーんたんなhtmlドキュメントを作成して、クライアントで tcpdump を起動し、同時にブラウザを起動して、サーバー上のhtmlドキュメントにアクセスしてみました。
アドレスバーに入力したのは
「http://kserv.jec.ac.jp/test.html」
なんで、まず、「http:」ってのは HTTPプロトコルだよーん。って意味で、「kserv.jec.ac.jp」はコンテンツが置いてあるサーバのFQDN、で、そのサーバの「/test.html」ってコンテンツを取ってきて表示しろって意味だってことは、さらりと流して(こんなこともわかんない、想像できないなら、情報科学や情報技術を学ぶ資格なし)ですね、さくっとパケットの中身を見ちゃう訳です。
# tcpdump -vv -s 8192 -X -i eth0 tcp port http tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 8192 bytes コネクション張り(Client->Server SYN) 11:44:19.516906 IP (tos 0x0, ttl 64, id 37211, offset 0, flags [DF], proto TCP (6), length 60) kosuge00.jd.jec.ac.jp.50233 > kserv.jec.ac.jp.http: Flags [S], cksum 0x988d (correct), seq 1342296679, win 5840, options [mss 1460,sackOK,TS val 344892 ecr 0,nop,wscale 6], length 0 0x0000: 4500 003c 915b 4000 4006 3af1 c0a8 0110 E..<.[@.@.:..... 0x0010: da2d d289 c439 0050 5001 d267 0000 0000 .-...9.PP..g.... 0x0020: a002 16d0 988d 0000 0204 05b4 0402 080a ................ 0x0030: 0005 433c 0000 0000 0103 0306 ..C<........ コネクション張り(Server -> Client SYN+ACK) 11:44:19.523040 IP (tos 0x0, ttl 62, id 0, offset 0, flags [DF], proto TCP (6), length 60) kserv.jec.ac.jp.http > kosuge00.jd.jec.ac.jp.50233: Flags [S.], cksum 0xb20a (correct), seq 1515273536, ack 1342296680, win 5792, options [mss 1460,sackOK,TS val 1510733064 ecr 344892,nop,wscale 2], length 0 0x0000: 4500 003c 0000 4000 3e06 ce4c da2d d289 E..<..@.>..L.-.. 0x0010: c0a8 0110 0050 c439 5a51 3d40 5001 d268 .....P.9ZQ=@P..h 0x0020: a012 16a0 b20a 0000 0204 05b4 0402 080a ................ 0x0030: 5a0b f508 0005 433c 0103 0302 Z.....C<.... コネクション張り(Client -> Server ACK) 11:44:19.523130 IP (tos 0x0, ttl 64, id 37212, offset 0, flags [DF], proto TCP (6), length 52) kosuge00.jd.jec.ac.jp.50233 > kserv.jec.ac.jp.http: Flags [.], cksum 0xf70f (correct), seq 1, ack 1, win 92, options [nop,nop,TS val 344898 ecr 1510733064], length 0 0x0000: 4500 0034 915c 4000 4006 3af8 c0a8 0110 E..4.\@.@.:..... 0x0010: da2d d289 c439 0050 5001 d268 5a51 3d41 .-...9.PP..hZQ=A 0x0020: 8010 005c f70f 0000 0101 080a 0005 4342 ...\..........CB 0x0030: 5a0b f508 Z... HTTPのGETコマンド(client -> Server GET /test.html .......) 11:44:19.523466 IP (tos 0x0, ttl 64, id 37213, offset 0, flags [DF], proto TCP (6), length 516) kosuge00.jd.jec.ac.jp.50233 > kserv.jec.ac.jp.http: Flags [P.], cksum 0x7066 (incorrect -> 0xefd4), seq 1:465, ack 1, win 92, options [nop,nop,TS val 344899 ecr 1510733064], length 464 0x0000: 4500 0204 915d 4000 4006 3927 c0a8 0110 E....]@.@.9'.... 0x0010: da2d d289 c439 0050 5001 d268 5a51 3d41 .-...9.PP..hZQ=A 0x0020: 8018 005c 7066 0000 0101 080a 0005 4343 ...\pf........CC 0x0030: 5a0b f508 4745 5420 2f74 6573 742e 6874 Z...GET./test.ht 0x0040: 6d6c 2048 5454 502f 312e 310d 0a48 6f73 ml.HTTP/1.1..Hos 0x0050: 743a 206b 7365 7276 2e6a 6563 2e61 632e t:.kserv.jec.ac. 0x0060: 6a70 0d0a 436f 6e6e 6563 7469 6f6e 3a20 jp..Connection:. 0x0070: 6b65 6570 2d61 6c69 7665 0d0a 4361 6368 keep-alive..Cach 0x0080: 652d 436f 6e74 726f 6c3a 206e 6f2d 6361 e-Control:.no-ca 0x0090: 6368 650d 0a50 7261 676d 613a 206e 6f2d che..Pragma:.no- 0x00a0: 6361 6368 650d 0a41 6363 6570 743a 2061 cache..Accept:.a 0x00b0: 7070 6c69 6361 7469 6f6e 2f78 6d6c 2c61 pplication/xml,a 0x00c0: 7070 6c69 6361 7469 6f6e 2f78 6874 6d6c pplication/xhtml 0x00d0: 2b78 6d6c 2c74 6578 742f 6874 6d6c 3b71 +xml,text/html;q 0x00e0: 3d30 2e39 2c74 6578 742f 706c 6169 6e3b =0.9,text/plain; 0x00f0: 713d 302e 382c 696d 6167 652f 706e 672c q=0.8,image/png, 0x0100: 2a2f 2a3b 713d 302e 350d 0a55 7365 722d */*;q=0.5..User- 0x0110: 4167 656e 743a 204d 6f7a 696c 6c61 2f35 Agent:.Mozilla/5 0x0120: 2e30 2028 5831 313b 2055 3b20 4c69 6e75 .0.(X11;.U;.Linu 0x0130: 7820 6936 3836 3b20 656e 2d55 5329 2041 x.i686;.en-US).A 0x0140: 7070 6c65 5765 624b 6974 2f35 3334 2e33 ppleWebKit/534.3 0x0150: 2028 4b48 544d 4c2c 206c 696b 6520 4765 .(KHTML,.like.Ge 0x0160: 636b 6f29 2043 6872 6f6d 652f 362e 302e cko).Chrome/6.0. 0x0170: 3437 322e 3633 2053 6166 6172 692f 3533 472.63.Safari/53 0x0180: 342e 330d 0a41 6363 6570 742d 456e 636f 4.3..Accept-Enco 0x0190: 6469 6e67 3a20 677a 6970 2c64 6566 6c61 ding:.gzip,defla 0x01a0: 7465 2c73 6463 680d 0a41 6363 6570 742d te,sdch..Accept- 0x01b0: 4c61 6e67 7561 6765 3a20 6a61 2c65 6e2d Language:.ja,en- 0x01c0: 5553 3b71 3d30 2e38 2c65 6e3b 713d 302e US;q=0.8,en;q=0. 0x01d0: 360d 0a41 6363 6570 742d 4368 6172 7365 6..Accept-Charse 0x01e0: 743a 2053 6869 6674 5f4a 4953 2c75 7466 t:.Shift_JIS,utf 0x01f0: 2d38 3b71 3d30 2e37 2c2a 3b71 3d30 2e33 -8;q=0.7,*;q=0.3 0x0200: 0d0a 0d0a .... 命令を正常に受領したことに対するACK(Server -> Client ACK) 11:44:19.526557 IP (tos 0x0, ttl 62, id 51277, offset 0, flags [DF], proto TCP (6), length 52) kserv.jec.ac.jp.http > kosuge00.jd.jec.ac.jp.50233: Flags [.], cksum 0xeee1 (correct), seq 1, ack 465, win 1716, options [nop,nop,TS val 1510733069 ecr 344899], length 0 0x0000: 4500 0034 c84d 4000 3e06 0607 da2d d289 E..4.M@.>....-.. 0x0010: c0a8 0110 0050 c439 5a51 3d41 5001 d438 .....P.9ZQ=AP..8 0x0020: 8010 06b4 eee1 0000 0101 080a 5a0b f50d ............Z... 0x0030: 0005 4343 ..CC クライアントへコンテンツを戻す(Server -> Client レスポンスコード 200)☆☆☆ 11:44:19.533314 IP (tos 0x0, ttl 62, id 51279, offset 0, flags [DF], proto TCP (6), length 726) kserv.jec.ac.jp.http > kosuge00.jd.jec.ac.jp.50233: Flags [P.], cksum 0x4275 (correct), seq 1:675, ack 465, win 1716, options [nop,nop,TS val 1510733074 ecr 344899], length 674 0x0000: 4500 02d6 c84f 4000 3e06 0363 da2d d289 E....O@.>..c.-.. 0x0010: c0a8 0110 0050 c439 5a51 3d41 5001 d438 .....P.9ZQ=AP..8 0x0020: 8018 06b4 4275 0000 0101 080a 5a0b f512 ....Bu......Z... 0x0030: 0005 4343 4854 5450 2f31 2e31 2032 3030 ..CCHTTP/1.1.200 0x0040: 204f 4b0d 0a44 6174 653a 2046 7269 2c20 .OK..Date:.Fri,. 0x0050: 3135 204f 6374 2032 3031 3020 3032 3a34 15.Oct.2010.02:4 0x0060: 363a 3232 2047 4d54 0d0a 5365 7276 6572 6:22.GMT..Server 0x0070: 3a20 4170 6163 6865 0d0a 4c61 7374 2d4d :.Apache..Last-M 0x0080: 6f64 6966 6965 643a 2054 6875 2c20 3134 odified:.Thu,.14 0x0090: 204f 6374 2032 3031 3020 3034 3a34 393a .Oct.2010.04:49: 0x00a0: 3337 2047 4d54 0d0a 4554 6167 3a20 2232 37.GMT..ETag:."2 0x00b0: 3763 3239 652d 3234 612d 3666 6531 6661 7c29e-24a-6fe1fa 0x00c0: 3430 220d 0a41 6363 6570 742d 5261 6e67 40"..Accept-Rang 0x00d0: 6573 3a20 6279 7465 730d 0a56 6172 793a es:.bytes..Vary: 0x00e0: 2041 6363 6570 742d 456e 636f 6469 6e67 .Accept-Encoding 0x00f0: 2c55 7365 722d 4167 656e 740d 0a43 6f6e ,User-Agent..Con 0x0100: 7465 6e74 2d45 6e63 6f64 696e 673a 2067 tent-Encoding:.g 0x0110: 7a69 700d 0a43 6f6e 7465 6e74 2d4c 656e zip..Content-Len 0x0120: 6774 683a 2033 3434 0d0a 4b65 6570 2d41 gth:.344..Keep-A 0x0130: 6c69 7665 3a20 7469 6d65 6f75 743d 3135 live:.timeout=15 0x0140: 2c20 6d61 783d 3130 300d 0a43 6f6e 6e65 ,.max=100..Conne 0x0150: 6374 696f 6e3a 204b 6565 702d 416c 6976 ction:.Keep-Aliv 0x0160: 650d 0a43 6f6e 7465 6e74 2d54 7970 653a e..Content-Type: 0x0170: 2074 6578 742f 6874 6d6c 0d0a 0d0a 1f8b .text/html...... 0x0180: 0800 0000 0000 0003 8d91 4d4f 8340 1086 ..........MO.@.. 0x0190: effe 8a71 bde8 01a6 580f a62e 1c6c 9b68 ...q....X....l.h 0x01a0: 526d 6330 ea71 5916 d840 d916 86d2 fe7b Rmc0.qY..@.....{ 0x01b0: 17a9 297a 30ce 69de 999d 673e 969f cf96 ..)z0.i...g>.... 0x01c0: d3f0 6335 878c d605 ac5e ef17 8f53 600e ..c5.....^...S`. 0x01d0: e2db 788a 380b 67f0 fe10 3e2d c073 4710 ..x.8.g...>-.sG. 0x01e0: 56a2 ac35 6953 8a02 71fe cc80 6544 9b09 V..5iS..q...eD.. 0x01f0: 62db b66e 3b76 4d95 62f8 82fb 8ee5 75c5 b..n;vM.b.....u. 0x0200: 47d7 a141 a51b 53cc 8233 de65 8233 b0c6 G..A..S..3.e.3.. 0x0210: 3325 e2de fd92 6b45 023a b2a3 b68d def9 3%....kE.:...... 0x0220: 4c9a 9254 490e 1d36 8ac1 51f9 8cd4 9eb0 L..TI..6..Q..... 0x0230: c3dc 81cc 4455 2bf2 1b4a 9c5b 3660 91a6 ....DU+..J.[6`.. 0x0240: 4205 79ad aa1d b42a e2d8 07fa be78 6acc B.y....*.....xj. 0x0250: 2313 1f20 4aa5 294c e5b3 8bc4 9a94 0c44 #...J.)L.......D 0x0260: a1cb dcea b1b5 2461 f04b ee7e ea41 e3a8 ......$a.K.~.A.. 0x0270: 3032 df36 8654 c063 bdeb 4069 e9b3 4aa7 02.6.T.c..@i..J. 0x0280: 19b1 a010 3541 b389 05a9 0978 37ce 5292 ....5A.....x7.R. 0x0290: 733d f246 1ced db80 e3a0 fa84 ccbc 6f8a s=.F..........o. 0x02a0: b4fb ab8a 053c b1b7 80e3 cc69 a554 c986 .....<.....i.T.. 0x02b0: bb76 590b cbbc 7fcf 7529 af20 3775 932a .vY.....u)..7u.* 0x02c0: 220d 7f4d 6423 f662 f61f b1ff c84f ec12 "..Md#.b.....O.. 0x02d0: dab8 4a02 0000 ..J... クライアントからサーバにコンテンツ正常受領のACK(Client -> Server) 11:44:19.533371 IP (tos 0x0, ttl 64, id 37214, offset 0, flags [DF], proto TCP (6), length 52) kosuge00.jd.jec.ac.jp.50233 > kserv.jec.ac.jp.http: Flags [.], cksum 0xf273 (correct), seq 465, ack 675, win 113, options [nop,nop,TS val 344909 ecr 1510733074], length 0 0x0000: 4500 0034 915e 4000 4006 3af6 c0a8 0110 E..4.^@.@.:..... 0x0010: da2d d289 c439 0050 5001 d438 5a51 3fe3 .-...9.PP..8ZQ?. 0x0020: 8010 0071 f273 0000 0101 080a 0005 434d ...q.s........CM 0x0030: 5a0b f512 Z... ↓↓↓↓↓ 以下省略 ↓↓↓↓↓ |
まー、初めの3つのパケットは、コネクションを確率するためのパケットで、教科書どおりですねーって、感じで話を進めて、4つ目のパケットは、クライアントからサーバにGET命令を出力してますよねー、で5番目のパケットはOSが出しているACKで、6つ目のパケットで、Webサーバがクライアントにコンテンツを返しているんですよー。って感じで話を・・・・って、コンテンツの部分が、なにやら文字化けじゃなくて、なにやら怪しげなデータが戻っているじゃん。なんじゃこれ???
って感じで、しばしなんてコンテンツの内容(HTMLファイル)がプレーンで送られていないんだろう、、、これって何か圧縮して入るみたいだなぁと悩むこと数分。。。クライアントからサーバに送られたデータに
0x0180: 342e 330d 0a41 6363 6570 742d 456e 636f 4.3..Accept-Enco
0x0190: 6469 6e67 3a20 677a 6970 2c64 6566 6c61 ding:.gzip,defla
0x01a0: 7465 2c73 6463 680d 0a41 6363 6570 742d te,sdch..Accept-
おー、「Accept-Encoding」に「gzip,deflate,sdch」が送られているじゃありませんか。もしかして、これをみてWebサーバは律儀に gzip 形式で圧縮してコンテンツを送っているのかなーーー。ちいさな親切大きなお世話だなーって設定ファイルを見てみると、「/etc/httpd/conf.d」に、「deflate.conf」って設定ファイルがあるじゃありませんか。。。で、こいつの中身には
# cat deflate.conf |
BrowserMatch ^Mozilla/5 no-gzip
ってのを追加してやって、Webサーバを再起動してやると
12:13:09.262605 IP (tos 0x0, ttl 62, id 56354, offset 0, flags [DF], proto TCP (6), length 638) kserv.jec.ac.jp.http > kosuge00.jd.jec.ac.jp.34561: Flags [P.], cksum 0x59cf (correct), seq 291:877, ack 465, win 1716, options [nop,nop,TS val 1512462756 ecr 4294954927], length 586 0x0000: 4500 027e dc22 4000 3e06 efe7 da2d d289 E..~."@.>....-.. 0x0010: c0a8 0110 0050 8701 c7b8 86de 9867 f974 .....P.......g.t 0x0020: 8018 06b4 59cf 0000 0101 080a 5a26 59a4 ....Y.......Z&Y. 0x0030: ffff cfaf 3c21 444f 4354 5950 4520 6874 .....<h 0x00b0: 746d 6c3e 0a20 2020 203c 6865 6164 3e0a tml>.....<head>. 0x00c0: 2020 2020 2020 2020 3c6d 6574 6120 6874 ........<meta.ht 0x00d0: 7470 2d65 7175 6976 3d22 636f 6e74 656e tp-equiv="conten 0x00e0: 742d 7479 7065 2220 636f 6e74 656e 743d t-type".content= 0x00f0: 2274 6578 742f 6874 6d6c 3b20 6368 6172 "text/html;.char 0x0100: 7365 743d 7574 662d 3822 3e0a 2020 2020 set=utf-8">..... 0x0110: 2020 2020 3c74 6974 6c65 3e6b 7365 7276 ....<title>kserv 0x0120: 2077 6562 3c2f 7469 746c 653e 0a20 2020 .web</title>.... 0x0130: 203c 2f68 6561 643e 0a20 2020 203c 626f .</head>.....<bo 0x0140: 6479 2062 6763 6f6c 6f72 3d22 2366 6666 dy.bgcolor="#fff 0x0150: 6663 6322 2061 6c69 6e6b 3d22 2333 3333 fcc".alink="#333 0x0160: 3366 6622 206c 696e 6b3d 2223 3333 3333 3ff".link="#3333 0x0170: 6666 2220 766c 696e 6b3d 2223 3333 3333 ff".vlink="#3333 0x0180: 6666 223e 0a20 2020 2020 2020 203c 626c ff">.........<bl 0x0190: 6f63 6b71 756f 7465 3e3c 6469 7620 616c ockquote><div.al 0x01a0: 6967 6e3d 2272 6967 6874 223e 6c61 7374 ign="right">last 0x01b0: 2075 7064 6174 653a 2031 342d 4f63 742d .update:.14-Oct- 0x01c0: 3230 3130 3c2f 6469 763e 3c2f 626c 6f63 2010</div></bloc 0x01d0: 6b71 756f 7465 3e0a 2020 2020 2020 2020 kquote>......... 0x01e0: 3c68 3120 616c 6967 6e3d 2263 656e 7465 <h1.align="cente 0x01f0: 7222 3e3c 666f 6e74 2063 6f6c 6f72 3d22 r"><font.color=" 0x0200: 6772 6565 6e22 3e6b 7365 7276 2077 6562 green">kserv.web 0x0210: 3c2f 666f 6e74 3e3c 2f68 313e 0a20 2020 </font></h1>.... 0x0220: 2020 2020 203c 626c 6f63 6b71 756f 7465 .....<blockquote 0x0230: 3e3c 6469 7620 616c 6967 6e3d 2272 6967 ><div.align="rig 0x0240: 6874 223e 2863 2920 6b6f 7375 6765 7474 ht">(c).kosugett 0x0250: 6920 3230 3130 3c2f 6469 763e 3c2f 626c i.2010</div></bl 0x0260: 6f63 6b71 756f 7465 3e0a 2020 2020 3c2f ockquote>.....</ 0x0270: 626f 6479 3e0a 3c2f 6874 6d6c 3e0a body>.</html>. |
めでたし、めでたしなんですけど、こんな短いコンテンツも圧縮してくれちゃってまぁ。ごくろうさまなこってす。
しかし、実用度がたかまると、教え辛くなるっていう典型ですね。これは、、、
だから、vi に gcc コンソールから手打ちがいいんだよ、まったく。ほんと最近は本質が見えにくくなって困っちゃうんだな。
「↓↓↓↓↓ 以下省略 ↓↓↓↓↓」の下にもですねー。favicon.ico よこせだとかさぁ、いらんことやってくれちゃっているんだなー。もー死んでしまえ(笑
0 件のコメント:
コメントを投稿