CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
こんにちは。土井ゆうか(ドイ ユウカ)と申します。このコラムでは、2010年3月に初版が発行され、現在は、2015年5月に第1版第10刷が発行されている、株式会社ソキウス・ジャパン編著の「1週間でCCNAの基礎が学べる本」を用いて、初心者の私が学んだことをまとめて参ります。コラムの中のページ表記は、この書籍のページを示します。
今回は、「TCP/IPネットワーク通信の流れ」と「ネットワークの実際」について学んでいきましょう。
1.TCP/IPネットワーク通信の流れ
2.ネットワークの実際
1-1 TCP/IP通信の流れ(P.166)
1-2 サブネット内のARP通信(P.169)
1-3 サブネット間の通信(P.173)
5日目の今回は、まず、TCP/IPモデルに沿って、ARPとHTTPの通信の仕組みを学習していきます。これまで説明してきたように、OSI参照モデルでは細かいレイヤの役割が定義されて理解しやすいのですが、現実のプロトコルは、より簡易なTCP/IPモデルに従って開発されています。
TCP/IPモデルでは、各層のヘッダに上位層識別子と、宛先と送信元のアドレスなどの情報が入っています。上位層識別子とは、上位層でどのようなプロトコルが使われているかを下位層のプロトコルが判断するための情報です。
TCP/IPモデルにおけるプロトコル構造は、概念的には4つの層から構成されます。最下層がネットワーク インターフェイス層、次がインターネット層、次がトランスポート層、最上層がアプリケーション層です。OSI参照モデルでもTCP/IPモデルでも、データ送信時には上位層から階層へとヘッダを追加しながらカプセル化してデータを送る点では同じです。一方、層の名称などの各用語は、OSI参照モデルと似てはいますが、別のモデルであることに注意が必要です。
------------
最下層のネットワーク インターフェイス層は、イーサネット(Ethernet)やPPP(Point-to-Point Protocol)など、各種のプロトコルが存在します。
次の層であるインターネット層は、OSIモデルのネットワーク層に相当し、複数のネットワークを相互に接続した環境で、各機器の間でのデータ伝送を実現します(IP/ARP/ICMPなど)。
次の層であるトランスポート層は、OSIモデルのトランスポート層に相当し、通信を行うプログラムの間でのデータ伝送を実現します(TCP/UDPなど)。
最上位層であるアプリケーション層は、OSIモデルのセッション層からアプリケーション層に相当し、個々のプログラムの間で、どのような形式や手順でデータをやり取りするかを定めるものです(HTTP/Telnetなど)。
------------
TCP/IPモデルでは、インターネット層で、IPでのデータ通信を支えるICMP、ARPが定義され、また、アプリケーション層では、HTTPやTelnetといったサービス毎の手続きを決める重要なプロトコルが定義されています。以下では、ARPとHTTPを例にとって、TCP/IPデータ通信の仕組みを学習していきましょう。
ARP(Address Resolution Protocol)はアープと読み、IPアドレスからMACアドレスを検出するためのプロトコルです。
次の手順でサブネット内の宛先MACアドレスを検出しています。
①ARPリクエスト通信:ブロードキャスト(全員宛て)で、IPアドレスの持ち主を問い合わせる。
例.192.168.1.14のIPアドレスを持っているノードは、MACアドレスを教えてください。
(全員宛てを示すMACアドレス:FFFF.FFFF.FFFF)
②ARPレスポンス送信:IPアドレスの持ち主は、ユニキャスト(1対1)で自身のMACアドレスを通知する。
例.私が持ち主です。MACアドレスは「4444.4444.4444」です。
③ARPをキャッシュ(ARPテーブル)に蓄積:ARPキャッシュにIPアドレスとMACアドレスの関連付けを蓄積し、以降の通信に利用する。
1-3 サブネット間の通信(P.173)
サブネット間の通信は、サブネット内の通信より少し複雑です。ここでは、Webベースのアプリケーションを使って社内システムを構築している企業を例にTCP/IPデータ通信の流れを考えてみましょう。社内システムを使用する際にはHTTPプロトコルが使われ、また、社内のネットワークはファストイーサネットが使用されているとします。
なお、HTTP通信は、以下の手順で行われます。
①HTTPリクエスト:80番ポートを使って、WebブラウザからWebサーバへページデータを要求する(依頼)
②HTTPレスポンス:WebサーバからWebブラウザへ、要求されたページデータを送信する(応答)
以下では、それぞれを具体的に見ていきましょう。
■HTTPリクエスト
まず、PC-A(192.168.1.0)と社内サーバ(192.168.2.100)との間でやりとりされるデータについて考えます。PC-A(192.168.1.0)から社内サーバ(192.168.2.100)に対して通信しようとする場合は、PC-A(192.168.1.0)でWebブラウザを開いてアドレスフィールドに「http://192.168.2.100/」と入力します。するとPC-A(192.168.1.0)で、社内サーバ(192.168.2.100)に送信するデータが作成されます。
・HTTPデータの作成
PC-AはHTTPで「192.168.2.100のページデータをください」というHTTPリクエストを作り、トランスポート層のヘッダを付与します。
HTTPはトランスポート層プロトコルとしてTCP80番ポートを使用することになっているので、宛先ポート番号(DP:Destination Port)は「80」です。
送信元ポート(SP:Source Port)はランダムポートです。ここでは「1025」としておきます。
・IPヘッダの作成
次にIPヘッダが作成されて付与されます。宛先IPアドレス(DA IP:Destination IP Address)は「192.168.2.100」、送信元IPアドレス(SA IP:Source IP Address)は「192.168.1.0」です。このときに、IPヘッダのプロトコルフィールドには、上位層プロトコルがTCPであれば「6」、UDPであれば「17」が入ります。今回は「6」が入ります。
PC-Aと社内サーバは異なるネットワークに所属しているため、デフォルトゲートウェイの設定を行う必要があります。PC-Aのデフォルトゲートウェイには、PC-Aが所属しているネットワークのルータに設定されているアドレスである「192.168.1.254」を設定します。
・イーサネットヘッダの作成
次に、イーサネットヘッダが作成されます。ここにはMACアドレスが入ります。宛先MACアドレス(DA MAC:Destination MAC Address)は、PC-Aが所属しているネットワークのルータにFa0/0インターフェイス(192.168.2.100)のMACアドレス「3333.3333.3333」が入ります。また、送信元MACアドレス(SA MAC:Source MAC Address)にはPC-AのMACアドレスである「1111.1111.1111」が入ります。
・ルーティング
ルータXがこのデータを受け取ると宛先IPアドレスをみてルーティングを行います。受け取ったデータの宛先IPアドレスは「192.168.2.100」なので、ルータは、ルーティングテーブルのエントリにそってデータをFa0/1インターフェイスから送信します。
・ルータによるカプセル化
ルータXが社内サーバにデータを送信する場合、イーサネットヘッダがそのままだと宛先MACアドレスは「3333.3333.3333」であるため、Fa0/1側のネットワークには宛先ノードがないことになります。ここで、イーサネットヘッダは新しく作成し付与されます。これをレイヤ2ヘッダの付け替えと呼びます。ここで、送信元MACアドレス(SA MAC)にはルータFa0/1のMACアドレスである「4444.4444.4444」が入ります。宛先MACアドレスの検出は、まずは宛先IPアドレス(DA)である「192.168.2.100」についてARPを使って行われます。ここで、社内サーバからARPの応答があれば、社内サーバのMACアドレスが「2222.2222.2222」とわかるので、宛先MACアドレス=2222.2222.2222、送信元MACアドレス=4444.4444.4444のイーサネットヘッダを付与してFa0/1から送信します。
■HTTPレスポンスの返信
・HTTPデータの作成とカプセル化
社内サーバは、PC-Aから送信されたHTTPリクエストに対して処理を行った後、HTTPレスポンスデータを作成します。これは、基本的には、HTTPリクエストと同じ流れとなります(宛先と送信元は逆になります)。詳細は、P.181以下をご参照ください。
2-1 アドレス変換技術(P.187)
2-2 パケットフィルタリング(P.196)
インターネット接続では、プライベートIPアドレスは利用できないため、グローバルIPアドレスに変換する必要があります。しかし、グローバルIPアドレスが不足している現在、プロバイダから多数のグローバルIPアドレスをもらうことは現実的ではありません。ここで登場するのがNAT(Network Address Translation)とIPマスカレードです。NATは、プライベートIPアドレスとグローバルIPアドレスを1対1で変換する機能です。一方、IPマスカレードは、PAT(Port Adrress Translation)やNAPT(Network Address Port Translation)とも呼ばれ、複数のプライベートIPアドレスと1つのグローバルIPアドレスを変換する機能です。
IPマスカレードは、IPアドレスだけでなくポート番号の情報も使用し、これらを関連づけて変換を行います。
もう一つ取り上げたいのが、パケットフィルタリングと呼ばれるセキュリティの機能です。文字通り、パケットをフィルタする(選別してふるいにかける)ことができるもので、多くのルータで実装されています。ファイアウォール(Firewall)や不正侵入検知装置(IDS)などの代表的なセキュリティ機器にても実装されています。
ファイアウォールは防火壁という意味で、不正なパケットを遮断することにより、企業や家庭のLANを外部ネットワークから保護する役割を果たします。一方、不正侵入検知装置(IDS)は不正なパケットのみならず、パケットとしては適切であるが不正な目的に使用されるトラフィックも遮断することが可能です。
実際のフィルタリングは、アクセスリストという指示リストにIPアドレスやサブネットマスク、プロトコルの種類を指定して行います。パケットフィルタリング機能をシスコ社ではACL(Access Control List)と呼びます。ACLでは送信元及び宛先のポートを指定します。
本日は以上です。
なお、ネットワークの概念や仕組みをしっかり学び直したい方や、ネットワークを基礎から学びたい方には、CTC教育サービスのオリジナルコースである「ネットワークファーストステップ」がお勧めです。
http://www.school.ctc-g.co.jp/course/N606.html
また、実機で学びたい方にはシスコ認定コースがございます。詳細は、以下のリンクをご参照くださいませ。
http://www.school.ctc-g.co.jp/cisco/
最後まで読んでくださってどうもありがとうございました。次回もどうぞお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes