Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
TCP µÄÄÇЩʶù£¨ÉÏ£©
 
»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-07-04
  2504  次浏览      32

TCPÊÇÒ»¸ö¾Þ¸´ÔÓµÄЭÒ飬ÒòΪËûÒª½â¾öºÜ¶àÎÊÌ⣬¶øÕâЩÎÊÌâÓÖ´ø³öÁ˺ܶà×ÓÎÊÌâºÍÒõ°µÃæ¡£ËùÒÔѧϰTCP±¾ÉíÊǸö±È½ÏÍ´¿àµÄ¹ý³Ì£¬µ«¶ÔÓÚѧϰµÄ¹ý³ÌÈ´ÄÜÈÃÈËÓкܶàÊÕ»ñ¡£¹ØÓÚTCPÕâ¸öЭÒéµÄϸ½Ú£¬ÎÒ»¹ÊÇÍÆ¼öÄãÈ¥¿´W.Richard StevensµÄ¡¶TCP/IP Ïê½â ¾í1£ºÐ­Òé¡·£¨µ±È»£¬ÄãÒ²¿ÉÒÔÈ¥¶ÁÒ»ÏÂRFC793ÒÔ¼°ºóÃæN¶àµÄRFC£©¡£ÁíÍ⣬±¾ÎÄÎÒ»áʹÓÃÓ¢ÎÄÊõÓÕâÑù·½±ãÄãͨ¹ýÕâЩӢÎĹؼü´ÊÀ´²éÕÒÏà¹ØµÄ¼¼ÊõÎĵµ¡£

Ö®ËùÒÔÏëдÕâÆªÎÄÕ£¬Ä¿µÄÓÐÈý¸ö£¬

Ò»¸öÊÇÏë¶ÍÁ¶Ò»ÏÂ×Ô¼ºÊÇ·ñ¿ÉÒÔÓüòµ¥µÄƪ·ù°ÑÕâô¸´ÔÓµÄTCPЭÒéÃèÇå³þµÄÄÜÁ¦¡£

ÁíÒ»¸öÊǾõµÃÏÖÔڵĺöà³ÌÐòÔ±»ù±¾Éϲ»»áÈÏÈÏÕæÕæµØ¶Á±¾Ê飬ϲ»¶¿ì²ÍÎÄ»¯£¬ËùÒÔ£¬Ï£ÍûÕâÆª¿ì²ÍÎÄÕ¿ÉÒÔÈÃÄã¶ÔTCPÕâ¸ö¹Åµä¼¼ÊõÓÐËùÁ˽⣬²¢ÄÜÌå»áµ½Èí¼þÉè¼ÆÖеÄÖÖÖÖÄÑ´¦¡£²¢ÇÒÄã¿ÉÒÔ´ÓÖÐÓÐһЩÈí¼þÉè¼ÆÉϵÄÊÕ»ñ¡£

×îÖØÒªµÄÏ£ÍûÕâЩ»ù´¡ÖªÊ¶¿ÉÒÔÈÃÄã¸ãÇåºÜ¶àÒÔÇ°Ò»Ð©ËÆÊǶø·ÇµÄ¶«Î÷£¬²¢ÇÒÄãÄÜÒâʶµ½»ù´¡µÄÖØÒª¡£

ËùÒÔ£¬±¾ÎIJ»»á̾̾¾ãµ½£¬Ö»ÊǶÔTCPЭÒé¡¢Ëã·¨ºÍÔ­ÀíµÄ¿ÆÆÕ¡£

ÎÒ±¾À´Ö»Ïëдһ¸öƪ·ùµÄÎÄյ쬵«ÊÇTCPÕæTMDµÄ¸´ÔÓ£¬±ÈC++¸´ÔÓ¶àÁË£¬Õâ30¶àÄêÀ´£¬¸÷ÖÖÓÅ»¯±äÖÖÕùÂÛºÍÐ޸ġ£ËùÒÔ£¬Ð´×Åдמͷ¢ÏÖÖ»Óп³³ÉÁ½Æª¡£

ÉÏÆªÖУ¬Ö÷ÒªÏòÄã½éÉÜTCPЭÒéµÄ¶¨ÒåºÍ¶ª°üʱµÄÖØ´«»úÖÆ¡£

ÏÂÆªÖУ¬Öصã½éÉÜTCPµÄÁ÷µü¡¢ÓµÈû´¦Àí¡£

·Ï»°ÉÙ˵£¬Ê×ÏÈ£¬ÎÒÃÇÐèÒªÖªµÀTCPÔÚÍøÂçOSIµÄÆß²ãÄ£ÐÍÖеĵÚËIJ㡪¡ªTransport²ã£¬IPÔÚµÚÈý²ã¡ª¡ªNetwork²ã£¬ARPÔÚµÚ¶þ²ã¡ª¡ªData Link²ã£¬ÔÚµÚ¶þ²ãÉϵÄÊý¾Ý£¬ÎÒÃǽÐFrame£¬ÔÚµÚÈý²ãÉϵÄÊý¾Ý½ÐPacket£¬µÚËIJãµÄÊý¾Ý½ÐSegment¡£

Ê×ÏÈ£¬ÎÒÃÇÐèÒªÖªµÀ£¬ÎÒÃdzÌÐòµÄÊý¾ÝÊ×ÏÈ»á´òµ½TCPµÄSegmentÖУ¬È»ºóTCPµÄSegment»á´òµ½IPµÄPacketÖУ¬È»ºóÔÙ´òµ½ÒÔÌ«ÍøEthernetµÄFrameÖУ¬´«µ½¶Ô¶Ëºó£¬¸÷¸ö²ã½âÎö×Ô¼ºµÄЭÒ飬Ȼºó°ÑÊý¾Ý½»¸ø¸ü¸ß²ãµÄЭÒé´¦Àí¡£

TCPÍ·¸ñʽ

½ÓÏÂÀ´£¬ÎÒÃÇÀ´¿´Ò»ÏÂTCPÍ·µÄ¸ñʽ

