´Ó´¥ÆÁµ½ CPU
Ê×ÏÈÊÇ¡¸ÊäÈë URL¡¹£¬´ó²¿·ÖÈ˵ĵÚÒ»·´Ó¦»áÊǼüÅÌ£¬²»¹ýΪÁËÓëʱ¾ã½ø£¬ÕâÀォ½éÉÜ´¥ÃþÆÁÉ豸µÄ½»»¥¡£
´¥ÃþÆÁÒ»ÖÖ´«¸ÐÆ÷£¬Ä¿Ç°´ó¶àÊÇ»ùÓÚµçÈÝ(Capacitive)À´ÊµÏֵģ¬ÒÔǰ¶¼ÊÇÖ±½Ó¸²¸ÇÔÚÏÔʾÆÁÉϵ쬲»¹ý×î½ü³öÏÖÁË 3 ÖÖǶÈëµ½ÏÔʾÆÁÖеļ¼Êõ£¬µÚÒ»ÖÖÊÇ iPhone 5 µÄ In-cell£¬ËüÄܼõСÁË 0.5 ºÁÃ׵ĺñ¶È£¬µÚ¶þÖÖÊÇÈýÐÇʹÓÃµÄ On-cell ¼¼Êõ£¬µÚÈýÖÖÊǹúÄÚ³§ÉÌϲ»¶ÓÃµÄ OGS È«ÌùºÏ¼¼Êõ£¬¾ßÌåϸ½Ú¿ÉÒÔÔĶÁÕâÆªÎÄÕ¡£
µ±ÊÖÖ¸ÔÚÕâ¸ö´«¸ÐÆ÷ÉÏ´¥Ãþʱ£¬ÓÐЩµç×ӻᴫµÝµ½ÊÖÉÏ£¬´Ó¶øµ¼Ö¸ÃÇøÓòµÄµçѹ±ä»¯£¬´¥ÃþÆÁ¿ØÖÆÆ÷оƬ¸ù¾ÝÕâ¸ö±ä»¯¾ÍÄܼÆËã³öËù´¥ÃþµÄλÖã¬È»ºóͨ¹ý×ÜÏß½Ó¿Ú½«ÐźŴ«µ½ CPU µÄÒý½ÅÉÏ¡£
ÒÔ Nexus 5 ΪÀý£¬ËüËùʹÓõĴ¥ÆÁ¿ØÖÆÆ÷ÊÇ Synaptics S3350B£¬×ÜÏß½Ó¿ÚΪ I2C£¬ÒÔÏÂÊÇ Synaptics ´¥ÃþÆÁºÍ´¦ÀíÆ÷Á¬½ÓµÄʾÀý£º

×ó±ßÊÇ´¦ÀíÆ÷£¬ÓÒ±ßÊÇ´¥ÃþÆÁ¿ØÖÆÆ÷£¬ÖмäµÄ SDA ºÍ SCL Á¬Ïß¾ÍÊÇ I2C ×ÜÏß½Ó¿Ú¡£
CPU ÄÚ²¿µÄ´¦Àí
ÒÆ¶¯É豸ÖÐµÄ CPU ²¢²»ÊÇÒ»¸öµ¥¶ÀµÄоƬ£¬¶øÊÇºÍ GPU µÈоƬ¼¯³ÉÔÚÒ»Æð£¬±»³ÆÎª SoC£¨Æ¬ÉÏϵͳ£©¡£
Ç°ÃæÌáµ½ÁË´¥ÆÁºÍ CPU µÄÁ¬½Ó£¬Õâ¸öÁ¬½ÓºÍ´ó²¿·Ö¼ÆËã»úÄÚ²¿µÄÁ¬½ÓÒ»Ñù£¬¶¼ÊÇͨ¹ýµçÆøÐźÅÀ´½øÐÐͨÐŵģ¬Ò²¾ÍÊǵçѹ¸ßµÍµÄ±ä»¯£¬ÈçÏÂÃæµÄʱÐòͼ£º

ÔÚʱÖӵĿØÖÆÏ£¬ÕâЩµçÁ÷»á¾¹ý MOSFET ¾§Ìå¹Ü£¬¾§Ìå¹ÜÖаüº¬ N ÐͰ뵼ÌåºÍ P ÐͰ뵼Ì壬ͨ¹ýµçѹ¾ÍÄÜ¿ØÖÆÏß·¿ª±Õ£¬È»ºóÕâЩ MOSFET ¹¹³ÉÁË CMOS£¬½Ó×ÅÔÙÓÉ CMOS ʵÏÖ¡¸Ó롹¡¸»ò¡¹¡¸·Ç¡¹µÈÂß¼µç·ÃÅ£¬×îºóÓÉÂß¼µç·ÃÅÉϾÍÄÜʵÏÖ¼Ó·¨¡¢Î»ÒƵȼÆË㣬ÕûÌåÈçÏÂͼËùʾ£¨À´×Ô¡¶¼ÆËã»úÌåϵ½á¹¹¡·£©£º

³ýÁ˼ÆË㣬ÔÚ CPU Öл¹ÐèÒª´æ´¢µ¥ÔªÀ´¼ÓÔØºÍ´æ´¢Êý¾Ý£¬Õâ¸ö´æ´¢µ¥ÔªÒ»°ãͨ¹ý´¥·¢Æ÷(Flip-flop)À´ÊµÏÖ£¬³ÆÎª¼Ä´æÆ÷¡£
ÒÔÉÏÕâЩ¸ÅÄî¶¼±È½Ï³éÏó£¬ÍƼöÔĶÁ¡¸How to Build an 8-Bit Computer¡¹ÕâÆªÎÄÕ£¬×÷Õß»ùÓÚ¾§Ìå¹Ü¡¢¶þ¼«¹Ü¡¢µçÈݵÈÔ¼þÖÆ×÷ÁËÒ»¸ö 8 λµÄ¼ÆËã»ú£¬Ö§³Ö¼òµ¥»ã±àÖ¸ÁîºÍ½á¹ûÊä³ö£¬ËäÈ»ÏÖ´ú CPU µÄʵÏÖÒª±ÈÕâ¸ö¸´Ôӵö࣬µ«»ù±¾ÔÀí»¹ÊÇÒ»ÑùµÄ¡£
ÁíÍâÆäʵÎÒÒ²ÊǸտªÊ¼Ñ§Ï° CPU оƬµÄʵÏÖ£¬ËùÒԾͲ»ÔÚÕâÎóÈË×ÓµÜÁË£¬¸ÐÐËȤµÄ¶ÁÕßÇëÔĶÁ±¾½ÚºóÃæÍÆ¼öµÄÊé¼®¡£
´Ó CPU µ½²Ù×÷ϵͳÄÚºË
Ç°ÃæËµµ½´¥ÆÁ¿ØÖÆÆ÷½«µçÆøÐźŷ¢Ë͵½ CPU ¶ÔÓ¦µÄÒý½ÅÉÏ£¬½Óמͻᴥ·¢ CPU µÄÖжϻúÖÆ£¬ÒÔ Linux ΪÀý£¬Ã¿¸öÍⲿÉ豸¶¼ÓÐÒ»±êʶ·û£¬³ÆÎªÖжÏÇëÇó(IRQ)ºÅ£¬¿ÉÒÔͨ¹ý /proc/interrupts ÎļþÀ´²é¿´ÏµÍ³ÖÐËùÓÐÉ豸µÄÖжÏÇëÇóºÅ£¬ÒÔÏÂÊÇ Nexus 7 (2013) µÄ²¿·Ö½á¹û£º

