俺、サービス売って家買うんだ

Swift, Kotlin, Vue.js, 統計, GCP / このペースで作ってればいつか2-3億で売れるのがポっと出来るんじゃなかろうか

ICMPまとめ

f:id:ie-kau:20160920010043p:plain


今日はICMPについて。

概略

  • ICMP = The Internet Control Message Protocol
  • TCP/IPパケットの転送中において発生した各種エラーの通知や、動作の確認などを行うために利用されるプロトコルping等のツールで利用されている
  • IPの上位プロトコルに当たるが、IPと同様のにネットワーク層のプロトコルであるかのような振る舞いをする
    • IPヘッダ内のprotocol numberは1

ICMPのフレームフォーマット

  • ICMPのヘッダはIPヘッダに後続する
  • 主に使われるのは最初の固定4バイト、TypeとCode(※後述)

f:id:ie-kau:20160921201435p:plain

Type / Code

よく使うもののみ。

Type Code 説明
0
Echo Reply
0 Echo reply
pingの返信
3
Destination Unreachable
0 net unreachable
1 host unreachable
サーバーがダウンしている等
2 protocol unreachable
3 port unreachable
サーバーまではたどり着いているがそのポートをlistenしてない
4 fragmentation needed and DF set
ルータからIPヘッダ内のDF flag(Don't Fragment flag)がonの状態で、転送容量上限のデータが届いた場合にルータに返される。
※参考
Resolve IP Fragmentation, MTU, MSS, and PMTUD Issues with GRE and IPSEC - Cisco
5 source route failed
8
Echo Request
0 Echo request
pingのリプライ要求

ping

  • IPネットワークにおいて接続機器の到達性を確認するためのツール
  • ICMPのecho requestパケットを対象機器(node)に投げecho replyが帰ってくることで到達性を確認する事ができる

自分のMacでループバックアドレスに向けて3回pingを送ってみる。

ping -c 3 127.0.0.1                                                     ⏎
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.074 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.110 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.053/0.079/0.110/0.024 ms

ラウンドトリップタイム(RTT)、パケットロス率がわかる。

疑問

  • pingを受けてreplyを返すのって誰、NIC?
    • だとしたら、無限ループみたいな処理で待ち受けてるのかな??わからん。

感想とか

  • 実務経験が無いけどCiscoのサイトを読むと勉強になる

参考

関連記事

www.ie-kau.net