Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
第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.7k
第14章DNS
kawakawaryuryu
0
90
逆求人イベント
kawakawaryuryu
0
110
Other Decks in Technology
See All in Technology
GitHub Agentic Workflows を触ってみる
htkym
2
920
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
18
14k
SQL Server 2025 最適化されたロック
odashinsuke
0
120
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
190
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
180
営業オントロジーの作り方と、エージェントからの辿り方 ── ナレッジワークの現場から
kworkdev
PRO
1
230
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
220
Apache Iceberg が拓く AI 時代のオープンレイクハウス
tomtanaka
0
210
Snowflake Horizon Catalog と Apache Iceberg で作る オープンなデータ基盤
kitagawaz
0
390
高負荷プロダクション環境におけるAWS Lambdaのリアル 〜スケールとコストを左右する実行ライフサイクルの技術仕様〜
maimyyym
2
850
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
140
Featured
See All Featured
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
Music & Morning Musume
bryan
48
7.4k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
900
Into the Great Unknown - MozCon
thekraken
41
2.7k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
240
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
340
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Optimising Largest Contentful Paint
csswizardry
37
4k
Building the Perfect Custom Keyboard
takai
2
890
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
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アドレスを出力