ÒòΪ Nexus 7 ʹÓÃÁË ELAN µÄ´¥ÆÁ¿ØÖÆÆ÷£¬ËùÒÔ½á¹ûÖÐµÄ elan-ktf3k ¾ÍÊÇ´¥ÆÁµÄÖжÏÇëÇóÐÅÏ¢£¬ÆäÖÐ 294 ÊÇÖжϺţ¬1973609 ÊÇ´¥·¢µÄ´ÎÊý£¨ÊÖÖ¸µ¥»÷ʱ»á²úÉúÁ½´ÎÖжϣ¬µ«»¬¶¯Ê±»á²úÉúÉϰٴÎÖжϣ©¡£
ΪÁ˼ò»¯ÕâÀï²»¿¼ÂÇÓÅÏȼ¶ÎÊÌ⣬ÒÔ ARMv7 ¼Ü¹¹µÄ´¦ÀíÆ÷ΪÀý£¬µ±ÖжϷ¢Éúʱ£¬CPU »áͣϵ±Ç°ÔËÐеijÌÐò£¬±£´æµ±Ç°Ö´ÐÐ״̬£¨Èç PC Öµ£©£¬½øÈë IRQ ״̬£©£¬È»ºóÌø×ªµ½¶ÔÓ¦µÄÖжϴ¦Àí³ÌÐòÖ´ÐУ¬Õâ¸ö³ÌÐòÒ»°ãÓɵÚÈý·½ÄÚºËÇý¶¯À´ÊµÏÖ.
Õâ¸öÇý¶¯³ÌÐò½«¶ÁÈ¡ I2C ×ÜÏßÖд«À´µÄλÖÃÊý¾Ý£¬È»ºóͨ¹ýÄÚºËµÄ input_report_abs µÈ·½·¨¼Ç¼´¥ÆÁ°´ÏÂ×ø±êµÈÐÅÏ¢£¬×îºóÓÉÄÚºËÖÐµÄ input ×ÓÄ£¿é½«ÕâЩÐÅÏ¢¶¼Ð´½ø /dev/input/event0 Õâ¸öÉ豸ÎļþÖÐ.
´Ó²Ù×÷ϵͳ GUI µ½ä¯ÀÀÆ÷
Ç°ÃæÌáµ½ Linux ÄÚºËÒѾÍê³ÉÁ˶ÔÓ²¼þµÄ³éÏ󣬯äËü³ÌÐòÖ»ÐèҪͨ¹ý¼àÌý /dev/input/event0 ÎļþµÄ±ä»¯¾ÍÄÜÖªµÀÓû§½øÐÐÁËÄÄЩ´¥Ãþ²Ù×÷£¬²»¹ýÈç¹ûÿ¸ö³ÌÐò¶¼Õâô×öʵÔÚÌ«Âé·³ÁË£¬ËùÒÔÔÚͼÏñ²Ù×÷ϵͳÖж¼»á°üº¬ GUI ¿ò¼ÜÀ´·½±ãÓ¦ÓóÌÐò¿ª·¢£¬±ÈÈç Linux ÏÂÖøÃûµÄ X¡£
µ« Android ²¢Ã»ÓÐʹÓà X£¬¶øÊÇ×Ô¼ºÊµÏÖÁËÒ»Ì× GUI ¿ò¼Ü£¬ÆäÖÐÓиö EventHub µÄ·þÎñ»áͨ¹ý epoll ·½Ê½¼àÌý /dev/input/ Ŀ¼ÏµÄÎļþ£¬È»ºó½«ÕâЩÐÅÏ¢´«µÝµ½ Android µÄ´°¿Ú¹ÜÀí·þÎñ(WindowManagerService)ÖУ¬Ëü»á¸ù¾ÝλÖÃÐÅÏ¢À´²éÕÒÏàÓ¦µÄ app£¬È»ºóµ÷ÓÃÆäÖеļàÌýº¯Êý£¨Èç onTouch µÈ£©¡£
¾ÍÕâÑù£¬ÎÒÃǽâ´ðÁ˵ÚÒ»¸öÎÊÌ⣬²»¹ýÓÉÓÚʱ¼äÓÐÏÞ£¬ÕâÀïÊ¡ÂÔÁ˺ܶàϸ½Ú£¬Ïë½øÒ»²½Ñ§Ï°µÄ¶ÁÕßÍÆ¼öÔĶÁÒÔÏÂÊé¼®¡£
À©Õ¹Ñ§Ï°
¡¶¼ÆËã»úÌåϵ½á¹¹¡·
¡¶¼ÆËã»úÌåϵ½á¹¹£ºÁ¿»¯Ñо¿·½·¨¡·
¡¶¼ÆËã»ú×é³ÉÓëÉè¼Æ£ºÓ²¼þ/Èí¼þ½Ó¿Ú¡·
¡¶±àÂë¡·
¡¶CPU×ÔÖÆÈëÃÅ¡·
¡¶²Ù×÷ϵͳ¸ÅÄî¡·
¡¶ARMv7-AR Ìåϵ½á¹¹²Î¿¼Êֲᡷ
¡¶LinuxÄÚºËÉè¼ÆÓëʵÏÖ¡·
¡¶¾«Í¨LinuxÉ豸Çý¶¯³ÌÐò¿ª·¢¡·
ä¯ÀÀÆ÷ÈçºÎÏòÍø¿¨·¢ËÍÊý¾Ý£¿
´Óä¯ÀÀÆ÷µ½ä¯ÀÀÆ÷ÄÚºË
Ç°ÃæÌáµ½²Ù×÷ϵͳ GUI ½«ÊäÈëʼþ´«µÝµ½ÁËä¯ÀÀÆ÷ÖУ¬ÔÚÕâ¹ý³ÌÖУ¬ä¯ÀÀÆ÷¿ÉÄÜ»á×öһЩԤ´¦Àí£¬±ÈÈç Chrome »á¸ù¾ÝÀúʷͳ¼ÆÀ´Ô¤¹ÀËùÊäÈë×Ö·û¶ÔÓ¦µÄÍøÕ¾£¬±ÈÈçÊäÈëÁË¡¸ba¡¹£¬¸ù¾Ý֮ǰµÄÀúÊ··¢ÏÖ 90% µÄ¸ÅÂÊ»á·ÃÎÊ¡¸www.baidu.com ¡¹£¬Òò´Ë¾Í»áÔÚÊäÈë»Ø³µÇ°¾ÍÂíÉÏ¿ªÊ¼½¨Á¢ TCP Á´½ÓÉõÖÁäÖȾÁË£¬ÕâÀïÃæ»¹ÓкܶàÆäËü²ßÂÔ£¬¸ÐÐËȤµÄ¶ÁÕßÍÆ¼öÔĶÁ High Performance Networking in Chrome¡£
½Ó×ÅÊÇÊäÈë URL ºóµÄ¡¸»Ø³µ¡¹£¬Õâʱä¯ÀÀÆ÷»á¶Ô URL ½øÐмì²é£¬Ê×ÏÈÅжÏÐÒ飬Èç¹ûÊÇ http ¾Í°´ÕÕ Web À´´¦Àí£¬ÁíÍ⻹»á¶ÔÕâ¸ö URL ½øÐа²È«¼ì²é£¬È»ºóÖ±½Óµ÷ÓÃä¯ÀÀÆ÷ÄÚºËÖеĶÔÓ¦·½·¨£¬±ÈÈç WebView ÖÐµÄ loadUrl ·½·¨¡£
ÔÚä¯ÀÀÆ÷ÄÚºËÖлáÏȲ鿴»º´æ£¬È»ºóÉèÖà UA µÈ HTTP ÐÅÏ¢£¬½Ó×ŵ÷Óò»Í¬Æ½Ì¨ÏÂÍøÂçÇëÇóµÄ·½·¨¡£
ÐèҪעÒâä¯ÀÀÆ÷ºÍä¯ÀÀÆ÷ÄÚºËÊDz»Í¬µÄ¸ÅÄä¯ÀÀÆ÷Ö¸µÄÊÇ Chrome¡¢Firefox£¬¶øä¯ÀÀÆ÷ÄÚºËÔòÊÇ
Blink¡¢Gecko£¬ä¯ÀÀÆ÷ÄÚºËÖ»¸ºÔðäÖȾ£¬GUI ¼°ÍøÂçÁ¬½ÓµÈ¿çƽ̨¹¤×÷ÔòÊÇä¯ÀÀÆ÷ʵÏÖµÄ
HTTP ÇëÇóµÄ·¢ËÍ
ÒòÎªÍøÂçµÄµ×²ãʵÏÖÊǺÍÄÚºËÏà¹ØµÄ£¬ËùÒÔÕâÒ»²¿·ÖÐèÒªÕë¶Ô²»Í¬Æ½Ì¨½øÐд¦Àí£¬´ÓÓ¦Óòã½Ç¶È¿´Ö÷Òª×öÁ½¼þÊÂÇ飺ͨ¹ý DNS ²éѯ IP¡¢Í¨¹ý Socket ·¢ËÍÊý¾Ý£¬½ÓÏÂÀ´¾Í·Ö±ð½éÉÜÕâÁ½·½ÃæµÄÄÚÈÝ¡£
DNS ²éѯ
Ó¦ÓóÌÐò¿ÉÒÔÖ±½Óµ÷Óà Libc ÌṩµÄ getaddrinfo() ·½·¨À´ÊµÏÖ DNS ²éѯ¡£
DNS ²éѯÆäʵÊÇ»ùÓÚ UDP À´ÊµÏֵģ¬ÕâÀïÎÒÃÇͨ¹ýÒ»¸ö¾ßÌåÀý×ÓÀ´Á˽âËüµÄ²éÕÒ¹ý³Ì£¬ÒÔÏÂÊÇʹÓà dig +trace fex.baidu.com ÃüÁîµÃµ½µÄ½á¹û£¨Ê¡ÂÔÁËһЩ£©£º