TCPÍ·¸ñʽ£¨Í¼Æ¬À´Ô´£©

ÄãÐèҪעÒâÕâô¼¸µã£º

1¡¢TCPµÄ°üÊÇûÓÐIPµØÖ·µÄ£¬ÄÇÊÇIP²ãÉϵÄÊ¡£µ«ÊÇÓÐÔ´¶Ë¿ÚºÍÄ¿±ê¶Ë¿Ú¡£

2¡¢Ò»¸öTCPÁ¬½ÓÐèÒªËĸöÔª×éÀ´±íʾÊÇͬһ¸öÁ¬½Ó£¨src_ip, src_port, dst_ip, dst_port£©×¼È·ËµÊÇÎåÔª×飬»¹ÓÐÒ»¸öÊÇЭÒé¡£µ«ÒòΪÕâÀïÖ»ÊÇ˵TCPЭÒ飬ËùÒÔ£¬ÕâÀïÎÒֻ˵ËÄÔª×é¡£

3¡¢×¢ÒâÉÏͼÖеÄËĸö·Ç³£ÖØÒªµÄ¶«Î÷£º

Sequence NumberÊǰüµÄÐòºÅ£¬ÓÃÀ´½â¾öÍøÂç°üÂÒÐò£¨reordering£©ÎÊÌâ¡£

Acknowledgement Number¾ÍÊÇACK¡ª¡ªÓÃÓÚÈ·ÈÏÊÕµ½£¬ÓÃÀ´½â¾ö²»¶ª°üµÄÎÊÌâ¡£

WindowÓÖ½ÐAdvertised-Window£¬Ò²¾ÍÊÇÖøÃûµÄ»¬¶¯´°¿Ú£¨Sliding Window£©£¬ÓÃÓÚ½â¾öÁ÷¿ØµÄ¡£

TCP Flag £¬Ò²¾ÍÊǰüµÄÀàÐÍ£¬Ö÷ÒªÊÇÓÃÓÚ²Ù¿ØTCPµÄ״̬»úµÄ¡£

¹ØÓÚÆäËüµÄ¶«Î÷£¬¿ÉÒԲο´ÏÂÃæµÄͼʾ

TCPµÄ״̬»ú

Æäʵ£¬ÍøÂçÉϵĴ«ÊäÊÇûÓÐÁ¬½ÓµÄ£¬°üÀ¨TCPÒ²ÊÇÒ»ÑùµÄ¡£¶øTCPËùνµÄ¡°Á¬½Ó¡±£¬Æäʵֻ²»¹ýÊÇÔÚͨѶµÄË«·½Î¬»¤Ò»¸ö¡°Á¬½Ó״̬¡±£¬ÈÃËü¿´ÉÏÈ¥ºÃÏñÓÐÁ¬½ÓÒ»Ñù¡£ËùÒÔ£¬TCPµÄ״̬±ä»»ÊǷdz£ÖØÒªµÄ¡£

ÏÂÃæÊÇ£º¡°TCPЭÒéµÄ״̬»ú¡±£¨Í¼Æ¬À´Ô´£© ºÍ ¡°TCP½¨Á´½Ó¡±¡¢¡°TCP¶ÏÁ´½Ó¡±¡¢¡°´«Êý¾Ý¡± µÄ¶ÔÕÕͼ£¬ÎÒ°ÑÁ½¸öͼ²¢ÅÅ·ÅÔÚÒ»Æð£¬ÕâÑù·½±ãÔÚÄã¶ÔÕÕ×Å¿´¡£ÁíÍ⣬ÏÂÃæÕâÁ½¸öͼ·Ç³£·Ç³£µÄÖØÒª£¬ÄãÒ»¶¨Òª¼ÇÀΡ££¨Í¸ö²Û£º¿´µ½ÕâÑù¸´ÔÓµÄ״̬»ú£¬¾ÍÖªµÀÕâ¸öЭÒéÓжิÔÓ£¬¸´ÔӵĶ«Î÷×ÜÊÇÓкܶà¿ÓµùµÄÊÂÇ飬ËùÒÔTCPЭÒéÆäʵҲͦ¿ÓµùµÄ£©

ºÜ¶àÈË»áÎÊ£¬ÎªÊ²Ã´½¨Á´½ÓÒª3´ÎÎÕÊÖ£¬¶ÏÁ´½ÓÐèÒª4´Î»ÓÊÖ£¿

1¡¢¶ÔÓÚ½¨Á´½ÓµÄ3´ÎÎÕÊÖ£¬Ö÷ÒªÊÇÒª³õʼ»¯Sequence Number µÄ³õʼֵ¡£Í¨ÐŵÄË«·½Òª»¥Ïà֪ͨ¶Ô·½×Ô¼ºµÄ³õʼ»¯µÄSequence Number£¨ËõдΪISN£ºInital Sequence Number£©¡ª¡ªËùÒÔ½ÐSYN£¬È«³ÆSynchronize Sequence Numbers¡£Ò²¾ÍÉÏͼÖÐµÄ x ºÍ y¡£Õâ¸öºÅÒª×÷ΪÒÔºóµÄÊý¾ÝͨÐŵÄÐòºÅ£¬ÒÔ±£Ö¤Ó¦Óòã½ÓÊÕµ½µÄÊý¾Ý²»»áÒòÎªÍøÂçÉϵĴ«ÊäµÄÎÊÌâ¶øÂÒÐò£¨TCP»áÓÃÕâ¸öÐòºÅÀ´Æ´½ÓÊý¾Ý£©¡£

