class: title, smokescreen, shelf, no-footer # インターネット層の概要 <div class=footnote> <small><small> </small></small> </div> <div class=digest-begin-01></div> --- class: img-right,compact # インターネット層(IPとICMP)の役割 <div class=footnote> <small><small> (脚注) ホスト=コンピュータ。 ホスト(host)というと英語では主人ですが、 かつて(大型コンピュータの時代)、 サービスを提供する(ユーザをおもてなしする)ことから<B>ホストコンピュータ(略してホスト)</B>と呼びました。 その名残り。 当時ユーザはホスト本体には触れず、 ホストにつないだ<B>小型の端末(ターミナル)</B>でコンピュータを使っていました。 <B>ターミナル</B>という名のアプリは、その名残り </small></small> </div> ![](images/ip-unreliable.png) - IPは右図のようにインターネット層でのパケット転送を担当します - END-TO-ENDで、 あるホスト(IPアドレス)からホスト(IPアドレス)への転送 - IPは**大域的な転送**の担当、 ネットワークインターフェイス(NI)層 (イーサネットなど)は**隣あった機器間の転送** - TCPとIPはコンビです(再掲) - IPはIPアドレス(**住所**)間の転送を担当 - TCPはアプリケーション(**誰**)宛の担当 --- class: img-right,compact # IPパケット(再掲) <div class=footnote> <small><small> (脚注) [復習] パケットとは封筒のようなもので宛名書きがヘッダにあたります。 それを右下図のように書きます </small></small> </div> ![height240px](/images/network/packet-envelope.png) ![height240px](/images/network/tcp-all-layers.png) - インターネット層(IP,ICMP)は、 トランスポート層(TCP,UDP)から渡されたパケットにIPヘッダを追加し、 IPパケットをネットワークインターフェイス層(NI層,Ethernetなど)へ渡します。 例: - TCPパケットにIPヘッダを追加してIPパケットを作り、 下層(NI層)に託します (図上は封筒に入れて入れて...) - IPパケットサイズの上限も(TCPと同様で)下層の制限で決まります。例: - Ethernt(1500) - PPPoE(IP over PPP over Ethernet(1500)) --- class: img-right,compact # IPヘッダ <div class=footnote> <small><small> (脚注1) IPSec = IP Security (脚注2) ヘッダを丸暗記する必要はありませんが、 IPアドレスが書いてあることを覚えておいてください </small></small> </div> ![height480px](images/ip-header.png) - ヘッダに**送信元と送信先のIPアドレス**(図の上から4行目と5行目)があります - ペイロードにトランスポート層のTCPパケットなどが入ります。 3行目にあるprotocol(数字)がペイロードに入っているパケットの種類を表しています - 1 ... ICMP (後述) - 6 ... TCP - 17 ... UDP - 50 ... ESP (IPSec, VPNで利用) - 51 ... AH (IPSec, 最近使わない) - あとの細かいところは省略します --- class: img-right,compact # IPのエラー対応(ICMP) ![](images/ip-unreliable.png) - IPはUDPと同様でエラーに対処しません <br> TCP/IPのエラー対策は (1)**TCP**に頼るか (2)**各ソフトウエアの独自対策**のいづれか - **ICMP (Internet Control Message Protocol)** - インターネット層の各種情報を通知する仕組みとしてICMPがあります - 用途: デバッグ、エラー、おすすめの情報などの通知 - ただし悪用を恐れて**実際の運用ではICMPを許可しないことが多い**ため、 かなり使えないプロトコルです - 通信相手の生死確認程度であれば使えることが**多い** e.g. pingコマンド --- class: img-right,compact # ICMPパケットとICMPヘッダ <div class=footnote> <small><small> (脚注) ヘッダを丸暗記する必要はありません </small></small> </div> ![](images/icmp-header.png) ![height240px](images/icmp-packet.png) - ICMPパケットを転送するのはIP - IPヘッダのプロトコル番号は1 - IPパケットのペイロードがICMP(右下図) - ICMPヘッダはシンプルに3要素32ビット - typeとcode次第でヘッダの次にオプション要素があることもあります - ICMPペイロードにデータを入れることもあります (typeとcode次第もしくは独自拡張も可) <div class=digest-end-01></div>