172800 IN NS a.gtld-servers.net.
172800 IN NS c.gtld-servers.net.
172800 IN NS m.gtld-servers.net.
172800 IN NS h.gtld-servers.net.
172800 IN NS e.gtld-servers.net.
;; Received 503 bytes from 192.36.148.17#53(192.36.148.17) in 185 msbaidu.com. 172800 IN NS dns.baidu.com.
baidu.com. 172800 IN NS ns2.baidu.com.
baidu.com. 172800 IN NS ns3.baidu.com.
baidu.com. 172800 IN NS ns4.baidu.com.
baidu.com. 172800 IN NS ns7.baidu.com.
;; Received 201 bytes from 192.48.79.30#53(192.48.79.30) in 1237 msfex.baidu.com. 7200 IN CNAME fexteam.duapp.com.
fexteam.duapp.com. 300 IN CNAME duapp.n.shifen.com.
n.shifen.com. 86400 IN NS ns1.n.shifen.com.
n.shifen.com. 86400 IN NS ns4.n.shifen.com.
n.shifen.com. 86400 IN NS ns2.n.shifen.com.
n.shifen.com. 86400 IN NS ns5.n.shifen.com.
n.shifen.com. 86400 IN NS ns3.n.shifen.com.
;; Received 258 bytes from 61.135.165.235#53(61.135.165.235) in 2 ms
¿ÉÒÔ¿´µ½ÕâÊÇÒ»¸öÖð²½ËõС·¶Î§µÄ²éÕÒ¹ý³Ì£¬Ê×ÏÈÓɱ¾»úËùÉèÖÃµÄ DNS ·þÎñÆ÷(8.8.8.8)Ïò DNS ¸ù½Úµã²éѯ¸ºÔð .com ÇøÓòµÄÓòÎñÆ÷£¬È»ºóͨ¹ýÆäÖÐÒ»¸ö¸ºÔð .com µÄ·þÎñÆ÷²éѯ¸ºÔð baidu.com µÄ·þÎñÆ÷£¬×îºóÓÉÆäÖÐÒ»¸ö baidu.com µÄÓòÃû·þÎñÆ÷²éѯ fex.baidu.com ÓòÃûµÄµØÖ·¡£
¿ÉÄÜÄãÔÚ²éѯijЩÓòÃûµÄʱ»á·¢ÏÖºÍÉÏÃæ²»Ò»Ñù£¬×îµ×½«¿´µ½ÓиöÆæ¹ÖµÄ·þÎñÆ÷ÇÀÏÈ·µ»Ø½á¹û¡£¡£¡£
ÕâÀïΪÁË·½±ãÃèÊö£¬ºöÂÔÁ˺ܶ಻ͬµÄÇé¿ö£¬±ÈÈç 127.0.0.1 Æäʵ×ßµÄÊÇ loopback£¬ºÍÍø¿¨É豸û¹ØÏµ£»±ÈÈç Chrome »áÔÚä¯ÀÀÆ÷Æô¶¯µÄʱԤÏȲéѯ 10 ¸öÄãÓпÉÄÜ·ÃÎʵÄÓòÃû£»»¹ÓÐ Hosts Îļþ¡¢»º´æÊ±¼ä TTL(Time to live)µÄÓ°ÏìµÈ¡£
ͨ¹ý Socket ·¢ËÍÊý¾Ý
ÓÐÁË IP µØÖ·£¬¾Í¿ÉÒÔͨ¹ý Socket API À´·¢ËÍÊý¾ÝÁË£¬Õâʱ¿ÉÒÔÑ¡Ôñ TCP »ò UDP ÐÒ飬¾ßÌåʹÓ÷½·¨ÕâÀï¾Í²»½éÉÜÁË£¬ÍƼöÔĶÁBeej¡¯s Guide to Network Programming¡£
HTTP ³£ÓõÄÊÇ TCP ÐÒ飬ÓÉÓÚ TCP ÐÒéµÄ¾ßÌåϸ½Úµ½´¦¶¼ÄÜ¿´µ½£¬ËùÒÔ±¾ÎľͲ»½éÉÜÁË£¬ÕâÀï̸һÏ TCP µÄ Head-of-line blocking ÎÊÌ⣺¼ÙÉè¿Í»§¶ËµÄ·¢ËÍÁË 3 ¸ö TCP Ƭ¶Î(segments)£¬±àºÅ·Ö±ðÊÇ 1¡¢2¡¢3£¬Èç¹û±àºÅΪ 1 µÄ°ü´«Êäʱ¶ªÁË£¬¼´±ã±àºÅ 2 ºÍ 3 ÒѾµ½´ïÒ²Ö»Äܵȴý£¬ÒòΪ TCP ÐÒéÐèÒª±£Ö¤Ë³Ðò£¬Õâ¸öÎÊÌâÔÚ HTTP pipelining ϸüÑÏÖØ£¬ÒòΪ HTTP pipelining ¿ÉÒÔÈöà¸ö HTTP ÇëÇóͨ¹ýÒ»¸ö TCP ·¢ËÍ£¬±ÈÈç·¢ËÍÁ½ÕÅͼƬ£¬¿ÉÄܵڶþÕÅͼƬµÄÊý¾ÝÒѾȫÊÕµ½ÁË£¬µ«»¹µÃµÈµÚÒ»ÕÅͼƬµÄÊý¾Ý´«µ½¡£
ΪÁ˽â¾ö TCP ÐÒéµÄÐÔÄÜÎÊÌ⣬Chrome ÍŶÓÈ¥ÄêÌá³öÁË QUIC ÐÒ飬ËüÊÇ»ùÓÚ UDP ʵÏֵĿɿ¿´«Ê䣬±ÈÆð TCP£¬ËüÄܼõÉٺܶàÀ´»Ø(round trip)ʱ¼ä£¬»¹ÓÐǰÏò¾À´íÂë(Forward Error Correction)µÈ¹¦ÄÜ¡£Ä¿Ç° Google Plus¡¢ Gmail¡¢Google Search¡¢blogspot¡¢Youtube µÈ¼¸ºõ´ó²¿·Ö Google ²úÆ·¶¼ÔÚʹÓà QUIC£¬¿ÉÒÔͨ¹ý chrome://net-internals/#spdy Ò³ÃæÀ´·¢ÏÖ¡£ ËäȻĿǰ³ýÁË Google »¹Ã»ÈËÓà QUIC£¬µ«ÎÒ¾õµÃͦÓÐǰ¾°µÄ£¬ÒòΪÓÅ»¯ TCP ÐèÒªÉý¼¶ÏµÍ³Äںˣ¨±ÈÈç Fast Open£©¡£
ä¯ÀÀÆ÷¶Ôͬһ¸öÓòÃûÓÐÁ¬½ÓÊýÏÞÖÆ£¬´ó²¿·ÖÊÇ 6£¬ÎÒÒÔǰÈÏΪ½«Õâ¸öÁ¬½ÓÊý¸Ä´óºó»áÌáÉýÐÔÄÜ£¬µ«Êµ¼ÊÉϲ¢²»ÊÇÕâÑùµÄ£¬Chrome
ÍŶÓÓÐ×ö¹ýʵÑ飬·¢ÏÖ´Ó6¸Ä³É10ºóÐÔÄÜ·´¶øÏ½µÁË£¬Ôì³ÉÕâ¸öÏÖÏóµÄÒòËØÓкܶ࣬È罨Á¢Á¬½ÓµÄ¿ªÏú¡¢ÓµÈû¿ØÖƵÈÎÊÌ⣬¶øÏñ
SPDY¡¢HTTP 2.0 ÐÒ龡¹ÜֻʹÓÃÒ»¸ö TCP Á¬½ÓÀ´´«ÊäÊý¾Ý£¬µ«ÐÔÄÜ·´¶ø¸üºÃ£¬¶øÇÒ»¹ÄÜʵÏÖÇëÇóÓÅÏȼ¶¡£
ÁíÍ⣬ÒòΪ HTTP ÇëÇóÊÇ´¿Îı¾¸ñʽµÄ£¬ËùÒÔÔÚ TCP µÄÊý¾Ý¶ÎÖпÉÒÔÖ±½Ó·ÖÎö HTTP µÄÎı¾£¬Èç¹û·¢ÏÖ¡£¡£¡£
Socket ÔÚÄÚºËÖеÄʵÏÖ
Ç°ÃæËµµ½ä¯ÀÀÆ÷µÄ¿çƽ̨¿âͨ¹ýµ÷Óà Socket API À´·¢ËÍÊý¾Ý£¬ÄÇô Socket API ÊÇÈçºÎʵÏÖµÄÄØ£¿
ÒÔ Linux ΪÀý£¬ËüµÄʵÏÖÔÚÕâÀï socket.c£¬Ä¿Ç°ÎÒ»¹²»Ì«ÁË½â£¬ÍÆ¼ö¶ÁÕß¿´¿´ Linux kernel map£¬Ëü±ê×¢³öÁ˹ؼü·¾¶µÄº¯Êý£¬·½±ãѧϰ´ÓÐÒéÕ»µ½Íø¿¨Çý¶¯µÄʵÏÖ¡£
µ×²ãÍøÂçÐÒéµÄ¾ßÌåÀý×Ó
½ÓÏÂÀ´Èç¹û¼ÌÐø½éÉÜ IP ÐÒéºÍ MAC ÐÒé¿ÉÄܺܶà¶ÁÕß»áÔΣ¬ËùÒÔ±¾½Ú½«Ê¹Óà Wireshark À´Í¨¹ý¾ßÌåÀý×Ó½²½â£¬ÒÔÏÂÊÇÎÒÇëÇó°Ù¶ÈÊ×ҳʱץȡµ½µÄÍøÂçÊý¾Ý£º

×îµ×ÏÂÊÇʵ¼ÊµÄ¶þ½øÖÆÊý¾Ý£¬ÖмäÊǽâÎö³öÀ´µÄ¸÷¸ö×Ö¶ÎÖµ£¬¿ÉÒÔ¿´µ½ÆäÖÐ×îµ×²¿Îª HTTP ÐÒé(Hypertext Transfer Protocol)£¬ÔÚ HTTP ֮ǰÓÐ 54 ×Ö½Ú(0¡Á36)£¬Õâ¾ÍÊǵײãÍøÂçÐÒéËù´øÀ´µÄ¿ªÏú£¬ÎÒÃǽÓÏÂÀ´¶ÔÕâЩÐÒé½øÐзÖÎö¡£ ÔÚ HTTP Ö®ÉÏÊÇ TCP ÐÒé(Transmission Control Protocol)£¬ËüµÄ¾ßÌåÄÚÈÝÈçÏÂͼËùʾ£º

ͨ¹ýµ×²¿µÄ¶þ½øÖÆÊý¾Ý£¬¿ÉÒÔ¿´µ½ TCP ÐÒéÊǼÓÔÚ HTTP Îı¾Ç°ÃæµÄ£¬ËüÓÐ 20 ¸ö×Ö½Ú£¬ÆäÖж¨ÒåÁ˱¾µØ¶Ë¿Ú(Source port)ºÍÄ¿±ê¶Ë¿Ú(Destination port)¡¢Ë³ÐòÐòºÅ(Sequence Number)¡¢´°¿Ú³¤¶ÈµÈÐÅÏ¢£¬ÒÔÏÂÊÇ TCP ÐÒé¸÷¸ö²¿·ÖÊý¾ÝµÄÍêÕû½éÉÜ£º