2¡¢¶ÔÓÚ4´Î»ÓÊÖ£¬ÆäʵÄã×Ðϸ¿´ÊÇ2´Î£¬ÒòΪTCPÊÇȫ˫¹¤µÄ£¬ËùÒÔ£¬·¢ËÍ·½ºÍ½ÓÊÕ·½¶¼ÐèÒªFinºÍAck¡£Ö»²»¹ý£¬ÓÐÒ»·½ÊDZ»¶¯µÄ£¬ËùÒÔ¿´ÉÏÈ¥¾Í³ÉÁËËùνµÄ4´Î»ÓÊÖ¡£Èç¹ûÁ½±ßͬʱ¶ÏÁ¬½Ó£¬ÄǾͻá¾Í½øÈëµ½CLOSING״̬£¬È»ºóµ½´ïTIME_WAIT״̬¡£ÏÂͼÊÇË«·½Í¬Ê±¶ÏÁ¬½ÓµÄʾÒâͼ£¨ÄãͬÑù¿ÉÒÔ¶ÔÕÕ×ÅTCP״̬»ú¿´£©£º

Á½¶Ëͬʱ¶ÏÁ¬½Ó

ÁíÍ⣬Óм¸¸öÊÂÇéÐèҪעÒâһϣº

1.¹ØÓÚ½¨Á¬½ÓʱSYN³¬Ê±¡£ÊÔÏëһϣ¬Èç¹ûserver¶Ë½Óµ½ÁËclien·¢µÄSYNºó»ØÁËSYN-ACKºóclientµôÏßÁË£¬server¶ËûÓÐÊÕµ½client»ØÀ´µÄACK£¬ÄÇô£¬Õâ¸öÁ¬½Ó´¦ÓÚÒ»¸öÖмä״̬£¬¼´Ã»³É¹¦£¬Ò²Ã»Ê§°Ü¡£ÓÚÊÇ£¬server¶ËÈç¹ûÔÚÒ»¶¨Ê±¼äÄÚûÓÐÊÕµ½µÄTCP»áÖØ·¢SYN-ACK¡£ÔÚLinuxÏ£¬Ä¬ÈÏÖØÊÔ´ÎÊýΪ5´Î£¬ÖØÊԵļä¸ôʱ¼ä´Ó1s¿ªÊ¼Ã¿´Î¶¼·­ÊÛ£¬5´ÎµÄÖØÊÔʱ¼ä¼ä¸ôΪ1s, 2s, 4s, 8s, 16s£¬×ܹ²31s£¬µÚ5´Î·¢³öºó»¹ÒªµÈ32s¶¼ÖªµÀµÚ5´ÎÒ²³¬Ê±ÁË£¬ËùÒÔ£¬×ܹ²ÐèÒª 1s + 2s + 4s+ 8s+ 16s + 32s = 2^6 -1 = 63s£¬TCP²Å»á°Ñ¶Ï¿ªÕâ¸öÁ¬½Ó¡£

2.¹ØÓÚSYN Flood¹¥»÷¡£Ò»Ð©¶ñÒâµÄÈ˾ÍΪ´ËÖÆÔìÁËSYN Flood¹¥»÷¡ª¡ª¸ø·þÎñÆ÷·¢ÁËÒ»¸öSYNºó£¬¾ÍÏÂÏßÁË£¬ÓÚÊÇ·þÎñÆ÷ÐèҪĬÈϵÈ63s²Å»á¶Ï¿ªÁ¬½Ó£¬ÕâÑù£¬¹¥»÷Õ߾ͿÉÒÔ°Ñ·þÎñÆ÷µÄsynÁ¬½ÓµÄ¶ÓÁкľ¡£¬ÈÃÕý³£µÄÁ¬½ÓÇëÇó²»ÄÜ´¦Àí¡£ÓÚÊÇ£¬LinuxϸøÁËÒ»¸ö½Ðtcp_syncookiesµÄ²ÎÊýÀ´Ó¦¶ÔÕâ¸öÊ¡ª¡ªµ±SYN¶ÓÁÐÂúÁ˺ó£¬TCP»áͨ¹ýÔ´µØÖ·¶Ë¿Ú¡¢Ä¿±êµØÖ·¶Ë¿ÚºÍʱ¼ä´Á´òÔì³öÒ»¸öÌØ±ðµÄSequence Number·¢»ØÈ¥£¨ÓÖ½Ðcookie£©£¬Èç¹ûÊǹ¥»÷ÕßÔò²»»áÓÐÏìÓ¦£¬Èç¹ûÊÇÕý³£Á¬½Ó£¬Ôò»á°ÑÕâ¸ö SYN Cookie·¢»ØÀ´£¬È»ºó·þÎñ¶Ë¿ÉÒÔͨ¹ýcookie½¨Á¬½Ó£¨¼´Ê¹Äã²»ÔÚSYN¶ÓÁÐÖУ©¡£Çë×¢Ò⣬ÇëÏÈǧÍò±ðÓÃtcp_syncookiesÀ´´¦ÀíÕý³£µÄ´ó¸ºÔصÄÁ¬½ÓµÄÇé¿ö¡£ÒòΪ£¬synccookiesÊÇÍ×Э°æµÄTCPЭÒ飬²¢²»ÑϽ÷¡£¶ÔÓÚÕý³£µÄÇëÇó£¬ÄãÓ¦¸Ãµ÷ÕûÈý¸öTCP²ÎÊý¿É¹©ÄãÑ¡Ôñ£¬µÚÒ»¸öÊÇ£ºtcp_synack_retries ¿ÉÒÔÓÃËûÀ´¼õÉÙÖØÊÔ´ÎÊý£»µÚ¶þ¸öÊÇ£ºtcp_max_syn_backlog£¬¿ÉÒÔÔö´óSYNÁ¬½ÓÊý£»µÚÈý¸öÊÇ£ºtcp_abort_on_overflow ´¦Àí²»¹ýÀ´¸É´à¾ÍÖ±½Ó¾Ü¾øÁ¬½ÓÁË¡£

