Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
第6章ICMP 第7章Ping
Search
kawakawaryuryu
March 28, 2017
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
第6章ICMP 第7章Ping
詳解TCP/IP Vol.1プロトコル
kawakawaryuryu
March 28, 2017
More Decks by kawakawaryuryu
See All by kawakawaryuryu
Spring BootのGraceful shutdownって内部でどうやって実現されているの?
kawakawaryuryu
0
1.2k
Spring Boot 1.5→2.1バージョンアップを経験して分かったハマりどころ
kawakawaryuryu
1
3.6k
第14章DNS
kawakawaryuryu
0
85
逆求人イベント
kawakawaryuryu
0
100
Other Decks in Technology
See All in Technology
小さくはじめるSLI/SLO ~育てながら組織に定着させる実践知~ / Starting Small with SLI/SLOs: Building Adoption Through Continuous Growth
nari_ex
7
2k
Claude Codeをどのように キャッチアップしているか
oikon48
13
8.2k
AWS Security Agent といっしょに脅威モデリングをやってみよう
amarelo_n24
0
110
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
350
人材育成分科会.pdf
_awache
4
270
AIネイティブな開発のサプライチェーンリスク対策 〜激動の開発現場でリスクに立ち向かう〜【ZennFes】
cscengineer
PRO
2
130
失敗を資産に変えるClaude Code
shinyasaita
0
680
【NRUG vol.18】KubernetesにおけるNew Relicデータ取得量削減の考え方
nrug_member
0
150
手塩にかけりゃいいってもんじゃない
ming_ayami
0
590
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1.1k
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
500
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6k
The Spectacular Lies of Maps
axbom
PRO
1
810
How to Think Like a Performance Engineer
csswizardry
28
2.7k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
2
400
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
730
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building an army of robots
kneath
306
46k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
AI: The stuff that nobody shows you
jnunemaker
PRO
8
710
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
460
Building AI with AI
inesmontani
PRO
1
1.1k
Transcript
第6章 ICMP 第7章 Ping 詳解TCP/IP VOL.1プロトコル 2017/03/06
第6章 ICMP
ICMP (Internet Control Message Protocol) l エラーメッセージやその他の状態をやりとりするためのプロトコル ◦ 例: ping,
traceroute l IP層の一部とみなされる l IP層、あるいはそれ以上の層(TCP, UDP)で利用される l RFC792に公式仕様が記載 ϩʔϧɾϝοηʔδɾϓϩτίϧ ø ø ý õ çø çΠϯτޱ༦ɺ Ϋγϣϯ Đ Ċ Ĕ ė ɺҙ͖͢ Τϥʔ ɾ ϝο ηʔ δͦͷଞ ͷঢ়ଶ ΛΓऔΓ͢ΔͨΊͷͷͰɺ ͠ Đė ͷҰ෦ͱΈͳ͞ΕΔɻ Đ Ċ Ĕ ė ϝοηʔδ௨ৗɺ Đė ͋Δ͍ͦΕҎ্ͷͷϓϩ ϊ Ϩ ïěĊėɺĜċėð ʹΑͬͯར༻͞ΕΔɻ͍͔ͭ͘ͷ ĐĊ Ĕ ė ϝοηʔδɺϢʔβʔɾ ϓ ϩη ૹ͞ΕΔ Τϥʔ Λੜ͢Δɻ Đ Ċ Ĕ ė ϝοη ʔ δ ɺčİĮĦý õ ç ø ʹࣔ͢Α͏ͳ Đė σʔ λάϥϜͱͯ͠సૹ͞ΕΔɻ Đėç ϔ ο μ ù÷ ϊ ͯ Π τ Đ ė σʔλάϥϜ ĐĊĔė ϝ ο η ʔδ čİ Į õ çýõø çĐ ė σʔλάϥ ϜʹΧϓηϧԽ͞Εͨ ĐĊĔė ϝ ο ηʔδ ę č Ċ ç þĀùç ĢėĶĺĻĬijçøĀÿøĩđʹ Đ Ċ Ĕ ė ͷެ༷͕ࣜهࡌ͞ Ε͍ͯΔ ɻ čİĮõçýõ ç ù ʹ ɺ ĐĊ Ĕ ė ϝοη ʔ δͷܗࣜΛࣔ͢ɻ ࠷ॳͷ û όΠτͯ͢ͷϝο ηʔ δͰಉ
ICMPメッセージの形式 l タイプフィールド l コードフィールド l チェックサムフィールド:ICMPメッセージ全体のエラー検出用フィールド úøç ÿ ϐ
ο τ λ Π ϓ Đ ç ÿ ç • āāāøô Đ ç øý ϐ ο τ ɾ ν Σ ο έ α Ϝ ï ༰λΠϓͱίʔυʹΑΔð č İ Į õ çý õ çù çĐĊĔė ϝοηʔδ ຊষͰɺ Đ Ċ Ĕ ė ϝοηʔδͷ֓ཁΛड़ϖɺΞυϨεɾϚεΫͷཁٻͱԠɺλΠϜελϯϓ οηʔδͷ メッセージのタイプを指定 }
λ Π ϓ ί ʔ υ આ໌ রձ Τϑʔ ɻ
ɻ ΤίʔԠ ïėİĵĮ Ԡɺୈ þ ষð • ú ç ͋ͯઌ౸ୡෆՄā ɻ ΦɺοϫʔΫ౸ୡෆϩđï ୈ Ā ষ ú અð • ϗετ౸ୡෆՄï ୈ Ā ষ ú અð • ù ç ϓϩτίϊϨ౸ୡෆՄ • ú ç ϙʔτ౸ୡෆՄï ୈ ý ষ ü અð • û ç ϑϥάϝϯςʔγϣϯ͕ඞཁ͕ͩɺϑϥάϝϯτͯ͠ • ͍͚ͳ͍͜ͱΛࣔ͢ϐοτΛઃఆï ୈ øø ষ ý અð ü ç ιʔεɾϊϨʔτ͕ࣦഊï ୈ ÿ ষ ü અð • ý ç ͋ͯઌΦɺοτϫʔΫ͕ෆ໌ • þ ç ͋ͯઌϗετ͕ෆ໌ • ÿ ç ൃ৴ݩϗετ͕ݽཱï ø ø øࣜð • Ā ç ͋ͯઌωοτϫʔΫ͕ཧతʹېࢭ͞Ε͍ͯΔ • ø÷ç ͋ͯઌϗετ͕ූۉతʹېࢭ͞Ε͍ͯΔ • øøç ě Ė Ě ʹωοτϫʔΫ౸ୡෆՄï ୈ Ā ষ ú અð • øùç ě Ė Ě ʹϗετ౸ୡෆՄï ୈ Ā ষ ú અð • øúç ϑΟϧλϦϯάͰ௨৴͕ཧతʹېࢭ͞Ε͍ͯΔ • øûç ϗετ༏ઌҧ • øüç ࣄ্࣮ɺ༏ઌஅ • û ç ɻ ൃ৴੍ï جૅతϑϩʔ੍ޚɺୈ øø ষ øø અð • ü ç ϦμΠϨΫï ୈ Ā ষ ü અð ā ç ɻ ΦɺοτϫʔΫͷϦλकΠϨΫτ • ij ç ϗετͷϦλकΠϨΫ • ù ç ě Ė ĚɺΦɺοτϫʔΫͷϦλकΠϨΫ • ú ç ě Ė ĚɺϗετͷϦμΠϨΫτ • ÿ ç ɻ Τίʔཁٻ ïėİĵĮ ཁٻɺୈ þ ষ ð • Ā ç ɻ ϊϨʔλҰࠂï ୈ Ā ষ ý અð • ø÷ç ɻ ϊϨʔλʔئï ୈ Ā ষ ý અð • øøç ࣌ؒաā ɻ సૹதͷੜଘ࣌ؒೋ ĶïěĹĨĪĬĹĶļĻĬɺୈ ÿ ষð • ij ç ϦΞηϯϒϦதͷੜଘ࣌ؒ ĄĖïୈ øø ষ ü અð • øùç ϊĭ ϥϝλā ɻ Đė ϔομʹï ΩϟονΦʔϧɾΤϥʔð • ij ç ඞཁͳΦϓγϣϯͷܽམ • øúç ɻ λΠϜελϯϓཁٻï ୈ ý ষ û અð • øûç ɻ λΠϜελϯϓԠï ୈ ý ষ û અð • øüç ɻ ΠϯϑΥϝʔγϣϯཁٻï ø ø øࣜð • øýç ɻ ΠϯϑΥϝʔγϣϯԠ ï øē Đࣜð • øþç ɻ ΞυϨεɾϚεΫཁٻï ୈ ý ষ ú અð • øÿç ɻ ΞυϨεɾϚεΫԠï ୈ ý ষ ú અð • č İ Į õ çý õ çú çĐĊĔė ϝοηʔδɾλΠϓ ICMPメッセージタイプ l ICMPメッセージはタイプフィールドと コードフィールドによって分類される l メッセージの種類は大まかに二つ ◦ 照会メッセージ ◦ エラーメッセージ
ICMPエラーメッセージ l ICMPエラーメッセージには必ずIPヘッダとエラー発生原因となったIPデータグラムの 最初の8バイトが含まれる l エラーメッセージは以下のものに対しては生成されない ◦ ICMPエラーメッセージ ◦ IPブロードキャストアドレス、IPマルチキャストアドレスへのデータグラム
◦ リンク層ブロードキャストとして送信されたデータグラム ◦ 2つ目以降のフラグメント ◦ ゼロアドレス、ループバックアドレス、ブロードキャストアドレス、マルチキャストアドレスが 発信元であるデータグラム(発信元が1台のホストとして定義されていないデータグラム) l 以上のルールはブロードキャストストームを避けるために作られた LANでMACフレームが永遠に回り続けること 参考: http://itpro.nikkeibp.co.jp/article/Keyword/20090526/330672/?rt=nocnt
ICMPアドレスマスクの要求と応答 l タイプ17, 18 コード0 l ディスクレスシステムが起動時にサブネットマスクを取得するためのもの l ICMP要求をブロードキャストする l
サブネットマスク取得の代替方法としてBOOTPプロトコルがある(第16章) ετʔϜɺ͔ͭͯϒϩʔυΩϟεɾύέοτʹԠͯ͠ૹΒΕͨ Đ Ċ Ĕ ė ΤϥʔʹΑͬͯҾ͖ ى͜͞Ε͍ͯͨɻ ø ø ý õ ú ç Đ Ċ Ĕ ė ΞυϨεɾϚεΫͷཁٻͱԠ Đ Ċ Ĕ ė ΞυϨεɾϚεΫཁٻɺσΟεΫϨεɾγεςϜ͕ىಈ࣌ʹαϒΦɺοɾϚεΫï ୈ ú ষ ü અð Λऔಘ͢ΔͨΊͷͷͰ͋ΔɻཁٻγεςϜ Đ Ċ Ĕ ė ཁٻΛϒϩʔυΩϟε͢Δï ͜Ε σΟεΫϨεɾγεςϜ͕ىಈ࣌ʹ ę Ĉ ę ė Λ༻͍ͯ Đė ΞυϨεΛऔಘ͢Δͷͱಉ༷ð ɻσΟε ΫϨεɾγεςϜ͕αϒΦɺοɾϚεΫΛऔಘ͢Δସํ๏ͱͯ͠ɺୈ øý ষͰղઆ͢Δ ĉ Ė Ė ě ė ϓϩτίϧ͕͋Δɻ čİĮõýõû ɺ Đ Ċ Ĕ ė ΞυϨεɾϚεΫͷཁٻͱԠϝοηʔδͷܗࣜΛࣔͯ͠ ͠ ɺ Δ ɻ ɻ þ çÿ ç øüç øýç ί ʔ υ ï÷ð ν Σ ο έ α Ϝ ࣝผࢠ γʔέϯε൪߸ úù ϐ ο τ ɾ α ϑ ʔ ω ο τ ɾ Ϛ ε Ϋ č İ Į õ çý õ çû çĐĊĔė ΞυϨεɾϚεΫͷཁٻͱԠϝοηʔδ Đ Ċ Ĕ ė ϝοηʔδͷࣝผࢠͱγʔέϯε൪߸ϑΟʔϧυɺૹΓखͷબ ij͜͞ΕɺͦΕΒͷ
ICMPアドレスマスクの要求と応答 l 識別子とシーケンス番号はどの要求に対する応答なのか送り手が判別する のに用いられる ◦ 応答では要求と同じ値で返す ◦ 値は送り手の選択に任される ετʔϜɺ͔ͭͯϒϩʔυΩϟεɾύέοτʹԠͯ͠ૹΒΕͨ Đ
Ċ Ĕ ė ΤϥʔʹΑͬͯҾ͖ ى͜͞Ε͍ͯͨɻ ø ø ý õ ú ç Đ Ċ Ĕ ė ΞυϨεɾϚεΫͷཁٻͱԠ Đ Ċ Ĕ ė ΞυϨεɾϚεΫཁٻɺσΟεΫϨεɾγεςϜ͕ىಈ࣌ʹαϒΦɺοɾϚεΫï ୈ ú ষ ü અð Λऔಘ͢ΔͨΊͷͷͰ͋ΔɻཁٻγεςϜ Đ Ċ Ĕ ė ཁٻΛϒϩʔυΩϟε͢Δï ͜Ε σΟεΫϨεɾγεςϜ͕ىಈ࣌ʹ ę Ĉ ę ė Λ༻͍ͯ Đė ΞυϨεΛऔಘ͢Δͷͱಉ༷ð ɻσΟε ΫϨεɾγεςϜ͕αϒΦɺοɾϚεΫΛऔಘ͢Δସํ๏ͱͯ͠ɺୈ øý ষͰղઆ͢Δ ĉ Ė Ė ě ė ϓϩτίϧ͕͋Δɻ čİĮõýõû ɺ Đ Ċ Ĕ ė ΞυϨεɾϚεΫͷཁٻͱԠϝοηʔδͷܗࣜΛࣔͯ͠ ͠ ɺ Δ ɻ ɻ þ çÿ ç øüç øýç ί ʔ υ ï÷ð ν Σ ο έ α Ϝ ࣝผࢠ γʔέϯε൪߸ úù ϐ ο τ ɾ α ϑ ʔ ω ο τ ɾ Ϛ ε Ϋ č İ Į õ çý õ çû çĐĊĔė ΞυϨεɾϚεΫͷཁٻͱԠϝοηʔδ Đ Ċ Ĕ ė ϝοηʔδͷࣝผࢠͱγʔέϯε൪߸ϑΟʔϧυɺૹΓखͷબ ij͜͞ΕɺͦΕΒͷ
ICMPタイムスタンプの要求と応答 l タイプ13, 14 コード0 l あるシステムから他のシステムに現在の時間を照会するときに用いられる ◦ 知れるのは時間のみ ◦
日付は別の方法で知る必要がある l 戻り値はUTC午前0時からの経過時間(ミリ秒) øû÷õùüùõøúõúúð ʹૹΒΕͨ Đė σʔλάϥϜ͕ɺ࣮ࡍϧʔϓύοΫɾΠϯλϑΣʔεʹૹΒΕͨ ͜ͱ͕Θ͔Δɻ ĐĊĔė ΞυϨεɾϚεΫԠɺཁٻ͕ड͚औΒΕͨΠϯλϑΣʔεͷαϒΦɺο τɾϚεΫʹରԠ͢ΔͷͰͳ͚ΕͳΒͣï ͱ͍͏ͷɺϚϧνϗʔϜɾϗετ֤ΠϯλϑΣ ʔε͝ͱʹҟͳΔαϒΦɺοɾϚεΫΛ͔࣋ͭΒͰ͋Δð ɺํͷέʔεͱཁٻϧʔϓϊĭ π ΫɾΠϯλϑΣʔε͔Βड͚औΒΕ͍ͯΔɻ ø ø ý õ çû çĐĊĔė λΠϜελϯϒͷཁٻͱԠ ĐĊĔė λΠϜελϯϓͷཁٻɺ͋ΔγεςϜ͔ΒଞͷγεςϜʹݱࡏͷ࣌ฉΛরձ͢Δͱ͖ ਔ༻͍ΒΕΔɻਪ͞ΕΔΓɺ ĜěĊïڠఆੈք࣌ā ैདྷͷάϦχοδඪ४࣌ð ޕલ Ė ͔࣌Β ͷܦա࣌ؒï ϛϦඵð ͱͳ͍ͬͯΔɻ͜ͷ ĐĊĔė ϝοηʔδͷ༏ΕͨɺϛϦඵ୯Ґͷਫ਼Λ࣋ ͍ͬͯΔ͜ͱͩɻଞͷϗετ͔Β࣌ؒΛೖख͢Δผͷํ๏ï ͨͱ͑ Ĝ ĕ Đ ğ ͷ ĹīĨĻĬ ίϚϯυð ผͷํ๏ͰΒͳ͚ΕͳΒͳ͍ɻ čİĮõçý õ çý ɺ ĐĊĔė λΠϜελϯϓͷཁٻ͓ΑͼԠϝοηʔδͷܗࣜΛද͍ͯ͠Δɻ ɻ þ ç ÿ ç øüç øýç ί ʔ υ ï ÷ ð ν Σ ο Ϋ α Ϝ ࣝผࢠ γʔέϯε൪߸ úù ϐοτΦϦδωʔτɾλΠϜελϯϓ ù÷ ό Π τ úù ϐ ɺ ϊ τ Ϩ γ ʔ ϒ ɾ λ Π Ϝ ε λ ϯ ϓ úù ϐ ο τ τ ϥ ϯ ε ϛ ο τ ɾ λ Π Ϝ ε λ ϯ ϓ č İ Į õ çý õ çý ç ĐĊĔė λΠϜελϯϓͷཁٻͱԠϝοηʔδ ཁٻଆΦϦδωʔτɾλΠϜελϯϓΛ֨ೲͯ͠ɺཁٻΛૹ৴͢ΔɻԠ͢ΔଆͷγεςϜ
ICMPタイムスタンプの要求と応答 l ICMPタイムスタンプのメッセージ ◦ オリジネートタイムスタンプ: 要求時のタイムスタンプ ◦ レシーブタイムスタンプ: 応答側の受信時のタイムスタンプ ◦
トランスミットタイムスタンプ: 応答側の送信時のタイムスタンプ ΫɾΠϯλϑΣʔε͔Βड͚औΒΕ͍ͯΔɻ ø ø ý õ çû çĐĊĔė λΠϜελϯϒͷཁٻͱԠ ĐĊĔė λΠϜελϯϓͷཁٻɺ͋ΔγεςϜ͔ΒଞͷγεςϜʹݱࡏͷ࣌ฉΛরձ͢Δͱ͖ ਔ༻͍ΒΕΔɻਪ͞ΕΔΓɺ ĜěĊïڠఆੈք࣌ā ैདྷͷάϦχοδඪ४࣌ð ޕલ Ė ͔࣌Β ͷܦա࣌ؒï ϛϦඵð ͱͳ͍ͬͯΔɻ͜ͷ ĐĊĔė ϝοηʔδͷ༏ΕͨɺϛϦඵ୯Ґͷਫ਼Λ࣋ ͍ͬͯΔ͜ͱͩɻଞͷϗετ͔Β࣌ؒΛೖख͢Δผͷํ๏ï ͨͱ͑ Ĝ ĕ Đ ğ ͷ ĹīĨĻĬ ίϚϯυð ผͷํ๏ͰΒͳ͚ΕͳΒͳ͍ɻ čİĮõçý õ çý ɺ ĐĊĔė λΠϜελϯϓͷཁٻ͓ΑͼԠϝοηʔδͷܗࣜΛද͍ͯ͠Δɻ ɻ þ ç ÿ ç øüç øýç ί ʔ υ ï ÷ ð ν Σ ο Ϋ α Ϝ ࣝผࢠ γʔέϯε൪߸ úù ϐοτΦϦδωʔτɾλΠϜελϯϓ ù÷ ό Π τ úù ϐ ɺ ϊ τ Ϩ γ ʔ ϒ ɾ λ Π Ϝ ε λ ϯ ϓ úù ϐ ο τ τ ϥ ϯ ε ϛ ο τ ɾ λ Π Ϝ ε λ ϯ ϓ č İ Į õ çý õ çý ç ĐĊĔė λΠϜελϯϓͷཁٻͱԠϝοηʔδ ཁٻଆΦϦδωʔτɾλΠϜελϯϓΛ֨ೲͯ͠ɺཁٻΛૹ৴͢ΔɻԠ͢ΔଆͷγεςϜ
ICMPポート到達不可エラー l タイプ3 コード3 l ポートに到達できないときのエラーメッセージ l UDPはポートが何かのプロセスに占有されていて応答しない場合はICMP ポート到達不可を返す οηʔδΛແࢹ͠ɺ
ü ඵޙʹ࠶ Ĝ ċ ė σʔλάϥϜΛૹΓग़͍ͯ͠Δï ୈ ü Ļ Ĺ ðɻ͜ΕΫϥΠ Ξϯ͕͖͋ΒΊΔ·Ͱɺͦͷޙ úø ij܁Γฦ͞ΕΔɻ ͜͜Ͱɺ Đ Ċ Ĕ ė ϝοηʔδϙʔτ൪αͷ͋ͯઌͳ͠ͰϗετฉͰަ͞ΕɺҰํɺ֤ ù÷ ϊĭ Π τ ͷ Ĝ ċ ė σʔλάϥϜಛఆͷϙʔτ ïùĀùûð ͔Βಛఆͷϙʔτ ïÿÿÿÿð ʹૹΒΕ͍ͯΔ͜ͱʹ ҙ͠Α͏ɻ ֤ Ĝ ċ ė ͷߦͷ࠷ޙʹ͋Δ ù÷ ɺ Ĝ ċ ė σʔλάϥϜͷதͷσʔλͷ͞Ͱ͋Δɻ͜ͷྫͷ ù÷ ɺ ě č ě ė ͷ ù όΠτͷΦϓίʔυɺ Ā ύΠͷψö ϧϨͯ ऴΘΔจࣈເྻ Đ Ϧ ð ĵĬ ĻĨĺĪİ ޱ İ ͷ߹đ ܭ े ͯ Ͱ ɺ ͋ Δ ï ě č ě ė ͷύέπτߏͷৄंࠠࡉ ď ฉ ļʹ͍ͭͯ čİĮõ øüõçø Λ ࢀ èij ͤ Α ð ɻ ij İ İ đ ͡ྫΛ ĻĪķīļĹĵķ ͷôĬ Φϓγϣϯͱͱʹ࣮ߦ͢ΕɺૹΓࢠʹฦ͞ΕΔ Đ Ċ Ĕ ė ϙʔτ౸ୡ ෆՄϝοηʔδͷਖ਼֬ͳ͞ΛΔ͜ͱ͕Ͱ͖Δɻͦͷ͞ þ÷ ό Π τ ͯ é ɼ čİĮõçý õ çĀ ͷΑ͏ͳߏ ʹͳ͍ͬͯΔɻ ČĻįĬĴĬĻç ιμ øû όΠτ Đėç ϔ þ ༦ ɺ ù÷ ϊ ʪ Π τ Đė σʔλάϥϜ ø ç Đ Ċ Ĕ ė ϝ ο η ʔ δ õ õ õ õ ø ç øô Đ Ċ Ĕ ė ϝοηʔδͷσʔλ෦ ôø ΤϥʔΛൃੜͨ͠ σʔλάϥϜͷ Đė ϔ ο μ ɺ ù÷ όΠτ čİĮõçý õ çĀ çİ Ĝ ċ ė ϙʔτ౸ୡෆՄʯͷྫͰฦ͖ͬͯͨ ĐĊĔė ϝοηʔδ
ICMP到達不可メッセージ形式 l タイプ3 コード0〜15 l 2番目の32ビット値は0 ◦ ただしコード4のときは、パスMTUディスカバリによりルータが32ビット値の低位16ビット分に 送信インターフェースのMTUを設定する(11章で取り上げる) l
エラーを発生させたIPヘッダとIPデータグラムのデータの少なくとも最初の 8バイトが含まれる Đ Ċ Ĕ ė ͷϊϨʔϧͷ Đ ͬͱͯ͠ɺ Đ Ċ Ĕ ė Τϥʔɾϝοηʔδ ïķõÿø ͷ čİĮõýõú ͷ࠷ޙͷཝΛࢀরð ʹɺΤϥʔΛൃੜͤͨ͞ςɻʔλάϥϜͷ Đė ϔομï ͯ͢ͷΦϓγϣϯΛؚΉð ͦ͠Εʹଓ͍ ͯগͳ͘ͱ࠷ॳͷ ÿ όΠτؚ͕·Ε͍ͯͳ͚ΕͳΒͳ͔ͬͨɻຊॻͷྫͰɺ Đė ϔομʹ౷ ʪ࠷ॳͷ ÿ όΠτʹɺ Ĝ ċ ė ϔομ ïčİĮõ øø õ çù ð ؚ͕·ΕΔɻ ॏཁͳͷɺ Ĝ ċ ė ϔομʹؚ·Ε͍ͯΔͷ͕ɺൃ৴ݩͱ͋ͯઌͷϙʔτ൪߸Ͱ͋Δͱ͍͏͜ ͱͩɻ͜ͷ͋ͯઌϙʔτ൪߸ ïÿÿÿÿð ͕ Đ Ċ Ĕ ė ϙʔτ౸ୡෆՄͷݪҼͱͳ͍ͬͯΔɻൃ৴ݩϙʔτ ൪ ߸ ïùĀùûð ɺ Đ Ċ Ĕ ė ΤϥʔΛड͚औͬͨγεςϜ͕ಛఆͷϢʔβʔɾϓϩηεï ͜ͷྫͰ ě č ě ė ΫϥΠΞϯτð ͱؔ࿈͚ͮ͢ΔͨΊʹ༻͍ΒΕΔɻ ΤϥʔΛىͨ͜͠σʔλάϥϜͷ Đė ϔομ͕ૹΓฦ͞ΕΔཧ༝ͷ ø ͭ ɺ Đ Ċ Ĕ ė ʹରͯ͠ɺޙ ʹଓă ÿ όΠτͷ༰ï ຊॻͷྫͰ Ĝ ċ ė ϔομð Λมͤ͞Δํ๏ΛΒͤΔͨΊͷϓϩτί ϊϨɾϑΟʔϧυ͕ Đė ϔομʹؚ·Ε͍ͯΔ͔ΒͰ͋Δɻ ě Ċ ė ϔομ ïčİĮõ øþõùð ʹ͍ͭͯٞ͢ Δͱ͖ɺൃ৴ݩͱ͋ͯઌͷϙʔτ൪߸͕ ě Ċ ė ϔομͷ࠷ॳͷ ÿ όΠτʹؚ·Ε͍ͯΔ͜ͱΛղ આ͢Δɻ Đ Ċ Ĕ ė ౸ୡෆՄϝοηʔδͷҰൠతͳܗ͕ࣜ čİĮõýõø÷ ʹࣔ͞Ε͍ͯΔɻ ÷ þ ç ÿ ç ø ü ç øýç Ĕ ï ú ð ç Đ ç āđç ô Ĺ ô ï÷ôøüðç Đ ʜ Ϝ ະ༻ï÷Ͱͳ͚ΕͳΒͳͭ͠ Đė ϔομï ΦϓγϣϯΛؚΉð ò ΦϦδφϧ Đė σʔλάϥϜͷσʔλͷ࠷ॳͷ ÿ όΠτ č İ Į õ çý õ çø÷ç ĐĊĔė ౸ୡෆՄϝοηʔδ úøç ě ç İ ç čİĮõçý õ çú ͯģ ίʔυ Ė ͔Β øü ·Ͱͷ øý छͷ Đ Ċ Ĕ ė ౸ୡෆՄϝοηʔδ͕͋Δ͜ͱΛࣔͨ͠ɻ
BSDのICMPメッセージ処理 l 同一の実装の中でもメッセージの処理方法が異なる λ Π ϓ ί ʔ υ આij
Ϧ ij ॲ đijıĢ ɻ ɻ ΤίҰԠ Ϣʔβʔɾϓϩηε ú ç ͋ͯઌ౸ୡෆՄā ɻ ΦɺοϫʔΫ౸ୡෆՄ İĕĶç ĹĶļĻĬçĻĶçįĶĺĻđç ϗετ౸ୡෆՄ İĕĶçĹĶļĻĬçĻĶçįĶĺĻ đ ç ù ç ϓϩτίϧ౸ୡෆ ă ij đ İĊĶĵĵĬĪĻİĶĵçęĬĭļĺĬīđç ú ç ϙʔτ౸ୡෆՄ İĊĶĵĵĬĪĻİĶĵçęĬĭļĺĬīđç û ç ϑϥάϝϯςʔγϣϯ͕ඞཁ͕ͩɺϑϥά İĔĬĺĺĨĮĬçĻĶĶçijĶĵĮđç ϝϯτ͍͚ͯ͠ͳ͍͜ͱΛࣔ͢ϐοτ ü ç ιʔεɾϊϨʔτ͕ࣦഊ İĕĶç ĹĶļĻĬçĻĶçįĶĺĻ đ ç ý ç ͋ͯઌΦɺοτϫʔΫ͕ෆij ø ðı İĕĬĻľĶĹIJçİ ĺ çļĵĹĬĨĪįĨĩijĬđç þ ç ͋ͯઌϗετ͕ෆ໌ İĕĶç ĹĶļĻĬçĻĶçįĶĺĻ đ ç ÿ ç ൃ৴ݩϗετ͕ݽཱ ï ø ø øࣜð İĕĶç ĹĶļĻĬçĻĶçįĶĺĻ đ ç Ā ç ͋ͯઌωοτϫʔΫ͕đ î é Ļ Đ Ă ཧతʹېࢭ͞Εͯ İĕĬĻľĶĹIJçİ ĺ ç ļĵĹĬĨĪįĨĩijĬđç ēɺ Δ ø÷ç ͋ͯઌϗετ͕ཧతʹېࢭ͞Ε͍ͯΔ İĕĶç ĹĶļĻĬçĻĶçįĶĺĻđç øøç ě Ė Ě ʹΦɺοτϫʔΫ౸ୡෆՄ İĕĬĻľĶĹIJçİ ĺ ç ļĵĹĬĨĪįĨĩijĬđç øùç ě Ė Ě ʹϗετ౸ୡෆՄ İĕĶç ĹĶļĻĬçĻĶçįĶĺĻđç øúç ϑΟϧλϦϯάͰ௨৴͕ཧతʹېࢭ͞Ε ï ແࢹð ͍ͯΔ øûç ϗετ༏ઌҧ ï ແࢹð øüç ࣄ্࣮ɺ༏ઌஅ ï ແࢹð û ç ɻ ൃ৴੍ ě Ċ ė Χ ʔ ω ϊ Ϩ ɺ Ĝ ċ ė ແࢹ ü ç ϦλकΠϨΫτā ɻ ΦɺοτϫʔΫͷϦλʔΠϨΫτ ΧʔωϊϨ͕ϊϨʔςΟϯάɾςʔ ϒϊϨΛߋ৽ Đ ç ϗετͷϦλकΠϨΫτ Χô İɺϊϨ͕ϧʔςΟϯάɾςʔ ϓϊϨΛߋ৽ ù ç ě Ė ĚɺωοτϫʔΫͷϦμΠϨΫτ ΧʔΦɺϊϨ͕ϧʔςΠϯάɾςʔ ϓϊϨΛߋ৽ ú ç ě Ė ĚɺϗετͷϦλî ΠϨΫτ ΧʔΦɺϊϨ͕ϊϨʔςΠϯάɾςʔ ϒϊϨΛߋ৽ ÿ ç ɻ Τίʔཁٻ ΧʔωϊϨ͕ԠΛ î ø ā Ā ç ɻ ϊϨʔλҰࠂ Ϣʔβʔɾϓϩηε ø÷ç ɻ ϊϨʔλʔئ Ϣʔβʔɾϓϩηε øøç ࣌ؒաā ɻ సૹதͷੜଘ࣌ؒ Ą ÷ Ϣʔβʔɾϓϩηε ϦΞηϯϒϦதͷੜଘ࣌ؒ Ą ÷ Ϣʔβʔɾϓϩηε øùç ύϥϝλā ɻ Đė ϔομʹï ΩϟονΦʔϧɾΤϥʔð İėĹĶĻĶĪĶijçĵĶĻçĨĽĨİijĨĩijĬđç ij ç ඞཁͳΦϓγϣϯͷܽམ İėĹĶĻĶĪĶijçĵĶĻçĨĽĨİijĨĩijĬđç øúç ɻ λΠϜελϯϓཁٻï ୈ ý ষ û અð ΧʔΦɺϊϨ͕ԠΛੜ øûç ɻ λΠϜελϯϓԠï ୈ ý ষ û અð Ϣʔβʔɾϓϩηε øüç ɻ ΠϯϑΥϝʔγϣϯཁٻï ø ø øࣜð ï ແࢹð øýç ɻ ΠϯϑΥϝʔγϣϯԠ ï ø ø øࣜð Ϣʔβʔɾϓϩηε øþç ɻ ΞυϨεɾϚεΫཁٻï ୈ ý ষ ú અð Χʔωö Ϩ͕ԠΛੜ øÿç ɻ ΞυϨεɾϚεΫԠï ୈ ý ষ ú અð Ϣʔβʔɾϓϩηε čİĮõýõøùç ûõûĉĚċ ʹΑΔ Đ Ċ Ĕ ė ϝοηʔδϯάॲཧͷλΠϓ ýõýç ûõûçĉĚċͷĐ Ċ Ĕ ėϝοηʔδॲཧ Āú
6章まとめ l ICMP ◦ エラーメッセージやその他の状態をやりとりするためのプロトコル l ICMP要求・応答メッセージ ◦ ICMPアドレスマスク ◦
ICMPタイムスタンプ ◦ 識別子とシーケンス番号を持つ l ICMPエラーメッセージ ◦ ポート到達不可エラー ◦ IPヘッダとそれに続くIPデータグラムの最初の8バイト(発信元と宛先ポート番号)を持つ
第7章 Ping
Ping l 他のホストが到達可能かどうかテストするプログラム l ICMPエコー要求メッセージをホストに送り、ICMPエコー応答メッセージが 帰ってくるのを待つ l 問題のボトルネックを決定するためのスタートポイント l あるホストまでの往復時間を測定する
Pingプログラム l サーバーはクライアントから送られて来た識別子、シーケンス番号、 オプションのデータをそのまま送り返さなければならない ◦ 送り手側で応答を識別するため l UNIX実装では識別子は送り手のプロセスのプロセスID l シーケンス番号は0からスタートし、新しいエコー要求が送られるたびに増加
ϐεɺΞυϨεɾϚεΫͱλΠϜελϯϓཁٻ·ͨɺΧʔωϊϨͯɺμΠϨΫτʹॲཧ͞ΕΔð ɻ čİĮõþõø Đ Ċ Ĕ ė ΤίʔཁٻͱΤίʔԠϝοηʔδΛ͍ࣔͯ͠Δɻ ɻ þ çÿ ç øüç øýç ί ʔ υ ï ÷ ð ν Σ ο έ α Ϝ ࣝผࢠ γʔέϯε൪߸ Φϓγϣϯͷσʔλ čİĮõçþõøç ΤίʔཁٻͱΤίʔԠͷ Đ Ċ Ĕ ė ϝοηʔδͷܗࣜ úøç þ ç İ ç ଞͷ Đ Ċ Ĕ ė রձϝοηʔδͱಉ༷ɺαʔόʔࣝผࢠͱγʔέϯε൪߸ϑΟʔϊϨυΛΤίʔ͠ ͳ͚ΕͳΒͳ͍ɻ·ͨɺΫϥΠΞϯτ͔ΒૹΒΕͨΦϓγϣϯσʔλΤίʔ͞Εͳ͚Εͳ
IPレコードルートオプション (RRオプション) l pingの-Rオプション l ICMPエコー応答を受け取ったとき、通過したルータやホストのすべての IPアドレスが出力される l 通過する全てのルータは自分のIPアドレスをIPヘッダのオプションに 追加していく
l 要求、応答どちらも通過したルータはIPアドレスを追加する
IPヘッダのレコードルートオプションの形式 l IPヘッダのオプションの上限値は40バイト、レコードルートオプションの最初 が3バイトであるから、追加できるIPアドレスは9個まで l コード:IPオプションのタイプ(RRオプションは7) l データ長:RRオプションのバイト数(通常は39) l ポインタ:次のIPアドレスが格納される場所
ͩ ɻ čİĮõ ú õ ç ø ç ï ķ õ çúÿð Ͱ Đė ϔομͷϔομ͕ û ϐοτɾϑΟʔϧυɺͯ͢ͷ Đė ϔομ͕ øü ݸ ͷ úù ϐοτɾϫʔυ ïý÷ ϊĭ Πð ʹ੍ݶ͞Ε͍ͯΔ͜ͱΛݟͨɻ Đė ϔομͷݻఆ͕ ù÷ όΠτ ͯ î õ ɼ ę ę ΦϓγϣϯͷΦʔόʔϔουï ͜Εʹ͍ͭͯޙड़͢Δð ͕ ú όΠτͰ͋Δ͜ͱ͔ΒɺϦε τʹ úþ όΠτ ïý÷ôù÷ôúð ͕͞Εɺ Ā ͭͷ Đė ΞυϨε·ͰʞΧόʔͰɺ͖Δɻ Ĉ ę ė Ĉ ĕ Č ě ͷॳظ ͷࠒɺ Ā ͭͷ Đė ΞυϨεͰेͱݟΒΕ͍͕ͯͨɺԟ෮ͷϦετͰ͋Δ͜ͱΛߟ͑Ε ïôę ΦϓγϣϯΛ͚ͭͯ ķİĵĮ Λ࣮ߦͨ͠߹ð ɺࠓͰͦͷར༻ਔݶք͕͋ΔͱݴΘ͟ΔΛಘͳ ͍ ï ୈ ÿ ষͰģ σʔλάϥϜͷϊϨʔτΛܾఆ͢Δ ěĹĨĪĬĹĶļĻĬ πʔϊϨΛղઆ͢Δð ɻ͜͏ͨܽ͠ɺ ͋ΔͷͷɺϨίʔυɾϊϨʔτɾΦϓγϣϯ Đė ΦϓγϣϯͷॲཧͷৄࡉΛνΣοΫ͢ΔͨΊʹ ʹཱ͍ͬͯΔɻ čİĮõçþ õ çú Đė σʔλάϥϜͷ ę ę ΦϓγϣϯͷҰൠతͳܗࣜΛ͍ࣔͯ͠Δɻ úĀ όΠτ č İ Į õ çþ õ çú çĐ ė ϔομͷϨίʔυɾϧʔτɾΦϓγϣϯͷҰใܗࣜ ίʔυ Đė ΦϓγϣϯͷλΠϓΛࢦఆ͢Δ øϊĭ ΠτͷϑΟʔϊϨυͰ͋Δɻ ę ę Φϓγϣϯͷ
IPタイムスタンプオプション l 通過したルータのタイムスタンプが知れる l コード:IPタイムスタンプオプションは0x44 l データ長:オプションの合計のバイト数(通常は36または40) l ポインタ:次の利用可能なエントリ σʔλάϥϜ͕ྲྀΕΔϊϨʔτ͕ࣔ͞ΕΔɻ
Đ Ċ Ĕ ė ϦμΠϨΫτʹ͍ͭͯɺୈ Ā ষ ü અͰৄࡉΛ ղઆ͢Δɻ ø ø þ õ çû çĐė λΠϜελϯϒɾΦϓγϣϯ Đė λΠϜελϯϓɾΦϓγϣϯɺϨίʔυɾϊϨʔτɾΦϓγϣϯͱΑ͘ࣅ͍ͯΔɻ čİĮõ þ õ ç þ Đė λΠϜελϯϓɾΦϓγϣϯͷܗ͕ࣜࣔ͞Ε͍ͯΔ ïčİĮõ þ õ ç ú ͱൺֱͤΑð ɻ û÷ ό Π τ č İ Į õ çþ õ çþ çĐ ė ϔομͷλΠϜελϯϓɾΦϓγϣϯͷҰൠܗࣜ
IPタイムスタンプオプション l FL(フラグフィールド, 4ビット):下図 l OF(オーバーフローフィールド, 4ビット):タイムスタンプのスペースがなくなっ た場合に増加させる č İ
Į õ çþ õ çþ çĐ ė ϔομͷλΠϜελϯϓɾΦϓγϣϯͷҰൠܗࣜ λΠϜελϯϓɾΦϓγϣϯͷίʔυɾϑΟʔϧυ Ė Ŀ û û Ͱ͋ΔɻσʔλͱϙΠϯλɺ ϨίʔυɾϧʔτɾΦϓγϣϯͱಉ͡ͰɺΦϓγϣϯͷ߹ܭͷ͞ï ௨ৗ úý ͋Δ͍ û÷ð ͱ࣍ͷར ༻ՄೳͳΤϯτϦ ï üɺĀɺøú ͳͲð Λࣔ͢ϙΠϯλͰ͋Δɻ ࣍ͷ ùͭͷϑΟʔϧυ û ϐοτͯɼ Ėč ΦʔόʔϑϩʔɾϑΟʔϊϨυɺ čē ϑϥάɾϑ ΟʔϧυͰ͋ΔɻλΠϜελϯϓɾΦϓγϣϯͷૢ࡞ɺ čİĮõ þ õ ç ÿ ʹࣔ͢Α͏ʹɺϑϥάɾϑΟʔ ϊϨυʹΑͬͯߦΘΕΔɻ ϑϥά આ໌ ɻ λΠϜελϯϓͷΈΛهɻ čİĮõ þ õ ç þͰࣔͨ͠ͷɻ ø ç ֤ϧʔλʔ Đė ΞυϨεͱλΠϜελϯϓΛه͢ΔɻΦϓγϣϯɾϦετʹ͜ ΕΒͷΞͷ û ͭ·Ͱͷεϖʔε͔͠ͳ͍ɻ ú ç ૹΓࢠΦϓγϣϯɾϦετΛ࠷େ û ͭͷ Đė ΞυϨεͷΞͱ ÷ λΠϓελϯϓ ͰॳظԽ͢ΔɻϧʔλʔϦετʹ͋Δ࣍ͷ Đė ΞυϨε͕ϧʔλʔࣗͷͷͱ ద߹ͨ͠ͱ͖ͷΈλΠϜελϯϓΛه͢Δɻ čİĮõþõÿç λΠϓελϯϓɾΦϓγϣϯͷϑϥάͷҙຯ λΠϜελϯϓͷεϖʔε͕ͳ͘ͳͬͨ߹ɺϧʔλʔΦʔόʔϑϩʔɾϑΟʔϊϨυΛ૿Ճ
7章まとめ l Pingプログラム ◦ TCP/IPが稼働する二つのシステム間の接続テストを行うもの ◦ ICMPエコー要求とICMPエコー応答を利用 ◦ カーネルのICMP実装の一部 l
IPレコードルートオプション ◦ 通過するルータのIPアドレスを出力 l IPタイムスタンプオプション ◦ 通過するルータのタイムスタンプ、IPアドレスを出力