¾ßÌå¸÷¸ö×ֶεÄ×÷ÓÃÕâÀï¾Í²»½éÉÜÁË£¬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔÔĶÁ RFC 793£¬²¢½áºÏ×¥°ü·ÖÎöÀ´Àí½â¡£
ÐèҪעÒâµÄÊÇ£¬ÔÚ TCP ÐÒéÖв¢Ã»ÓÐ IP µØÖ·ÐÅÏ¢£¬ÒòΪÕâÊÇÔÚÉÏÒ»²ãµÄ IP ÐÒéÖж¨ÒåµÄ£¬ÈçÏÂͼËùʾ£º

IP ÐÒéͬÑùÊÇÔÚ TCP Ç°ÃæµÄ£¬ËüÒ²ÓÐ 20 ×Ö½Ú£¬ÔÚÕâÀïÖ¸Ã÷Á˰汾ºÅ(Version)Ϊ 4£¬Ô´(Source) IP Ϊ 192.168.1.106£¬Ä¿±ê(Destination) IP Ϊ 119.75.217.56£¬Òò´Ë IP ÐÒé×îÖØÒªµÄ×÷ÓþÍÊÇÈ·¶¨ IP µØÖ·¡£
ÒòΪ IP ÐÒéÖпÉÒԲ鿴µ½Ä¿±ê IP µØÖ·£¬ËùÒÔÈç¹û·¢ÏÖÄ³Ð©ÌØ¶¨µÄ IP µØÖ·£¬Ä³Ð©Â·ÓÉÆ÷¾Í»á¡£¡£¡£
µ«ÊÇ£¬¹â¿¿ IP µØÖ·ÊÇÎÞ·¨½øÐÐͨÐŵģ¬ÒòΪ IP µØÖ·²¢²»ºÍij̨É豸°ó¶¨£¬±ÈÈçÄãµÄ±Ê¼Ç±¾µÄ IP ÔÚ¼ÒÖÐÊÇ 192.168.1.1£¬µ«µ½¹«Ë¾¾Í±ä³É 172.22.22.22 ÁË£¬ËùÒÔÔڵײãͨÐÅʱÐèҪʹÓÃÒ»¸ö¹Ì¶¨µÄµØÖ·£¬Õâ¾ÍÊÇ MAC(media access control) µØÖ·£¬Ã¿¸öÍø¿¨³ö³§Ê±µÄ MAC µØÖ·¶¼Êǹ̶¨ÇÒΨһµÄ¡£
Òò´ËÔÙÍùÉϾÍÊÇ MAC ÐÒ飬ËüÓÐ 14 ×Ö½Ú£¬ÈçÏÂËùʾ£º

µ±Ò»Ì¨µçÄÔ¼ÓÈëÍøÂçʱ£¬ÐèҪͨ¹ý ARP ÐÒ鏿Ë߯äËüÍøÂçÉ豸ËüµÄ IP ¼°¶ÔÓ¦µÄ MAC µØÖ·ÊÇʲô£¬ÕâÑùÆäËüÉ豸¾ÍÄÜͨ¹ý IP µØÖ·À´²éÕÒ¶ÔÓ¦µÄÉ豸ÁË¡£
×î¶¥É쵀 Frame ÊÇ´ú±í Wireshark µÄ×¥°üÐòºÅ£¬²¢²»ÊÇÍøÂçÐÒé
¾ÍÕâÑù£¬ÎÒÃǽâ´ðÁ˵ڶþ¸öÎÊÌ⣬²»¹ýÆäʵÕâÀïÃæ»¹ÓкܶàºÜ¶àϸ½Úû½éÉÜ£¬½¨Òé´ó¼Òͨ¹ýÏÂÃæµÄÊé¼®½øÒ»²½Ñ§Ï°¡£
À©Õ¹Ñ§Ï°
¡¶¼ÆËã»úÍøÂ磺×Ô¶¥ÏòÏ·½·¨ÓëInternetÌØÉ«¡·
¡¶¼ÆËã»úÍøÂç¡·
¡¶WebÐÔÄÜȨÍþÖ¸ÄÏ¡·
Êý¾ÝÈçºÎ´Ó±¾»úÍø¿¨·¢Ë͵½·þÎñÆ÷£¿
´ÓÄں˵½ÍøÂçÊÊÅäÆ÷(Network Interface Card)
Ç°ÃæËµµ½µ÷Óà Socket API ºóÄں˻á¶ÔÊý¾Ý½øÐеײãÐÒéÕ»µÄ·â×°£¬½ÓÏÂÀ´Æô¶¯ DMA ¿ØÖÆÆ÷£¬Ëü½«´ÓÄÚ´æÖжÁÈ¡Êý¾ÝдÈëÍø¿¨¡£
ÒÔ Nexus 5 ΪÀý£¬ËüʹÓõÄÊDz©Í¨ BCM4339 оƬͨÐÅ£¬½Ó¿Ú²ÉÓÃÁË SD ¿¨Ò»ÑùµÄ SDIO£¬µ«Õâ¸öоƬµÄϸ½Ú²¢Ã»Óй«¿ª×ÊÁÏ£¬ËùÒÔÕâÀï¾Í²»ÌÖÂÛÁË¡£
Á¬½Ó Wi-Fi ·ÓÉ
Wi-Fi Íø¿¨ÐèҪͨ¹ý Wi-Fi ·ÓÉÀ´ÓëÍⲿͨÐÅ£¬ÔÀíÊÇ»ùÓÚÎÞÏߵ磬ͨ¹ýµçÁ÷±ä»¯À´²úÉúÎÞÏߵ磬Õâ¸ö¹ý³ÌÒ²½Ð¡¸µ÷ÖÆ¡¹£¬¶ø·´¹ýÀ´ÎÞÏßµç¿ÉÒÔÒýÆðµç´Å³¡±ä»¯£¬´Ó¶ø²úÉúµçÁ÷±ä»¯£¬ÀûÓÃÕâ¸öÔÀí¾ÍÄܽ«ÎÞÏßµçÖеÄÐÅÏ¢½â¶Á³öÀ´¾Í½Ð¡¸½âµ÷¡¹£¬ÆäÖе¥Î»Ê±¼äÄڱ仯µÄ´ÎÊý¾Í³ÆÎªÆµÂÊ£¬Ä¿Ç°ÔÚ Wi-Fi ÖÐËù²ÉÓÃµÄÆµÂÊ·ÖΪ 2.4 GHz ºÍ 5 GHz Á½ÖÖ¡£
ÔÚͬһ¸ö Wi-Fi ·ÓÉÏ£¬ÒòΪ²ÉÓÃµÄÆµÂÊÏàͬ£¬Í¬Ê±Ê¹ÓÃʱ»á·¢Éú³åÍ»£¬ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬Wi-Fi ²ÉÓÃÁ˱»³ÆÎª CSMA/CA µÄ·½·¨£¬¼òµ¥À´Ëµ¾ÍÊÇÔÚ´«ÊäǰÏÈÈ·ÈÏÐŵÀÊÇ·ñÒѱ»Ê¹Óã¬Ã»Óвŷ¢ËÍÊý¾Ý¡£
¶øÍ¬Ñù»ùÓÚÎÞÏßµçÔÀíµÄ 2G/3G/LTE Ò²»áÓöµ½ÀàËÆµÄÎÊÌ⣬µ«Ëü²¢Ã»ÓвÉÓà Wi-Fi
ÄÇÑùµÄ¶ÀÕ¼·½°¸£¬¶øÊÇͨ¹ýƵ·Ö(FDMA)¡¢Ê±·Ö(TDMA)ºÍÂë·Ö(CDMA)À´½øÐи´Ó㬾ßÌåϸ½ÚÕâÀï¾Í²»Õ¹¿ªÁË¡£
ÒÔСÃ×·ÓÉΪÀý£¬ËüʹÓõÄоƬÊÇ BCM 4709£¬Õâ¸öоƬÓÉ ARM Cortex-A9 ´¦ÀíÆ÷¼°Á÷Á¿(Flow)Ó²¼þ¼ÓËÙ×é³É£¬Ê¹ÓÃÓ²¼þоƬ¿ÉÒÔ±ÜÃâ¾¹ý²Ù×÷ϵͳÖжϡ¢ÉÏÏÂÎÄÇл»µÈ²Ù×÷£¬´Ó¶øÌáÉýÁËÐÔÄÜ¡£
·ÓÉÆ÷ÖеIJÙ×÷ϵͳ¿ÉÒÔ»ùÓÚ OpenWrt »ò DD-WRT À´¿ª·¢µÄ£¬¾ßÌåϸ½ÚÎÒ²»Ì«Á˽⣬ËùÒԾͲ»Õ¹¿ªÁË¡£
ÒòΪÄÚÍøÉ豸µÄ IP ¶¼ÊÇÀàËÆ 192.168.1.x ÕâÑùµÄÄÚÍøµØÖ·£¬ÍâÍøÎÞ·¨Ö±½ÓÏòÕâ¸öµØÖ··¢ËÍÊý¾Ý£¬ËùÒÔÍøÂçÊý¾ÝÔÚ¾¹ý·ÓÉʱ£¬Â·ÓÉ»áÐÞ¸ÄÏà¹ØµØÖ·ºÍ¶Ë¿Ú£¬Õâ¸ö²Ù×÷³ÆÎª NAT Ó³Éä¡£
×îºó¼Òͥ·ÓÉÒ»°ã»áͨ¹ýË«½ÊÏßÁ¬½Óµ½ÔËÓªÉÌÍøÂçµÄ¡£
ÔËÓªÉÌÍøÂçÄڵķÓÉ
Êý¾Ý¹ýË«½ÊÏß·¢Ë͵½ÔËÓªÉÌÍøÂçºó£¬»¹»á¾¹ýºÜ¶à¸öÖмä·ÓÉת·¢£¬¶ÁÕß¿ÉÒÔͨ¹ý traceroute ÃüÁî»òÕßÔÚÏß¿ÉÊÓ»¯¹¤¾ßÀ´²é¿´ÕâЩ·ÓÉµÄ ip ºÍλÖá£
µ±Êý¾Ý´«µÝµ½ÕâЩ·ÓÉÆ÷ºó£¬Â·ÓÉÆ÷»áÈ¡³ö°üÖÐÄ¿µÄµØÖ·µÄǰ׺£¬Í¨¹ýÄÚ²¿µÄת·¢±í²éÕÒ¶ÔÓ¦µÄÊä³öÁ´Â·£¬¶øÕâ¸öת·¢±íÊÇÈçºÎµÃµ½µÄÄØ£¿Õâ¾ÍÊÇ·ÓÉÆ÷ÖÐ×îÖØÒªµÄѡ·Ëã·¨ÁË£¬¿ÉÑ¡µÄÓкܶ࣬ÎÒ¶ÔÕâ·½Ãæ²¢²»Ì«Á˽⣬¿´ÆðÀ´Î¬»ù°Ù¿ÆÉϵĴÊÌõÁеúÜÈ«¡£
Ö÷¸ÉÍø¼äµÄ´«Êä
¶ÔÓÚ³¤ÏßµÄÊý¾Ý´«Ê䣬ͨ³£Ê¹ÓùâÏË×÷Ϊ½éÖÊ£¬¹âÏËÊÇ»ùÓÚ¹âµÄÈ«·´ÉäÀ´ÊµÏֵģ¬Ê¹ÓùâÏËÐèҪרÃŵķ¢ÉäÆ÷ͨ¹ýµçÖ·¢¹â£¨±ÈÈç LED£©½«µçÐźÅת³É¹â£¬±ÈÆðÇ°Ãæ½éÉܵÄÎÞÏßµçºÍË«½ÊÏߣ¬¹âÏËÐźŵĿ¹¸ÉÈÅÐÔҪǿµÃ¶à£¬¶øÇÒÄܺÄҲСºÜ¶à¡£
¼ÈÈ»ÊÇ»ùÓÚ¹âÀ´´«ÊäÊý¾Ý£¬Êý¾Ý´«ÊäËÙ¶ÈÒ²¾ÍÈ¡¾öÓÚ¹âµÄËÙ¶È£¬ÔÚÕæ¿ÕÖеĹâËÙ½Ó½üÓÚ 30 ÍòǧÃ×/Ã룬ÓÉÓÚ¹âÏ˰ü²ã(cladding)ÖеÄÕÛÉäÂÊ(refractive index)Ϊ 1.52£¬ËùÒÔʵ¼Ê¹âËÙÊÇ 20 ÍòǧÃ×/Ãë×óÓÒ£¬´ÓÊ×¶¼»ú³¡·ÉÍù¹ãÖݰ×ÔÆ»ú³¡µÄ¾àÀëÊÇ 1967 ǧÃ×£¬°´ÕÕÕâ¸ö¾àÀëÀ´ËãÐèÒª»¨·Ñ 10 ºÁÃë²ÅÄִܵÕâÒâζ×ÅÈç¹ûÄãÔÚ±±¾©£¬·þÎñÆ÷ÔÚ¹ãÖÝ£¬µÈÄã·¢³öÊý¾Ýµ½·þÎñÆ÷·µ»ØÊý¾ÝÖÁÉÙµÃµÈ 20 ºÁÃ룬ʵ¼ÊÇé¿öÔ¤¼ÆÊÇ 2- 3 ±¶£¬ÒòΪÕâÆäÖл¹Óи÷¸ö½Úµã·ÓÉ´¦ÀíµÄºÄʱ£¬±ÈÈçÎÒ²âÊÔÁËÒ»¸ö¹ãÖÝµÄ IP ·¢ÏÖÆ½¾ùÑÓ³ÙΪ 60 ºÁÃë¡£
Õâ¸öÑÓ³ÙÊÇÏÖÓпƼ¼ÎÞ·¨½â¾öµÄ£¨³ý·ÇÕÒµ½³¬¹ý¹âËٵķ½·¨£©£¬Ö»ÄÜͨ¹ý CDN À´Èô«Êä¾àÀë±ä¶Ì£¬»ò¾¡Á¿¼õÉÙ´®ÐеÄÀ´»ØÇëÇ󣨱ÈÈç TCP ½¨Á¢Á¬½ÓËùÐèµÄ 3 ´ÎÎÕÊÖ£©¡£
IDC ÄÚÍø
Êý¾Ýͨ¹ý¹âÏË×îÖÕ»áÀ´µ½·þÎñÆ÷ËùÔÚµÄ IDC »ú·¿£¬½øÈë IDC ÄÚÍø£¬Õâʱ¿ÉÒÔÏÈͨ¹ý·Ö¹âÆ÷½«Á÷Á¿¾µÏñÒ»·Ý³öÀ´·½±ã½øÐа²È«¼ì²éµÈ·ÖÎö£¬»¹ÄÜÓÃÀ´½øÐС£¡£¡£
ÕâÀïµÄ´ø¿í³É±¾ºÜ¸ß£¬Êǰ´ÕÕ·åÖµÀ´½áËãµÄ£¬ÒÔÿÔÂÿ Gbps£¨×¢ÒâÕâÀïÖ¸µÄÊÇ bit£¬¶ø²»ÊÇ
Byte£©Îªµ¥Î»£¬±±¾©Õâ±ß¼Û¸ñÔÚÊ®ÍòÈËÃñ±ÒÒÔÉÏ£¬Ò»°ãÍøÕ¾Ê¹Óà 1G µ½ 10G ²»µÈ¡£
½ÓÏÂÀ´¹âÏËÖеÄÊý¾Ý½«½øÈ뼯Ⱥ(Cluster)½»»»»ú£¬È»ºóÔÙת·¢µ½»ú¼Ü(Rack)¶¥²¿µÄ½»»»»ú£¬×îºóͨ¹ýÕâ¸ö½»»»»úµÄ¶Ë¿Ú½«Êý¾Ý·¢Íù»ú¼ÜÖеķþÎñÆ÷£¬¿ÉÒԲο¼ÏÂͼ£¨À´×Ô Open Compute£©£º