3.¹ØÓÚISNµÄ³õʼ»¯¡£ISNÊDz»ÄÜhard codeµÄ£¬²»È»»á³öÎÊÌâµÄ¡ª¡ª±ÈÈ磺Èç¹ûÁ¬½Ó½¨ºÃºóʼÖÕÓÃ1À´×öISN£¬Èç¹ûclient·¢ÁË30¸ösegment¹ýÈ¥£¬µ«ÊÇÍøÂç¶ÏÁË£¬ÓÚÊÇ clientÖØÁ¬£¬ÓÖÓÃÁË1×öISN£¬µ«ÊÇ֮ǰÁ¬½ÓµÄÄÇЩ°üµ½ÁË£¬ÓÚÊǾͱ»µ±³ÉÁËÐÂÁ¬½ÓµÄ°ü£¬´Ëʱ£¬clientµÄSequence Number ¿ÉÄÜÊÇ3£¬¶øServer¶ËÈÏΪclient¶ËµÄÕâ¸öºÅÊÇ30ÁË¡£È«ÂÒÁË¡£RFC793ÖÐ˵£¬ISN»áºÍÒ»¸ö¼ÙµÄʱÖÓ°óÔÚÒ»Æð£¬Õâ¸öʱÖÓ»áÔÚÿ4΢Ãë¶ÔISN×ö¼ÓÒ»²Ù×÷£¬Ö±µ½³¬¹ý2^32£¬ÓÖ´Ó0¿ªÊ¼¡£ÕâÑù£¬Ò»¸öISNµÄÖÜÆÚ´óÔ¼ÊÇ4.55¸öСʱ¡£ÒòΪ£¬ÎÒÃǼÙÉèÎÒÃǵÄTCP SegmentÔÚÍøÂçÉϵĴæ»îʱ¼ä²»»á³¬¹ýMaximum Segment Lifetime£¨ËõдΪMSL - WikipediaÓïÌõ£©£¬ËùÒÔ£¬Ö»ÒªMSLµÄֵСÓÚ4.55Сʱ£¬ÄÇô£¬ÎÒÃǾͲ»»áÖØÓõ½ISN¡£

4.¹ØÓÚ MSL ºÍ TIME_WAIT¡£Í¨¹ýÉÏÃæµÄISNµÄÃèÊö£¬ÏàÐÅÄãÒ²ÖªµÀMSLÊÇÔõôÀ´µÄÁË¡£ÎÒÃÇ×¢Òâµ½£¬ÔÚTCPµÄ״̬ͼÖУ¬´ÓTIME_WAIT״̬µ½CLOSED״̬£¬ÓÐÒ»¸ö³¬Ê±ÉèÖã¬Õâ¸ö³¬Ê±ÉèÖÃÊÇ 2*MSL£¨RFC793¶¨ÒåÁËMSLΪ2·ÖÖÓ£¬LinuxÉèÖóÉÁË30s£©ÎªÊ²Ã´ÒªÕâÓÐTIME_WAIT£¿ÎªÊ²Ã´²»Ö±½Ó¸ø×ª³ÉCLOSED×´Ì¬ÄØ£¿Ö÷ÒªÓÐÁ½¸öÔ­Òò£º1£©TIME_WAITÈ·±£ÓÐ×ã¹»µÄʱ¼äÈöԶËÊÕµ½ÁËACK£¬Èç¹û±»¶¯¹Ø±ÕµÄÄÇ·½Ã»ÓÐÊÕµ½Ack£¬¾Í»á´¥·¢±»¶¯¶ËÖØ·¢Fin£¬Ò»À´Ò»È¥ÕýºÃ2¸öMSL£¬2£©ÓÐ×ã¹»µÄʱ¼äÈÃÕâ¸öÁ¬½Ó²»»á¸úºóÃæµÄÁ¬½Ó»ìÔÚÒ»Æð£¨ÄãÒªÖªµÀ£¬ÓÐЩ×Ô×öÖ÷ÕŵÄ·ÓÉÆ÷»á»º´æIPÊý¾Ý°ü£¬Èç¹ûÁ¬½Ó±»ÖØÓÃÁË£¬ÄÇôÕâЩÑÓ³ÙÊÕµ½µÄ°ü¾ÍÓпÉÄÜ»á¸úÐÂÁ¬½Ó»ìÔÚÒ»Æð£©¡£Äã¿ÉÒÔ¿´¿´ÕâÆªÎÄÕ¡¶TIME_WAIT and its design implications for protocols and scalable client server systems¡·

5.¹ØÓÚTIME_WAITÊýÁ¿Ì«¶à¡£´ÓÉÏÃæµÄÃèÊöÎÒÃÇ¿ÉÒÔÖªµÀ£¬TIME_WAITÊǸöºÜÖØÒªµÄ״̬£¬µ«ÊÇÈç¹ûÔÚ´ó²¢·¢µÄ¶ÌÁ´½ÓÏ£¬TIME_WAIT ¾Í»áÌ«¶à£¬ÕâÒ²»áÏûºÄºÜ¶àϵͳ×ÊÔ´¡£Ö»ÒªËÑһϣ¬Äã¾Í»á·¢ÏÖ£¬Ê®Óа˾ŵĴ¦Àí·½Ê½¶¼ÊǽÌÄãÉèÖÃÁ½¸ö²ÎÊý£¬Ò»¸ö½Ðtcp_tw_reuse£¬ÁíÒ»¸ö½Ðtcp_tw_recycleµÄ²ÎÊý£¬ÕâÁ½¸ö²ÎÊýĬÈÏÖµ¶¼ÊDZ»¹Ø±ÕµÄ£¬ºóÕßrecyle±ÈǰÕßresue¸üΪ¼¤½ø£¬resueÒªÎÂÈáһЩ¡£ÁíÍ⣬Èç¹ûʹÓÃtcp_tw_reuse£¬±ØÐèÉèÖÃtcp_timestamps=1£¬·ñÔòÎÞЧ¡£ÕâÀÄãÒ»¶¨Òª×¢Ò⣬´ò¿ªÕâÁ½¸ö²ÎÊý»áÓбȽϴóµÄ¿Ó¡ª¡ª¿ÉÄÜ»áÈÃTCPÁ¬½Ó³öһЩ¹îÒìµÄÎÊÌ⣨ÒòΪÈçÉÏÊöÒ»Ñù£¬Èç¹û²»µÈ´ý³¬Ê±ÖØÓÃÁ¬½ÓµÄ»°£¬ÐµÄÁ¬½Ó¿ÉÄܻὨ²»ÉÏ¡£ÕýÈç¹Ù·½ÎĵµÉÏ˵µÄÒ»Ñù¡°It should not be changed without advice/request of technical experts¡±£©¡£

