1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 (32bits width) +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options (may exist) | ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | ... | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ネットワーク上を流れるデータの Byte Order (= Network Byte Order)は Big Endian である。 すなわち、32ビット幅のデータは、0〜7, 8〜15, 16〜23, 24〜31の順で流れる。
(注) 32ビットのデータ 0x12345678 をメモリの0番地〜3番地に記憶する場合、
Archtectureによって以下のように異なる。ちなみに、MC68000やSPARCは
Big Endian, Intel の 80486, Pentium などは Little Endian である。
Endian | 0番地 | 1番地 | 2番地 | 3番地 |
---|---|---|---|---|
Big Endian | 0x12 | 0x34 | 0x56 | 0x78 |
Little Endian | 0x78 | 0x56 | 0x34 | 0x12 |
(例)renoir(133.99.10.7) から vermeer (133.99.10.3) にtelnetしていて'a'と タイプしたときのIPパケット tcpdump -c 1 -x 'port 23' vermeer# tcpdump -c 1 -x 'port 23' tcpdump: listening on le0 11:08:13.973330 renoir.tsuda.ac.jp.1024 > vermeer.tsuda.ac.jp.telnet: P 2716420308:2716420309(1) ack 243695523 win 17520 (DF) [tos 0x10] 4510 0029 7099 4000 4006 ab55 8563 0a07 8563 0a03 0400 0017 a1e9 48d4 0e86 7fa3 5018 4470 6e8c 0000 6161 6161 6161 133.99.10.7 = 0x85630a07, 133.99.10.3 = 0x85630a03
routerとは、複数のネットワーク上に接続されたシステムであり、 他のネットワークへのデータグラムは、まずrouterに送られる。
例1. Fig.3.3 同じネットワーク上の計算機に送る
例2. Fig.3.4 ルータを経由して他のネットワーク上の計算機に送る
ホスト部 all 0 --- ネットワーク・アドレス ホスト部 all 1 --- ブロードキャスト・アドレス特殊なIPアドレスも存在する(Fig.3.9)。
IP Address | Available? | 説明 | |||
NetID | SubnetID | HostID | SRC | DST | |
0 | 0 | OK | NG | このネット上のこのホスト自身(制限あり)(*1) | |
0 | hostid | OK | NG | このネット上の特定のホスト(制限あり)(*1) | |
127 | Any | OK | OK | loopback address | |
-1 | -1 | NG | OK | limited broadcast (転送されない)(*2) | |
NetID | -1 | NG | OK | NetIDのnet direct broadcast (*3) | |
NetID | SubnetID | -1 | NG | OK | subnet direct boradcast to netid.subnetid |
NetID | -1 | -1 | NG | OK | all subnet direct broadcast to netid (*4) |
(*1) ... bootpなどでホストのIPアドレスを取得する際に使う (*2) ... 255.255.255.255 (*3) ... subnetを使わない場合 (*4) ... 本来は全てのサブネットに転送すべきだが、現在の多くの実装では転送しない
karel.tsuda.ac.jp# ifconfig -a le0: flags=63inet 133.99.194.1 netmask ffffff00 broadcast 133.99.194.255 ether 8:0:20:19:e7:b1 le1: flags=63 inet 133.99.10.1 netmask ffffff00 broadcast 133.99.10.255 ether 8:0:20:19:e7:b1 lo0: flags=49 inet 127.0.0.1 netmask ff000000 karel.tsuda.ac.jp# netstat -in Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue le0 1500 133.99.194.0 133.99.194.1 2149806 0 2033336 0 113552 0 le1 1500 133.99.10.0 133.99.10.1 1697755 0 2045358 29 59620 0 lo0 1536 127.0.0.0 127.0.0.1 152766 0 152766 0 0 0 karel.tsuda.ac.jp# netstat -nr Routing tables Destination Gateway Flags Refcnt Use Interface 133.99.161.121 133.99.194.250 UGH 0 0 le0 127.0.0.1 127.0.0.1 UH 3 1279 lo0 133.99.161.126 133.99.194.250 UGH 0 0 le0 133.99.161.127 133.99.194.250 UGH 0 0 le0 default 133.99.194.250 UG 1 281896 le0 133.99.144.0 133.99.194.250 UG 0 1722 le0 133.99.128.0 133.99.194.250 UG 0 19633 le0 133.99.160.0 133.99.194.250 UG 0 1484 le0 133.99.192.0 133.99.194.250 UG 0 712 le0 133.99.145.0 133.99.194.250 UG 0 0 le0 133.99.161.0 133.99.194.250 UG 0 3469 le0 133.99.193.0 133.99.194.250 UG 0 0 le0 133.99.162.0 133.99.194.250 UG 0 19 le0 133.99.10.0 133.99.10.1 U 6 71977 le1 133.99.194.0 133.99.194.1 U 24 151456 le0 133.99.195.0 133.99.194.250 UG 0 520 le0 133.99.196.0 133.99.194.250 UG 0 0 le0 133.99.102.0 133.99.194.250 UG 0 0 le0 133.99.198.0 133.99.194.250 UG 0 1015 le0