ÉÏͼ×ó±ßÊÇÕýÃæ£¬ÓÒ±ßÊDzàÃæ£¬¿ÉÒÔ¿´µ½¶¥²¿Îª½»»»»úËùÁôµÄλÖá£
ÒÔǰÕâЩ½»»»»úµÄÄÚ²¿ÊµÏÖÊÇ·â±ÕµÄ£¬Ïà¹Ø³§ÉÌ£¨Èç˼¿Æ¡¢Juniper µÈ£©»áʹÓÃÌØ¶¨µÄ´¦ÀíÆ÷ºÍ²Ù×÷ϵͳ£¬Íâ½çÄÑÒÔ½øÐÐÁé»î¿ØÖÆ£¬ÉõÖÁÓÐʱºòÐèÒªÊÖ¹¤ÅäÖ㬵«Õ⼸ÄêËæ×Å OpenFlow ¼¼ÊõµÄÁ÷ÐУ¬Ò²³öÏÖÁË¿ª·Å½»»»»úÓ²¼þ(Open Switch Hardware)£¬±ÈÈç Intel µÄÍøÂçÆ½Ì¨£¬ÍƼö¸ÐÐËȤµÄ¶ÁÕß½¨Òé¿´¿´ËüµÄÊÓÆµ£¬±ÈÎÄ×ÖÃèÊöÇåÎú¶àÁË¡£
ÐèҪעÒâµÄÊÇ£¬Ò»°ãÍøÂçÊéÖÐÌáµ½µÄ½»»»»ú¶¼Ö»¾ß±¸¶þ²ã£¨MAC ÐÒ飩µÄ¹¦ÄÜ£¬µ«ÔÚ IDC ÖеĽ»»»Æ÷»ù±¾É϶¼¾ß±¸Èý²ã£¨IP
ÐÒ飩µÄ¹¦ÄÜ£¬ËùÒÔ²»ÐèÒªÓÐרÃŵÄ·ÓÉÁË¡£
×îºó£¬ÒòΪ CPU ´¦ÀíµÄÊÇµçÆøÐźţ¬ËùÒÔ¹âÏËÖеĹâÏßÐèÒªÏÈʹÓÃÏà¹ØÉ豸ͨ¹ý¹âµçЧӦ½«¹âÐźÅת³ÉµçÐźţ¬È»ºó½øÈë·þÎñÆ÷Íø¿¨¡£
·þÎñÆ÷ CPU
Ç°ÃæËµµ½Êý¾ÝÒѾµ½´ï·þÎñÆ÷Íø¿¨ÁË£¬½Ó×ÅÍø¿¨»á½«Êý¾Ý¿½±´µ½ÄÚ´æÖУ¨DMA£©£¬È»ºóͨ¹ýÖжÏÀ´Í¨Öª CPU£¬Ä¿Ç°·þÎñÆ÷¶ËµÄ CPU »ù±¾É϶¼ÊÇ Intel Xeon£¬²»¹ýÕ⼸Äê³öÏÖÁËһЩеļܹ¹£¬±ÈÈçÔÚ´æ´¢ÁìÓò£¬°Ù¶ÈʹÓà ARM ¼Ü¹¹À´ÌáÉý´æ´¢Ãܶȣ¬ÒòΪ ARM µÄ¹¦ºÄ±È Xeon µÍµÃ¶à¡£¶øÔÚ¸ßÐÔÄÜÁìÓò£¬Google ×î½üÔÚ³¢ÊÔ»ùÓÚ POWER ¼Ü¹¹µÄ CPU À´¿ª·¢µÄ·þÎñÆ÷£¬×îÐ嵀 POWER8 ´¦ÀíÆ÷¿ÉÒÔ²¢ÐÐÖ´ÐÐ 96 ¸öỊ̈߳¬ËùÒԶԸ߲¢·¢µÄÓ¦ÓÃÓ¦¸ÃºÜÓаïÖú¡£
À©Õ¹Ñ§Ï°
The Datacenter as a Computer
Open Computer
¡¶Èí¼þ¶¨ÒåÍøÂç¡·
¡¶´ó»°ÎÞÏßͨÐÅ¡·
·þÎñÆ÷½ÓÊÕµ½Êý¾Ýºó»á½øÐÐÄÄЩ´¦Àí£¿
ΪÁ˱ÜÃâÖØ¸´£¬ÕâÀォ²»ÔÙ½éÉܲÙ×÷ϵͳ£¬¶øÊÇÖ±½Ó½øÈëºó¶Ë·þÎñ½ø³Ì£¬ÓÉÓÚÕâ·½ÃæÓÐÌ«¶à¼¼ÊõÑ¡ÐÍ£¬ËùÒÔÎÒÖ»Ìô¼¸¸ö³£¼ûµÄ¹«¹²²¿·ÖÀ´½éÉÜ¡£
¸ºÔؾùºâ
ÇëÇóÔÚ½øÈëµ½ÕæÕýµÄÓ¦Ó÷þÎñÆ÷ǰ£¬¿ÉÄÜ»¹»áÏȾ¹ý¸ºÔð¸ºÔؾùºâµÄ»úÆ÷£¬ËüµÄ×÷ÓÃÊǽ«ÇëÇóºÏÀíµØ·ÖÅäµ½¶à¸ö·þÎñÆ÷ÉÏ£¬Í¬Ê±¾ß±¸¾ß±¸·À¹¥»÷µÈ¹¦ÄÜ¡£
¸ºÔؾùºâ¾ßÌåʵÏÖÓкܶàÖÖ£¬ÓÐÖ±½Ó»ùÓÚÓ²¼þµÄ F5£¬ÓвÙ×÷ϵͳ´«Êä²ã(TCP)É쵀 LVS£¬Ò²ÓÐÔÚÓ¦Óòã(HTTP)ʵÏֵķ´Ïò´úÀí£¨Ò²½ÐÆß²ã´úÀí£©£¬½ÓÏÂÀ´½«½éÉÜ LVS ¼°·´Ïò´úÀí¡£
¸ºÔؾùºâµÄ²ßÂÔÒ²Óкܶ࣬Èç¹ûºóÃæµÄ¶à¸ö·þÎñÆ÷ÐÔÄܾùºâ£¬×î¼òµ¥µÄ·½·¨¾ÍÊǰ¤¸öÑ»·Ò»±é(Round-Robin)£¬ÆäËü²ßÂԾͲ»Ò»Ò»½éÉÜÁË£¬¿ÉÒԲο¼ LVS ÖеÄËã·¨¡£
LVS
LVS µÄ×÷ÓÃÊÇ´Ó¶ÔÍâ¿´À´Ö»ÓÐÒ»¸ö IP£¬¶øÊµ¼ÊÉÏÕâ¸ö IP ºóÃæ¶ÔÓ¦ÊǶą̀»úÆ÷£¬Òò´ËÒ²±»³ÉΪ Virtual IP¡£ Ç°ÃæÌáµ½µÄ NAT Ò²ÊÇÒ»ÖÖ LVS ÖеŤ×÷ģʽ£¬³ý´ËÖ®Í⻹ÓÐ DR ºÍ TUNNEL£¬¾ßÌåϸ½ÚÕâÀï¾Í²»Õ¹¿ªÁË£¬ËüÃǵÄȱµãÊÇÎÞ·¨¿çÍø¶Î£¬ËùÒÔ°Ù¶È×Ô¼º¿ª·¢ÁË BVS ϵͳ¡£
·´Ïò´úÀí
·½Ïò´úÀíÊǹ¤×÷ÔÚ HTTP Éϵ쬾ßÌåʵÏÖ¿ÉÒÔ»ùÓÚ HAProxy »ò Nginx£¬ÒòΪ·´Ïò´úÀíÄÜÀí½â HTTP ÐÒ飬ËùÒÔÄÜ×ö·Ç³£¶àµÄÊÂÇ飬±ÈÈ磺
½øÐкܶàͳһ´¦Àí£¬±ÈÈç·À¹¥»÷²ßÂÔ¡¢·Åץȡ¡¢SSL¡¢gzip¡¢×Ô¶¯ÐÔÄÜÓÅ»¯µÈ
Ó¦ÓòãµÄ·ÖÁ÷²ßÂÔ¶¼ÄÜÔÚÕâÀï×ö£¬±ÈÈç¶Ô /xx ·¾¶µÄÇëÇó·Öµ½ a ·þÎñÆ÷£¬¶Ô /yy ·¾¶µÄÇëÇó·Öµ½ b ·þÎñÆ÷£¬»òÕß°´ÕÕ cookie ½øÐÐСÁ÷Á¿²âÊÔµÈ
»º´æ£¬²¢ÔÚºó¶Ë·þÎñ¹ÒµôµÄʱºòÏÔʾÓÑºÃµÄ 404 Ò³Ãæ
¼à¿Øºó¶Ë·þÎñÊÇ·ñÒì³£
Nginx µÄ´úÂëдµÃ·Ç³£ÓÅÐ㣬´ÓÖÐÄÜѧµ½ºÜ¶à£¬¶Ô¸ßÐÔÄÜ·þÎñ¶Ë¿ª·¢¸ÐÐËȤµÄ¶ÁÕßÒ»¶¨Òª¿´¿´¡£
Web Server ÖеĴ¦Àí
ÇëÇó¾¹ýÇ°ÃæµÄ¸ºÔؾùºâºó£¬½«½øÈëµ½¶ÔÓ¦·þÎñÆ÷É쵀 Web Server£¬±ÈÈç Apache¡¢Tomcat¡¢Node.JS µÈ¡£
ÒÔ Apache ΪÀý£¬ÔÚ½ÓÊÕµ½ÇëÇóºó»á½»¸øÒ»¸ö¶ÀÁ¢µÄ½ø³ÌÀ´´¦Àí£¬ÎÒÃÇ¿ÉÒÔͨ¹ý±àд Apache À©Õ¹À´´¦Àí£¬µ«ÕâÑù¿ª·¢ÆðÀ´Ì«Âé·³ÁË£¬ËùÒÔÒ»°ã»áµ÷Óà PHP µÈ½Å±¾ÓïÑÔÀ´½øÐд¦Àí£¬±ÈÈçÔÚ CGI ϾÍÊǽ« HTTP ÖеIJÎÊý·Åµ½»·¾³±äÁ¿ÖУ¬È»ºóÆô¶¯ PHP ½ø³ÌÀ´Ö´ÐУ¬»òÕßʹÓà FastCGI À´Ô¤ÏÈÆô¶¯½ø³Ì¡£
£¨µÈºóÐøÓпÕÔÙµ¥¶À½éÉÜ Node.JS ÖеĴ¦Àí£©
½øÈëºó¶ËÓïÑÔ
Ç°ÃæËµµ½ Web Server »áµ÷Óúó¶ËÓïÑÔ½ø³ÌÀ´´¦Àí HTTP ÇëÇó£¨Õâ¸ö˵·¨²»ÍêÈ«ÕýÈ·£¬ÓкܶàÆäËü¿ÉÄÜ£©£¬ÄÇô½ÓÏÂÀ´¾ÍÊǺó¶ËÓïÑԵĴ¦ÀíÁË£¬Ä¿Ç°´ó²¿·Öºó¶ËÓïÑÔ¶¼ÊÇ»ùÓÚÐéÄâ»úµÄ£¬Èç PHP¡¢Java¡¢JavaScript¡¢Python µÈ£¬µ«Õâ¸öÁìÓòµÄ»°Ìâ·Ç³£´ó£¬ÄÑÒÔ½²Çå³þ£¬¶Ô PHP ¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔÔĶÁÎÒ֮ǰдµÄ HHVM ½éÉÜÎÄÕ£¬ÆäÖÐÌáµ½Á˺ܶàÐéÄâ»úµÄ»ù´¡ÖªÊ¶¡£
Web ¿ò¼Ü(Framework)
Èç¹ûÄãµÄ PHP Ö»ÊÇÓÃÀ´×ö¼òµ¥µÄ¸öÈËÖ÷Ò³¡¸Personal Home Page¡¹£¬µ¹Ã»±ØÒªÊ¹Óà Web ¿ò¼Ü£¬µ«Èç¹ûËæ×Å´úÂëµÄÔö¼Ó»á±äµÃÔ½À´Ô½ÄÑÒÔ¹ÜÀí£¬ËùÒÔÒ»°ãÍøÕ¾¶¼»á»á»ùÓÚij¸ö Web ¿ò¼ÜÀ´¿ª·¢£¬Òò´ËÔÚºó¶ËÓïÑÔÖ´ÐÐʱÊ×ÏȽøÈë Web ¿ò¼ÜµÄ´úÂ룬ȻºóÓÉ¿ò¼ÜÔÙÈ¥µ÷ÓÃÓ¦ÓõÄʵÏÖ´úÂë¡£
¿ÉÑ¡µÄ Web ¿ò¼Ü·Ç³£¶à£¬ÕâÀï¾Í²»Ò»Ò»½éÉÜÁË¡£
¶ÁÈ¡Êý¾Ý
Õⲿ·Ö²»Õ¹¿ªÁË£¬´Ó¼òµ¥µÄ¶ÁдÎļþµ½Êý¾ÝÖмä²ã£¬ÕâÀïÃæ¿ÉÑ¡µÄ·½°¸ÊµÔÚÌ«¶à¡£
À©Õ¹Ñ§Ï°
¡¶ÉîÈëÀí½âNginx¡·
¡¶PythonÔ´ÂëÆÊÎö¡·
¡¶ÉîÈëÀí½âJavaÐéÄâ»ú¡·
¡¶Êý¾Ý¿âϵͳʵÏÖ¡·
·þÎñÆ÷·µ»ØÊý¾Ýºóä¯ÀÀÆ÷ÈçºÎ´¦Àí£¿
Ç°ÃæËµµ½·þÎñ¶Ë´¦ÀíÍêÇëÇóºó£¬½á¹û½«Í¨¹ýÍøÂç·¢»Ø¿Í»§¶ËµÄä¯ÀÀÆ÷£¬´Ó±¾½Ú¿ªÊ¼½«½éÉÜä¯ÀÀÆ÷½ÓÊÕµ½Êý¾ÝºóµÄ´¦Àí£¬ÖµµÃÒ»ÌáµÄÊÇÕâ·½ÃæÖ®Ç°ÓÐһƪ²»´íµÄÎÄÕ How Browsers Work£¬ËùÒԺܶàÄÚÈÝÎÒ²»ÏëÔÙÖØ¸´½éÉÜ£¬Òò´Ë½«Öصã·ÅÔÚÄÇÆªÎÄÕÂËùºöÂԵIJ¿·Ö¡£
´Ó 01 µ½×Ö·û
HTTP ÇëÇó·µ»ØµÄ HTML ´«µÝµ½ä¯ÀÀÆ÷ºó£¬Èç¹ûÓÐ gzip »áÏȽâѹ£¬È»ºó½ÓÏÂÀ´×îÖØÒªµÄÎÊÌâÊÇÒªÖªµÀËüµÄ±àÂëÊÇʲô£¬±ÈÈçͬÑùÒ»¸ö¡¸ÖС¹×Ö£¬ÔÚ UTF-8 ±àÂëÏÂËüµÄÄÚÈÝÆäʵÊÇ¡¸11100100 10111000 10101101¡¹Ò²¾ÍÊÇ¡¸E4 B8 AD¡¹£¬¶øÔÚ GBK ÏÂÔòÊÇ¡¸11010110 11010000¡¹£¬Ò²¾ÍÊÇ¡¸D6 D0¡¹£¬ÈçºÎ²ÅÄÜÖªµÀÎļþµÄ±àÂ룿¿ÉÒÔÓкܶàÅжϷ½·¨£º Óû§ÉèÖã¬ÔÚä¯ÀÀÆ÷ÖпÉÒÔÖ¸¶¨Ò³Ãæ±àÂë
HTTP ÐÒéÖÐ
<meta> ÖÐµÄ charset ÊôÐÔÖµ
¶ÔÓÚ JS ºÍ CSS
¶ÔÓÚ iframe
Èç¹ûÔÚÕâЩµØ·½¶¼Ã»Ö¸Ã÷£¬ä¯ÀÀÆ÷¾ÍºÜÄÑ´¦Àí£¬ÔÚËü¿´À´¾ÍÊÇÒ»¶Ñ¡¸0¡¹ºÍ¡¸1¡¹£¬±ÈÈ硸ÖÐÎÄ¡¹£¬ËüÔÚ UTF-8 ÏÂÓÐ 6 ¸ö×Ö½Ú£¬Èç¹û°´ÕÕ GBK ¿ÉÒÔµ±³É¡¸ä¸æ–‡¡¹Õâ 3 ¸öºº×ÖÀ´½âÊÍ£¬ä¯ÀÀÆ÷Ôõô֪µÀµ½µ×ÊÇ¡¸ÖÐÎÄ¡¹»¹ÊÇ¡¸ä¸æ–‡¡¹ÄØ£¿
²»¹ýÕý³£ÈËÒ»ÑÛ¾ÍÄÜÈϳö¡¸ä¸æ–‡¡¹ÊÇ´íµÄ£¬ÒòΪÕâ 3 ¸ö×ÖÌ«²»³£¼ûÁË£¬ËùÒÔÓÐÈ˾ÍÏ뵽ͨ¹ýÅжϳ£¼û×ֵķ½·¨À´¼ì²â±àÂ룬µäÐ͵ıÈÈç Mozilla µÄ UniversalCharsetDetection£¬²»¹ýÕâ¶«¶«ÎóÅÐÂÊÒ²ºÜ¸ß£¬ËùÒÔ»¹ÊÇÖ¸Ã÷±àÂëµÄºÃ¡£
ÕâÑùºóÐø¶ÔÎı¾µÄ²Ù×÷¾ÍÊÇ»ùÓÚ¡¸×Ö·û¡¹(Character)µÄÁË£¬Ò»¸öºº×Ö¾ÍÊÇÒ»¸ö×Ö·û£¬²»ÓÃÔÙ¹ØÐÄËü¾¿¾¹ÊÇ 2 ¸ö×Ö½Ú»¹ÊÇ 3 ¸ö×Ö½Ú¡£
JavaScript µÄÖ´ÐÐ
£¨ºóÐøÔÙµ¥¶À½éÉÜ£¬ÍƼö´ó¼Ò¿´ R ´óÈ¥ÄêÕûÀíµÄÕâ¸öÌû×Ó£¬ÀïÃæÓзdz£¶àÏà¹Ø×ÊÁÏ£¬ÁíÍâÎÒÁ½ÄêÇ°Ôø½²¹ý JavaScript ÒýÇæÖеÄÐÔÄÜÓÅ»¯£¬ËäÈ»ÓÐЩÄÚÈݲ»Ì«ÕýÈ·ÁË£¬µ«Ò²¿ÉÒÔ¿´¿´£©
´Ó×Ö·ûµ½Í¼Æ¬
¶þάäÖȾÖÐ×ÔÓµÄÒªÊýÎÄ×ÖÏÔʾÁË£¬ËäÈ»ÏëÏëËÆºõºÜ¼òµ¥£¬²»¾ÍÊǽ«Ä³¸öÎÄ×Ö¶ÔÓ¦µÄ×ÖÐÎ(glyph)ÕÒ³öÀ´Ã´£¿ÔÚÖÐÎĺÍÓ¢ÎÄÖÐÕâÑù×öÊÇûÎÊÌâµÄ£¬ÒòΪһ¸ö×Ö·û¾Í¶ÔÓ¦Ò»¸ö×ÖÐÎ(glyph)£¬ÔÚ×ÖÌåÎļþÖÐÕÒµ½×ÖÐΣ¬È»ºó»ÉÏÈ¥¾Í¿ÉÒÔÁË£¬µ«ÔÚ°¢À²®ÓïÖÐÊDz»Ðеģ¬ÒòΪËüÓÐÓÐÁ¬ÌåÐÎʽ¡£ £¨ÒÔºóÐøÔÙµ¥¶À½éÉÜ£¬ÕâÀï·Ç³£¸´ÔÓ£©
¿çƽ̨ 2D »æÖÆ¿â
ÔÚ²»Í¬²Ù×÷ϵͳÖж¼ÌṩÁË×Ô¼ºµÄͼÐλæÖÆ API£¬±ÈÈç Mac OS X Ï嵀 Quartz£¬Windows Ï嵀 GDI ÒÔ¼° Linux Ï嵀 Xlib£¬µ«ËüÃÇÏ໥²»¼æÈÝ£¬ËùÒÔΪÁË·½±ãÖ§³Ö¿çƽ̨»æÍ¼£¬ÔÚ Chrome ÖÐʹÓÃÁË Skia ¿â¡£
£¨ÒÔºóÔÙµ¥¶À½éÉÜ£¬Skia ÄÚ²¿ÊµÏÖµ÷Óò㼶̫¶à£¬Ö±½Ó½²´úÂë¿ÉÄܲ»ÊʺϳõѧÕߣ©
GPU ºÏ³É
£¨ÒÔºóÐøÔÙµ¥¶À½éÉÜ£¬ËäÈ»¼òµ¥À´Ëµ¾ÍÊÇ¿¿Ìùͼ£¬µ«»¹µÃ½éÉÜ OpenGL ÒÔ¼° GPU оƬ£¬ÄÚÈÝÌ«³¤£©
À©Õ¹Ñ§Ï°
Õâ½ÚÄÚÈÝÊÇÎÒ×îÊìϤ£¬½á¹û·´¶øÒòΪÕâÑù²ÅÏ뻨¸ü¶àʱ¼äдºÃ£¬ËùÒԵȵ½ÒÔºóÔÙ·¢³öÀ´ºÃÁË£¬´ó¼ÒÏÈ¿ÉÒÔÏÈ¿´¿´ÒÔϼ¸¸öÕ¾µã£º
Chromium
Mozilla Hacks
Surfin¡¯ Safari
ä¯ÀÀÆ÷ÈçºÎ½«Ò³ÃæÕ¹ÏÖ³öÀ´£¿
Ç°ÃæÌáµ½ä¯ÀÀÆ÷ÒѾ½«Ò³ÃæäÖȾ³ÉÒ»ÕÅͼƬÁË£¬½ÓÏÂÀ´µÄÎÊÌâ¾ÍÊÇÈçºÎ½«ÕâÕÅͼƬչʾÔÚÆÁÄ»ÉÏ¡£ Framebuffer
ÒÔ Linux ΪÀý£¬ÔÚÓ¦ÓÃÖпØÖÆÆÁÄ»×îÖ±½ÓµÄ·½·¨Êǽ«Í¼ÏñµÄ bitmap дÈë /dev/fb0 ÎļþÖУ¬Õâ¸öÎļþʵ¼ÊÉÏÒ»¸öÄÚ´æÇøÓòµÄÓ³É䣬Õâ¶ÎÄÚ´æÇøÓò³ÆÎª Framebuffer¡£
ÐèҪעÒâµÄÊÇÔÚÓ²¼þ¼ÓËÙÏ£¬Èç OpenGL ÊDz»¾¹ý Framebuffer µÄ¡£
´ÓÄÚ´æµ½ LCD
ÔÚÊÖ»úµÄ SoC ÖÐͨ³£¶¼»áÓÐÒ»¸ö LCD ¿ØÖÆÆ÷£¬µ± Framebuffer ×¼±¸ºÃºó£¬CPU »áͨ¹ý AMBA ÄÚ²¿×ÜÏß֪ͨ LCD ¿ØÖÆÆ÷£¬È»ºóÕâ¸ö¿ØÖÆÆ÷¶ÁÈ¡ Framebuffer ÖеÄÊý¾Ý£¬½øÐиñʽת»»¡¢Ù¤ÂíУÕýµÈ²Ù×÷£¬×îÖÕͨ¹ý DSI¡¢HDMI µÈ½Ó¿Ú·¢Íù LCD ÏÔʾÆ÷¡£
ÒÔ OMAP5432 ΪÀý£¬ÏÂͼÊÇËüËùÖ§³ÖµÄÒ»ÖÖ²¢ÐÐÊý¾Ý´«Ê䣺