6.¹ØÓÚtcp_tw_reuse¡£¹Ù·½ÎĵµÉÏ˵tcp_tw_reuse ¼ÓÉÏtcp_timestamps£¨ÓÖ½ÐPAWS, for Protection Against Wrapped Sequence Numbers£©¿ÉÒÔ±£Ö¤Ð­ÒéµÄ½Ç¶ÈÉϵݲȫ£¬µ«ÊÇÄãÐèÒªtcp_timestampsÔÚÁ½±ß¶¼±»´ò¿ª£¨Äã¿ÉÒÔ¶ÁÒ»ÏÂtcp_twsk_uniqueµÄÔ´Âë £©¡£ÎÒ¸öÈ˹À¼Æ»¹ÊÇÓÐһЩ³¡¾°»áÓÐÎÊÌâ¡£

7.¹ØÓÚtcp_tw_recycle¡£Èç¹ûÊÇtcp_tw_recycle±»´ò¿ªÁË»°£¬»á¼ÙÉè¶Ô¶Ë¿ªÆôÁËtcp_timestamps£¬È»ºó»áÈ¥±È½Ïʱ¼ä´Á£¬Èç¹ûʱ¼ä´Á±ä´óÁË£¬¾Í¿ÉÒÔÖØÓᣵ«ÊÇ£¬Èç¹û¶Ô¶ËÊÇÒ»¸öNATÍøÂçµÄ»°£¨È磺һ¸ö¹«Ë¾Ö»ÓÃÒ»¸öIP³ö¹«Íø£©»òÊǶԶ˵ÄIP±»ÁíÒ»Ì¨ÖØÓÃÁË£¬Õâ¸öʾ͸´ÔÓÁË¡£½¨Á´½ÓµÄSYN¿ÉÄܾͱ»Ö±½Ó¶ªµôÁË£¨Äã¿ÉÄܻῴµ½connection time outµÄ´íÎ󣩣¨Èç¹ûÄãÏë¹ÛĦһÏÂLinuxµÄÄں˴úÂ룬Çë²Î¿´Ô´Âë tcp_timewait_state_process£©¡£

8.¹ØÓÚtcp_max_tw_buckets¡£Õâ¸öÊÇ¿ØÖƲ¢·¢µÄTIME_WAITµÄÊýÁ¿£¬Ä¬ÈÏÖµÊÇ180000£¬Èç¹û³¬ÏÞ£¬ÄÇô£¬ÏµÍ³»á°Ñ¶àµÄ¸ødestoryµô£¬È»ºóÔÚÈÕÖ¾Àï´òÒ»¸ö¾¯¸æ£¨È磺time wait bucket table overflow£©£¬¹ÙÍøÎĵµËµÕâ¸ö²ÎÊýÊÇÓÃÀ´¶Ô¿¹DDoS¹¥»÷µÄ¡£Ò²ËµµÄĬÈÏÖµ180000²¢²»Ð¡¡£Õâ¸ö»¹ÊÇÐèÒª¸ù¾Ýʵ¼ÊÇé¿ö¿¼ÂÇ¡£
Again£¬Ê¹ÓÃtcp_tw_reuseºÍtcp_tw_recycleÀ´½â¾öTIME_WAITµÄÎÊÌâÊǷdz£·Ç³£Î£Ïյģ¬ÒòΪÕâÁ½¸ö²ÎÊýÎ¥·´ÁËTCPЭÒ飨RFC 1122£©

Æäʵ£¬TIME_WAIT±íʾµÄÊÇÄãÖ÷¶¯¶ÏÁ¬½Ó£¬ËùÒÔ£¬Õâ¾ÍÊÇËùνµÄ¡°²»×÷ËÀ²»»áËÀ¡±¡£ÊÔÏ룬Èç¹ûÈöԶ˶ÏÁ¬½Ó£¬ÄÇôÕâ¸öÆÆÎÊÌâ¾ÍÊǶԷ½µÄÁË£¬ºÇºÇ¡£ÁíÍ⣬Èç¹ûÄãµÄ·þÎñÆ÷ÊÇÓÚHTTP·þÎñÆ÷£¬ÄÇôÉèÖÃÒ»¸öHTTPµÄKeepAliveÓжàÖØÒª£¨ä¯ÀÀÆ÷»áÖØÓÃÒ»¸öTCPÁ¬½ÓÀ´´¦Àí¶à¸öHTTPÇëÇ󣩣¬È»ºóÈÿͻ§¶ËÈ¥¶ÏÁ´½Ó£¨ÄãҪСÐÄ£¬ä¯ÀÀÆ÷¿ÉÄÜ»á·Ç³£Ì°À·£¬ËûÃDz»µ½Íò²»µÃÒѲ»»áÖ÷¶¯¶ÏÁ¬½Ó£©¡£

Êý¾Ý´«ÊäÖеÄSequence Number

ÏÂͼÊÇÎÒ´ÓWiresharkÖнØÁ˸öÎÒÔÚ·ÃÎÊcoolshell.cnʱµÄÓÐÊý¾Ý´«ÊäµÄͼ¸øÄ㿴һϣ¬SeqNumÊÇÔõô±äµÄ¡££¨Ê¹ÓÃWireshark²Ëµ¥ÖеÄStatistics ->Flow Graph¡­ £©

Äã¿ÉÒÔ¿´µ½£¬SeqNumµÄÔö¼ÓÊǺʹ«ÊäµÄ×Ö½ÚÊýÏà¹ØµÄ¡£ÉÏͼÖУ¬Èý´ÎÎÕÊÖºó£¬À´ÁËÁ½¸öLen:1440µÄ°ü£¬¶øµÚ¶þ¸ö°üµÄSeqNum¾Í³ÉÁË1441¡£È»ºóµÚÒ»¸öACK»ØµÄÊÇ1441£¬±íʾµÚÒ»¸ö1440ÊÕµ½ÁË¡£

