この記事シリーズでは、インターネットで用いられている通信プロトコルであるTCP/IPで、通信が送信元から宛先に届くまでに起こっていることをミクロ視点で解説します。
【本シリーズ】
今回は、前回までの記事で解説しきれなかった豆知識集です。
是非ともご覧ください。
目次
パケットのサイズ
パケットにはサイズがあります。
念のため、第1回で解説したセグメント、パケット、フレームについて再度記載します。
それぞれ以下の通りです。
- セグメント:送信データにTCPヘッダーを付与したもの
- パケット:セグメントにIPヘッダーを付与したもの
- フレーム:パケットにイーサネットヘッダーを付与したもの
そして、イーサネットの規格上フレームの最大サイズは1518バイトと決められています。(例外あり)
そして、パケットやセグメントのサイズは、フレームの最大サイズによって規定されます。
MTU(Maximum Transmission Unit)
MTUは(IPヘッダも含めた)パケットの最大サイズです。
フレームの最大サイズ(1518バイト)からイーサネットヘッダ(+FCS)の18バイトを差し引いた、1500バイトがMTUのサイズです。
MTUはイーサネットなどのL2プロトコルによって制約されるので、原則は通信機器のI/Fに設定します。
MTUは次にあげるMSSによって決まることが多いです。
MSS(Maximum Segment Size)
MSSは(TCPヘッダを含めない)セグメントの最大サイズのことで、要するにペイロードの大きさです。
パケットの最大サイズ(1500バイト)からIPヘッダ(20バイト)とTCPヘッダ(20バイト)を差し引いた、1460バイトがMSSです。(例外あり)
なお、MSSの値は、TCPセッション開始時に「オプション」フィールドの値によって、端末同士通知しあいます。
データ分割とTCPヘッダ付与はOSの仕事です。送信元のOSと宛先のOSの間で、送信データをどのサイズに分割するかを取り決めます。
しかし、経路上のネットワーク機器にとってもMSSの値(およびMSSから導出されるMTU)は重要です。
そのため、ネットワーク機器がTCPのオプションフィールドにあるMSSの値を書き換えることもあります。
パケットの分割
IPsecなどでのトンネル化や通信回線の仕様により、通信経路上でMTUが1500バイト以下の場所ができる場合があります。
その際には、ネットワーク機器はMTUサイズより大きいパケットのままでは転送できませんので、パケットを分割して送信します。
分割されたパケットは、通信経路上では復元されずに宛先まで到達します。
当然ですが、通信経路上の機器でいちいちパケットを分割していたら、通信の効率は悪くなります。パケットの分割が発生しないように気をつけましょう。
ICMP(Ping、Traceroute)
PingやTracerouteで用いられるプロトコルで、ICMPというものがあります。
ICMPは大抵の場合L3に分類されますが、厳密に言うとICMPはIPパケットのペイロードです。
ICMPは、以下のような構造をしています。
ICMPは内部のタイプと言うフィールドの値で、通知する内容を区別します。
例えば、タイプ:8 はエコー要求を意味し、タイプ:0 はエコー応答を意味します。
つまり、タイプ:8 を受領したコンピュータは、タイプ:0 を返します。
そのほか、ルーターのルーティングテーブルに宛先ネットワークの情報がない場合には、宛先到達不可を意味するタイプ:3 を返信します。
IEEE 802(アイトリプルイーハチマルニ)
IEEEは、「Institute of Electrical and Electronics Engineers」というアメリカに本部がある、電気・情報工学分野の学会の略称です。
ネットワークエンジニアにとって馴染みが深いのは、LANなどの規格を定めたIEEE 802です。
LANの中でも更に細かい技術を表すために枝番があります。VLANを設定した802.1qや、無線LANについて表した802.11シリーズなどがあります。
インターフェース(I/F)の呼び名
本シリーズでは、LANケーブルの差込口のことはインターフェース(I/F)と呼んでいます。
ネットワークエンジニアは、I/F と表記することが多いですが、他にも
- NIC(ニック、Network Interface Card)
- ネットワークアダプタ
- LANカード
- イーサネットカード
などとも呼ばれます。
なお、インターフェースという言葉は、元々は「接触面」のような意味です。
よって、USBの差込口などもインターフェースの一種ですし、デスクトップ画面のことをユーザーインターフェースと呼んだりもします。
コロン(:)、スラッシュ(/)の使い方
コロン(:)の用法は色々ありますが、日本でよく使われるのは、
左側の内容の詳細を右側に書く
という使われ方です。
例)ポート番号:TCP80、IPアドレス:1.2.3.4
スラッシュ(/)は、
文字を省略している
ということを表します。
例)network → N/W、interface → I/F
※省略された後の文字は大文字になることが多いです。
そのほかに、「or」という意味でも使われます。
例)A or B → A/B
K(キロ)、M(メガ)、G(ギガ)
ネットワークエンジニアリングでは、
- 1K = 1000
- 1M = 1000K = 1000000
- 1G = 1000M = 1000000K = 1000000000
です。
なお、メモリやSSDのサイズを表す場合には、
- 1K = 1024(10の2乗)
で表される場合が多いです。
しかし、ネットワークエンジニアの世界では、ほぼ間違いなく 1K = 1000 です。
カタカナ表記(ユーザ、ユーザー)
英語をカタカナで表記する場合、かつては「er」「or」「ar」で終わる言葉は長音記号(ー)をつけないことが一般的でした。
例)user は「ユーザ」、motor は「モータ」等
そして、「-y」で終わる言葉は「ィ」とすることが一般的でした。
例)party は「パーティ」等
IT業界でこのような表記を見ることもあると思いますが、これは過去にJIS(日本産業企画)で、この表記を推奨するガイドラインがあったからです。
しかし、1991年の内閣告示では、「er」「or」「ar」などに当たるものは長音記号を用いて表すというガイドラインが出ました。
JISも内閣告示も、外部の組織に強制するほどの力はないので、現在の日本では色々なカタカナ表記が混在しています。
LAN内部のIPアドレス設計
TCP/IP通信が送信元から宛先に届くまで_03(L3について)で、下図を掲載しました。
ルーター1のI/F 1のIPアドレスの第4オクテットは、254です。
通常のIPアドレス設計では、このようにDGWをネットワーク内の(ブロードキャストアドレスを除いた)最後のアドレスとする場合が多いです。
その他、同一ネットワーク内でユーザー端末は0番代、サーバーを置く場合は200番代、などのように分かりやすいルールでアドレスを分ける場合が多いです。
まとめ
以上で、このシリーズは一旦終了とします。
このシリーズをお読みいただいた人なら、通信が宛先に届くまでの機器の動作について、一通りイメージできたのではないでしょうか?
本格的な学習への足がかりとしては、十分なものを書けたのかなと自負しております。
今後もネットワークの学習に有用な記事を記載していく予定ですので、是非ともお読みください!
それでは (*゚▽゚)ノ