LCD ÏÔʾ
×îºó¼òµ¥½éÉÜһϠLCD µÄÏÔʾÔÀí¡£
Ê×ÏÈ£¬ÒªÏëÈÃÈËÑÛÄÜ¿´¼û£¬¾Í±ØÐëÓйâÏß½øÈ룬Ҫôͨ¹ý·´É䡢ҪôÓйâÔ´£¬±ÈÈç Kindle ËùʹÓÃµÄ E-ink ÆÁÄ»±¾ÉíÊDz»·¢¹âµÄ£¬ËùÒÔ±ØÐëÔÚÓйâÏߵĵط½²ÅÄÜÔĶÁ£¬ËüµÄÓŵãÊÇÊ¡µç£¬µ«ÏÞÖÆÌ«´ó£¬ËùÒÔ¼¸ºõËùÓÐ LCD ¶¼»á×Ô´ø¹âÔ´¡£
Ŀǰ LCD ÖÐͨ³£Ê¹Óà LED ×÷Ϊ¹âÔ´£¬LED ½ÓÉϵçÔ´ºó£¬ÔÚµçѹµÄ×÷ÓÃÏ£¬ÄÚ²¿µÄÕý¸ºµç×Ó½áºÏ»áÊͷŹâ×Ó£¬´Ó¶ø²úÉú¹â£¬ÕâÖÖÎïÀíÏÖÏó½ÐµçÖ·¢¹â(Electroluminescence)£¬ÕâÔÚÇ°Ãæ½éÉܹâÏËʱҲ½éÉܹý¡£
ÒÔÏÂÊÇ iPod Touch 2 ²ð¿ªºóµÄÑù×Ó£º£¨À´×Ô Wikipedia£©£º