×¢Ò⣺Èç¹ûÄãÓÃWireshark×¥°ü³ÌÐò¿´3´ÎÎÕÊÖ£¬Äã»á·¢ÏÖSeqNum×ÜÊÇΪ0£¬²»ÊÇÕâÑùµÄ£¬WiresharkΪÁËÏÔʾ¸üÓѺã¬Ê¹ÓÃÁËRelative SeqNum¡ª¡ªÏà¶ÔÐòºÅ£¬ÄãÖ»ÒªÔÚÓÒ¼ü²Ëµ¥ÖеÄprotocol preference ÖÐÈ¡Ïûµô¾Í¿ÉÒÔ¿´µ½¡°Absolute SeqNum¡±ÁË

TCPÖØ´«»úÖÆ

TCPÒª±£Ö¤ËùÓеÄÊý¾Ý°ü¶¼¿ÉÒÔµ½´ï£¬ËùÒÔ£¬±ØÐèÒªÓÐÖØ´«»úÖÆ¡£

×¢Ò⣬½ÓÊն˸ø·¢ËͶ˵ÄAckÈ·ÈÏÖ»»áÈ·ÈÏ×îºóÒ»¸öÁ¬ÐøµÄ°ü£¬±ÈÈ磬·¢ËͶ˷¢ÁË1,2,3,4,5Ò»¹²Îå·ÝÊý¾Ý£¬½ÓÊÕ¶ËÊÕµ½ÁË1£¬2£¬ÓÚÊÇ»Øack 3£¬È»ºóÊÕµ½ÁË4£¨×¢Òâ´Ëʱ3ûÊÕµ½£©£¬´ËʱµÄTCP»áÔõô°ì£¿ÎÒÃÇÒªÖªµÀ£¬ÒòΪÕýÈçÇ°ÃæËù˵µÄ£¬SeqNumºÍAckÊÇÒÔ×Ö½ÚÊýΪµ¥Î»£¬ËùÒÔackµÄʱºò£¬²»ÄÜÌø×ÅÈ·ÈÏ£¬Ö»ÄÜÈ·ÈÏ×î´óµÄÁ¬ÐøÊÕµ½µÄ°ü£¬²»È»£¬·¢ËͶ˾ÍÒÔΪ֮ǰµÄ¶¼ÊÕµ½ÁË¡£

³¬Ê±ÖØ´«»úÖÆ

Ò»ÖÖÊDz»»Øack£¬ËÀµÈ3£¬µ±·¢ËÍ·½·¢ÏÖÊÕ²»µ½3µÄack³¬Ê±ºó£¬»áÖØ´«3¡£Ò»µ©½ÓÊÕ·½ÊÕµ½3ºó£¬»áack »Ø 4¡ª¡ªÒâζ×Å3ºÍ4¶¼ÊÕµ½ÁË¡£

µ«ÊÇ£¬ÕâÖÖ·½Ê½»áÓбȽÏÑÏÖØµÄÎÊÌ⣬ÄǾÍÊÇÒòΪҪËÀµÈ3£¬ËùÒԻᵼÖÂ4ºÍ5¼´±ãÒѾ­ÊÕµ½ÁË£¬¶ø·¢ËÍ·½Ò²ÍêÈ«²»ÖªµÀ·¢ÉúÁËʲôÊ£¬ÒòΪûÓÐÊÕµ½Ack£¬ËùÒÔ£¬·¢ËÍ·½¿ÉÄܻᱯ¹ÛµØÈÏΪҲ¶ªÁË£¬ËùÒÔÓпÉÄÜÒ²»áµ¼ÖÂ4ºÍ5µÄÖØ´«¡£

¶Ô´ËÓÐÁ½ÖÖÑ¡Ôñ£º

Ò»ÖÖÊǽöÖØ´«timeoutµÄ°ü¡£Ò²¾ÍÊǵÚ3·ÝÊý¾Ý¡£

ÁíÒ»ÖÖÊÇÖØ´«timeoutºóËùÓеÄÊý¾Ý£¬Ò²¾ÍÊǵÚ3£¬4£¬5ÕâÈý·ÝÊý¾Ý¡£

ÕâÁ½ÖÖ·½Ê½ÓкÃÒ²Óв»ºÃ¡£µÚÒ»ÖÖ»á½ÚÊ¡´ø¿í£¬µ«ÊÇÂý£¬µÚ¶þÖÖ»á¿ìÒ»µã£¬µ«ÊÇ»áÀË·Ñ´ø¿í£¬Ò²¿ÉÄÜ»áÓÐÎÞÓù¦¡£µ«×ÜÌåÀ´Ëµ¶¼²»ºÃ¡£ÒòΪ¶¼ÔÚµÈtimeout£¬timeout¿ÉÄÜ»áºÜ³¤£¨ÔÚÏÂÆª»á˵TCPÊÇÔõô¶¯Ì¬µØ¼ÆËã³ötimeoutµÄ£©

¿ìËÙÖØ´«»úÖÆ

ÓÚÊÇ£¬TCPÒýÈëÁËÒ»ÖÖ½ÐFast Retransmit µÄËã·¨£¬²»ÒÔʱ¼äÇý¶¯£¬¶øÒÔÊý¾ÝÇý¶¯ÖØ´«¡£Ò²¾ÍÊÇ˵£¬Èç¹û£¬°üûÓÐÁ¬Ðøµ½´ï£¬¾Íack×îºóÄǸö¿ÉÄܱ»¶ªÁ˵İü£¬Èç¹û·¢ËÍ·½Á¬ÐøÊÕµ½3´ÎÏàͬµÄack£¬¾ÍÖØ´«¡£Fast RetransmitµÄºÃ´¦ÊDz»ÓõÈtimeoutÁËÔÙÖØ´«¡£

