メンバーエリア情報
009 TCP プロトコル ( Transmission Control Protocol )
Category: 中級編> 16) TCP/IP概論
TCPプロトコルとは?
TCPプロトコルもUDPプロトコル同様に IPの機能に依存したトランスポート層のプロトコルなんですが、IPの機能に信頼性を追加します。ここで言う信頼性とは以下のような意味です
- 1. 送信したデータが確かに相手に届いたことを確認する手段を提供すること
- 2. 送信したデータが送信した順番に相手に届くことを保証すること
※1が大事だってのは皆さんすぐわかると思いますが、2についてはイマイチピンとこない人があるかも知れません.そういう方は、画像データをネットワーク経由でやり取りする場合を考えてみてください。送信側が送信した順番に、受信側が受信してくれないと正しい画像を転送できませんよね?
TCPプロトコルの機能をものすごく単純化して説明すると、やり取りするデータに連番をつけて、どこまで受信したのかを確認するメッセージをやり取りしながらデータ全体をやり取りしているだけです(^^; こんな説明だけだとあんまりなので、順を追って詳細に見ていくことにしましょう。
- 1. TCPプロトコルとは?
- 2. TCPパケットの形式
- 3. 通信処理の仕組み
- 4. SYN flood攻撃
- 5. TCP RST攻撃
- 6. TCP Session Hijack
..........................................
008 UDP プロトコル ( User Datagran Protocol )
Category: 中級編> 16) TCP/IP概論
UDPプロトコルとは?
UDPプロトコルは、トランスポート層のプロトコルなんですが、 言ってみれば一つ下の層であるIPの機能をそのまま提供するようなプロトコルです。( UDPプロトコルはIPプロトコルに依存したプロトコルです。) ただしTCPプロトコルと比較すると信頼性が低い通信しか実現できません。 一応UDPヘッダにはチェックサムがあるんですが、TCPプロトコルのように壊れたパケットを再送したりする機能は実装されていません。送信側が送った順に相手に 届くという保証もありませんし、送信先に確かに届いたという確認をとる機能も 備わっていません。その反面TCPプロトコルのように 3 way handshake というステップを踏む必要がない分だけ速度が速いというメリットがあります。 (細かいデータを沢山やり取りする場合には、データ転送にかかる時間に占める 3 way handshake完成までの時間の比率が高まることになるので、TCPプロトコルを使うよりもUDPプロトコルを使った方が効率的)
またUDPプロトコルにはブロードキャストやマルチキャストという機能があります。
※ブロードキャストというのは同一のネットワークセグメントにあるホストすべて になんらかのデータを送信する際に、個々のホストにそれぞれ一つずつパケットを 送信するのではなくて、予め決められたブロードキャストアドレスに1つだけ パケットを送信すれば、すべてのホストがデータを受信することができるという仕組みです。 ブロードキャストはLAN内部の通信で使用されるものなんですが、こいつの インターネット版がマルチキャストっていう技術です。(ただしマルチキャストは まだそれ程普及しているわけではありません。)
- 1. UDPプロトコルとは?
- 2. UDPパケットの形式
- 3. UDPパケットをキャプチャ
..........................................
007 ICMP プロトコル ( Internet Control Message Protocol )
Category: 中級編> 16) TCP/IP概論
ICMPプロトコルとは?
ICMPプロトコルはIPプロトコルを補助する役割を担うプロトコルで、IPパケットが到達するかどうかを調べるpingコマンドなんかにICMPプロトコルが使用されています。また非効率なルーティングが行われていることを検出するためにも使われます
ICMPには複数の形式があって、ICMPヘッダは共用体を使って定義されています。 ここでは、主要な形式について紹介させていただきます。
ICMPプロトコルはIPプロトコルを補助するプロトコルなんですが、ICMPパケットもIPデータグラムに包まれて送信されます。そういう意味でICMPプロトコルもIPプロトコルの機能に依存したプロトコルです。(IPプロトコルが正常に動作していないと、ICMPプロトコルも正常に動作しません。)
- 1. ICMPプロトコルとは?
- 2. ICMPパケットの形式
- 3. WinPcapを使うサンプル
- 4. RawSocketでSniffing
- 5. RawSocketでパケット送信
- 6. RawSocketを使うサンプル
..........................................
006 IP プロトコル ( Internet Protocol )
Category: 中級編> 16) TCP/IP概論
前回までに扱ったプロトコルでは、同一のネットワークセグメント内部の通信に関係するものでした。複数のネットワークセグメントをまたぐ通信を行う際には、IPプロトコルの出番になります。
普段お世話になっているICMPプロトコル(pingコマンドなんかはICMPプロトコルを利用しています)や、TCPプロトコル、UDPプロトコルは、IPプロトコルの機能に依存しています。もう少し具体的に言うと、IPデータグラムの中にICMPパケットやTCPパケット、UDPパケットが包まれてやりとりされ、ネットワークセグメントをまたいで通信する機能は完全にIPプロトコルに依存しています。ICMPプロトコル、TCPプロトコル、UDPプロトコルといったプロトコルはIPプロトコルのデータ転送機能に加えて他の機能を追加するような形で実装されています。(具体的にどのような機能を追加するのかということについては次回以降に解説)
ですから、インターネットにおいて、IPプロトコルは基盤となる機能を担うプロトコルであり、非常に重要なプロトコルだってことになります。
- 1. IPプロトコルとは?
- 2. IPデータグラムの形式
- 3. IPヘッダについて
- 4. IP断片化について
- 5. チェックサムの計算
..........................................
005 ARP プロトコル ( Address Resolution Protocol )
Category: 中級編> 16) TCP/IP概論
ARPプロトコル
ARPプロトコルは、Ethernet等のブロードキャスト型のデータリンクで使用されるプロトコルで、普通は IPアドレスから、それに対応するMACアドレスを調べるために使われます。ただし、ARPプロトコルの仕様では、使用できるアドレスをMACアドレスとIPアドレスに限定しているわけではありません。 ( Address Resolution Protocol - 直訳するなら、アドレス解決プロトコル?)
IPパケットを飛ばす際にも、データリンク層では、Ethernetフレームの中にラッピングして送信する形になるわけですから、送信先のMACアドレスが必要になります。(Ethernetヘッダには、送信元と宛先のMACアドレスを書き込む必要があるんでしたよね?)
※「データリンク層では、Ethernetフレームの中にラッピングして送信する? はぁ〜?」 って人はこちらを読み直してください。
※宛先ホストが同一ネットワークセグメントでなければ(ルーターよりこちら側になければ) ルーターのMACアドレスが必要になりますし、宛先ホストが同一ネットワークセグメント(ルーターよりこちら側にあれば)、宛先ホストのMACアドレスが必要になります。
ですから、パケットを飛ばす際には、宛先ホストあるいは、ルーターのMACアドレスを調べる必要があるわけですが、その際には、ARPプロトコルを使う必要があります。
- 1. ARP プロトコルとは?
- 2. ARP パケットの形式
- 3. ARPプロトコルの仕組み
- 4. サンプルコード
- 5. ARP Spoofing について
..........................................