ÔÚÉÏͼÖпÉÒÔ¿´µ½ 6 Õµ LED£¬Õâ¾ÍÊÇÕû¸öÆÁÄ»µÄ¹âÔ´£¬ÕâЩ¹âÔ´½«Í¨¹ý·´ÉäµÄ·´ÉäÊä³öµ½ÆÁÄ»ÖС£ ÓÐÁ˹âÔ´»¹µÃÓÐÉ«²Ê£¬ÔÚ LED ÖÐͨ³£×ö·¨ÊÇʹÓòÊÉ«ÂË¹âÆ¬(Color filter)À´½« LED ¹âԴת³É²»Í¬ÑÕÉ«¡£
ÁíÍâÖ±½ÓʹÓÃÈýÖÖÑÕÉ«µÄ LED Ò²ÊÇ¿ÉÐеģ¬ËüÄܱÜÃâÁËÂ˹⵼ÖµĹâ×ÓÀË·Ñ£¬½µµÍºÄµç£¬ºÜÊÊÓÃÓÚÖÇÄÜÊÖ±íÕâÑùµÄСÆÁÄ»£¬Apple ÊÕ¹ºµÄ
LuxVue ¹«Ë¾¾Í²ÉÓõÄÊÇÕâÖÖ·½Ê½£¬¸ÐÐËȤµÄ»°¿ÉÒÔÈ¥Ñо¿ËüµÄרÀû
LCD ÆÁÄ»ÉϵÄÿ¸öÎïÀíÏñËØµãʵ¼ÊÉÏÊÇÓɺ졢ÂÌ¡¢À¶ 3 ÖÖÉ«²ÊµÄµã×é³É£¬Ã¿¸öÑÕÉ«µãÄܵ¥¶À¿ØÖÆ£¬ÏÂÃæÊÇÓÃÏÔ΢¾µ·Å´óºóµÄÇé¿ö£¨À´×Ô Wikipedia£©£º