±ÈÈ磺Èç¹û·¢ËÍ·½·¢³öÁË1£¬2£¬3£¬4£¬5·ÝÊý¾Ý£¬µÚÒ»·ÝÏȵ½ËÍÁË£¬ÓÚÊǾÍack»Ø2£¬½á¹û2ÒòΪijЩԭÒòûÊÕµ½£¬3µ½´ïÁË£¬ÓÚÊÇ»¹ÊÇack»Ø2£¬ºóÃæµÄ4ºÍ5¶¼µ½ÁË£¬µ«ÊÇ»¹ÊÇack»Ø2£¬ÒòΪ2»¹ÊÇûÓÐÊÕµ½£¬ÓÚÊÇ·¢ËͶËÊÕµ½ÁËÈý¸öack=2µÄÈ·ÈÏ£¬ÖªµÀÁË2»¹Ã»Óе½£¬ÓÚÊǾÍÂíÉÏÖØ×ª2¡£È»ºó£¬½ÓÊÕ¶ËÊÕµ½ÁË2£¬´ËʱÒòΪ3£¬4£¬5¶¼ÊÕµ½ÁË£¬ÓÚÊÇack»Ø6¡£Ê¾ÒâͼÈçÏ£º

Fast RetransmitÖ»½â¾öÁËÒ»¸öÎÊÌ⣬¾ÍÊÇtimeoutµÄÎÊÌ⣬ËüÒÀÈ»ÃæÁÙÒ»¸ö¼èÄѵÄÑ¡Ôñ£¬¾ÍÊÇÖØ×ªÖ®Ç°µÄÒ»¸ö»¹ÊÇ֨װËùÓеÄÎÊÌâ¡£¶ÔÓÚÉÏÃæµÄʾÀýÀ´Ëµ£¬ÊÇÖØ´«#2ÄØ»¹ÊÇÖØ´«#2£¬#3£¬#4£¬#5ÄØ£¿ÒòΪ·¢ËͶ˲¢²»Çå³þÕâÁ¬ÐøµÄ3¸öack(2)ÊÇË­´«»ØÀ´µÄ£¿Ò²Ðí·¢ËͶ˷¢ÁË20·ÝÊý¾Ý£¬ÊÇ#6£¬#10£¬#20´«À´µÄÄØ¡£ÕâÑù£¬·¢ËͶ˺ÜÓпÉÄÜÒªÖØ´«´Ó2µ½20µÄÕâ¶ÑÊý¾Ý£¨Õâ¾ÍÊÇijЩTCPµÄʵ¼ÊµÄʵÏÖ£©¡£¿É¼û£¬ÕâÊÇÒ»°ÑË«Èн£¡£

SACK ·½·¨

ÁíÍâÒ»ÖÖ¸üºÃµÄ·½Ê½½Ð£ºSelective Acknowledgment (SACK)£¨²Î¿´RFC 2018£©£¬ÕâÖÖ·½Ê½ÐèÒªÔÚTCPÍ·Àï¼ÓÒ»¸öSACKµÄ¶«Î÷£¬ACK»¹ÊÇFast RetransmitµÄACK£¬SACKÔòÊǻ㱨ÊÕµ½µÄÊý¾ÝËé°æ¡£²Î¿´ÏÂͼ£º

ÕâÑù£¬ÔÚ·¢ËͶ˾ͿÉÒÔ¸ù¾Ý»Ø´«µÄSACKÀ´ÖªµÀÄÄЩÊý¾Ýµ½ÁË£¬ÄÄЩûÓе½¡£ÓÚÊǾÍÓÅ»¯ÁËFast RetransmitµÄËã·¨¡£µ±È»£¬Õâ¸öЭÒéÐèÒªÁ½±ß¶¼Ö§³Ö¡£ÔÚ LinuxÏ£¬¿ÉÒÔͨ¹ýtcp_sack²ÎÊý´ò¿ªÕâ¸ö¹¦ÄÜ£¨Linux 2.4ºóĬÈÏ´ò¿ª£©¡£

ÕâÀﻹÐèҪעÒâÒ»¸öÎÊÌ⡪¡ª½ÓÊÕ·½Reneging£¬ËùνRenegingµÄÒâ˼¾ÍÊǽÓÊÕ·½ÓÐȨ°ÑÒѾ­±¨¸ø·¢ËͶËSACKÀïµÄÊý¾Ý¸ø¶ªÁË¡£ÕâÑù¸ÉÊDz»±»¹ÄÀøµÄ£¬ÒòΪÕâ¸öÊ»á°ÑÎÊÌ⸴ÔÓ»¯ÁË£¬µ«ÊÇ£¬½ÓÊÕ·½Õâô×ö¿ÉÄÜ»áÓÐЩ¼«¶ËÇé¿ö£¬±ÈÈçÒª°ÑÄÚ´æ¸ø±ðµÄ¸üÖØÒªµÄ¶«Î÷¡£ËùÒÔ£¬·¢ËÍ·½Ò²²»ÄÜÍêÈ«ÒÀÀµSACK£¬»¹ÊÇÒªÒÀÀµACK£¬²¢Î¬»¤Time-Out£¬Èç¹ûºóÐøµÄACKûÓÐÔö³¤£¬ÄÇô»¹ÊÇÒª°ÑSACKµÄ¶«Î÷ÖØ´«£¬ÁíÍ⣬½ÓÊÕ¶ËÕâ±ßÓÀÔ¶²»ÄܰÑSACKµÄ°ü±ê¼ÇΪAck¡£

×¢Ò⣺SACK»áÏû·Ñ·¢ËÍ·½µÄ×ÊÔ´£¬ÊÔÏ룬Èç¹ûÒ»¸ö¹¥»÷Õ߸øÊý¾Ý·¢ËÍ·½·¢Ò»¶ÑSACKµÄÑ¡ÏÕâ»áµ¼Ö·¢ËÍ·½¿ªÊ¼ÒªÖØ´«ÉõÖÁ±éÀúÒѾ­·¢³öµÄÊý¾Ý£¬Õâ»áÏûºÄºÜ¶à·¢ËͶ˵Ä×ÊÔ´¡£ÏêϸµÄ¶«Î÷Çë²Î¿´¡¶TCP SACKµÄÐÔÄÜȨºâ¡·

