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
Web技術の基本 2回目 / Introduction to Web technologies...
Search
muttan
December 22, 2017
Technology
0
240
Web技術の基本 2回目 / Introduction to Web technologies 2nd class
muttan
December 22, 2017
Tweet
Share
More Decks by muttan
See All by muttan
さわやか待ち時間LINE botを作った話 / Sawayaka LINE bot
bath_poo_
0
100
コンテナ開発入門 1回目/Introduction to Container Development 1
bath_poo_
0
130
ISUCONってなんだ / What is ISUCON
bath_poo_
0
310
Web技術の基本 8回目 / Introduction to Web technologies 8th class
bath_poo_
0
160
Web技術の基本 7回目 / Introduction to Web technologies 7th class
bath_poo_
0
140
Web技術の基本 6回目 / Introduction to Web technologies 6th class
bath_poo_
1
230
Web技術の基本 5回目 / Introduction to Web technologies 5th class
bath_poo_
0
110
Web技術の基本 4回目 / Introduction to Web technologies 4th class
bath_poo_
0
190
Web技術の基本 3回目 / Introduction to Web technologies 3rd class
bath_poo_
0
230
Other Decks in Technology
See All in Technology
State of Open Source Web Mapping Libraries
dayjournal
0
200
ジョブマッチングサービスにおける相互推薦システムの応用事例と課題
hakubishin3
3
620
AIチャットボット開発への生成AI活用
ryomrt
0
100
利きプロセススケジューラ
sat
PRO
4
2.6k
マイベストのデータ基盤の現在と未来 / mybest-data-infra-asis-tobe
mybestinc
2
1.9k
SREによる隣接領域への越境とその先の信頼性
shonansurvivors
1
330
家具家電付アパートの冷蔵庫をIoT化してみた!
scbc1167
0
140
Windows Autopilot Deployment by OSD Guy
tamaiyutaro
0
300
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
ZOZOTOWNのホーム画面をパーソナライズすることの難しさと裏話を語る
f6wbl6
1
470
Intuneお役立ちツールのご紹介
sukank
3
740
Deno+JSRでパッケージを作って公開する
askua
0
110
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
27
4.2k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Documentation Writing (for coders)
carmenintech
65
4.4k
Embracing the Ebb and Flow
colly
84
4.5k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2.1k
Agile that works and the tools we love
rasmusluckow
327
21k
Unsuck your backbone
ammeep
668
57k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
How STYLIGHT went responsive
nonsquared
95
5.2k
Building Adaptive Systems
keathley
38
2.3k
Transcript
Webٕज़ͷجຊ 2ճ Keisuke KAMIYA
ࠓճͷςʔϚ
Chapter 2 WebͱΠϯλʔωοτٕज़
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • ΫϥΠΞϯταʔόϞσϧ • αʔό ωοτϫʔΫ্Ͱ, ใαʔϏεΛఏڙ͢ΔׂΛ ࣋ͭίϯϐϡʔλ(WebϖʔδΛϗετ͍ͯ͠Δଆ) • ΫϥΠΞϯτ
αʔό͔Βఏڙ͞ΕͨใαʔϏεΛར༻͢Δଆ ͷίϯϐϡʔλ(ҰൠϢʔβʔ)
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • Πϯλʔωοτ ੈքதͷLANʢࣗձࣾ, ֶߍͳͲͷൣғͷωοτϫʔ Ϋʣಉ࢜Λଓͨ͠, ੈքنͷେ͖ͳωοτϫʔΫͷ͜ ͱ. ͬͱ͍͏ͱ, IPΛ༻ͨ͠ੈքنͷωοτϫʔΫͷ
͜ͱΛΠϯλʔωοτͱݺͿ[1] ‣ ӡӦ͍ͯ͠Δͷ, ڧ͍ͯݴ͑ICANN(The Internet Corporation for Assinged Names and Numbers)ͱ IETF(Internet Engineering Task Force) [1] https://www.nic.ad.jp/ja/basics/beginners/internet.html
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • Internetʹଓ͢ΔʹΠϯλʔωοταʔϏεϓϩό Πμ(ISP)ͱܖ͢Δඞཁ͕͋Δ ‣ OCN, ϑϨοπ, ίϛϡϑΝ, ΒΒ, etc…
• ੈքதʹෳͷISP͕ଘࡏ͠, ͦΕΒ͕ଓ͠߹͏͜ͱͰ ̍ͭͷωοτϫʔΫ͕ܗ͞Ε͍ͯΔ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ ΠϯλʔωοτΛଓ͢ΔϓϩόΠμ(ISP), ֊ߏʹ ͳͬͯͭͳ͕͍ͬͯΔ. → IXʹͭͳ͕͍ͬͯΔ(ຢ, ͭͳ͕͍ͬͯΔ) • Internet Exchange(IX)
ϓϩόΠμʔಉ࢜Λଓ͢Δڌ. IX͕͋Δ͜ͱͰ, ϓϩ όΠμಉ͕࢜ଓ͢Δඞཁ͕ͳ͘ճઢͷΛݮΒ͢ ͜ͱ͕ग़དྷΔ → 20109݄ͷ࣌Ͱ͓Αͦ300ͷIX͕ଘࡏ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ • 1࣍ϓϩόΠμ IXܦ༝Ͱଓ͍ͯ͠ΔΑ͏ͳେنͳϓϩόΠμ • ̎࣍ϓϩόΠμ 1࣍ͷԼʹҐஔ͢ΔதখنͳϓϩόΠμ զʑ͕ଓ͢Δࡍ, ࣍ ϓϩόΠμ
࣍ ϓϩόΠμ *9 ࣍ ϓϩόΠμ
WebΛ࣮ݱ͢ΔίϯϐϡʔλωοτϫʔΫ ࣍ *41 ࣍ *41 ࣍ *41 ࣍ *41 ࣍
*41 ࣍ *41 *9 *9 ࣍ *41 ࠃ *9 *41 *41 ւ֎ *9 *41 *41 ւ֎ LAN ࣍*41ಉ࢜Λ݁Ϳ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
ϓϩτίϧͱ
ίϯϐϡʔλಉ͕࢜௨৴Λߦ͏ͨΊʹ, ڞ௨ͷϧʔϧ(ϓ ϩτίϧ)͕ඞཁʹͳΔ → ϓϩτίϧ ωοτϫʔΫʹଓ͞Εͨػثಉ͕࢜௨৴Λ͢Δͨ Ίͷϧʔϧखॱͷ͜ͱ. ͜ΕΒΛϨΠϠʢ֊ߏ ʣʹͯ͠ཧ͢Δ •
ձΛྫʹߟ͑ͯΈΔ ϓϩτίϧͱ
ϓϩτίϧͱ υϥϚ໘ന͔ͬͨͶ લఏ:ࣄͷղऍ͕Ұக͍ͯ͠Δ લఏ: ຊޠΛ͍ͯ͠Δ લఏ:ిΛͬͯΛ͍ͯ͠Δ ϓϩτίϧΛձͰߟ͑Δ ಉ͡֊ʹ͓͚Δڞ௨ͷଋࣄˠϓϩτίϧ
ϓϩτίϧͱ ୈ/ ୈ/ ୈ/ ୈ/ ୈ/ ୈ/ ϓϩτίϧ
ϓϩτίϧ ϓϩτίϧ ૹ࿏ ΠϯλϑΣʔε ΠϯλϑΣʔε ΠϯλϑΣʔε ΠϯλϑΣʔε ίϯϐϡʔλA ίϯϐϡʔλB ಉ͡ಉ࢜ͷଋࣄ ػೳΛ ఏڙ
• ֤ͷϓϩτίϧಠཱ͍ͯ͠Δ → ͋ΔΛมߋͨ͠ͱͯ͠ଞʹӨڹΛ༩͑ͳ͍ → ಉ͡ಉ࢜ม͑ͯ௨৴ཱ͢Δ ‣ ֦ுੑॊೈੑʹΜͩγεςϜΛ࡞Մೳ ϓϩτίϧͱ :FTUFSEBZ`T57
ESBNB લఏ:ࣄͷղऍ͕Ұக͍ͯ͠Δ લఏ: ӳޠΛ͍ͯ͠Δ લఏ:ిΛͬͯΛ͍ͯ͠Δ ӳޠʹมΘͬͯ ͳ͍
• ֤ͷϓϩτίϧಠཱ͍ͯ͠Δ → ͋ΔΛมߋͨ͠ͱͯ͠ଞʹӨڹΛ༩͑ͳ͍ → ಉ͡ಉ࢜ม͑ͯ௨৴ཱ͢Δ ‣ ֦ுੑॊೈੑʹΜͩγεςϜΛ࡞Մೳ • ௨৴ʹඞཁͳػೳΛׂ͢Δ͜ͱͰ
→ ϓϩάϥϜ1ͭ1͕ͭίϯύΫτʹͳΔ → ͷڥքΛ໌֬Խ͢Δ͜ͱ͕ग़དྷΔ ‣ ϓϩάϥϜͷϞδϡʔϧԽͱಉ༷ͷߟ͑ ϓϩτίϧͱ
• ׂ͠, ֊ߏͰମܥԽͨ͠ͷͷ໊শ ‣ ωοτϫʔΫΞʔΩςΫνϟ ‣ ϓϩτίϧελοΫ ‣ ϓϩτίϧεΠʔτ ϓϩτίϧͱ
ϓϩτίϧඪ४Խͷྺ࢙
ϓϩτίϧඪ४Խͷྺ࢙ • ίϯϐϡʔλ௨৴ͷॳظ(1960) ϓϩτίϧͷ֊Խ, ඪ४Խҙࣝ͞Εͳ͔ͬͨ • 1974 IBM͕ωοτϫʔΫΞʔΩςΫνϟͱ͍͏ߟ͑ํΛҙࣝͨ͠ SNA(System Network
Architecture)Λ։ൃ • ͜ͷ͋ͱ֤͕ࣾ࣍ʑʹωοτϫʔΫΞʔΩςΫνϟΛൃද ‣ SNA(IBM) ‣ DECnet(DEC) ‣ FNA(Fujitsu) etc…
ϓϩτίϧඪ४Խͷྺ࢙ • Կ͕ʹͳΔ͔ʁ ֤ࣾͰ༷͕ҟͳΔͨΊ, ҟͳΔϝʔΧʔಉ࢜Ͱ௨৴͢ Δ͜ͱ͕Ͱ͖ͳ͍ ‣ ಉࣾ͡Ͱ, ϝʔΧʔ͕ҟͳΕ௨৴ෆՄೳ ‣
ϦϓϨʔεΛߦͳ͏ࡍ, Ҏલͱಉ͡ϝʔΧʔͷ ΛΘ͟ΔΛಘͳ͍ ίϯϐϡʔλωοτϫʔΫͷීٴʹো
ϓϩτίϧඪ४Խͷྺ࢙ • ඪ४Խͷػӡͷߴ·Γ ͜ͷ··ͰωοτϫʔΫͷීٴ͕ਐ·ͳ͍ͷͰ, ISO(ࠃࡍඪ४Խػߏ)͕ඪ४ԽΛߦͳ͏ → OSIϓϩτίϧ(Open System Interconnection Protocol)ͷੜ
‣ 1990ʹͳͬͯͬͱͨ͠
ϓϩτίϧඪ४Խͷྺ࢙ • TCP/IP(1980) UNIXಠࣗͷωοτϫʔΫΞʔΩςΫνϟΛ࠾༻ ‣ ࣌, UNIXֶज़ݚڀ༻Ͱ͞Ε͍ͯͨ ‣ ΧϦϑΥϧχΞେֶόʔΫϨʔߍͷBill Joy͕BSD
UNIXΛ࡞ ͠, ͦ͜ʹTCP/IP͕࣮͞Εͨ(1981RFCެ։, 1983࣮) → ιʔείʔυ͕ެ։͞Ε͍ͯͨͷͰ, ݚڀऀΛ࢝Ί༷ʑͳਓ ͕ӾཡՄೳͩͬͨ → TCP/IP͕ීٴ OSIϓϩτίϧੜͷཪͰ…
ϓϩτίϧඪ४Խͷྺ࢙ • OSI͕ීٴ͠ͳ͔ͬͨཧ༝ • ༷ͷࡦఆʹ͕͔͔࣌ؒΓ͗ͨͨ͢Ί, Λ࡞Δ͜ ͱ͕Ͱ͖ͳ͔ͬͨ • ωοτϫʔΫ, ίϯϐϡʔλͷਐาʹॊೈʹରԠ͢Δ
͜ͱ͕ग़དྷΔ৫༷͕ଘࡏ͠ͳ͔ͬͨ
ϓϩτίϧඪ४Խͷྺ࢙ • TCP/IP͕ීٴͨ͠ཧ༝ ‣ ͭͳ͕Δ͜ͱ࠷ॏࢹ - ࣮Λઌʹߦ༷ͬͯࡦఆ ‣ ༷ͯ͢ެ։͞ΕΔ -
RFC(Request for Comments)Ͱެ։
ϓϩτίϧඪ४Խͷྺ࢙ • OSIϓϩτίϧͲ͏ͳͬͨͷ͔ ݁ہීٴ͠ͳ͍··ऴΘͬͯ͠·͕ͬͨ, ͦͷաఔͰ࢈ ·ΕͨΨΠυϥΠϯOSIࢀরϞσϧʹ௨৴ʹඞཁͳػ ೳ͕ମܥతʹ͏·͘·ͱΊΒΕ͍ͯͨ → ωοτϫʔΫͷཧղ(ͱΓΘ͚TCP/IPͷཧղ)ʹ, OSI
ࢀরϞσϧ͕ޮՌత
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
TCP/IPͱ
TCP/IPͱ • TCP/IP Πϯλʔωοτʹଓ͢ΔͨΊͷ௨৴ϓϩτίϧҰࣜ ϓϩτίϧ ʢུশʣ ϓϩτίϧʢϑϧωʔϜʣ ༻్ )551 )ZQFS5FYU5SBOTGFS
1SPUPDPM 8FCϒϥβͱαʔόͷؒͰσʔλͷ ΓऔΓΛ͢Δ࣌ʹ༻ '51 'JMF5SBOTGFS1SPUPDPM ίϯϐϡʔλؒͰϑΝΠϧΛΓͱΓ͢Δ ͷʹ༻ 4.51 4JNQMF.BJM5SBOTGFS 1SPUPDPM ిࢠϝʔϧΛૹ৴͢Δ࣌ʹ༻ 101 1PTU0⒏DF1SPUPDPM ϝʔϧαʔό͔ΒࣗͷϝʔϧΛऔΓग़͢ ࣌ʹ༻͢Δ ϓϩτίϧͷྫ
TCP/IPͱ TCP/IP4ʹ͔Ε͍ͯΔ ϓϩτίϧελοΫ 04*ࢀরϞσϧ 5$1*1 ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ ϓϨθϯςʔγϣϯ ηογϣϯ τϥϯεϙʔτ
τϥϯεϙʔτ ωοτϫʔΫ Πϯλʔωοτ σʔλϦϯΫ ωοτϫʔΫΠϯλʔϑΣʔε ཧ
TCP/IPͱ ͦΕͧΕͷ, ࣍ͷΑ͏ͳׂΛ͍࣋ͬͯΔ ֤ͷׂ 5$1*1 ׂ ΞϓϦέʔγϣϯ ΞϓϦέʔγϣϯ͝ͱͷΓऔΓΛ نఆ τϥϯεϙʔτ
σʔλͷׂํ๏ ࣭ͳͲΛنఆ Πϯλʔωοτ ωοτϫʔΫؒͷ௨৴Λنఆ ωοτϫʔΫΠϯλʔϑΣʔε ίωΫλܗঢ়पͳͲ ཧతͳ༷Λنఆ
TCP/IPͱ ϓϩτίϧͷྫ Ҿ༻ɿhttp://www.cellbiol.com/bioinformatics_web_development/chapter-1-internet-networks-and-tcp-ip/the-tcpip-family-of-internet-protocols/
֤ͷػೳ(E-mailΛͱʹ֤ͨ͠ͷׂ)
֤ͷػೳʢΞϓϦέʔγϣϯʣ • ΞϓϦέʔγϣϯಉ࢜ͷ௨৴ʹؔΘΔ෦Λنఆ • ϝʔϧιϑτͷػೳΛ2ͭʹ͚ͯߟ͑Δ ‣ ௨৴ʹؔΘΒͳ͍ػೳ ໊݅, ຊจ, ը૾,
etc… ‣ ௨৴ʹؔΘΔػೳ ೖྗ͞ΕͨσʔλΛૹ৴͢Δ → ΞϓϦέʔγϣϯͷׂ
֤ͷػೳʢΞϓϦέʔγϣϯʣ • ૹ৴ϘλϯΛԡ͢ͱ, ΞϓϦέʔγϣϯϓϩτίϧͷॲཧ͕։࢝ ‣ ࣍ͷΑ͏ͳใ͕ϔομͱͯ͠༩͞ΕΔ - ຊจͷใ - ѼઌͲ͔͜
• ड৴ଆ, ૹΒΕ͖ͯͨϔομͱσʔλΛղੳͯ͠, HDDʹอଘ͢ ΔͳͲඞཁͳॲཧΛߦ͏ ‣ ͏·͘ड৴Ͱ͖ͳ͍߹, ΤϥʔϝοηʔδΛฦ͢ʢΞϓϦ έʔγϣϯݻ༗ͷΤϥʔॲཧʣ ‣ ϝʔϧΛૹ৴ͯ͠, ड৴ଆ͕ిࢠϝʔϧΛ֨ೲ͢Δͱ͜Ζ·ͰΛ ΞϓϦέʔγϣϯ͕ߦ͍ͬͯΔ
֤ͷػೳʢϓϨθϯςʔγϣϯʣ • ίϯϐϡʔλͷγεςϜʹΑͬͯ, σʔλͷදݱܗࣜ(จ ࣈίʔυͳͲ)ҟͳΔ ‣ ૹ৴ଆ, ड৴ଆͰ͍ͬͯΔιϑτOS͕ҟͳΔͱ, ظͨ͠ͱ͓Γͷද͕ࣔ͞Εͳ͍ࣄ͕͋Δ •
ʮίϯϐϡʔλݻ༗ͷදݱํࣜʯ͔ΒʮωοτϫʔΫ શମͰڞ௨ͷදݱํࣜʯʹม͠, ड৴ݩͰʮίϯ ϐϡʔλݻ༗ͷදݱํࣜʯʹ͢ͷ͕ϓϨθϯςʔ γϣϯ
֤ͷػೳʢϓϨθϯςʔγϣϯʣ • σʔλͷѹॖํ๏จࣈίʔυ, ҉߸Խ๏ͳͲΛنఆ ‣ OSΞϓϦέʔγϣϯʹݻ༗ͳσʔλͷදݱܗࣜͱ, ωοτϫʔΫ্Ͱ౷Ұ͞ΕͨදݱܗࣜͱΛ૬ޓม ͢Δ ૹ৴ݩ:Windows ૹ৴ݩ:Unix
Encode:Shift-JIS ڞ௨ͷίʔυʹม Encode:ISO-2022-JP Encode:EUC-JP ௨৴࿏Ͱͷϧʔϧ
֤ͷػೳʢηογϣϯʣ • ηογϣϯ ؔ࿈ͷ͋Δ1࿈ͷॲཧͷ։͔࢝Βऴྃ·Ͱͷશظؒ ૹ৴ଆ ड৴ଆ ϝʔϧૹ৴։࢝ OK From :
xxxx ૹ৴ OK To : xxxx ૹ৴ OK ຊจ ૹ৴ OK ηογϣϯ ίωΫγϣϯ ड͚ख֬ೝ ૹΓख֬ೝ
֤ͷػೳʢηογϣϯʣ ηογϣϯͰ • ηογϣϯΛ͍ͭ։࢝͢Δ͔ ‣ ίωΫγϣϯཱ֬ͷλΠϛϯά • ηογϣϯΛ͍ͭऴྃ͢Δ͔ ‣ ίωΫγϣϯ։์ͷλΠϛϯά(λΠϛϯάΛࢦఆ
͢Δ͚ͩͰ, ࣮ࡍʹ։์͢ΔΘ͚Ͱͳ͍) • ͲͷΑ͏ʹίωΫγϣϯΛ͏͔ ‣ ௨৴ํࣜͷબ
֤ͷػೳʢτϥϯεϙʔτʣ • ηογϣϯͷࢦࣔʹैͬͯ, ࣮ࡍʹίωΫγϣϯΛཱ֬, ։์Λ ߦ͏ ‣ ϗετؒͷཧతͳ௨৴खஈΛ࡞Δ • ύέοτΛదͳΞϓϦέʔγϣϯʹৼΓ͚
• ΞϓϦέʔγϣϯʹదͨ͠σʔλͷ࣭อূ ‣ 1bitͷޡΓڐ͞Εͳ͍σʔλ(E-mail, FTP, etc…) - ίωΫγϣϯܕ௨৴ ‣ σʔλͷਖ਼֬ੑΑΓ, ࿈ଓੑ͕ॏཁͳσʔλ(ετϦʔϛϯά σʔλ) - ίωΫγϣϯϨεܕ௨৴
֤ͷػೳʢτϥϯεϙʔτʣ • ૹ৴ͨ͠σʔλ͕ԿΒ͔ͷཁҼͰಧ͔ͳ͔ͬͨ߹ ‣ ίωΫγϣϯܕ௨৴(TCP) - ࠶ૹཁٻΛߦ͏ ‣ ίωΫγϣϯϨεܕ௨৴(UDP) -
࠶ૹߦΘͳ͍ • σʔλసૹͷ৴པੑΛอূ͢Δ
֤ͷػೳʢτϥϯεϙʔτʣ • ૹ৴ͨ͠σʔλ͕ԿΒ͔ͷཁҼͰಧ͔ͳ͔ͬͨ߹ ‣ ίωΫγϣϯܕ௨৴(TCP) - ࠶ૹཁٻΛߦ͏ ‣ ίωΫγϣϯϨεܕ௨৴(UDP) -
࠶ૹߦΘͳ͍ • σʔλసૹͷ৴པੑΛอূ͢Δ
• ωοτϫʔΫͱωοτϫʔΫ͕ଓ͞ΕͨڥͰ, ૹ৴ ϗετ͔Βड৴ϗετ·ͰσʔλΛಧ͚Δ ֤ͷػೳʢωοτϫʔΫʣ Ethernet Ethernet ATM PPP (ઐ༻ઢ)
ATM σʔλϦϯΫ1۠ؒͷ௨৴Λ࣮ݱ ωοτϫʔΫ࠷ऴత·Ͱͷ௨৴(End to End)࣮ݱ σʔλϦϯΫ ωοτϫʔΫ
• ͜ΕΒͷػೳΛ࣮ݱ͢Δʹ, ҎԼͷ2͕ඞཁ ‣ Ѽઌ(ΞυϨε)ͷཧ - IPΞυϨεΛ༻͍ͯཧ ‣ ܦ࿏੍ޚ -
ϧʔλΛ༻͍ͯܦ࿏੍ޚ • IP(Internet Protocol)͕͜ΕΒΛఏڙ͍ͯ͠Δ ֤ͷػೳʢωοτϫʔΫʣ
• σʔλϦϯΫͱ ֤ͷػೳʢσʔλϦϯΫʣ Internet router router σʔλϦϯΫ
σʔλϦϯΫ • ཧతʹͭͳ͕͍ͬͯΔϊʔυؒͷ௨৴Λ࣮ݱ ྡؒϊʔυ ྡؒϊʔυͰແ͍ ྡؒϊʔυͰແ͍ ಉҰϦϯΫ্ʹ͋Δ router router
֤ͷػೳʢσʔλϦϯΫʣ • ྡؒϊʔυͰ௨৴Λߦ͏ͨΊʹ, ௨৴ͷ࠷খ୯ҐͰ͋ ΔύέοτʢϑϨʔϜʣΛ࡞Δ • ྡϊʔυಉ࢜Λࣝผ͢ΔͨΊͷΞυϨε͕ඞཁ ‣ MACΞυϨε(Media Access
Control Address) ‣ ػثͦΕͧΕʹׂΓͯΒΕ͓ͯΓ, جຊతʹมߋ ෆՄೳʢϕϯμʹΑ͕ͬͯҟͳΔʣ
֤ͷػೳʢཧʣ • ϑϨʔϜΛߏ͢ΔϏοτྻΛཧ৴߸ʹม • έʔϒϧͷछྨ, ܗঢ়ͷن֨ΛܾΊΔ ిؾ৴߸ʹม
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
IPΞυϨεͱϙʔτ൪߸ • IPΞυϨε ֤ϊʔυΛҰҙʹࣝผ͢ΔͨΊͷΞυϨε ‣ Πϯλʔωοτ্ͰҰҙͳΞυϨε - άϩʔόϧIPΞυϨε ‣ LANͰͷҰҙͳΞυϨε
- ϓϥΠϕʔτIPΞυϨε ‣ άϩʔόϧIPΞυϨε, ICANN͕ཧ͍ͯ͠Δ(ຊ ࠃͰJPNIC͕ཧ)
IPΞυϨεͱϙʔτ൪߸ *1ΞυϨεͷ ྨ ར༻༻్ ཧ৫ આ໌ άϩʔόϧ*1 ΠϯλʔωοτͰ ͷ௨৴ *$"//ͱ
ͦͷԼ෦৫ +1/*$ Πϯλʔωοτʹ ͓͍ͯҰҙͰͳ͚ ΕͳΒͳ͍ ϓϥΠϕʔτ*1 -"/Ͱͷ௨৴ -"/ͷ ཧऀ ɾಉҰ-"/ͰΞυ Ϩεʹॏෳ͕ͳ͍Α͏ ʹઃఆ ɾ֎෦ͱଓ͢Δͨ Ίʹ/"5͕ඞཁ ICANN : Internet Corporation for Assigned Names and Numbers JPNIC : Japan Network Information Center
IPΞυϨεͱϙʔτ൪߸ • IPv4ͷΞυϨεݸ 32bitͰදݱ͞ΕΔ → 2^32 → 43ԯݸ • IPv6ͷΞυϨεݸ
128bitͰදݱ͞ΕΔ → 2^128 → 340ݸ 340ͱ, 3.4×10^38ݸͷΞυϨε͕ଘࡏ͢Δ͜ͱʹͳ Δ. • ΞδΞଠฏ༸ҬͰ, IPv4ΞυϨε͢Ͱʹރׇ ʲࢀߟʳhttps://www.nic.ad.jp/ja/ip/ipv4pool/
• ϙʔτ൪߸ ΞϓϦέʔγϣϯΛࣝผ͢ΔͨΊͷΞυϨε ‣ IPΞυϨεͰ૬खͷίϯϐϡʔλΛಛఆ, σʔλϦϯΫͰͷ ૬खͷࣝผʹMACΞυϨεΛ༻ )551 DMJFOU 1035
5$1 IPΞυϨεͱϙʔτ൪߸ '51 αʔό 1035 5$1 44) αʔό 1035 5$1 4.51 αʔό 1035 5$1 )551 αʔό 1035 5$1 '51 DMJFOU 1035 5$1 %BUB *1 ϗετ 172.23.12.14 Ѽઌ ϙʔτͰࣝผ
• ϙʔτ൪߸ར༻Ͱ͖Δࣈͷൣғ͕ݶΒΕ͍ͯΔ(ܾ ΊΒΕ͍ͯΔ) IPΞυϨεͱϙʔτ൪߸ ϙʔτͷൣғ ϙʔτͷྨ આ໌ ʙ Σϧϊϯϙʔτ 8FMMLOPXO1PSU
͢ͰʹαʔϏεϓϩτίϧʹ ׂΓͯΒΕ͍ͯΔ ʙ Ϩδελʔυϙʔτ ιϑτΣΞϕϯμͷ ಠࣗΞϓϦέʔγϣϯͰ༻ ʙ μΠφϛοΫϙʔτ ࣗ༝ʹ༻Մೳ
IPΞυϨεͱϙʔτ൪߸ ϙʔτ൪߸ αʔϏε໊ ༰ GUQ pMFUSBOTGFS <$POUSPM> TTI
44)3FNPUF-PHJO 1SPUPDPM IUUQ 8PSME8JEF8FC )551 OUQ /FUXPSL5JNF 1SPUPDPM IUUQT IUUQQSPUPDPMPWFS 5-444- Σϧϊϯϙʔτͷྫ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
• URL Πϯλʔωοτ্ͷϦιʔεΛද͢จࣈྻͷ͜ͱ URLͱυϝΠϯ http://example.com/index.html httpΛ༻͢Δ example.comʹΞΫηε index.htmlΛཁٻ URLͷྫ
• URLͷߏจ URLͱυϝΠϯ http://example.com:80/index.html ᶃ ᶄ ᶅ ᶆ ໊শ ༰
ᶃ εΩʔϜ໊ ϓϩτίϧͷࢦఆ IUUQ GUQ pMF FUDʜ ᶄ ϗετ໊ ଓઌͷαʔόΛࢦఆ ᶅ ϙʔτ൪߸ ଓઌͷαʔόͷϙʔτ൪߸ ʢ௨ৗলུՄೳʣ ᶆ ύε໊ ଓઌͷࢿݯΛࢦఆ
• ϗετ ωοτϫʔΫͷίϯϐϡʔλʹ͚ΒΕ໊ͨલ • υϝΠϯ ωοτϫʔΫʹ͚ΒΕ໊ͨલ URLͱυϝΠϯ XXX EC QD
ϗετ໊ FYBNQMFDPN υϝΠϯ໊ XXXFYNBQMFDPN QDFYNBQMFDPN FQDN FQDN:Fully Qualified Domain Name ϗετ໊ͱυϝΠϯ໊ͱܨ͛ͨͷ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
DNS • DNS(Domain Name System) ϗετ໊ʢٴͼυϝΠϯ໊ʣͱIPΞυϨεͷରԠ͚Λޮ Α͘ཧ͢ΔͨΊͷγεςϜ ‣ υϝΠϯΛ֊ߏʹͯ͠อ͍࣋ͯ͠Δ ‣
͜ͷγεςϜ͕͋Δ͜ͱͰ, ར༻ऀIPΞυϨεΛ ଧͭʢهԱ͓ͯ͘͠ʣඞཁ͕ͳ͍ ‣ ѼઌIPΞυϨε͕มߋʹͳͬͯ, DNSϨίʔυΛมߋ ͢Εྑ͍ - ར༻ऀมΘΒͣFQDNͰΞΫηεՄೳ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail ͰғΜͩwwwผ
DNS • ໊લղܾ DNSαʔό͕ߦͳ͏໊લͷݕࡧ ‣ DNSαʔόωʔϜαʔόͱݺΕΔ ‣ DNSࢄσʔλϕʔεͳͷͰ, ֤υϝΠϯͰ໊લΛ ཧ͍ͯ͠Δ
www.google.co.jpͷΞυϨεʁ 172.217.31.131 DNSαʔό ΫϥΠΞϯτ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail hamako-thsυϝΠϯͷத, hamako-thsυϝΠϯͰཧ͢Δ
DNS root jp ed ac co ne u-fukui www com
fr uk org ໊લ֊ߏʹͳ͍ͬͯΔ hamako-ths www mail jpυϝΠϯͷத,jpυϝΠϯͰཧ͢Δ
DNS • DNSࢄσʔλϕʔεͳͷͰ, ֤υϝΠϯͰ໊લΛ ཧ͍ͯ͠Δ ‣ ࣗͷॴଐ͍ͯ͠ΔυϝΠϯҎ֎ͷ໊લ, ͲͷΑ͏ ʹ໊ͯ͠લղܾΛߦͳ͏ͷ͔ʁ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ XXXHPPHMFDPKQͷ ΞυϨεʁ
XXXHPPHMFDPKQΘ͔Βͳ͍͚Ͳ ϧʔτͳΒͬͯΔʜ google.co.jp
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό google.co.jp XXXHPPHMFDPKQͷ ΞυϨεʁ
XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ KQͳΒͬͯΔ*1ΞυϨ ε YYYYYYYYY ͍ ߹ Θ ͤ ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ DPKQͳΒͬͯΔ*1Ξυ Ϩε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ XXXHPPHMFDPKQΘ͔Βͳ͍ ͚Ͳ HPPHMFDPKQͳΒͬͯΔ *1ΞυϨε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ͍߹Θͤ google.co.jp XXXHPPHMFDPKQͷ
ΞυϨεʁ *1ΞυϨε YYYYYYYYY ճ
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ճ XXXHPPHMFDPKQͷΞυϨε
YYYYYYYYYYYͰ͢ google.co.jp
DNS ࣗυϝΠϯͷ DNSαʔό ΫϥΠΞϯτ ϧʔταʔό jpαʔό co.jpαʔό ճ google.co.jp
͍ ߹ Θ ͤ ճ ͍߹Θͤ ճ ͍߹Θͤ ճ ͍ ߹ Θ ͤ ճ ͍߹Θͤ ࠶ؼత͍߹Θͤ ɹʜ࠷ऴతͳ͑Λཁٻ ෮త͍߹Θͤ ʜతͷ݁Ռ͕ಘΒΕΔ·Ͱ ͍߹ΘͤΛ܁Γฦ͢
DNS • Ϧκϧό DNSαʔόʹ͍߹ΘͤΛ͢ΔϓϩάϥϜ ‣ ελϒϦκϧό - ࠶ؼత͍߹ΘͤΛ͢ΔϦκϧό - DNSΛར༻͢ΔιϑτʢϒϥβʣʹΈࠐΈࡁ
‣ ϑϧαʔϏεϦκϧό - ໊લղܾ͕ྃ͢Δ·Ͱ, ෮త͍߹ΘͤΛߦͳ͏Ϧκ ϧό - ϧʔταʔόͷIPΞυϨεࣄલʹ͍ͬͯΔඞཁ͕͋Δ
DNS • Ωϟογϡαʔό ໊લղܾͨ݁͠ՌΛҰఆ࣌ؒΩϟογϡ͢Δ ‣ ௨ৗ, ϑϧαʔϏεϦκϧόΩϟογϡαʔόʹ ͳ͍ͬͯΔ
࣍ 1. WebΛ࣮ݱ͢Δίϯϐϡʔλωοτ ϫʔΫ 2. Πϯλʔωοτͷඪ४ϓϩτίϧ 3. TCP/IP 4. IPΞυϨεͱϙʔτ൪߸
5. URLͱυϝΠϯ 6. DNS 7. HTTP
HTTP • HTTP(Hyper Text Transfer Protocol) ϋΠύʔςΩετͷΓऔΓΛඪ४Խͨ͠ͷ ‣ ϋΠύʔςΩετͷཁٻ, ૹ৴खॱ
‣ Webϖʔδ͕ଘࡏ͠ͳ͍߹, సૹ͢Δ߹ εςʔλείʔυ ҙຯ ϦΫΤετޭ YY ϦμΠϨΫτ ېࢭ͞Ε͍ͯΔ ݟ͔ͭΒͳ͔ͬͨ खॱΛඪ४Խ͢Δ͜ͱͰ, ࡞ݩʹΑΔґଘΛݮΒ͢ ΩʔϫʔυɿHTTP
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 1. ΫϥΠΞϯτ͕URLΛࢦఆ 2. WebαʔόʹHTTPϦΫΤετΛૹΔ 3. Webαʔό͕ϦΫΤετΛղੳ 4. ΫϥΠΞϯτϨεϙϯεΛฦ͢ 5.
ϨεϙϯεΛWebϒϥβ͕ղੳ͠දࣔ͢Δ ᶃ ᶄHTTP Request ᶅ ᶆResponse ᶇ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 1. ΫϥΠΞϯτ͕URLΛࢦఆ URL(Uniform Resource Locator)Λࢦఆͯ͠ϦΫΤετ http://example.com/index.html httpΛ༻͢Δ example.comʹΞΫηε index.htmlΛཁٻ
URLͷҰൠతͳදݱܗࣜ ʢεΩʔϜ໊ʣɿʢεΩʔϜ͝ͱͷදݱܗࣜʣ ΩʔϫʔυɿURL
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 2. WebαʔόʹHTTPϦΫΤετΛૹΔ ։࢝ߦɾϔομɾϘσΟͰߏ͞Ε͍ͯΔ • ։࢝ߦ HTTPͷϝιου(GET, POST, PUTͳͲ)ͱϦΫΤετର, HTTPόʔδϣϯใ
• ϔομ User-AgentAccept-Type, Content-TypeͳͲ • ϘσΟ ૹ৴͍ͨ͠σʔλͦͷͷ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ • HTTPϔομͷྫ https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_RequestsΑΓҾ༻ ։࢝ߦ ϘσΟ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 3. Webαʔό͕ϦΫΤετΛղੳ 4. ΫϥΠΞϯτϨεϙϯεΛฦ͢ • εςʔλεߦ ϓϩτίϧͷόʔδϣϯ(௨ৗHTTP/1.1), εςʔλείʔυ, εςʔλεϝοηʔδ
• ϔομʔ EtagConent-TypeͳͲ༷ʑͳใ • ϘσΟ ϦΫΤετͨ͠σʔλͦͷͷ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ • Ϩεϙϯεϔομͷྫ https://developer.mozilla.org/ja/docs/Web/HTTP/Messages#HTTP_RequestsΑΓҾ༻ ։࢝ߦ ϘσΟ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ 5. ϨεϙϯεΛWebϒϥβ͕ղੳ͠දࣔ͢Δ ࣍ͷΑ͏ͳσʔλ͕ฦͬͯ͘Δ <!DOCTYPE html> <html lang="en"> <head> <meta
charset="UTF-8"> <title>Document</title> </head> <body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html> ಘΒΕͨσʔλWebϒϥβ͕ղऍͯ͠දࣔ
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head>
<body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html> 1ͭͷϦΫΤετͰಘΒΕΔσʔλ1ͭͷΈ → ը૾σʔλͳͲ, ͋ΒͨΊͯϦΫΤετΛߦͳ͏
ΫϥΠΞϯτͱαʔόͷΓऔΓʢ෮शʣ HTMLϖʔδΛಘͨ͋ͱ… ha.pngΛ͍ͩ͘͞ Ͳ͏ͧ(200 OK) <!DOCTYPE html> <html lang="en"> <head>
<meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>d(^_^o)</h1> <img src="ha.png"> ͜Ε<a href="http://example.com/">ϦϯΫ</a>ͷྫͰ͢. </body> </html>
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • HTTP͋͘·ͰσʔλͷΓऔΓ͚ͩΛنఆ͓ͯ͠Γ, ௨৴ʹؔͯ͠, TCPIPͱ͍ͬͨԼҐʹ͍͛ͯΔ ‣ ԼҐʹ͞ΕΔࡍʹ, ϔομ͕Ճ͞ΕΔ - ΧϓηϧԽ
‣ ্Ґʹ͞ΕΔͱ͖, ࣗͷͷϔομΛऔΓআ ͍ͨͷ͕͞ΕΔ - ඇΧϓηϧԽ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ )551 σʔλ )551 σʔλ TCP ϔομ )551 σʔλ TCP
ϔομ IP ϔομ )551 σʔλ TCP ϔομ IP ϔομ Πʔαωοτ ϔομ )551 σʔλ )551 σʔλ TCP ϔομ )551 σʔλ TCP ϔομ IP ϔομ )551 σʔλ TCP ϔομ IP ϔομ Πʔαωοτ ϔομ ΞϓϦέʔγϣϯ τϥϯεϙʔτ Πϯλʔωοτ ωοτϫʔΫ ΠϯλϑΣʔε ԼҐʹ͞ΕΔࡍʹ ϔομ͕Ճ͞ΕΔ ʢΧϓηϧԽʣ ্Ґʹ͞ΕΔࡍʹ ༻ࡁΈϔομ͕औΓ আ͔ΕΔ ʢඇΧϓηϧԽʣ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ύέοτ ϔομ͖σʔλͷ૯শ ‣ ֤ʹΑͬͯύέοτʹݻ༗ͷ໊শ͕͋Δ ‣ PDU(Protocol Data Unit)ͱ͍͏
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ ͷ໊শ ໊শ ΞϓϦέʔγϣϯ ϝοηʔδ ϓϨθϯςʔγϣϯ ϝοηʔδ ηογϣϯ ϝοηʔδ τϥϯεϙʔτ
ʢίωΫγϣϯܕ௨৴ʣ ηάϝϯτ τϥϯεϙʔτ ʢίωΫγϣϯϨεܕ௨৴ʣ σʔλάϥϜ ωοτϫʔΫ σʔλάϥϜ σʔλϦϯΫ ϑϨʔϜ ωοτϫʔΫ ίωΫγϣϯϨεܕ௨৴
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ωοτϫʔΫͷPDUσʔλάϥϜ ‣ IPίωΫγϣϯϨεͳϓϩτίϧ • ίωΫγϣϯϨεͳͷͰ, ड͚औΓଛͶͯ࠶ૹΛ͢ΔՄ ೳੑ͋Δ ‣
ԿނίωΫγϣϯϨεܕͳͷ͔ʁ
ΫϥΠΞϯτͱαʔόؒͷσʔλͷྲྀΕ • ίωΫγϣϯϨεܕͰ͋Δཧ༝ → ػೳͷ؆ུԽͱߴԽͷͨΊ • ίωΫγϣϯཱ֬ͳͲ, ίωΫγϣϯܕΛ࠾༻͢Δͱ࣮ ͕ෳࡶʹͳΓ, ॲཧԼ͢Δ
‣ ৴པੑͷ͋Δ௨৴ʢίωΫγϣϯܕͷ௨৴ʣΛߦ͍ ͍ͨ߹, ্Ґ͕ఏڙ͢Εྑ͍ - TCP͕ؤுΔ
ࢀߟαΠτ
ࢀߟαΠτ • TCP/IPීٴҎલ, ͯ͢1ສͷ1ͩͬͨ http://www.atmarkit.co.jp/fnetwork/tanpatsu/24tcpip/ 01.html • TCP/IPͲͷΑ͏ʹීٴ͍ͯͬͨ͠ͷʁ http://ascii.jp/elem/000/000/428/428741/ •
TCP/IPͱΠʔαωοτ http://www.atmarkit.co.jp/ait/articles/0101/23/ news002.html
ࢀߟॻ • ϚελϦϯάTCP/IP ೖฤ ୈ5൛, ΦʔϜࣾ, 2012 • ͜ͷҰͰશ෦Θ͔Δ Webٕज़ͷجຊ,
ιϑτόϯΫΫ ϦΤΠςΟϒ, 2017