´ÓÉÏͼ¿ÉÒÔ¿´µ½Ã¿ 3 ÖÖÑÕÉ«µÄÂË¹âÆ¬¶¼È«ÁÁµÄʱºò¾ÍÊǰ×É«£¬¶¼Ãð¾ÍÊǺÚÉ«£¬Èç¹ûÄã×Ðϸ¿´»¹ÄÜ¿´µ½ÓÐЩµã²¢²»ÊÇÍêÈ«ºÚ£¬ÕâÊÇ×ÖÌåÉϵķ´¾â³ÝЧ¹û¡£
ͨ¹ýÕâ 3 ÖÖÑÕÉ«ÁÁ¶ÈµÄ²»Í¬×éºÏ¾ÍÄܲúÉú³ö¸÷ÖÖÉ«²Ê£¬Èç¹ûÿ¸öÑÕÉ«µãÄܲúÉú 256 ÖÖÁÁ¶È£¬¾ÍÄÜÉú³É 256 256 256 = 16777216 ÖÖÉ«²Ê¡£
²¢²»ÊÇËùÓÐÏÔʾÆ÷µÄÁÁ¶È¶¼ÄÜ´ïµ½ 256£¬ÔÚÑ¡ÔñÏÔʾÆ÷ʱÓиö²ÎÊýÊÇ 8-Bit »ò 6-Bit Ãæ°å£¬ÆäÖÐ 8-Bit µÄÃæ°åÄÜÔÚÎïÀíÉÏ´ïµ½
256 ÖÖÁÁ¶È£¬¶ø 6-Bit µÄÔòÖ»ÓÐ 64 ÖÖ£¬ËüÐèÒª¿¿Ë¢ÐÂÂÊ¿ØÖÆ(Frame rate control)¼¼ÊõÀ´´ïµ½ 256 µÄЧ¹û¡£
ÈçºÎ¿ØÖÆÕâЩÑÕÉ«µãµÄÁÁ¶È£¿Õâ¾ÍÒª¿¿Òº¾§ÌåÁË£¬Òº¾§ÌåµÄÌØÐÔÊǵ±ÓеçÁ÷ͨ¹ýʱ»á·¢ÉúÐýת£¬´Ó¶ø½«²¿·Ö¹âÏßµ²×¡£¬ËùÒÔֻҪͨ¹ýµçѹ¿ØÖÆÒº¾§ÌåµÄת¶¯¾ÍÄÜ¿ØÖÆÕâ¸öÑÕÉ«µãµÄÁÁ¶È£¬Ä¿Ç°ÊÖ»úÆÁÄ»ÖÐͨ³£Ê¹Óà TFT ¿ØÖÆÆ÷À´¶ÔÆä½øÐпØÖÆ£¬ÔÚ TFT ÖÐ×îÖøÃûµÄÒªÊý IPS Ãæ°å¡£
ÕâЩ¹ýÂ˺óµÄ¹âÏߴ󲿷ֻáÖ±½Ó½øÈëÑÛ¾¦£¬ÓÐЩ¹â»¹»áÔÚÆäËü±íÃæÉϾ¹ýÂþ(diffuse)·´Éä»ò¾µÃæ(specular)·´ÉäºóÔÙ½øÈëÑÛ¾¦£¬¼ÓÉÏ»·¾³¹âµÄÓ°Ïì£¬ÒªÕæÕýËã³öÓжàÉٹ⵽ÑÛ¾¦ÊÇÒ»¸ö»ý·ÖÎÊÌ⣬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔÑо¿»ùÓÚÎïÀíµÄäÖȾ¡£
µ±¹âÏß½øÈëÑÛ¾¦ºó£¬½ÓÏÂÀ´¾ÍÊÇÉúÎïѧµÄÁìÓòÁË£¬ËùÒÔÎÒÃǵ½´Ë½áÊø¡£ |