ネットワークに関するトピック IPヘッダ
|HOME|

ネットワークに関するトピック
 このページは私の記憶を助けるために作成されていますが,日本語で書かれているため, 検索を掛けた日本の研究者の目に触れることもあると思います.その際に,誤った記述が あると,日本人の学力低下を助長するコンテンツになってしまうため,皆様のご鞭撻は 常時,承っております.なにとぞご指導下さい.また,リンクも歓迎です.文責 澤 繁実

/リンク/ / /



/もくじ/ / / / 総括/ 参考文献/



()
 

()
 

()
 

()
 

()
 

ISO7階層モデル()
アプリケーション層FTP
SMTP etc.
プレゼンテーション層
セッション層
トランスポート層TCP, UDPAppleTalk
IPX
NetBEUI
ネットワーク層IP
データリンク層イーサネット
(IEEE 802.3)
10BASE5,2,T
100BASE-TX
トークンリング
FDDI
ATM
物理層


IP(Internet Protocol)
IPとは,Internet Protocolのことで,ホストを指定するためのIPアドレスを規定. 指定されたホストを探し,適切な経路を選んでパケットを配送. 配送エラーの上位プロトコルへの通知. IPは受信する相手が受信可能かどうかを確認せずにパケットを送る. データ配送に失敗すればパケットを破棄.エラー情報を逆送する. 送信順序の管理,誤り訂正,パケットの喪失に対する再送などはしない.
IPv4のIPパケットのヘッダ(IP Packet Header)は通常20バイトで次の構成である.(ヘッダのbit番地:名称:意味解説) 0-3(4bit):Version:通常は4を表す"0100", 4-7(4bit):IHL(IP Header Length):このパケットのヘッダの長さ32bitを1とする.20byteのヘッダなら5を表す"0101", 8-15(8bit):ToS(Type of Service):まあ使われてない.通常は0, 16-31(16bit):Size of Datagram:IPパケットのヘッダとDATA部を足したサイズをbyteで書く., 32-63(32bit):IDやFragmentation Offset:パケット長が長いなどの理由で途中のルーターがパケットを断片化して送るなどしたいときに使用48-50bit目には特別な意味があり,48:未使用,49:分割禁止,50:後続,で例えば49bit目が1だったら そのパケットをIPとして分割してはいけないことになっている.51-63の13bitに関しては断片オフセット.48-63は大体0x0000となっている., 64-71(8bit):TTL(Time To Live):このIPパケットの生存時間.ルーターを経由するたびに1づつ減っていき,0になるとこのパケットは破棄される., 72-79(8bit):Protocol:このIPが運んでいる上位プロトコルを表す.例えば1=ICMP;2=IGMP;6=TCP;17=UDP, 80-95(16bit):Header Checksum:ヘッダーにビット反転などのエラーが混入していないかを判定する, 96-127(32bit):Source Address:送信元IPアドレス, 128-159(32bit):Destination Address:送信先IPアドレス, 160-(任意bit):Options:IPヘッダ長で決められたデータまでの間を任意に使用可能.でもあまり使わない.
例えば,イーサケーブルの中を転がっている電気信号の16進数表示は以下のようになる.*はプライバシーのために伏せられた16進数. この場合,全62byte中でヘッダ以外の実際に送りたいデータは20byteである.
*0 *c *e *8 *8 *4送信先MACアドレス:*0-*c-*e-*8-*8-*4イーサネットのプロトコル ヘッダ部分
*0 *a *6 *5 *6 *7送信元MACアドレス:*0-*a-*6-*5-*6-*7
08 00イーサネットタイプ:0800(IP)
45 00 00 30Version:4,ヘッダ長:5(5x4=20byte),サービスタイプ:00,IPから見た全データ長:0030(48)IPヘッダ部分
61 aa 00 00識別ID:61aa,フラグメント:0000
6c 11 *5 *1生存時間:6C(108),プロトコル:11(17=UDP),チェックサム:*5*1
** ** ac 3b送信元IPアドレス:**.**.172.59
c0 a8 00 02送信先IPアドレス:192.168.0.2
00 15 d2 3d送信元ポート番:0015(21),送信先ポート番:D23D(53821)UDPのヘッダ
00 1c *7 *7UDPから見たデータ長:001C(28byte),チェックサム:*7*7
6B 6F 79 6F
69 6E 6F 74
75 6B 69 68
61 6B 69 72
65 69 64 61
セッション層以上のデータ.データ
 実際プログラムするとなるとチェックサム(IP Header Checksum)の計算方法が分からなければ気が済まないだろう.まず,チェックサム部の80-95bit目を0で埋め尽くす.その後IPのヘッダ部とデータ部全域に対して 「16bitごとに1の補数和をとり,それの1の補数をとる.」その16bitをチェックサムとして用いる.  データの正確な転送を保証しないIPでどうしてチェックサムが必要なんだ! と疑問を抱くが,チェックサムとデータの整合性がとれていないパケットは破棄される.上位プロトコルでのデータ再構築に寄与することであろう.データ訂正に関して冗長性のあるプロトコルを重ねていくことによって信頼性が増す. 頭に0xが付いているものは16進数表記で0x0000=0,0x0001=1とすると,2の補数では0xFFFF=-1となるのに対し,1の補数では1の0x0001をそのまま ビット反転した0xFFFEが-1となる.(ちなみに1の補数表現だと0xFFFF=-0) ここで1の補数とか2の補数ということに大した意味はない. 補数和を取るときにつまり足し算をするときにbitがどのように変化するのか?ということが重要である.0xFFFFに0x0001を足したときに 0x0000ではなく,0x0001になってほしい.左に桁上がりしたビットがチェックサム内から跡形もなく消えるのではなく, ちなみに,
IPv6 Header Format
  参考:IP Packet Header


プライベートアドレス()
Aクラス: 10.0.0.0〜10.255.255.255
Bクラス: 172.16.0.0〜172.31.255.255(覚方:イナニイロサイ)
Cクラス: 192.168.0.0〜192.168.255.255(覚方:イチクニイチロッパー)


UDP(User Datagram Protocol)
UDPとはUser Datagram Protocolで以下の特徴を持つ. ●IP と同様,コネクションレス型.誤りのない配送を保証しない. ●IP アドレスに加えて「ポート」を指定することで,通信するプロセスを特定してデータを送受. ●通信のオーバーヘッドが少ないので高速な通信を実現. ●到達信頼性の必要のない情報の送受. ●同報通信が可能.
UDPの利用例 ・DNS(Domain Name Service:Port 42),NTP(Network Time Protocol:Port 123)

TCP(Transmission Control Protocol)
TCPとはTransmission Control Protocolで以下の特徴を持つ. ●相手の受信可能性を事前に確認するコネクション型. ●損失データの再送,データ順序の再構成などをプロトコル内で実施. ●順序を守った誤りのない通信を上位プログラムに提供. ●同ポートへの複数のソケットからの接続を個別に扱える. ●オーバヘッドが大きく,高速性は犠牲.
TCPの利用例 ・ftp(Port 21),ssh(Port 22),telnet(Port 23),smtp(Port 25),http(Port 80), pop(Port 110)
TCPヘッダのフォーマット



参考文献 (Reference)
  1. ジョセフ・オニール(Joseph O'Neil), "独習Java", 翔泳社, 1999



HOME