Open1
Linuxで動かしながら学ぶTCP/IPネットワーク入門
TCP/IPとは
- インターネットを構成するプロトコルの総称
- コンピュータ同士が会話するための共通言語のようなイメージ
- TCPとIPもそれぞれプロトコル
IPアドレス
コンピューターのIPを確認する
root@18bd86182100:/var/tmp# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
link/tunnel6 :: brd ::
14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
valid_lft forever preferred_lft forever
- 127.0.0.1や172.17.0.2がコンピュータのIPアドレス
-
loやeth0はネットワークインターフェイスのこと- LANケーブルをさすネットワークインターフェイスカード(NIC)や無線LANアダプタなど
- IPアドレスはネットワークインターフェイスに付与される
- 127.0.0.1は自分自身のIPでループバックアドレスという
- ループバックアドレスが付与されているネットワークインターフェイスをループバックインターフェイスとよぶ
- ループバックインターフェイスは仮想的なもの
- 172.17.0.2がリクエスト送信元のIPアドレス
リクエスト送信元のIPアドレスを確認
別ターミナルで以下のコマンドを実行して、ping -c 3 8.8.8.8 をした時
tcdumpで通信を覗くことができる
pingの通信はIPとICMPで成り立っている
root@18bd86182100:/var/tmp# tcpdump -tn -i any icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
IP 172.17.0.2 > 8.8.8.8: ICMP echo request, id 4, seq 1, length 64
IP 8.8.8.8 > 172.17.0.2: ICMP echo reply, id 4, seq 1, length 64
IP 172.17.0.2 > 8.8.8.8: ICMP echo request, id 4, seq 2, length 64
IP 8.8.8.8 > 172.17.0.2: ICMP echo reply, id 4, seq 2, length 64
IP 172.17.0.2 > 8.8.8.8: ICMP echo request, id 4, seq 3, length 64
IP 8.8.8.8 > 172.17.0.2: ICMP echo reply, id 4, seq 3, length 64
経路を確認する
routerのIPが確認することができる
root@18bd86182100:/var/tmp# traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1 172.17.0.1 0.122 ms 0.021 ms 0.014 ms
2 10.6.5.1 122.630 ms 122.537 ms 121.780 ms
3 45.87.213.97 121.113 ms 119.882 ms 119.770 ms
4 193.27.15.50 134.692 ms 136.632 ms 136.678 ms
5 193.27.15.176 118.855 ms 117.882 ms 117.834 ms
6 101.203.88.173 376.199 ms 375.841 ms 376.186 ms
7 108.170.242.129 116.573 ms 273.717 ms 108.170.242.161 276.459 ms
8 142.251.226.141 273.291 ms 273.271 ms 216.239.41.71 277.315 ms
9 8.8.8.8 272.969 ms 272.931 ms 272.104 ms
次のルートを確認する
次にパケットを渡す相手をルーティングテーブルで管理している
root@18bd86182100:/var/tmp# ip route show
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.2
読み方
- default(どれにも該当しなかった場合を意味する)/172.17.0.0/16は送信先のIPアドレス
- via/dev以降が次にパケットを渡す相手
-
devとは、該当する送信先についてはそのネットワークインターフェイスを使って通信することを意味する。つまりローカルの通信はネットワークインターフェイスを使うということかな?
-
A dev B proto x scope x src C
- 送信元IPがCで送信先IPがAの通信はデバイスに流すこと
-