
ãã®èšäºã¯ãã€ã³ã¿ãã¥ãŒã®å€ã質åã«çããããšããè©Šã¿ã§ãããã¢ãã¬ã¹ããŒã«google.comãšå
¥åããŠEnterããŒãæŒããšã©ããªããŸããïŒã1ã€ã®è©³çŽ°ãéããã«ãã§ããã ã詳现ã«ææ¡ããããšããŸãã
泚ïŒãã® åºçç©ã¯ã äœãèµ·ããã...ãªããžããªã®å
容ã«åºã¥ããŠããŸãæ瀺ãããã³ã³ãã³ãã«ã¯å€æ°ã®çšèªãè±å¯ã«ããããããã®äžéšã®ç¿»èš³ã«ã¯ããŸããŸãªäžæ£ç¢ºãããããŸãã 翻蚳ã«èª€ããããå Žåã¯ãå人çãªã¡ãã»ãŒãžãæžããŠãã ãããä¿®æ£ããŸãã翻蚳ãGitHubãªããžããªã«è»¢éããçŽ æã®äœæè
ã«ãã«ãªã¯ãšã¹ããéä¿¡ããŸãããç·šéã¯ããã¹ãã®ãŸãŸã«ããŠãã ãããäžç·ã«ããã°ã倧å¹
ã«æ¹åã§ããŸãã 1. gããŒãæŒããŸã
èšäºã®æ®ãã®éšåã«ã¯ãç©çââããŒããŒããšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®äžæã«é¢ããæ
å ±ãå«ãŸããŠããŸãã ããããå€ãã®ããšãèµ·ãããŸããããã«å ããŠããgãããŒãæŒããšããã©ãŠã¶ãã€ãã³ããåãåããèªå眮æã¡ã«ããºã ãéå§ãããŸãã ãã©ãŠã¶ã®ã¢ã«ãŽãªãºã ãšãã®ã¢ãŒãïŒãã·ãŒã¯ã¬ãããæ©èœãæå¹ãã©ããïŒã«å¿ããŠãURLããŒã®äžã®ããããããŠã³ãŠã£ã³ããŠã§ããŠãŒã¶ãŒã¯èªå眮æã®ããã®ç¹å®ã®æ°ã®ãªãã·ã§ã³ãæäŸãããŸãã
ã»ãšãã©ã®èªå眮æã¢ã«ãŽãªãºã ã¯ãæ€çŽ¢å±¥æŽãšæ®ã£ãŠããããã¯ããŒã¯ã«åºã¥ããŠæšå¥šäºé
ãã©ã³ã¯ä»ãããŸãã äžéšã®ãã©ãŠã¶ïŒäŸïŒRockmeltïŒã§ã¯ãFacebookã®åéãããã£ãŒã«ãæäŸããŠããŸãã ãŠãŒã¶ãŒãã¢ãã¬ã¹ããŒã«ãgoogle.comããšå
¥åããå Žåãäžèšã®ããããéèŠã§ã¯ãããŸããããããã§ã倧éã®ã³ãŒããå®è¡ãããæ°ããæåãå°å·ããããã³ã«æšå¥šäºé
ãæŽæ°ãããŸãã ãããããã©ãŠã¶ã¯ããŠãŒã¶ãŒãã¢ãã¬ã¹å
šäœããããããåã«ãgoogle.comã«ã¢ã¯ã»ã¹ããããšãææ¡ããŸãã
2. EnterããŒãæåŸãŸã§æŒããŸã
ç¹å®ã®ãŒããã€ã³ããšããŠãããŒããŒãã®EnterããŒãæåŸãŸã§æŒãããŠäžã®äœçœ®ã«ããç¬éãéžæã§ããŸãã ãã®æç¹ã§ããã®ããŒã®é»æ°åè·¯ãéããå°éã®é»æµãããŒããŒãé
ç·å³ã«éãããŸãããã®é
ç·å³ã§ã¯ãåããŒã¹ã€ããã®ç¶æ
ãã¹ãã£ã³ããä¿¡å·ãæŽæ°ããŒã³ãŒãïŒãã®å Žåã¯13ïŒã«å€æããŸãã ããŒããŒãã³ã³ãããŒã©ãŒã¯ãã³ã³ãã¥ãŒã¿ãŒã«éä¿¡ããããã«ããŒã³ãŒããå€æããŸãã ååãšããŠã転éã¯USBãŸãã¯Bluetoothçµç±ã§ãããŒããŒããPS / 2ãŸãã¯ADBã³ãã¯ã¿ã䜿çšããŠã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ãããåã«è¡ãããŸãã
USBããŒããŒãã®å ŽåïŒ- æäœã«ã¯ãããŒããŒãã®USBåè·¯ã«5ãã«ãã®é»åãå¿
èŠã§ããããã¯ãã³ã³ãã¥ãŒã¿ãŒã®USBã³ã³ãããŒã©ãŒãä»ããŠäŸçµŠãããŸãã
- çæãããããŒã³ãŒãã¯ãããŒããŒãã®å
éšã¡ã¢ãªã¬ãžã¹ã¿ã«ä¿åãããããšã³ããã€ã³ããïŒãšã³ããã€ã³ãïŒãšåŒã°ããŸãã
- ã³ã³ãã¥ãŒã¿ãŒã®USBã³ã³ãããŒã©ãŒã¯ãã®ãšã³ããã€ã³ãã10ãã€ã¯ãç§ããšã«ããŒãªã³ã°ããããã«ä¿åãããŠããããŒã³ãŒããåãåããŸãã
- 次ã«ããã®å€ã¯USB SIEïŒã·ãªã¢ã«ã€ã³ã¿ãŒãã§ã€ã¹ãšã³ãžã³ïŒã«éä¿¡ãããäœã¬ãã«USBãããã³ã«ã䜿çšããŠåœ¢æããã1ã€ä»¥äžã®USBãã±ããã«å€æãããŸãã
- ãããã®ãã±ããã¯ãHIDããã€ã¹ïŒHuman Interface DeviceïŒãåžžã«ãäœéãã§ãããããããŸããŸãªé»æ°ä¿¡å·ã䜿çšããŠãæ倧é床1.5 Mb / sã§D +ããã³D-ã³ã³ã¿ã¯ããä»ããŠéä¿¡ãããŸãã
- ãã®ã·ãªã¢ã«ä¿¡å·ã¯ãã³ã³ãã¥ãŒã¿ãŒã®USBã³ã³ãããŒã©ãŒã§ãã³ãŒããããHIDããã€ã¹ïŒããŒããŒãïŒã®ãŠãããŒãµã«ãã©ã€ããŒã«ãã£ãŠè§£éãããŸãã 次ã«ãããŒã³ãŒãå€ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãéãã¬ãã«ã®æœè±¡åã«è»¢éãããŸãã
ä»®æ³ããŒããŒãïŒã¿ããã¹ã¯ãªãŒã³ïŒã®å ŽåïŒ- ãŠãŒã¶ãŒãææ°ã®éé»å®¹éåŒã¿ããã¹ã¯ãªãŒã³ã«æã眮ããšãå°éã®é»æµãæã«æµããŸãã ããã«ãããå°é»å±€ã®éé»çã«ãã£ãŠåè·¯ãéããããç»é¢ã®ãã®ãã€ã³ãã§é»å§éäžãçºçããŸãã 次ã«ãç»é¢äžã®ã³ã³ãããŒã©ãŒããã¯ãªãã¯ã座æšãå ±åããå²ã蟌ã¿ãéå§ããŸãã
- 次ã«ãã¢ãã€ã«OSã¯ãGUIèŠçŽ ã®1ã€ïŒãã®å Žåã¯ä»®æ³ããŒããŒãã®ãã¿ã³ïŒã§ã¯ãªãã¯ã€ãã³ããçŸåšéããŠããã¢ããªã±ãŒã·ã§ã³ã«éç¥ããŸãã
- ä»®æ³ããŒããŒãã«ããããœãããŠã§ã¢å²ã蟌ã¿ãçºçãããããŒãæŒãããŸããããšããã¡ãã»ãŒãžãOSã«è¿ãããŸãã
- ãã®å²ã蟌ã¿ã¯ãçŸåšéããŠããã¢ããªã±ãŒã·ã§ã³ã«ãããŒãæŒããã€ãã³ãã®çºçãéç¥ããŸãã
2.1äžæãçºçãã[USBããŒããŒãã§ã¯ãªã]
ããŒããŒãã¯ä¿¡å·ããå²ã蟌ã¿èŠæ±ã©ã€ã³ãïŒIRQïŒã«éä¿¡ãããã®åŸãå²ã蟌ã¿ã³ã³ãããŒã©ãŒã«ãã£ãŠãå²ã蟌ã¿ãã¯ãã«ãïŒæŽæ°ïŒã«ãããã³ã°ãããŸãã ããã»ããµã¯ããå²ã蟌ã¿èšè¿°åããŒãã«ãïŒIDTïŒã䜿çšããŠãå²ã蟌ã¿ãã¯ãã«ãã«ãŒãã«ã®æ©èœïŒãå²ã蟌ã¿ãã³ãã©ãŒãïŒã«ãããããŸãã å²ã蟌ã¿ãçºçãããšãããã»ããµïŒCPUïŒã¯IDTãå²ã蟌ã¿ãã¯ã¿ãŒã§æŽæ°ãã察å¿ãããã³ãã©ãŒãèµ·åããŸãã ãããã£ãŠãã³ã¢ãæ©èœããŸãã
2.2ïŒWindowsã®å ŽåïŒ WM_KEYDOWN
ã¡ãã»ãŒãžãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ãããŸãã
HIDã¯ãæŒãããããŒã€ãã³ãã
KBDHID.sys
ãã©ã€ããŒã«éä¿¡ãããã©ã€ããŒã¯ããã
ã¹ãã£ã³ã³ãŒãã«å€æã
ãŸã ã ãã®ç¹å®ã®ã±ãŒã¹ã§ã¯ãã¹ãã£ã³ã³ãŒãã¯
VK_RETURN
ïŒ
0x0D
ïŒã§ãã
KDBHID.sys
ãã©ã€ããŒã¯ã
KBDCLASS.sys
ãã©ã€ããŒïŒããŒããŒãã¯ã©ã¹ãã©ã€ããŒïŒãšéä¿¡ããŸãã 圌ã¯ããã¹ãŠã®ããŒããŒãå
¥åãå®å
šã«åŠçãã責任ããããŸãã å°æ¥ããã®ãã©ã€ããŒã¯
Win32K.sys
åŒã³åºã
Win32K.sys
ïŒã€ã³ã¹ããŒã«ãããŠãããµãŒãããŒãã£ã®ããŒããŒããã£ã«ã¿ãŒãä»ããã¡ãã»ãŒãžéä¿¡ã®å¯èœæ§ã®åŸïŒã ããã¯ãã¹ãŠã«ãŒãã«ã¢ãŒãã§è¡ãããŸãã
Win32K.sysã¯ã
GetForegroundWindow()
é¢æ°ã䜿çšããŠãçŸåšã¢ã¯ãã£ããªãŠã£ã³ããŠãå€å¥ããŸãã ãã®APIã¯ããã©ãŠã¶ã®ã¢ãã¬ã¹ããŒãŠã£ã³ããŠã®åŠçãæäŸããŸãã 次ã«ãWindowsã®ã¡ã€ã³ã®ãã¡ãã»ãŒãžãã³ããã
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, lParam)
åŒã³åºããŸãã
lParam
ã¯ãããŒã¹ãããŒã¯ã«é¢ãã詳现æ
å ±ã瀺ãããããã¹ã¯ã§ããåè©Šè¡ã«ãŠã³ã¿ãŒïŒãã®å Žåã¯0ïŒãçŸåšã®ã¹ãã£ã³ã³ãŒãïŒOEMã«äŸåããå ŽåããããŸããã
VK_RETURN
ã¯éåžžããã«äŸåããŸããïŒãæ
å ±è¿œå ã®ããŒïŒããšãã°ãAltãShiftãCtrl-ãã®å Žåã¯ããã§ã¯ãããŸããã§ããïŒããã³ãã®ä»ã®ããŒã¿ã
Windows APIã«ã¯ãç¹å®ã®ãŠã£ã³ããŠãã³ãã©ãŒïŒ
hWnd
ïŒã®ã¡ãã»ãŒãžããã¥ãŒã«
SendMessage
é¢æ°ããããŸãã ãã®åŸã
hWnd
ãã³ãã©ãŒã«å²ãåœãŠãããã¡ã€ã³ã®ã¡ãã»ãŒãžåŠçé¢æ°ïŒ
WindowProc
ïŒã
hWnd
ãããã¥ãŒå
ã®ãã¹ãŠã®ã¡ãã»ãŒãžãåŠçãããŸãã
çŸåšã¢ã¯ãã£ããªãŠã£ã³ããŠïŒ
hWnd
ïŒã¯åŠçã®å¶åŸ¡ã§ããããã®å ŽåãWindowsProcã«ã¯
WM_KEYDOWN
ã¡ãã»ãŒãžã®ãã³ãã©ãŒã
WM_KEYDOWN
ãŸãã ãã®ã³ãŒãã¯ã
SendMessage (wParam)
ã«å«ãŸãã3çªç®ã®ãã©ã¡ãŒã¿ãŒã調ã¹ã
VK_RETURN
ã§ããããããŠãŒã¶ãŒãEnterããŒãæŒããããšãç解ããŸãã
2.3ïŒOS Xã®å ŽåïŒ NSEVent KeyDown
ãã¢ããªã±ãŒã·ã§ã³ã«éä¿¡ãããŸãã
å²ã蟌ã¿ä¿¡å·ã¯ãããŒããŒãI / Oããããã©ã€ããŒã§å²ã蟌ã¿ã€ãã³ããããªã¬ãŒããŸãã ãã©ã€ããŒã¯ä¿¡å·ãããŒããŒãã³ãŒãã«å€æããããã
WindowServer
ãšããOS Xããã»ã¹ã«æž¡ãããŸãã ãã®çµæã
WindowsServer
ã¯ãã€ãã³ãããã¥ãŒã«å
¥ããããŠããMachããŒããä»ããŠãé©åãªïŒã¢ã¯ãã£ããŸãã¯ããªã¹ãã³ã°ãïŒã¢ããªã±ãŒã·ã§ã³ã«ã€ãã³ããæž¡ããŸãã ãã®åŸã
mach_ipc_dispatch
é¢æ°ãåŒã³åºãã®ã«ååãªç¹æš©ãæã€ã¹ã¬ããã«ãã£ãŠããã®ãã¥ãŒããã€ãã³ããèªã¿åãããšãã§ããŸãã ã»ãšãã©ã®å Žåãããã¯çºçãã
NSEventype KeyDown
NSEvent
ãä»ããŠã¡ã€ã³
NSApplication
ã«ãŒãã䜿çšããŠåŠçãããŸãã
2.4ïŒGNU / Linuxã®å ŽåïŒXorgãµãŒããŒã¯ããŒããŒãã³ãŒãããªãã¹ã³ããŸã
ã°ã©ãã£ã«ã«XãµãŒããŒã®å Žåãäžè¬çãª
evdev
ã€ãã³ããã©ã€ããŒãããŒã¹ãããŒã¯ã®åä¿¡ã«äœ¿çšãããŸãã ããŒããŒãã³ãŒããã¹ãã£ã³ã³ãŒãã«åå²ãåœãŠããã«ã¯ãç¹å¥ãªã«ãŒã«ãšXãµãŒããŒã«ãŒãã䜿çšããŸãã æŒãããããŒã®ã¹ãã£ã³ã³ãŒãã®
ãããã³ã°ãå®äºãããšãXãµãŒããŒã¯ãã®æåããŠã£ã³ããŠãããŒãžã£ãŒïŒDWMãmetacityãi3ïŒã«éä¿¡ãããŠã£ã³ããŠãããŒãžã£ãŒã¯ãã®æåãã¢ã¯ãã£ããŠã£ã³ããŠã«éä¿¡ããŸãã æåãåãåã£ããŠã£ã³ããŠã®ã°ã©ãã£ã«ã«APIã¯ãç®çã®ãã£ãŒã«ãã«å¯Ÿå¿ãããã©ã³ãæåãå°å·ããŸãã
3. URL解æ
ãã©ãŠã¶ã«ã¯ã次ã®URLæ
å ±ããããŸãã
ãããã³ã«ãHTTPã
ãã€ããŒããã¹ã転éãããã³ã«ã䜿çšãã
ãªãœãŒã¹ã/ã
ã¡ã€ã³ïŒã€ã³ããã¯ã¹ïŒããŒãžã衚瀺
3.1ããã¯URLã§ããããããšãæ€çŽ¢ã¯ãšãªã§ããïŒ
ãŠãŒã¶ãŒããããã³ã«ãŸãã¯ãã¡ã€ã³åãå
¥åããªãå Žåããã©ãŠã¶ãŒã¯ãŠãŒã¶ãŒãå
¥åããå
容ãããã©ã«ãã®æ€çŽ¢ãšã³ãžã³ã«ããã£ãŒããããŸãã å€ãã®å Žåãç¹å¥ãªããã¹ããURLã«è¿œå ããããããæ
å ±ãç¹å®ã®ãã©ãŠã¶ãŒã®URLããŒããéä¿¡ãããããšãæ€çŽ¢ãšã³ãžã³ãç解ã§ããŸãã
3.2 HSTSãã§ãã¯ãªã¹ã
- ãã©ãŠã¶ã¯ããããªããŒããããHSTSïŒHTTP Strict Transport SecurityïŒãã®ãªã¹ãã確èªããŸãã ããã¯ãHTTPSçµç±ã§ã®ã¿ã¢ã¯ã»ã¹ããå¿
èŠããããµã€ãã®ãªã¹ãã§ãã
- ç®çã®ãµã€ãããã®ãªã¹ãã«ããå Žåããã©ãŠã¶ã¯HTTPã§ã¯ãªãHTTPSãä»ããŠãªã¯ãšã¹ããéä¿¡ããŸãã ãã以å€ã®å Žåãæåã®èŠæ±ã¯HTTPçµç±ã§éä¿¡ãããŸãã ïŒåæã«ããµã€ãã¯HSTSããªã·ãŒã䜿çšã§ããŸãããHSTSãªã¹ãã«ã¯å«ãŸããŸãã-ãã®å Žåãæåã®HTTPèŠæ±ã«ã¯ãHTTPSçµç±ã§èŠæ±ãéä¿¡ããå¿
èŠããããšããå¿çãéä¿¡ãããŸãããã ããããã«ããããŠãŒã¶ãŒã¯ããŠã³ã°ã¬ãŒãæ»æã«å¯ŸããŠè匱ã«ãªããŸã-ãã©ãŠã¶ã§ã¯åé¿ããHSTSãªã¹ããå«ããŸãïŒã
3.3éASCII Unicodeæåã®ãã¹ãåãžã®å€æ
- ãã©ãŠã¶ã¯ããã¹ãåã§
az
ã AZ
ã 0-9
ã -
ããŸãã¯.
ã - google.comãã¡ã€ã³åã®å Žåãåé¡ã¯ãããŸãããããã¡ã€ã³ã«éASCIIæåãå«ãŸããŠããå Žåããã©ãŠã¶ã¯URLã®ãã®éšåã«Punycodeãšã³ã³ãŒãã䜿çšããŸãã
4. DNSã®å®çŸ©
- ãã©ãŠã¶ã¯ããã£ãã·ã¥å
ã®ãã¡ã€ã³ã®ååšã確èªããŸãã
- ãã¡ã€ã³ãååšããªãå Žåããã©ãŠã¶ã¯ã©ã€ãã©ãªé¢æ°
gethostbyname
ïŒç°ãªããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªããŸãïŒãåŒã³åºããŠãç®çã®ã¢ãã¬ã¹ãèŠã€ããŸãã - DNSã䜿çšããŠãã¡ã€ã³ãæ¢ãåã«ã
gethostbyname
ã¯hosts
ã§ç®çã®ã¢ãã¬ã¹ãèŠã€ããããšãhosts
ïŒãã®å Žæã¯ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã«ãã£ãŠç°ãªããŸãïŒã - ãã¡ã€ã³ãã©ãã«ããã£ãã·ã¥ãããŠãããã
hosts
ã«ãªãå Žåã gethostbyname
ã¯ãããã¯ãŒã¯DNSãµãŒããŒã«èŠæ±ãéä¿¡ããŸãã éåžžãããã¯ããŒã«ã«ã«ãŒã¿ãŒãŸãã¯ã€ã³ã¿ãŒããããããã€ããŒã®DNSãµãŒããŒã§ãã - DNSãµãŒããŒãåããµããããäžã«ããå Žåã ARPèŠæ±ããã®ãµãŒããŒã«éä¿¡ãããŸãã
- DNSãµãŒããŒãå¥ã®ãµããããäžã«ããå ŽåãARPèŠæ±ã¯ããã©ã«ãã²ãŒããŠã§ã€ã®IPã¢ãã¬ã¹ã«éä¿¡ãããŸãã
4.1 ARPèŠæ±ãéä¿¡ããããã»ã¹
ãããŒããã£ã¹ãARPèŠæ±ãéä¿¡ããã«ã¯ãã¿ãŒã²ããIPã¢ãã¬ã¹ãšãARPèŠæ±ã®éä¿¡ã«äœ¿çšãããã€ã³ã¿ãŒãã§ã€ã¹ã®MACã¢ãã¬ã¹ãèŠã€ããå¿
èŠããããŸãã
åå®å
IPã¢ãã¬ã¹ã®ARPãã£ãã·ã¥ããã§ãã¯ãããŸã-ã¢ãã¬ã¹ããã£ãã·ã¥å
ã«ããå Žåãã©ã€ãã©ãªé¢æ°ã¯çµæãè¿ããŸãïŒ
Target IP = MAC
ã
ãã£ãã·ã¥ãšã³ããªããªãå ŽåïŒ
- ã«ãŒãã£ã³ã°ããŒãã«ããã§ãã¯ãããŸã-ããã¯ãããŒã«ã«ããŒãã«ã®ãµããããã®ããããã«ç®çã®IPã¢ãã¬ã¹ããããã©ããã確èªããããã«è¡ãããŸãã ååšããå ŽåãèŠæ±ã¯ãã®ãµããããã«é¢é£ä»ããããã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠéä¿¡ãããŸãã ããŒãã«ã«ã¢ãã¬ã¹ãèŠã€ãããªãå Žåã¯ãããã©ã«ãã²ãŒããŠã§ã€ãµããããã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããŸãã
- éžæãããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®MACã¢ãã¬ã¹ã決å®ãããŸãã
- ARPèŠæ±ãéä¿¡ãããŸãïŒ2çªç®ã®ã¹ã¿ãã¯ã¬ãã«ïŒïŒ
ARPèŠæ±ïŒ
Sender MAC: interface:mac:address:here
Sender IP: interface.ip.goes.here
Target MAC: FF:FF:FF:FF:FF:FF (Broadcast)
Target IP: target.ip.goes.here
ã³ã³ãã¥ãŒã¿ãŒãšã«ãŒã¿ãŒïŒã«ãŒã¿ãŒïŒã®éã«ããããŒããŠã§ã¢ã®çš®é¡ã«å¿ããŠïŒ
çŽæ¥æ¥ç¶ïŒ
- ã³ã³ãã¥ãŒã¿ãŒãã«ãŒã¿ãŒã«çŽæ¥æ¥ç¶ãããŠããå Žåããã®ããã€ã¹ã¯ARPå¿çïŒARPå¿çïŒãéä¿¡ããŸãã
ãããã®éããïŒããïŒïŒ
- ã³ã³ãã¥ãŒã¿ãŒããããã¯ãŒã¯ããã«æ¥ç¶ãããŠããå Žåããã®ããã¯ãã¹ãŠã®ããŒããããããŒããã£ã¹ãARPèŠæ±ãéä¿¡ããŸãã ã«ãŒã¿ãåããã¯ã€ã€ããä»ããŠæ¥ç¶ãããŠããå ŽåãARPå¿çãéä¿¡ããŸãã
ãããã®éã«ã¹ã€ããïŒã¹ã€ããïŒïŒ
- ã³ã³ãã¥ãŒã¿ããããã¯ãŒã¯ã¹ã€ããã«æ¥ç¶ãããŠããå Žåããã®ã¹ã€ããã¯ããŒã«ã«CAM / MACããŒãã«ããã§ãã¯ããŠããã®ããŒãã®ã©ã®ããŒãã«ç®çã®MACã¢ãã¬ã¹ããããã調ã¹ãŸãã ç®çã®ã¢ãã¬ã¹ãããŒãã«ã«ãªãå Žåããã¹ãŠã®ããŒãã«ãããŒããã£ã¹ãARPèŠæ±ãå床éä¿¡ããŸãã
- ããŒãã«ã«ç®çã®ãšã³ããªãããå Žåãã¹ã€ããã¯ç®çã®MACã¢ãã¬ã¹ã§ããŒãã«ARPèŠæ±ãéä¿¡ããŸãã
- ã«ãŒã¿ãŒãã¹ã€ãããšãåãåç·äžãã«ããå Žåãã«ãŒã¿ãŒã¯å¿çããŸãïŒARPå¿çïŒã
ARPåçïŒ
Sender MAC: target:mac:address:here
Sender IP: target.ip.goes.here
Target MAC: interface:mac:address:here
Target IP: interface.ip.goes.here
ããã§ããããã¯ãŒã¯ã©ã€ãã©ãªã«ã¯ãDNSãµãŒããŒãŸãã¯ããã©ã«ãã²ãŒããŠã§ã€ã®IPã¢ãã¬ã¹ãããããã¡ã€ã³åã®è§£æ±ºã«äœ¿çšã§ããŸãã
- ããŒã53ãéããUDPèŠæ±ãDNSãµãŒããŒã«éä¿¡ããŸãïŒå¿çãµã€ãºã倧ããããå Žåã¯ãTCPã䜿çšãããŸãïŒã
- ããŒã«ã«ãŸãã¯ãããã€ããŒåŽââã®DNSãµãŒããŒãç®çã®ã¢ãã¬ã¹ããç¥ããªããå Žåãååž°æ€çŽ¢ãèŠæ±ãããSOAã¬ã³ãŒããèŠã€ãããŸã§äžäœã¬ãã«ã®DNSãµãŒããŒã®ãªã¹ããæ€çŽ¢ããçµæãè¿ãããŸãã
5.ãœã±ãããéã
ãã©ãŠã¶ãŒã¯ãå®å
ãµãŒããŒã®IPã¢ãã¬ã¹ãåãåããšãURLïŒHTTPã®å Žåã¯80ãHTTPSã®å Žåã¯443ïŒãã䜿çšãããããŒãã®ãã®æ
å ±ãšããŒã¿ãååŸããã·ã¹ãã ã©ã€ãã©ãªã®
socket
é¢æ°ãåŒã³åºããTCPãœã±ããã¹ããªãŒã
AF_INET
ããã³
SOCK_STREAM
ãèŠæ±ããŸãã
- ãã®èŠæ±ã¯ãæåã«TCPã»ã°ã¡ã³ããåãããã©ã³ã¹ããŒãå±€ãééããŸãã å®å
ããŒããããããŒã«è¿œå ããããœãŒã¹ããŒããåçã«ãŒãã«ããŒã«ïŒLinuxã§ã¯
ip_local_port_range
ïŒããéžæãããŸãã - çµæã®ã»ã°ã¡ã³ãã¯ãããã¯ãŒã¯å±€ã«éä¿¡ãããããã«è¿œå ã®IPããããŒãè¿œå ãããŸãã å®å
ãµãŒããŒã®IPã¢ãã¬ã¹ãšçŸåšã®ãã·ã³ã®ã¢ãã¬ã¹ãå«ãŸããŸã-ãã®åŸããã±ãããçæãããŸãã
- ãã±ããã¯ããŒã¿ãªã³ã¯å±€ã«éä¿¡ãããŸãã ã³ã³ãã¥ãŒã¿ãŒã®ãããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ã«ãŒãïŒNICïŒã®MACã¢ãã¬ã¹ãšãã²ãŒããŠã§ã€ïŒããŒã«ã«ã«ãŒã¿ãŒïŒã®MACã¢ãã¬ã¹ãå«ããã¬ãŒã ããããŒãè¿œå ãããŸãã åã®æé ãšåæ§ã«ãã«ãŒãã«ãã²ãŒããŠã§ã€ã®MACã¢ãã¬ã¹ã«ã€ããŠäœãç¥ããªãå ŽåããããŒããã£ã¹ãARPèŠæ±ãéä¿¡ãããŠãããèŠã€ããŸãã
ãã®æç¹ã§ããã±ããã¯æ¬¡ãä»ããŠéä¿¡ããæºåãã§ããŠããŸãã
ã€ã³ã¿ãŒãããæ¥ç¶ã®å Žåãã»ãšãã©ã®å人ãŠãŒã¶ãŒãŸãã¯äžå°äŒæ¥ã¯ãã³ã³ãã¥ãŒã¿ãŒããããŒã«ã«ãããã¯ãŒã¯ãä»ããŠããã±ãŒãžãéä¿¡ããã¢ãã ïŒ
MOdulator/DEModulator
ïŒãä»ããŠãããžã¿ã«ãŠããããšãŒããé»è©±åç·ãã±ãŒãã«ããŸãã¯ã¯ã€ã€ã¬ã¹é»è©±æ¥ç¶ã æ¥ç¶ã®å察åŽã«ã¯ãã¢ããã°ä¿¡å·ãããžã¿ã«ããŒã¿ã«å€æãããããã次ã®
ãããã¯ãŒã¯ããŒãã«æž¡ãå¥ã®ã¢ãã ããã
ãŸã ãããã§ãéä¿¡è
ãšåä¿¡è
ã«é¢ããããŒã¿ã®ãããªãåæãè¡ãããŸãã
æçµçã«ããã±ããã¯ããŒã«ã«ãµããããã管çããã«ãŒã¿ãŒã«å°éããŸãã ãã®åŸãå®å
ãµãŒããŒã«å°éãããŸã§ãããã«ãŒã¿ãŒããå¥ã®ã«ãŒã¿ãŒã«ç§»åãç¶ããŸãã éäžã®åã«ãŒã¿ãŒã¯ãIPããããŒããå®å
ã¢ãã¬ã¹ãæœåºãããã±ããã次ã®ãããã«éä¿¡ããŸãã IPããããŒã®TTLïŒæå¹æéïŒãã£ãŒã«ãã®å€ã¯ãåã«ãŒã¿ãŒãééãããã³ã«æžå°ããŸãã TTLãã£ãŒã«ãã®å€ããŒãã«éãããšããã±ããã¯ãããããããŸãïŒããã¯ãã«ãŒã¿ãŒãçŸåšã®ãã¥ãŒã«ã¹ããŒã¹ãæããªãå Žåã«ãçºçããŸã-ããšãã°ããããã¯ãŒã¯ã®èŒ»èŒ³ãåå ã§ãïŒã
TCPæ¥ç¶äžã«ãå€ãã®åæ§ã®èŠæ±ãšå¿çãçºçããŸãã
5.1 TCPæ¥ç¶ã®ã©ã€ããµã€ã¯ã«
aã ã¯ã©ã€ã¢ã³ãã¯ãåæã·ãŒã±ã³ã¹çªå·ïŒISNïŒãéžæããSYNããããèšå®ããããã±ããããµãŒããŒã«éä¿¡ããŠæ¥ç¶ãéããŸããbã ãµãŒããŒã¯SYNããããå«ããã±ãããåä¿¡ããæ¥ç¶ã確ç«ããæºåãã§ããŠããå Žåã¯ã次ã®ããšãè¡ããŸãã- ç¬èªã®éå§ã·ãŒã±ã³ã¹çªå·ãéžæããŸãã
- SYNããããèšå®ããŠãåæã·ãŒã±ã³ã¹ã®éžæã瀺ããŸãã
- ACKãã£ãŒã«ãã«ã¯ã©ã€ã¢ã³ãã®ISN +1ãã³ããŒããACKãã©ã°ãè¿œå ããŠãæåã®ãã±ããã®åä¿¡ã®ç¢ºèªã瀺ããŸãã
cã ã¯ã©ã€ã¢ã³ãã¯ãã±ãããéä¿¡ããŠæ¥ç¶ã確èªããŸãã- åæã·ãŒã±ã³ã¹ã®æ°ãå¢ãããŸãã
- åé 確èªçªå·ãå¢ãããŸãã
- ACKãã£ãŒã«ããèšå®ããŸãã
dã ããŒã¿ã¯æ¬¡ã®ããã«éä¿¡ãããŸãã- äžæ¹ãNãã€ããéä¿¡ãããšããã®æ°ã ãSEQãã£ãŒã«ãã®å€ãå¢å ããŸãã
- çžæåŽããã®ãã±ããïŒãŸãã¯ãã±ããã®ãã§ãŒã³ïŒã®åä¿¡ã確èªãããšãACKãã£ãŒã«ãå€ãæåŸã«åä¿¡ããã·ãŒã±ã³ã¹ã«çããACKãã±ãããéä¿¡ããŸãã
eã æ¥ç¶ã®ééïŒ- æ¥ç¶ãéãããããŒãã£ã¯ãFINãã±ãããéä¿¡ããŸãã
- å察åŽã¯ïŒACKã䜿çšããŠïŒFINã確èªããç¬èªã®FINãã±ãããéä¿¡ããŸãã
- æ¥ç¶ã¿ãŒãããŒã¿ãŒã¯ãç¬èªã®ACKãéä¿¡ããŠFINã®åä¿¡ã確èªããŸãã
6. TLSãã³ãã·ã§ã€ã¯
- ã¯ã©ã€ã¢ã³ãã³ã³ãã¥ãŒã¿ãŒã¯ã TLSãããã³ã«ã®ããŒãžã§ã³ããµããŒããããŠããæå·åã¢ã«ãŽãªãºã ãšããŒã¿å§çž®æ¹æ³ã®ãªã¹ããšå
±ã«ã
ClientHello
ã¡ãã»ãŒãžClientHello
ãµãŒããŒã«éä¿¡ããŸãã - ãµãŒããŒã¯ãTLSããŒãžã§ã³ãéžæããæå·åæ¹åŒãéžæããå§çž®æ¹åŒãããã³èªèšŒå±ã«ãã£ãŠçœ²åããããããªãã¯ãµãŒãã¹èšŒææžãå«ã
ServerHello
ã¡ãã»ãŒãžã§ã¯ã©ã€ã¢ã³ãã«å¿çããŸãã 蚌ææžã«ã¯ã察称ããŒãåæããããŸã§ãã¯ã©ã€ã¢ã³ãããã³ãã·ã§ã€ã¯æé ã®æ®ããæå·åããããã«äœ¿çšããå
¬éããŒãå«ãŸããŠããŸãã - ã¯ã©ã€ã¢ã³ãã¯ãèªèšŒå±ã®ãªã¹ãã䜿çšããŠãµãŒããŒèšŒææžãæ€èšŒããŸãã 蚌ææžããªã¹ãããã»ã³ã¿ãŒã«ãã£ãŠçœ²åãããŠããå ŽåããµãŒããŒã¯ä¿¡é Œãããã¯ã©ã€ã¢ã³ãã¯æ¬äŒŒã©ã³ãã ãã€ãã®æååãçæãããµãŒããŒã®å
¬éããŒã䜿çšããŠæå·åããŸãã ãããã®ã©ã³ãã ãã€ãã䜿çšããŠã察称ããŒã決å®ã§ããŸãã
- ãµãŒããŒã¯ããã©ã€ããŒãããŒã䜿çšããŠã©ã³ãã ãã€ãã埩å·åãããããã®ãã€ãã䜿çšããŠå¯Ÿç§°ãã¹ã¿ãŒããŒã®ã³ããŒãçæããŸãã
- ã¯ã©ã€ã¢ã³ãã¯ã
Finished
ã¡ãã»ãŒãžããµãŒããŒã«éä¿¡ãã察称ããŒã§è»¢éããã·ã¥ãæå·åããŸãã - ãµãŒããŒã¯ç¬èªã®ããã·ã¥ãçæããã¯ã©ã€ã¢ã³ãããåä¿¡ããããã·ã¥ã解èªããŠããããèªèº«ã®ããã·ã¥ãšäžèŽãããã©ããã確èªããŸãã äžèŽãèŠã€ãã£ãå ŽåããµãŒããŒã¯ã¯ã©ã€ã¢ã³ãã«ãç¬èªã®
Finished
å¿çãéä¿¡ããããã察称ããŒã§æå·åãããŸãã - ãã®åŸãTLSã»ãã·ã§ã³ã¯ã確èªæžã¿ã®å¯Ÿç§°ããŒã䜿çšããŠæå·åãããã¢ããªã±ãŒã·ã§ã³ããŒã¿ïŒHTTPïŒãéä¿¡ããŸãã
7. HTTPãããã³ã«
䜿çšãããã©ãŠã¶ãGoogleã«ãã£ãŠäœæãããå ŽåãããŒãžãåä¿¡ããããã«HTTPãªã¯ãšã¹ããéä¿¡ãã代ããã«ãHTTPãã
SPDY ïŒãé床ãïŒã«ãããã³ã«ããã¢ããã°ã¬ãŒããããããã«ãµãŒããŒãšãããŽã·ãšãŒããããèŠæ±ãéä¿¡ããŸãã
ã¯ã©ã€ã¢ã³ããHTTPãããã³ã«ã䜿çšããSPDYããµããŒãããŠããªãå Žåã次ã®åœ¢åŒã§ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã
GET / HTTP/1.1
Host: google.com
Connection: close
[ ]
ããã§ã
[ ]
ã¯äžé£ã®ããŒã§ããå€ã®ãã¢ã¯æ¹è¡ã§åå²ãããŸãã ïŒããã§ã¯ã䜿çšãããŠãããã©ãŠã¶ã«HTTPä»æ§ã«éåãããšã©ãŒããªãããšãåæãšããŠããŸãããã©ãŠã¶ã
HTTP/1.1
䜿çšããŠãããšæ³å®ãããŸããããã§ãªãå Žåããªã¯ãšã¹ãã«
Host
ããããŒãå«ãŸãããGETãªã¯ãšã¹ãã«å¿çããŠè¿ãããããŒãžã§ã³ã
HTTP/1.0
ãŸãã¯
HTTP/0.9
ïŒã
HTTP/1.1
ã¯ãéä¿¡è
ã®æ¥ç¶ãéããïŒãéãããïŒãªãã·ã§ã³ãå®çŸ©ããŸã-ãã®å©ããåããŠãå¿çãå®äºããåŸã«æ¥ç¶ãéãããããšããéç¥ãè¡ãããŸãã äŸïŒ
æ¥ç¶ïŒéãã
æ°žç¶çãªæ¥ç¶ããµããŒãããªã
HTTP/1.1
ã¢ããªã±ãŒã·ã§ã³ã§ã¯ããã¹ãŠã®ã¡ãã»ãŒãžã«éãããªãã·ã§ã³ãå«ããå¿
èŠããããŸãã
ãªã¯ãšã¹ããšããããŒãéä¿¡ããåŸããã©ãŠã¶ã¯åäžã®ç©ºã®è¡ããµãŒããŒã«éä¿¡ããã¡ãã»ãŒãžãçµäºããããšãéç¥ããŸãã
ãµãŒããŒã¯ãèŠæ±ã®ã¹ããŒã¿ã¹ã瀺ãç¹å¥ãªã³ãŒãã§å¿çãã次ã®åœ¢åŒã®å¿çãå«ãŸããŸãã
200 OK
[ ]
ãã®åŸã空ã®è¡ãéä¿¡ãããHTMLããŒãž
www.google.comã®æ®ãã®ã³ã³ãã³ããéä¿¡ãããŸãã ãµãŒããŒã¯æ¥ç¶ãéããããšãã§ããŸãããŸãã¯ãã¯ã©ã€ã¢ã³ãããéä¿¡ãããããããŒã§å¿
èŠãªå Žåã¯ãæ¥ç¶ãéãããŸãŸã«ããŠã次ã®èŠæ±ã§äœ¿çšã§ããããã«ããŸãã
Webãã©ãŠã¶ãŒããéä¿¡ãããHTTPããããŒã«ããµãŒããŒããã©ãŠã¶ãŒã«ãã£ãã·ã¥ãããŠãããã¡ã€ã«ã®ããŒãžã§ã³ãå€æããã®ã«ååãªæ
å ±ãå«ãŸãããã®ãã¡ã€ã«ãæåŸã®èŠæ±ä»¥éå€æŽãããŠããªãå Žåãå¿çã¯æ¬¡ã®åœ¢åŒãåããŸãïŒ
304 Not Modified
[ ]
ããã«å¿ããŠãã³ã³ãã³ãã¯ã¯ã©ã€ã¢ã³ãã«éä¿¡ãããã代ããã«ãã©ãŠã¶ããã£ãã·ã¥ããHTMLãããã«ãããŸãã
HTMLã解æããåŸããã©ãŠã¶ãŒïŒããã³ãµãŒããŒïŒã¯ãHTMLããŒãžãåç
§ããåãªãœãŒã¹ïŒç»åãã¹ã¿ã€ã«ãã¹ã¯ãªãããfavicon.icoãªã©ïŒã«å¯ŸããŠããŠã³ããŒãããã»ã¹ãç¹°ãè¿ããŸãããåãªã¯ãšã¹ãã®ã¢ãã¬ã¹ã¯
GET / HTTP/1.1
å€æŽãã
GET / HTTP/1.1
ã«
GET /$( URL www.google.com) HTTP/1.1
GET /$( URL www.google.com) HTTP/1.1
HTMLãgoogle.com以å€ã®ãã¡ã€ã³ã§ãã¹ããããŠãããªãœãŒã¹ãåç
§ããŠããå Žåããã©ãŠã¶ã¯ãã¡ã€ã³åã®è§£æ±ºãå«ãæé ã«æ»ããããã»ã¹ãçŸåšã®ç¶æ
ã«åå®è¡ããŸãããå¥ã®ãã¡ã€ã³ã«å¯ŸããŠå®è¡ããŸãã ãªã¯ãšã¹ãå
ã®google.comã®ä»£ããã«
Host
ããããŒãç®çã®ãã¡ã€ã³åã«èšå®ãããŸãã
7.1ãµãŒããŒã§ã®HTTPãªã¯ãšã¹ãã®åŠç
HTTPD
ïŒHTTPããŒã¢ã³ïŒã¯ããµãŒããŒåŽã®èŠæ±/å¿çåŠçããŒã«ã®1ã€ã§ãã æãäžè¬çãªHTTPDãµãŒããŒã¯ãLinuxã®å Žåã¯ApacheãŸãã¯NginxãWindowsã®å Žåã¯IISã§ãã
-HTTPDïŒHTTPããŒã¢ã³ïŒã¯èŠæ±ãåãåããŸãã
-ãµãŒããŒã¯ã次ã®ãã©ã¡ãŒã¿ãŒã«åŸã£ãŠèŠæ±ã解æããŸãã
- HTTPãªã¯ãšã¹ãã¡ãœããïŒ
GET
ã POST
ã HEAD
ã PUT
ãŸãã¯DELETE
ïŒã ãŠãŒã¶ãŒããã©ãŠã¶ãŒã®è¡ã«å
¥åããURLã®å ŽåãGETèŠæ±ãåŠçããŠããŸãã - ãã¡ã€ã³ ãã®å Žåãgoogle.comã
- èŠæ±ããããã¹/ããŒãžããã®å Žå-
/
ïŒèŠæ±ããããã¹ãªãã /
-ããã¯ããã©ã«ãã®ãã¹ã§ãïŒã
-ãµãŒããŒã¯ãgoogle.comã«äžèŽããä»®æ³ãã¹ãã®ååšã確èªããŸãã
-ãµãŒããŒã¯ãgoogle.comãGETãªã¯ãšã¹ããåãå
¥ããããšãã§ããããšã確èªããŸãã
-ãµãŒããŒã¯ãã¯ã©ã€ã¢ã³ãã«ãã®æ¹æ³ã䜿çšããæš©å©ããããã©ããã確èªããŸãïŒIPã¢ãã¬ã¹ãèªèšŒãªã©ã«åºã¥ããŠïŒã
-æžãæãã¢ãžã¥ãŒã«ããµãŒããŒã«ã€ã³ã¹ããŒã«ãããŠããå ŽåïŒApacheã®å Žåã¯
mod_rewrite
ãIISã®å Žåã¯
URL Rewrite
ïŒãæ§æãããã«ãŒã«ã®1ã€ãšèŠæ±ãç
§åããŸãã äžèŽããã«ãŒã«ãèŠã€ãã£ãå ŽåããµãŒããŒã¯ããã䜿çšããŠãªã¯ãšã¹ããæžãæããŸãã
-ãµãŒããŒã¯ãªã¯ãšã¹ãã«äžèŽããã³ã³ãã³ããèŠã€ããŸãããã®å Žåãã€ã³ããã¯ã¹ãã¡ã€ã«ã調ã¹ãŸãã
-次ã«ããµãŒããŒã¯ãã³ãã©ãŒã䜿çšããŠãã¡ã€ã«ã解æïŒã解æãïŒããŸãã GoogleãPHPãå®è¡ããŠããå ŽåããµãŒããŒã¯PHPã䜿çšããŠã€ã³ããã¯ã¹ãã¡ã€ã«ã解éããçµæãã¯ã©ã€ã¢ã³ãã«éä¿¡ããŸãã
8.ãã©ãŠã¶ã®èå°è£
ãã©ãŠã¶ã®ã¿ã¹ã¯ã¯ãéžæããWebãªãœãŒã¹ããŠãŒã¶ãŒã«è¡šç€ºãããµãŒããŒãããããããªã¯ãšã¹ãããŠã衚瀺ãŠã£ã³ããŠã«è¡šç€ºããããšã§ãã éåžžããã®ãããªãªãœãŒã¹ã¯HTMLããã¥ã¡ã³ãã§ãããPDFãç»åããŸãã¯ãã®ä»ã®çš®é¡ã®ã³ã³ãã³ãã§ãããŸããŸããã ãªãœãŒã¹ã®å Žæã¯ãURLã䜿çšããŠæ±ºå®ãããŸãã
ãã©ãŠã¶ãHTMLãã¡ã€ã«ã解éããã³è¡šç€ºããããã«äœ¿çšããæ¹æ³ã¯ãHTMLããã³CSSä»æ§ã«èšèŒãããŠããŸãã ãããã®ããã¥ã¡ã³ãã¯ãWebæšæºåã³ã³ãœãŒã·ã¢ã ã§ããW3CïŒWorld Wide Wib ConsortiumïŒã«ãã£ãŠéçºããã³ãµããŒããããŠããŸãã
ãã©ãŠã¶ã€ã³ã¿ãŒãã§ã€ã¹ã¯äºãã«éåžžã«äŒŒãŠããŸãã å€æ°ã®åäžã®èŠçŽ ããããŸãã
- URLãæ¿å
¥ãããã¢ãã¬ã¹ããŒã
- åã®ããŒãžãšæ¬¡ã®ããŒãžã«æ»ãããã®ãã¿ã³ã
- ããã¯ããŒã¯ãäœæããæ©èœã
- ããŒãžã®æŽæ°ïŒæŽæ°ïŒããã³çŸåšã®ããã¥ã¡ã³ãã®èªã¿èŸŒã¿ãåæ¢ãããã¿ã³ã
- ãŠãŒã¶ãŒãããŒã ããŒãžã«æ»ãããŒã ãã¿ã³ã
é«ã¬ãã«ã®ãã©ãŠã¶æ§é
ãã©ãŠã¶ã«ã¯æ¬¡ã®ã³ã³ããŒãã³ããå«ãŸããŠããŸãã
- ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ ïŒã¢ãã¬ã¹ããŒãååŸã®ãã¿ã³ãããã¯ããŒã¯ã®ã¡ãã¥ãŒãªã©ãå«ãŸããŸãã ããã«ã¯ãWebããŒãžãå®éã«è¡šç€ºããããŠã£ã³ããŠãé€ããã¹ãŠã®èŠçŽ ãå«ãŸããŸãã
- ãã©ãŠã¶ãšã³ãžã³ ïŒã¬ã³ããªã³ã°ãšã³ãžã³ãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®éã§ã¢ã¯ã·ã§ã³ãåæ£ããŸãã
- ããšã³ãžã³ãã¬ã³ããªã³ã° ïŒèŠæ±ãããã³ã³ãã³ãã®è¡šç€ºãæ
åœããŸãã , HTML, «» HTML CSS, .
- : , HTTP-, .
- (UI) : , - .
- JavaScript : JavaScript-.
- : (, cookie). , ,
localStorage
, IndexedDB
, WebSQL
FileSystem
.
9. HTML
. , 8. HTML- .
(«parse tree») â DOM- . DOM â
Document Object Model
. HTML- HTML- « » (, JavaScript-). «».
HTML- «» ( ). :
- ;
- , HTML.
- . , , , HTML (, ,
document.write()
) , .
, HTML.
HTML5 .
: .
, (, , ).
, , «» : , . «
complete
» («
load
»).
:
«Invalid Syntax»
, «» .
10. CSS
- CSS-,
<style>
«style» c « CSS ». - CSS-
StyleSheet
, CSS CSS. - CSS , .
11.
- DOM- CSS- « » (Render Tree Frame Tree).
- â , , .
- - ( ).
- - â , , .
- ( ).
- , . .
- , . ( ) .
- .
- (/) . (GPU) D2D/SkiaGL.
- , , .
- -, ( , iframe-, addon-).
- Direct3D/OpenGL . GPU .
12. GPU
13. -
, JavaScript- ( Google) ( ). Flash Java ( Google). , , .