Duplicate SACK ¨C ÖØ¸´ÊÕµ½Êý¾ÝµÄÎÊÌâ

Duplicate SACKÓÖ³ÆD-SACK£¬ÆäÖ÷ҪʹÓÃÁËSACKÀ´¸æËß·¢ËÍ·½ÓÐÄÄЩÊý¾Ý±»Öظ´½ÓÊÕÁË¡£RFC-2833 ÀïÓÐÏêϸÃèÊöºÍʾÀý¡£ÏÂÃæ¾Ù¼¸¸öÀý×Ó£¨À´Ô´ÓÚRFC-2833£©

D-SACKʹÓÃÁËSACKµÄµÚÒ»¸ö¶ÎÀ´×ö±êÖ¾£¬

Èç¹ûSACKµÄµÚÒ»¸ö¶ÎµÄ·¶Î§±»ACKËù¸²¸Ç£¬ÄÇô¾ÍÊÇD-SACK

Èç¹ûSACKµÄµÚÒ»¸ö¶ÎµÄ·¶Î§±»SACKµÄµÚ¶þ¸ö¶Î¸²¸Ç£¬ÄÇô¾ÍÊÇD-SACK

ʾÀýÒ»£ºACK¶ª°ü

ÏÂÃæµÄʾÀýÖУ¬¶ªÁËÁ½¸öACK£¬ËùÒÔ£¬·¢ËͶËÖØ´«Á˵ÚÒ»¸öÊý¾Ý°ü£¨3000-3499£©£¬ÓÚÊǽÓÊÕ¶Ë·¢ÏÖÖØ¸´ÊÕµ½£¬ÓÚÊÇ»ØÁËÒ»¸öSACK=3000-3500£¬ÒòΪACK¶¼µ½ÁË4000Òâζ×ÅÊÕµ½ÁË4000֮ǰµÄËùÓÐÊý¾Ý£¬ËùÒÔÕâ¸öSACK¾ÍÊÇD-SACK¡ª¡ªÖ¼ÔÚ¸æËß·¢ËͶËÎÒÊÕµ½ÁËÖØ¸´µÄÊý¾Ý£¬¶øÇÒÎÒÃǵķ¢ËͶ˻¹ÖªµÀ£¬Êý¾Ý°üûÓжª£¬¶ªµÄÊÇACK°ü¡£

Transmitted  Received    ACK Sent
Segment Segment (Including SACK Blocks)

3000-3499 3000-3499 3500 (ACK dropped)
3500-3999 3500-3999 4000 (ACK dropped)
3000-3499 3000-3499 4000, SACK=3000-3500

ʾÀý¶þ£¬ÍøÂçÑÓÎó

ÏÂÃæµÄʾÀýÖУ¬ÍøÂç°ü£¨1000-1499£©±»ÍøÂç¸øÑÓÎóÁË£¬µ¼Ö·¢ËÍ·½Ã»ÓÐÊÕµ½ACK£¬¶øºóÃæµ½´ïµÄÈý¸ö°ü´¥·¢ÁË¡°Fast RetransmitËã·¨¡±£¬ËùÒÔÖØ´«£¬µ«ÖØ´«Ê±£¬±»ÑÓÎóµÄ°üÓÖµ½ÁË£¬ËùÒÔ£¬»ØÁËÒ»¸öSACK=1000-1500£¬ÒòΪACKÒѵ½ÁË3000£¬ËùÒÔ£¬Õâ¸öSACKÊÇD-SACK¡ª¡ª±êʶÊÕµ½ÁËÖØ¸´µÄ°ü¡£

Õâ¸ö°¸ÀýÏ£¬·¢ËͶËÖªµÀ֮ǰÒòΪ¡°Fast RetransmitËã·¨¡±´¥·¢µÄÖØ´«²»ÊÇÒòΪ·¢³öÈ¥µÄ°ü¶ªÁË£¬Ò²²»ÊÇÒòΪ»ØÓ¦µÄACK°ü¶ªÁË£¬¶øÊÇÒòÎªÍøÂçÑÓʱÁË¡£

Transmitted    Received    ACK Sent
Segment Segment (Including SACK Blocks)

500-999 500-999 1000
1000-1499 (delayed)
1500-1999 1500-1999 1000, SACK=1500-2000
2000-2499 2000-2499 1000, SACK=1500-2500
2500-2999 2500-2999 1000, SACK=1500-3000
1000-1499 1000-1499 3000
1000-1499 3000, SACK=1000-1500

¿É¼û£¬ÒýÈëÁËD-SACK£¬ÓÐÕâô¼¸¸öºÃ´¦£º

1£©¿ÉÒÔÈ÷¢ËÍ·½ÖªµÀ£¬ÊÇ·¢³öÈ¥µÄ°ü¶ªÁË£¬»¹ÊÇ»ØÀ´µÄACK°ü¶ªÁË¡£

2£©ÊDz»ÊÇ×Ô¼ºµÄtimeout̫СÁË£¬µ¼ÖÂÖØ´«¡£

3£©ÍøÂçÉϳöÏÖÁËÏÈ·¢µÄ°üºóµ½µÄÇé¿ö£¨ÓÖ³Æreordering£©

4£©ÍøÂçÉÏÊDz»ÊǰÑÎÒµÄÊý¾Ý°ü¸ø¸´ÖÆÁË¡£

ÖªµÀÕâЩ¶«Î÷¿ÉÒԺܺõðïÖúTCPÁ˽âÍøÂçÇé¿ö£¬´Ó¶ø¿ÉÒÔ¸üºÃµÄ×öÍøÂçÉϵÄÁ÷¿Ø¡£

LinuxϵÄtcp_dsack²ÎÊýÓÃÓÚ¿ªÆôÕâ¸ö¹¦ÄÜ£¨Linux 2.4ºóĬÈÏ´ò¿ª£©

ºÃÁË£¬ÉÏÆª¾Íµ½ÕâÀï½áÊøÁË¡£

   
2504 ´Îä¯ÀÀ       32
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±


WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶


ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«