スポンサーサイト
IEEE802.11n
IEEE802.11nについて調べてみた。
■特徴
・規格上は最大速度600Mbps。(ただし、実装では300Mbpsが多いみたい)
・IEEE802.11a/b/gと下位互換性がある。
・2.4GHz帯、5GHz帯の両方で使える。
■速度向上の仕組み
★チャネル当たりの速度向上
IEEE802.11a/gではチャネル当たりの速度は54Mbpsだったが、それはOFDMで利用するサブチャネル48個によって実現していた。802.11nではOFDMのサブチャネルを52個に増強した。また、FEC(Forwarding Error Correction:前方誤り訂正)の冗長性ビットを4bitにつき3bitつけてたものを、6bitにつき5bitとした。さらにガードインターバルと呼ばれるパケット干渉防止のためのパケット送信間隔を800nsから400nsに狭めることにより、1チャネル当たりの速度を75Mbpsに向上される。
★チャネルボンディング
1チャネル当たり20MHz帯域を利用するが、チャネルボンディングにより2チャネルを論理上の1チャネルとして扱うと。その結果、倍速モードで最大150Mbpsの通信ができます。
★MIMO
アンテナを複数立てることにより、さらに複数倍のスループットが可能。
よく無線APで(2x2)などと表記されているが、受信アンテナ2, 送信アンテナ2という意味。2ストリーム。
この場合、受信も送信も300Mbpsとなる。
規格上は4x4まで規定されており、最大600Mbpsとなるが、現在販売されている製品はたいてい2x2の300Mbps。
また、MIMOにより、わざと位相をずらした波を送ることで、反射波を有効に扱える仕組みもあるため、部屋の隅だと意外と電波が強かったりする。
a/b/gにも実装としてアンテナを2つ立て、反射波を有効に扱う仕組みがある(無線ダイバーシティ(ダイバーシチ)と呼ぶ)
ちなみに、この反射波を有効に扱う仕組みは、昔自分が勉強していた主成分分析(PCA)や独立成分分析(ICA)のモデル式と一緒で、受信電波をy, 送信電波をx、係数行列をA、ノイズをnとして
y1 A1 A2 x1 n1
( ) = ( ) ( ) + ( )
y2 A3 A4 x2 n2
というモデルから、受信側で送信電波xを推定することのようだ。
上記のモデルからすると、無線クライアント側が利用位置を変えると、計算し直しになるはず。
■特徴
・規格上は最大速度600Mbps。(ただし、実装では300Mbpsが多いみたい)
・IEEE802.11a/b/gと下位互換性がある。
・2.4GHz帯、5GHz帯の両方で使える。
■速度向上の仕組み
★チャネル当たりの速度向上
IEEE802.11a/gではチャネル当たりの速度は54Mbpsだったが、それはOFDMで利用するサブチャネル48個によって実現していた。802.11nではOFDMのサブチャネルを52個に増強した。また、FEC(Forwarding Error Correction:前方誤り訂正)の冗長性ビットを4bitにつき3bitつけてたものを、6bitにつき5bitとした。さらにガードインターバルと呼ばれるパケット干渉防止のためのパケット送信間隔を800nsから400nsに狭めることにより、1チャネル当たりの速度を75Mbpsに向上される。
★チャネルボンディング
1チャネル当たり20MHz帯域を利用するが、チャネルボンディングにより2チャネルを論理上の1チャネルとして扱うと。その結果、倍速モードで最大150Mbpsの通信ができます。
★MIMO
アンテナを複数立てることにより、さらに複数倍のスループットが可能。
よく無線APで(2x2)などと表記されているが、受信アンテナ2, 送信アンテナ2という意味。2ストリーム。
この場合、受信も送信も300Mbpsとなる。
規格上は4x4まで規定されており、最大600Mbpsとなるが、現在販売されている製品はたいてい2x2の300Mbps。
また、MIMOにより、わざと位相をずらした波を送ることで、反射波を有効に扱える仕組みもあるため、部屋の隅だと意外と電波が強かったりする。
a/b/gにも実装としてアンテナを2つ立て、反射波を有効に扱う仕組みがある(無線ダイバーシティ(ダイバーシチ)と呼ぶ)
ちなみに、この反射波を有効に扱う仕組みは、昔自分が勉強していた主成分分析(PCA)や独立成分分析(ICA)のモデル式と一緒で、受信電波をy, 送信電波をx、係数行列をA、ノイズをnとして
y1 A1 A2 x1 n1
( ) = ( ) ( ) + ( )
y2 A3 A4 x2 n2
というモデルから、受信側で送信電波xを推定することのようだ。
上記のモデルからすると、無線クライアント側が利用位置を変えると、計算し直しになるはず。
インターネット通信パケットキャプチャ3(http)
パソコンがインターネットと通信する際のパケットキャプチャをとってみた。
■キーワード
httpパケットフォーマット, TCPシーケンス
■環境
OS:Windows7(32bit) on VMWare(R) Player 3.1.3, ブラウザ:IE8
192.168.11.3のPCから、yahooのHP(www.yahoo.co.jp)にアクセス
■pcapファイル
ここからダウンロード
■解説
★pcapファイルの6パケット目
HTTP GET のパケット。
webサーバのコンテンツのダウンロードを要求する。具体的には
www.yahoo.co.jp/index.html
のファイルを要求する。
---↓キャプチャ(L2,L3,L4部分は省略。http部分のみ)---
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
[Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n]
[Message: GET / HTTP/1.1\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Method: GET
Request URI: /
Request Version: HTTP/1.1
Accept: */*\r\n
Accept-Language: ja\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\r\n
Accept-Encoding: gzip, deflate\r\n
Host: www.yahoo.co.jp\r\n
Connection: Keep-Alive\r\n
\r\n
---
キャプチャを見るとindx.htmlは明示的には要求していないことが分かる。通常はURI: /index.htmlなどのファイル名が記載されているが、このパケットキャプチャを見ると、URI: /となっている。このように、取得すべきファイルが明記されていないhttpパケットをwebサーバが受け取ると、サーバ側であらかじめ指定されているファイルを自動的に返す。サーバで設定されているファイルは、index.htmlだけでなく、index.htm, index.phpなどがよく使われる。
★pcapファイルの7パケット目
TCP 80番ポートからの通信でindex.htmlの内容を含むhttpフォーマットを受信している。
---↓キャプチャ(L2,L3,L7部分は省略。TCP部分のみ)---
Transmission Control Protocol, Src Port: http (80), Dst Port: 49188 (49188), Seq: 1, Ack: 297, Len: 1414
Source port: http (80)
Destination port: 49188 (49188)
[Stream index: 1]
Sequence number: 1 (relative sequence number)
[Next sequence number: 1415 (relative sequence number)]
Acknowledgement number: 297 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 66458 (scaled)
Checksum: 0x86ad [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 6]
[The RTT to ACK the segment was: 0.024742000 seconds]
[Number of bytes in flight: 1414]
TCP segment data (1414 bytes)
---
スロースタートにより、2〜5(pcapファイルの7〜10)のパケットを送信した後、クライアントからのACKを待ちます。
★pcapファイルの11パケット目
クライアントからのACK。
---↓キャプチャ(L2,L3部分は省略。TCP部分のみ)---
Transmission Control Protocol, Src Port: 49188 (49188), Dst Port: http (80), Seq: 297, Ack: 5657, Len: 0
Source port: 49188 (49188)
Destination port: http (80)
[Stream index: 1]
Sequence number: 297 (relative sequence number)
Acknowledgement number: 5657 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 65700 (scaled)
Checksum: 0x8b8f [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 10]
[The RTT to ACK the segment was: 0.000045000 seconds]
---
受け取った後にさらに5パケットを送っています。pcapファイルの32パケット目でダウンロード終了。
ちなみに、pcapファイルの7〜32パケット目のクライアントからのACKを除くデータ部分を結合すると、以下のhttpフォーマットが出てきます。
---
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n]
[Message: HTTP/1.1 200 OK\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Version: HTTP/1.1
Response Code: 200
Date: Wed, 12 Jan 2011 13:02:45 GMT\r\n
Set-Cookie: B=cti5hkh6ir9jl&b=3&s=i5; expires=Tue, 12-Jan-2013 20:00:00 GMT; path=/; domain=.yahoo.co.jp\r\n
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\r\n
Cache-Control: no-cache, private\r\n
Cache-Control: no-store, must-revalidate\r\n
Vary: User-Agent\r\n
Expires: -1\r\n
Pragma: no-cache\r\n
X-XRDS-Location: http://open.login.yahoo.co.jp/openid20/www.yahoo.co.jp/xrds\r\n
Cache-Control: private\r\n
Connection: close\r\n
Transfer-Encoding: chunked\r\n
Content-Type: text/html; charset=utf-8\r\n
Content-Encoding: gzip\r\n
\r\n
HTTP chunked response
Data chunk (26947 octets)
Chunk size: 26947 octets
Data (26947 bytes)
~~~省略~~~
[Length: 26947]
Chunk boundary
End of chunked encoding
Chunk size: 0 octets
Chunk boundary
Content-encoded entity body (gzip): 26947 bytes -> 96222 bytes
Line-based text data: text/html
\n \n \n \n \n
\n [truncated]
■キーワード
httpパケットフォーマット, TCPシーケンス
■環境
OS:Windows7(32bit) on VMWare(R) Player 3.1.3, ブラウザ:IE8
192.168.11.3のPCから、yahooのHP(www.yahoo.co.jp)にアクセス
■pcapファイル
ここからダウンロード
■解説
★pcapファイルの6パケット目
HTTP GET のパケット。
webサーバのコンテンツのダウンロードを要求する。具体的には
www.yahoo.co.jp/index.html
のファイルを要求する。
---↓キャプチャ(L2,L3,L4部分は省略。http部分のみ)---
Hypertext Transfer Protocol
GET / HTTP/1.1\r\n
[Expert Info (Chat/Sequence): GET / HTTP/1.1\r\n]
[Message: GET / HTTP/1.1\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Method: GET
Request URI: /
Request Version: HTTP/1.1
Accept: */*\r\n
Accept-Language: ja\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\r\n
Accept-Encoding: gzip, deflate\r\n
Host: www.yahoo.co.jp\r\n
Connection: Keep-Alive\r\n
\r\n
---
キャプチャを見るとindx.htmlは明示的には要求していないことが分かる。通常はURI: /index.htmlなどのファイル名が記載されているが、このパケットキャプチャを見ると、URI: /となっている。このように、取得すべきファイルが明記されていないhttpパケットをwebサーバが受け取ると、サーバ側であらかじめ指定されているファイルを自動的に返す。サーバで設定されているファイルは、index.htmlだけでなく、index.htm, index.phpなどがよく使われる。
★pcapファイルの7パケット目
TCP 80番ポートからの通信でindex.htmlの内容を含むhttpフォーマットを受信している。
---↓キャプチャ(L2,L3,L7部分は省略。TCP部分のみ)---
Transmission Control Protocol, Src Port: http (80), Dst Port: 49188 (49188), Seq: 1, Ack: 297, Len: 1414
Source port: http (80)
Destination port: 49188 (49188)
[Stream index: 1]
Sequence number: 1 (relative sequence number)
[Next sequence number: 1415 (relative sequence number)]
Acknowledgement number: 297 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 66458 (scaled)
Checksum: 0x86ad [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 6]
[The RTT to ACK the segment was: 0.024742000 seconds]
[Number of bytes in flight: 1414]
TCP segment data (1414 bytes)
---
スロースタートにより、2〜5(pcapファイルの7〜10)のパケットを送信した後、クライアントからのACKを待ちます。
★pcapファイルの11パケット目
クライアントからのACK。
---↓キャプチャ(L2,L3部分は省略。TCP部分のみ)---
Transmission Control Protocol, Src Port: 49188 (49188), Dst Port: http (80), Seq: 297, Ack: 5657, Len: 0
Source port: 49188 (49188)
Destination port: http (80)
[Stream index: 1]
Sequence number: 297 (relative sequence number)
Acknowledgement number: 5657 (relative ack number)
Header length: 20 bytes
Flags: 0x10 (ACK)
0... .... = Congestion Window Reduced (CWR): Not set
.0.. .... = ECN-Echo: Not set
..0. .... = Urgent: Not set
...1 .... = Acknowledgement: Set
.... 0... = Push: Not set
.... .0.. = Reset: Not set
.... ..0. = Syn: Not set
.... ...0 = Fin: Not set
Window size: 65700 (scaled)
Checksum: 0x8b8f [validation disabled]
[Good Checksum: False]
[Bad Checksum: False]
[SEQ/ACK analysis]
[This is an ACK to the segment in frame: 10]
[The RTT to ACK the segment was: 0.000045000 seconds]
---
受け取った後にさらに5パケットを送っています。pcapファイルの32パケット目でダウンロード終了。
ちなみに、pcapファイルの7〜32パケット目のクライアントからのACKを除くデータ部分を結合すると、以下のhttpフォーマットが出てきます。
---
Hypertext Transfer Protocol
HTTP/1.1 200 OK\r\n
[Expert Info (Chat/Sequence): HTTP/1.1 200 OK\r\n]
[Message: HTTP/1.1 200 OK\r\n]
[Severity level: Chat]
[Group: Sequence]
Request Version: HTTP/1.1
Response Code: 200
Date: Wed, 12 Jan 2011 13:02:45 GMT\r\n
Set-Cookie: B=cti5hkh6ir9jl&b=3&s=i5; expires=Tue, 12-Jan-2013 20:00:00 GMT; path=/; domain=.yahoo.co.jp\r\n
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"\r\n
Cache-Control: no-cache, private\r\n
Cache-Control: no-store, must-revalidate\r\n
Vary: User-Agent\r\n
Expires: -1\r\n
Pragma: no-cache\r\n
X-XRDS-Location: http://open.login.yahoo.co.jp/openid20/www.yahoo.co.jp/xrds\r\n
Cache-Control: private\r\n
Connection: close\r\n
Transfer-Encoding: chunked\r\n
Content-Type: text/html; charset=utf-8\r\n
Content-Encoding: gzip\r\n
\r\n
HTTP chunked response
Data chunk (26947 octets)
Chunk size: 26947 octets
Data (26947 bytes)
~~~省略~~~
[Length: 26947]
Chunk boundary
End of chunked encoding
Chunk size: 0 octets
Chunk boundary
Content-encoded entity body (gzip): 26947 bytes -> 96222 bytes
Line-based text data: text/html
\n





