±à¼ÍƼö: |
±¾ÎÄÏêϸ½éÉÜÁËTCPÐÒ飬°üÀ¨·ÖÎöÿ²¿·ÖµÄº¬ÒåºÍ×÷Ó㬲¢ÌÖÂÛÁË
tcp¾¹ýµÄÈý´ÎÎÕÊÖ½¨Á¢Á¬½Ó, ËĴλÓÊÖ¶Ï¿ªÁ¬½Ó¡£
±¾ÎÄÀ´×ÔÓÚCSDN£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼ÍƼö¡£ |
|
TCPÐÒé
TCPÐÒéÈ«³Æ: ´«Êä¿ØÖÆÐÒé, ¹ËÃû˼Òå, ¾ÍÊÇÒª¶ÔÊý¾ÝµÄ´«Êä½øÐÐÒ»¶¨µÄ¿ØÖÆ.
ÏÈÀ´¿´¿´ËüµÄ±¨Í· ÎÒÃÇÀ´·ÖÎö·ÖÎöÿ²¿·ÖµÄº¬ÒåºÍ×÷ÓÃ
Ô´¶Ë¿ÚºÅ/Ä¿µÄ¶Ë¿ÚºÅ: ±íʾÊý¾Ý´ÓÄĸö½ø³ÌÀ´, µ½Äĸö½ø³ÌÈ¥.
32λÐòºÅ:
4λÊײ¿³¤¶È: ±íʾ¸Ãtcp±¨Í·ÓжàÉÙ¸ö4×Ö½Ú(32¸öbit)
6λ±£Áô: ¹ËÃû˼Òå, Ïȱ£Áô×Å, ÒÔ·ÀÍòÒ»
6λ±ê־λ
URG: ±êʶ½ô¼±Ö¸ÕëÊÇ·ñÓÐЧ
ACK: ±êʶȷÈÏÐòºÅÊÇ·ñÓÐЧ
PSH: ÓÃÀ´Ìáʾ½ÓÊÕ¶ËÓ¦ÓóÌÐòÁ¢¿Ì½«Êý¾Ý´Ótcp»º³åÇø¶Á×ß
RST: ÒªÇóÖØÐ½¨Á¢Á¬½Ó. ÎÒÃǰѺ¬ÓÐRST±êʶµÄ±¨ÎijÆÎª¸´Î»±¨ÎĶÎ
SYN: ÇëÇó½¨Á¢Á¬½Ó. ÎÒÃǰѺ¬ÓÐSYN±êʶµÄ±¨ÎijÆÎªÍ¬²½±¨ÎĶÎ
FIN: ֪ͨ¶Ô¶Ë, ±¾¶Ë¼´½«¹Ø±Õ. ÎÒÃǰѺ¬ÓÐFIN±êʶµÄ±¨ÎijÆÎª½áÊø±¨ÎĶÎ
16λ´°¿Ú´óС:
16λ¼ìÑéºÍ: ÓÉ·¢ËͶËÌî³ä, ¼ìÑéÐÎʽÓÐCRCУÑéµÈ. Èç¹û½ÓÊÕ¶ËУÑ鲻ͨ¹ý, ÔòÈÏΪÊý¾ÝÓÐÎÊÌâ.
´Ë´¦µÄУÑéºÍ²»¹â°üº¬TCPÊײ¿, Ò²°üº¬TCPÊý¾Ý²¿·Ö.
16λ½ô¼±Ö¸Õë: ÓÃÀ´±êʶÄIJ¿·ÖÊý¾ÝÊǽô¼±Êý¾Ý.
Ñ¡ÏîºÍÊý¾ÝÔÝʱºöÂÔ
Á¬½Ó¹ÜÀí»úÖÆ
Õý³£Çé¿öÏÂ, tcpÐèÒª¾¹ýÈý´ÎÎÕÊÖ½¨Á¢Á¬½Ó, ËĴλÓÊÖ¶Ï¿ªÁ¬½Ó.
ÄÇôʲôÊÇÈý´ÎÎÕÊÖ? ʲôÊÇËĴλÓÊÖÄØ?
Èý´ÎÎÕÊÖ
µÚÒ»´Î:
¿Í»§¶Ë - - > ·þÎñÆ÷ ´Ëʱ·þÎñÆ÷ÖªµÀÁ˿ͻ§¶ËÒª½¨Á¢Á¬½ÓÁË
µÚ¶þ´Î:
¿Í»§¶Ë < - - ·þÎñÆ÷ ´Ëʱ¿Í»§¶ËÖªµÀ·þÎñÆ÷ÊÕµ½Á¬½ÓÇëÇóÁË
µÚÈý´Î:
¿Í»§¶Ë - - > ·þÎñÆ÷ ´Ëʱ·þÎñÆ÷ÖªµÀ¿Í»§¶ËÊÕµ½ÁË×Ô¼ºµÄ»ØÓ¦
µ½ÕâÀï, ¾Í¿ÉÒÔÈÏΪ¿Í»§¶ËÓë·þÎñÆ÷ÒѾ½¨Á¢ÁËÁ¬½Ó.
ÔÙÀ´¿´¸öͼ.
¸Õ¿ªÊ¼, ¿Í»§¶ËºÍ·þÎñÆ÷¶¼´¦ÓÚ CLOSE ״̬.
´Ëʱ, ¿Í»§¶ËÏò·þÎñÆ÷Ö÷¶¯·¢³öÁ¬½ÓÇëÇó, ·þÎñÆ÷±»¶¯½ÓÊÜÁ¬½ÓÇëÇó.
1, TCP·þÎñÆ÷½ø³ÌÏÈ´´½¨´«Êä¿ØÖÆ¿éTCB, ʱ¿Ì×¼±¸½ÓÊܿͻ§¶Ë½ø³ÌµÄÁ¬½ÓÇëÇó, ´Ëʱ·þÎñÆ÷¾Í½øÈëÁË
LISTEN£¨¼àÌý£©×´Ì¬
2, TCP¿Í»§¶Ë½ø³ÌÒ²ÊÇÏÈ´´½¨´«Êä¿ØÖÆ¿éTCB, È»ºóÏò·þÎñÆ÷·¢³öÁ¬½ÓÇëÇó±¨ÎÄ£¬´Ëʱ±¨ÎÄÊײ¿ÖеÄͬ²½±ê־λSYN=1,
ͬʱѡÔñÒ»¸ö³õʼÐòÁкŠseq = x, ´Ëʱ£¬TCP¿Í»§¶Ë½ø³Ì½øÈëÁË SYN-SENT£¨Í¬²½ÒÑ·¢ËÍ״̬£©×´Ì¬¡£TCP¹æ¶¨,
SYN±¨ÎĶΣ¨SYN=1µÄ±¨ÎĶΣ©²»ÄÜЯ´øÊý¾Ý£¬µ«ÐèÒªÏûºÄµôÒ»¸öÐòºÅ¡£
3, TCP·þÎñÆ÷ÊÕµ½ÇëÇó±¨Îĺó, Èç¹ûͬÒâÁ¬½Ó, Ôò·¢³öÈ·Èϱ¨ÎÄ¡£È·Èϱ¨ÎÄÖÐµÄ ACK=1, SYN=1,
È·ÈÏÐòºÅÊÇ x+1, ͬʱҲҪΪ×Ô¼º³õʼ»¯Ò»¸öÐòÁкŠseq = y, ´Ëʱ, TCP·þÎñÆ÷½ø³Ì½øÈëÁËSYN-RCVD£¨Í¬²½ÊÕµ½£©×´Ì¬¡£Õâ¸ö±¨ÎÄÒ²²»ÄÜЯ´øÊý¾Ý,
µ«ÊÇͬÑùÒªÏûºÄÒ»¸öÐòºÅ¡£
4, TCP¿Í»§¶Ë½ø³ÌÊÕµ½È·ÈϺó»¹, ÒªÏò·þÎñÆ÷¸ø³öÈ·ÈÏ¡£È·Èϱ¨ÎĵÄACK=1£¬È·ÈÏÐòºÅÊÇ y+1£¬×Ô¼ºµÄÐòÁкÅÊÇ
x+1.
5, ´Ëʱ£¬TCPÁ¬½Ó½¨Á¢£¬¿Í»§¶Ë½øÈëESTABLISHED£¨Òѽ¨Á¢Á¬½Ó£©×´Ì¬¡£µ±·þÎñÆ÷ÊÕµ½¿Í»§¶ËµÄÈ·ÈϺóÒ²½øÈëESTABLISHED״̬£¬´ËºóË«·½¾Í¿ÉÒÔ¿ªÊ¼Í¨ÐÅÁË¡£
Ϊʲô²»ÓÃÁ½´Î?
Ö÷ÒªÊÇΪÁË·ÀÖ¹ÒѾʧЧµÄÁ¬½ÓÇëÇó±¨ÎÄͻȻÓÖ´«Ë͵½ÁË·þÎñÆ÷£¬´Ó¶ø²úÉú´íÎó¡£Èç¹ûʹÓõÄÊÇÁ½´ÎÎÕÊÖ½¨Á¢Á¬½Ó£¬¼ÙÉèÓÐÕâÑùÒ»ÖÖ³¡¾°£¬¿Í»§¶Ë·¢Ë͵ĵÚÒ»¸öÇëÇóÁ¬½Ó²¢ÇÒûÓжªÊ§£¬Ö»ÊÇÒòΪÔÚÍøÂçÖÐÖÍÁôµÄʱ¼äÌ«³¤ÁË£¬ÓÉÓÚTCPµÄ¿Í»§¶Ë³Ù³ÙûÓÐÊÕµ½È·Èϱ¨ÎÄ£¬ÒÔΪ·þÎñÆ÷ûÓÐÊÕµ½£¬´ËÊ±ÖØÐÂÏò·þÎñÆ÷·¢ËÍÕâÌõ±¨ÎÄ£¬´Ëºó¿Í»§¶ËºÍ·þÎñÆ÷¾¹ýÁ½´ÎÎÕÊÖÍê³ÉÁ¬½Ó£¬´«ÊäÊý¾Ý£¬È»ºó¹Ø±ÕÁ¬½Ó¡£´Ëʱ֮ǰÖÍÁôµÄÄÇÒ»´ÎÇëÇóÁ¬½Ó£¬ÒòÎªÍøÂçͨ³©ÁË,
µ½´ïÁË·þÎñÆ÷£¬Õâ¸ö±¨Îı¾¸ÃÊÇʧЧµÄ£¬µ«ÊÇ£¬Á½´ÎÎÕÊֵĻúÖÆ½«»áÈÿͻ§¶ËºÍ·þÎñÆ÷Ôٴν¨Á¢Á¬½Ó£¬Õ⽫µ¼Ö²»±ØÒªµÄ´íÎóºÍ×ÊÔ´µÄ·Ñ¡£
Èç¹û²ÉÓõÄÊÇÈý´ÎÎÕÊÖ£¬¾ÍËãÊÇÄÇÒ»´ÎʧЧµÄ±¨ÎÄ´«Ë͹ýÀ´ÁË£¬·þÎñ¶Ë½ÓÊܵ½ÁËÄÇÌõʧЧ±¨ÎIJ¢Çһظ´ÁËÈ·Èϱ¨ÎÄ£¬µ«Êǿͻ§¶Ë²»»áÔٴη¢³öÈ·ÈÏ¡£ÓÉÓÚ·þÎñÆ÷ÊÕ²»µ½È·ÈÏ£¬¾ÍÖªµÀ¿Í»§¶Ë²¢Ã»ÓÐÇëÇóÁ¬½Ó¡£
Ϊʲô²»ÓÃËÄ´Î?
ÒòΪÈý´ÎÒѾ¿ÉÒÔÂú×ãÐèÒªÁË, ËĴξͶàÓàÁË.
ÔÙÀ´¿´¿´ºÎΪËĴλÓÊÖ.
Êý¾Ý´«ÊäÍê±Ïºó£¬Ë«·½¶¼¿ÉÒÔÊÍ·ÅÁ¬½Ó.
´Ëʱ¿Í»§¶ËºÍ·þÎñÆ÷¶¼ÊÇ´¦ÓÚESTABLISHED״̬£¬È»ºó¿Í»§¶ËÖ÷¶¯¶Ï¿ªÁ¬½Ó£¬·þÎñÆ÷±»¶¯¶Ï¿ªÁ¬½Ó.
1, ¿Í»§¶Ë½ø³Ì·¢³öÁ¬½ÓÊͷű¨ÎÄ£¬²¢ÇÒÍ£Ö¹·¢ËÍÊý¾Ý¡£
ÊÍ·ÅÊý¾Ý±¨ÎÄÊײ¿£¬FIN=1£¬ÆäÐòÁкÅΪseq=u£¨µÈÓÚÇ°ÃæÒѾ´«Ë͹ýÀ´µÄÊý¾ÝµÄ×îºóÒ»¸ö×Ö½ÚµÄÐòºÅ¼Ó1£©£¬´Ëʱ¿Í»§¶Ë½øÈëFIN-WAIT-1£¨ÖÕÖ¹µÈ´ý1£©×´Ì¬¡£
TCP¹æ¶¨£¬FIN±¨ÎĶμ´Ê¹²»Ð¯´øÊý¾Ý£¬Ò²ÒªÏûºÄÒ»¸öÐòºÅ¡£
2, ·þÎñÆ÷ÊÕµ½Á¬½ÓÊͷű¨ÎÄ£¬·¢³öÈ·Èϱ¨ÎÄ£¬ACK=1£¬È·ÈÏÐòºÅΪ u+1£¬²¢ÇÒ´øÉÏ×Ô¼ºµÄÐòÁкÅseq=v£¬´Ëʱ·þÎñ¶Ë¾Í½øÈëÁËCLOSE-WAIT£¨¹Ø±ÕµÈ´ý£©×´Ì¬¡£
TCP·þÎñÆ÷֪ͨ¸ß²ãµÄÓ¦Óýø³Ì£¬¿Í»§¶ËÏò·þÎñÆ÷µÄ·½Ïò¾ÍÊÍ·ÅÁË£¬Õâʱºò´¦ÓÚ°ë¹Ø±Õ״̬£¬¼´¿Í»§¶ËÒѾûÓÐÊý¾ÝÒª·¢ËÍÁË£¬µ«ÊÇ·þÎñÆ÷Èô·¢ËÍÊý¾Ý£¬¿Í»§¶ËÒÀȻҪ½ÓÊÜ¡£Õâ¸ö״̬»¹Òª³ÖÐøÒ»¶Îʱ¼ä£¬Ò²¾ÍÊÇÕû¸öCLOSE-WAIT״̬³ÖÐøµÄʱ¼ä¡£
3, ¿Í»§¶ËÊÕµ½·þÎñÆ÷µÄÈ·ÈÏÇëÇóºó£¬´Ëʱ¿Í»§¶Ë¾Í½øÈëFIN-WAIT-2£¨ÖÕÖ¹µÈ´ý2£©×´Ì¬£¬µÈ´ý·þÎñÆ÷·¢ËÍÁ¬½ÓÊͷű¨ÎÄ£¨ÔÚÕâ֮ǰ»¹ÐèÒª½ÓÊÜ·þÎñÆ÷·¢Ë͵Ä×îÖÕÊý¾Ý£©
4, ·þÎñÆ÷½«×îºóµÄÊý¾Ý·¢ËÍÍê±Ïºó£¬¾ÍÏò¿Í»§¶Ë·¢ËÍÁ¬½ÓÊͷű¨ÎÄ£¬FIN=1£¬È·ÈÏÐòºÅΪv+1£¬ÓÉÓÚÔÚ°ë¹Ø±Õ״̬£¬·þÎñÆ÷ºÜ¿ÉÄÜÓÖ·¢ËÍÁËһЩÊý¾Ý£¬¼Ù¶¨´ËʱµÄÐòÁкÅΪseq=w£¬´Ëʱ£¬·þÎñÆ÷¾Í½øÈëÁËLAST-ACK£¨×îºóÈ·ÈÏ£©×´Ì¬£¬µÈ´ý¿Í»§¶ËµÄÈ·ÈÏ¡£
5, ¿Í»§¶ËÊÕµ½·þÎñÆ÷µÄÁ¬½ÓÊͷű¨Îĺ󣬱ØÐë·¢³öÈ·ÈÏ£¬ACK=1£¬È·ÈÏÐòºÅΪw+1£¬¶ø×Ô¼ºµÄÐòÁкÅÊÇu+1£¬´Ëʱ£¬¿Í»§¶Ë¾Í½øÈëÁËTIME-WAIT£¨Ê±¼äµÈ´ý£©×´Ì¬¡£×¢Òâ´ËʱTCPÁ¬½Ó»¹Ã»ÓÐÊÍ·Å£¬±ØÐë¾¹ý2?MSL£¨×±¨ÎĶÎÊÙÃü£©µÄʱ¼äºó£¬µ±¿Í»§¶Ë³·ÏúÏàÓ¦µÄTCBºó£¬²Å½øÈëCLOSED״̬¡£
6, ·þÎñÆ÷Ö»ÒªÊÕµ½Á˿ͻ§¶Ë·¢³öµÄÈ·ÈÏ£¬Á¢¼´½øÈëCLOSED״̬¡£Í¬Ñù£¬³·ÏúTCBºó£¬¾Í½áÊøÁËÕâ´ÎµÄTCPÁ¬½Ó¡£¿ÉÒÔ¿´µ½£¬·þÎñÆ÷½áÊøTCPÁ¬½ÓµÄʱ¼äÒª±È¿Í»§¶ËÔçһЩ¡£
ÔÙÀ´¿´Ò»ÕÅͼ.
Ϊʲô×îºó¿Í»§¶Ë»¹ÒªµÈ´ý 2*MSLµÄʱ¼äÄØ?
MSL£¨Maximum Segment Lifetime£©£¬TCPÔÊÐí²»Í¬µÄʵÏÖ¿ÉÒÔÉèÖò»Í¬µÄMSLÖµ¡£
µÚÒ»£¬±£Ö¤¿Í»§¶Ë·¢Ë͵Ä×îºóÒ»¸öACK±¨ÎÄÄܹ»µ½´ï·þÎñÆ÷£¬ÒòΪÕâ¸öACK±¨ÎÄ¿ÉÄܶªÊ§£¬Õ¾ÔÚ·þÎñÆ÷µÄ½Ç¶È¿´À´£¬ÎÒÒѾ·¢ËÍÁËFIN+ACK±¨ÎÄÇëÇó¶Ï¿ªÁË£¬¿Í»§¶Ë»¹Ã»ÓиøÎÒ»ØÓ¦£¬Ó¦¸ÃÊÇÎÒ·¢Ë͵ÄÇëÇó¶Ï¿ª±¨ÎÄËüûÓÐÊÕµ½£¬ÓÚÊÇ·þÎñÆ÷ÓÖ»áÖØÐ·¢ËÍÒ»´Î£¬¶ø¿Í»§¶Ë¾ÍÄÜÔÚÕâ¸ö2MSLʱ¼ä¶ÎÄÚÊÕµ½Õâ¸öÖØ´«µÄ±¨ÎÄ£¬½Óןø³ö»ØÓ¦±¨ÎÄ£¬²¢ÇÒ»áÖØÆô2MSL¼ÆÊ±Æ÷¡£
µÚ¶þ£¬·ÀÖ¹ÀàËÆÓë¡°Èý´ÎÎÕÊÖ¡±ÖÐÌáµ½Á˵ġ°ÒѾʧЧµÄÁ¬½ÓÇëÇó±¨ÎĶΡ±³öÏÖÔÚ±¾Á¬½ÓÖС£¿Í»§¶Ë·¢ËÍÍê×îºóÒ»¸öÈ·Èϱ¨Îĺó£¬ÔÚÕâ¸ö2MSLʱ¼äÖУ¬¾Í¿ÉÒÔʹ±¾Á¬½Ó³ÖÐøµÄʱ¼äÄÚËù²úÉúµÄËùÓб¨ÎĶζ¼´ÓÍøÂçÖÐÏûʧ¡£ÕâÑùеÄÁ¬½ÓÖв»»á³öÏÖ¾ÉÁ¬½ÓµÄÇëÇó±¨ÎÄ¡£
Ϊʲô½¨Á¢Á¬½ÓÊÇÈý´ÎÎÕÊÖ£¬¹Ø±ÕÁ¬½ÓÈ·ÊÇËĴλÓÊÖÄØ£¿
½¨Á¢Á¬½ÓµÄʱºò£¬ ·þÎñÆ÷ÔÚLISTEN״̬Ï£¬ÊÕµ½½¨Á¢Á¬½ÓÇëÇóµÄSYN±¨Îĺ󣬰ÑACKºÍSYN·ÅÔÚÒ»¸ö±¨ÎÄÀï·¢Ë͸ø¿Í»§¶Ë¡£
¶ø¹Ø±ÕÁ¬½Óʱ£¬·þÎñÆ÷ÊÕµ½¶Ô·½µÄFIN±¨ÎÄʱ£¬½ö½ö±íʾ¶Ô·½²»ÔÙ·¢ËÍÊý¾ÝÁ˵«ÊÇ»¹ÄܽÓÊÕÊý¾Ý£¬¶ø×Ô¼ºÒ²Î´±ØÈ«²¿Êý¾Ý¶¼·¢Ë͸ø¶Ô·½ÁË£¬ËùÒÔ¼º·½¿ÉÒÔÁ¢¼´¹Ø±Õ£¬Ò²¿ÉÒÔ·¢ËÍһЩÊý¾Ý¸ø¶Ô·½ºó£¬ÔÙ·¢ËÍFIN±¨Îĸø¶Ô·½À´±íʾͬÒâÏÖÔڹرÕÁ¬½Ó£¬Òò´Ë£¬¼º·½ACKºÍFINÒ»°ã¶¼»á·Ö¿ª·¢ËÍ£¬´Ó¶øµ¼Ö¶àÁËÒ»´Î¡£
Èç¹ûÒѾ½¨Á¢ÁËÁ¬½Ó, µ«Êǿͻ§¶ËÍ»·¢¹ÊÕÏÁËÔõô°ì?
TCPÉèÓÐÒ»¸ö±£»î¼ÆÊ±Æ÷£¬ÏÔÈ»£¬¿Í»§¶ËÈç¹û³öÏÖ¹ÊÕÏ£¬·þÎñÆ÷²»ÄÜÒ»Ö±µÈÏÂÈ¥£¬°×°×ÀË·Ñ×ÊÔ´¡£·þÎñÆ÷ÿÊÕµ½Ò»´Î¿Í»§¶ËµÄÇëÇóºó¶¼»áÖØÐ¸´Î»Õâ¸ö¼ÆÊ±Æ÷£¬Ê±¼äͨ³£ÊÇÉèÖÃΪ2Сʱ£¬ÈôÁ½Ð¡Ê±»¹Ã»ÓÐÊÕµ½¿Í»§¶ËµÄÈκÎÊý¾Ý£¬·þÎñÆ÷¾Í»á·¢ËÍÒ»¸ö̽²â±¨ÎĶΣ¬ÒÔºóÿ¸ô75·ÖÖÓ·¢ËÍÒ»´Î¡£ÈôÒ»Á¬·¢ËÍ10¸ö̽²â±¨ÎÄÈÔȻû·´Ó¦£¬·þÎñÆ÷¾ÍÈÏΪ¿Í»§¶Ë³öÁ˹ÊÕÏ£¬½Óמ͹رÕÁ¬½Ó¡£
Àí½âTIME_WAIT״̬
¿ÉÒÔ×öÒ»¸öʵÑé, ÏÈÔËÐÐserver, ÔÙÔËÐÐclientÁ¬½Óserver, È»ºó¶Ï¿ªserver,
ÔÙÁ¢ÂíÔËÐÐserver.
ÎÒÃǻᷢÏÖ:
°ó¶¨µÄʱºò³öÁËÎÊÌâ.
ÕâÊÇÒòΪ,ËäÈ»serverÓ¦ÓóÌÐòÖÕÖ¹ÁË,µ«TCPÐÒé²ãµÄÁ¬½Ó²¢Ã»ÓÐÍêÈ«¶Ï¿ª,Òò´Ë²»ÄÜÔٴμàÌý°ó¶¨Í¬ÑùµÄserver¶Ë¿Ú.
TCPÐÒ鹿¶¨,Ö÷¶¯¹Ø±ÕÁ¬½ÓµÄÒ»·½Òª´¦ÓÚTIME_ WAIT״̬,µÈ´ý2*MSL(maximum segment
lifetime)µÄʱ¼äºó²ÅÄܻص½CLOSED״̬.
ÎÒÃÇʹÓÃCtrl-CÖÕÖ¹ÁËserver, ËùÒÔserverÊÇÖ÷¶¯¹Ø±ÕÁ¬½ÓµÄÒ»·½, ÔÚTIME_WAITÆÚ¼äÈÔÈ»²»ÄÜÔٴμàÌýͬÑùµÄserver¶Ë¿Ú
MSLÔÚRFC1122Öй涨ΪÁ½·ÖÖÓ,µ«ÊǸ÷²Ù×÷ϵͳµÄʵÏÖ²»Í¬, ÔÚCentos7ÉÏĬÈÏÅäÖõÄÖµÊÇ60s;
¿ÉÒÔͨ¹ý cat /proc/sys/net/ipv4/tcp_fin_timeout
²é¿´MSLµÄÖµ
½â¾öTIME_WAITÒýÆðµÄbindʧ°ÜÎÊÌâ
ÔÚserverµÄTCPÁ¬½ÓûÓÐÍêÈ«¶Ï¿ªÖ®Ç°²»ÔÊÐíÖØÐ¼àÌý, ijЩÇé¿öÏ¿ÉÄÜÊDz»ºÏÀíµÄ.
±ÈÈç:
·þÎñÆ÷ÐèÒª´¦Àí·Ç³£´óÁ¿µÄ¿Í»§¶ËµÄÁ¬½Ó(ÿ¸öÁ¬½ÓµÄÉú´æÊ±¼ä¿ÉÄܺܶÌ, µ«ÊÇÿÃë¶¼ÓдóÁ¿µÄ¿Í»§¶ËÀ´ÇëÇó).
Õâ¸öʱºòÈç¹ûÓÉ·þÎñÆ÷¶ËÖ÷¶¯¹Ø±ÕÁ¬½Ó(±ÈÈçijЩ¿Í»§¶Ë²»»îÔ¾, ¾ÍÐèÒª±»·þÎñÆ÷¶ËÖ÷¶¯ÇåÀíµô), ¾Í»á²úÉú´óÁ¿TIME_WAITÁ¬½Ó.
ÓÉÓÚÎÒÃǵÄÇëÇóÁ¿ºÜ´ó, ¾Í¿ÉÄܵ¼ÖÂTIME_WAITµÄÁ¬½ÓÊýºÜ¶à, µ¼Ö·þÎñÆ÷µÄ¶Ë¿Ú²»¹»ÓÃ, ÎÞ·¨´¦ÀíеÄÁ¬½Ó.
½â¾ö·½·¨:
- ʹÓÃsetsockopt()ÉèÖÃsocketÃèÊö·ûµÄÑ¡ÏîSO_REUSEADDRΪ1, ±íʾÔÊÐí´´½¨¶Ë¿ÚºÅÏàͬµ«IPµØÖ·²»Í¬µÄ¶à¸ösocketÃèÊö·û.
Ó÷¨:
ÔÚserver´úÂëµÄsocket()ºÍbind()µ÷ÓÃÖ®¼ä²åÈëÈçÏ´úÂë
int opt = 1;
setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &opt,
sizeof(opt));
È·ÈÏÓ¦´ð»úÖÆ(ACK»úÖÆ)
TCP½«Ã¿¸ö×Ö½ÚµÄÊý¾Ý¶¼½øÐÐÁ˱àºÅ, ¼´ÎªÐòÁкÅ.
ÿһ¸öACK¶¼´øÓжÔÓ¦µÄÈ·ÈÏÐòÁкÅ, Òâ˼ÊǸæËß·¢ËÍÕß, ÎÒÒѾÊÕµ½ÁËÄÄЩÊý¾Ý;
ÏÂÒ»´ÎÄãÒª´ÓÄÄÀ↑ʼ·¢.
±ÈÈç, ¿Í»§¶ËÏò·þÎñÆ÷·¢ËÍÁË1005×Ö½ÚµÄÊý¾Ý, ·þÎñÆ÷·µ»Ø¸ø¿Í»§¶ËµÄÈ·ÈÏÐòºÅÊÇ1003, ÄÇô˵Ã÷·þÎñÆ÷Ö»ÊÕµ½ÁË1-1002µÄÊý¾Ý.
1003, 1004, 1005¶¼Ã»ÊÕµ½.
´Ëʱ¿Í»§¶Ë¾Í»á´Ó1003¿ªÊ¼ÖØ·¢.
³¬Ê±ÖØ´«»úÖÆ
Ö÷»úA·¢ËÍÊý¾Ý¸øBÖ®ºó, ¿ÉÄÜÒòÎªÍøÂçÓµ¶ÂµÈÔÒò, Êý¾ÝÎÞ·¨µ½´ïÖ÷»úB
Èç¹ûÖ÷»úAÔÚÒ»¸öÌØ¶¨Ê±¼ä¼ä¸ôÄÚûÓÐÊÕµ½B·¢À´µÄÈ·ÈÏÓ¦´ð, ¾Í»á½øÐÐÖØ·¢
µ«ÊÇÖ÷»úAûÊÕµ½È·ÈÏÓ¦´ðÒ²¿ÉÄÜÊÇACK¶ªÊ§ÁË.
ÕâÖÖÇé¿öÏÂ, Ö÷»úB»áÊÕµ½ºÜ¶àÖØ¸´Êý¾Ý.
ÄÇôTCPÐÒéÐèҪʶ±ð³öÄÄЩ°üÊÇÖØ¸´µÄ, ²¢ÇÒ°ÑÖØ¸´µÄ¶ªÆú.
ÕâʱºòÀûÓÃÇ°ÃæÌáµ½µÄÐòÁкÅ, ¾Í¿ÉÒÔºÜÈÝÒ××öµ½È¥ÖØ.
³¬Ê±Ê±¼äÈçºÎÈ·¶¨?
×îÀíÏëµÄÇé¿öÏÂ, ÕÒµ½Ò»¸ö×îСµÄʱ¼ä, ±£Ö¤ ¡°È·ÈÏÓ¦´ðÒ»¶¨ÄÜÔÚÕâ¸öʱ¼äÄÚ·µ»Ø¡±.
µ«ÊÇÕâ¸öʱ¼äµÄ³¤¶Ì, Ëæ×ÅÍøÂç»·¾³µÄ²»Í¬, ÊÇÓвîÒìµÄ.
Èç¹û³¬Ê±Ê±¼äÉèµÄÌ«³¤, »áÓ°ÏìÕûÌåµÄÖØ´«Ð§ÂÊ; Èç¹û³¬Ê±Ê±¼äÉèµÄÌ«¶Ì, ÓпÉÄÜ»áÆµ·±·¢ËÍÖØ¸´µÄ°ü.
TCPΪÁ˱£Ö¤Èκλ·¾³Ï¶¼Äܱ£³Ö½Ï¸ßÐÔÄܵÄͨÐÅ, Òò´Ë»á¶¯Ì¬¼ÆËãÕâ¸ö×î´ó³¬Ê±Ê±¼ä.
LinuxÖÐ(BSD UnixºÍWindowsÒ²ÊÇÈç´Ë), ³¬Ê±ÒÔ500msΪһ¸öµ¥Î»½øÐпØÖÆ, ÿ´ÎÅж¨³¬Ê±ÖØ·¢µÄ³¬Ê±Ê±¼ä¶¼ÊÇ500msµÄÕûÊý±¶.
Èç¹ûÖØ·¢Ò»´ÎÖ®ºó, ÈÔÈ»µÃ²»µ½Ó¦´ð, µÈ´ý 2*500ms ºóÔÙ½øÐÐÖØ´«. Èç¹ûÈÔÈ»µÃ²»µ½Ó¦´ð, µÈ´ý
4*500ms ½øÐÐÖØ´«.
ÒÀ´ÎÀàÍÆ, ÒÔÖ¸ÊýÐÎʽµÝÔö. ÀۼƵ½Ò»¶¨µÄÖØ´«´ÎÊý, TCPÈÏÎªÍøÂçÒì³£»òÕß¶Ô¶ËÖ÷»ú³öÏÖÒì³£, Ç¿ÖÆ¹Ø±ÕÁ¬½Ó.
»¬¶¯´°¿Ú
¸Õ²ÅÎÒÃÇÌÖÂÛÁËÈ·ÈÏÓ¦´ð»úÖÆ, ¶Ôÿһ¸ö·¢Ë͵ÄÊý¾Ý¶Î, ¶¼Òª¸øÒ»¸öACKÈ·ÈÏÓ¦´ð. ÊÕµ½ACKºóÔÙ·¢ËÍÏÂÒ»¸öÊý¾Ý¶Î.
ÕâÑù×öÓÐÒ»¸ö±È½Ï´óµÄȱµã, ¾ÍÊÇÐÔÄܽϲî. ÓÈÆäÊÇÊý¾ÝÍù·µÊ±¼ä½Ï³¤µÄʱºò.
ÄÇôÎÒÃǿɲ»¿ÉÒÔÒ»´Î·¢ËͶà¸öÊý¾Ý¶ÎÄØ?
ÀýÈçÕâÑù:
Ò»¸ö¸ÅÄî: ´°¿Ú
´°¿Ú´óСָµÄÊÇÎÞÐèµÈ´ýÈ·ÈÏÓ¦´ð¾Í¿ÉÒÔ¼ÌÐø·¢ËÍÊý¾ÝµÄ×î´óÖµ.
ÉÏͼµÄ´°¿Ú´óС¾ÍÊÇ4000¸ö×Ö½Ú (Ëĸö¶Î).
·¢ËÍǰËĸö¶ÎµÄʱºò, ²»ÐèÒªµÈ´ýÈκÎACK, Ö±½Ó·¢ËÍ
ÊÕµ½µÚÒ»¸öACKÈ·ÈÏÓ¦´ðºó, ´°¿ÚÏòºóÒÆ¶¯, ¼ÌÐø·¢Ë͵ÚÎåÁùÆß°Ë¶ÎµÄÊý¾Ý¡
ÒòΪÕâ¸ö´°¿Ú²»¶ÏÏòºó»¬¶¯, ËùÒÔ½Ð×ö»¬¶¯´°¿Ú.
²Ù×÷ϵͳÄÚºËΪÁËά»¤Õâ¸ö»¬¶¯´°¿Ú, ÐèÒª¿ª±Ù·¢ËÍ»º³åÇøÀ´¼Ç¼µ±Ç°»¹ÓÐÄÄЩÊý¾ÝûÓÐÓ¦´ð
Ö»ÓÐACKÈ·ÈÏÓ¦´ð¹ýµÄÊý¾Ý, ²ÅÄÜ´Ó»º³åÇøÉ¾µô.
Èç¹û³öÏÖÁ˶ª°ü, ÄÇô¸ÃÈçºÎ½øÐÐÖØ´«ÄØ?
´Ëʱ·ÖÁ½ÖÖÇé¿öÌÖÂÛ:
1, Êý¾Ý°üÒѾÊÕµ½, µ«È·ÈÏÓ¦´ðACK¶ªÁË.
ÕâÖÖÇé¿öÏÂ, ²¿·ÖACK¶ªÊ§²¢ÎÞ´ó°, ÒòΪ»¹¿ÉÒÔͨ¹ýºóÐøµÄACKÀ´È·È϶Է½ÒѾÊÕµ½ÁËÄÄЩÊý¾Ý°ü.
2, Êý¾Ý°ü¶ªÊ§
µ±Ä³Ò»¶Î±¨ÎĶªÊ§Ö®ºó, ·¢ËͶ˻áÒ»Ö±ÊÕµ½ 1001 ÕâÑùµÄACK,
¾ÍÏñÊÇÔÚÌáÐÑ·¢ËÍ¶Ë ¡°ÎÒÏëÒªµÄÊÇ 1001¡±
Èç¹û·¢ËͶËÖ÷»úÁ¬ÐøÈý´ÎÊÕµ½ÁËͬÑùÒ»¸ö ¡°1001¡± ÕâÑùµÄÓ¦´ð, ¾Í»á½«¶ÔÓ¦µÄÊý¾Ý 1001 - 2000
ÖØÐ·¢ËÍ
Õâ¸öʱºò½ÓÊÕ¶ËÊÕµ½ÁË 1001 Ö®ºó, Ôٴηµ»ØµÄACK¾ÍÊÇ7001ÁË
ÒòΪ2001 - 7000½ÓÊÕ¶ËÆäʵ֮ǰ¾ÍÒѾÊÕµ½ÁË, ±»·Åµ½Á˽ÓÊն˲Ù×÷ϵͳÄں˵ĽÓÊÕ»º³åÇøÖÐ.
ÕâÖÖ»úÖÆ±»³ÆÎª ¡°¸ßËÙÖØ·¢¿ØÖÆ¡± ( Ò²½Ð ¡°¿ìÖØ´«¡± )
Á÷Á¿¿ØÖÆ
½ÓÊÕ¶Ë´¦ÀíÊý¾ÝµÄËÙ¶ÈÊÇÓÐÏÞµÄ. Èç¹û·¢ËͶ˷¢µÄÌ«¿ì, µ¼Ö½ÓÊն˵Ļº³åÇø±»ÌîÂú, Õâ¸öʱºòÈç¹û·¢ËͶ˼ÌÐø·¢ËÍ,
¾Í»áÔì³É¶ª°ü, ½ø¶øÒýÆð¶ª°üÖØ´«µÈһϵÁÐÁ¬Ëø·´Ó¦.
Òò´ËTCPÖ§³Ö¸ù¾Ý½ÓÊն˵Ĵ¦ÀíÄÜÁ¦, À´¾ö¶¨·¢ËͶ˵ķ¢ËÍËÙ¶È.
Õâ¸ö»úÖÆ¾Í½Ð×ö Á÷Á¿¿ØÖÆ(Flow Control)
½ÓÊն˽«×Ô¼º¿ÉÒÔ½ÓÊյĻº³åÇø´óС·ÅÈë TCP Êײ¿ÖÐµÄ ¡°´°¿Ú´óС¡± ×Ö¶Î,
ͨ¹ýACK֪ͨ·¢ËͶË;
´°¿Ú´óСԽ´ó, ˵Ã÷ÍøÂçµÄÍÌÍÂÁ¿Ô½¸ß;
½ÓÊÕ¶ËÒ»µ©·¢ÏÖ×Ô¼ºµÄ»º³åÇø¿ìÂúÁË, ¾Í»á½«´°¿Ú´óСÉèÖóÉÒ»¸ö¸üСµÄֵ֪ͨ¸ø·¢ËͶË;
·¢ËͶ˽ÓÊܵ½Õâ¸ö´°¿Ú´óСµÄ֪֮ͨºó, ¾Í»á¼õÂý×Ô¼ºµÄ·¢ËÍËÙ¶È;
Èç¹û½ÓÊÕ¶Ë»º³åÇøÂúÁË, ¾Í»á½«´°¿ÚÖÃΪ0;
Õâʱ·¢ËÍ·½²»ÔÙ·¢ËÍÊý¾Ý, µ«ÊÇÐèÒª¶¨ÆÚ·¢ËÍÒ»¸ö´°¿Ú̽²âÊý¾Ý¶Î, ÈýÓÊն˰Ѵ°¿Ú´óСÔÙ¸æËß·¢ËͶË.
ÄÇô½ÓÊÕ¶ËÈçºÎ°Ñ´°¿Ú´óС¸æËß·¢ËͶËÄØ?
ÎÒÃǵÄTCPÊײ¿ÖÐ, ÓÐÒ»¸ö16λ´°¿Ú´óС×Ö¶Î, ¾Í´æ·ÅÁË´°¿Ú´óСµÄÐÅÏ¢;
16λÊý×Ö×î´ó±íʾ65536, ÄÇôTCP´°¿Ú×î´ó¾ÍÊÇ65536×Ö½Úô?
ʵ¼ÊÉÏ, TCPÊײ¿40×Ö½ÚÑ¡ÏîÖл¹°üº¬ÁËÒ»¸ö´°¿ÚÀ©´óÒò×ÓM, ʵ¼Ê´°¿Ú´óСÊÇ´°¿Ú×ֶεÄÖµ×óÒÆ M
λ(×óÒÆÒ»Î»Ï൱ÓÚ³ËÒÔ2).
ÓµÈû¿ØÖÆ
ËäÈ»TCPÓÐÁË»¬¶¯´°¿ÚÕâ¸ö´óɱÆ÷, Äܹ»¸ßЧ¿É¿¿µØ·¢ËÍ´óÁ¿Êý¾Ý.
µ«ÊÇÈç¹ûÔÚ¸Õ¿ªÊ¼¾Í·¢ËÍ´óÁ¿µÄÊý¾Ý, ÈÔÈ»¿ÉÄÜÒý·¢Ò»Ð©ÎÊÌâ.
ÒòÎªÍøÂçÉÏÓÐºÜ¶à¼ÆËã»ú, ¿ÉÄܵ±Ç°µÄÍøÂç״̬ÒѾ±È½ÏÓµ¶Â.
ÔÚ²»Çå³þµ±Ç°ÍøÂç״̬µÄÇé¿öÏÂ, óȻ·¢ËÍ´óÁ¿Êý¾Ý, ºÜÓпÉÄÜÑ©ÉϼÓ˪.
Òò´Ë, TCPÒýÈë ÂýÆô¶¯ »úÖÆ, ÏÈ·¢ÉÙÁ¿µÄÊý¾Ý, ̽̽·, ÃþÇ嵱ǰµÄÍøÂçÓµ¶Â״̬ÒÔºó,
ÔÙ¾ö¶¨°´ÕÕ¶à´óµÄËÙ¶È´«ÊäÊý¾Ý.
ÔÚ´ËÒýÈëÒ»¸ö¸ÅÄî ÓµÈû´°¿Ú
·¢ËÍ¿ªÊ¼µÄʱºò, ¶¨ÒåÓµÈû´°¿Ú´óСΪ1;
ÿ´ÎÊÕµ½Ò»¸öACKÓ¦´ð, ÓµÈû´°¿Ú¼Ó1;
ÿ´Î·¢ËÍÊý¾Ý°üµÄʱºò, ½«ÓµÈû´°¿ÚºÍ½ÓÊÕ¶ËÖ÷»ú·´À¡µÄ´°¿Ú´óС×ö±È½Ï, È¡½ÏСµÄÖµ×÷Ϊʵ¼Ê·¢Ë͵Ĵ°¿Ú
ÏñÉÏÃæÕâÑùµÄÓµÈû´°¿ÚÔö³¤ËÙ¶È, ÊÇÖ¸Êý¼¶±ðµÄ.
¡°ÂýÆô¶¯¡± Ö»ÊÇÖ¸³õʹʱÂý, µ«ÊÇÔö³¤Ëٶȷdz£¿ì.
ΪÁ˲»Ôö³¤µÃÄÇô¿ì, ´Ë´¦ÒýÈëÒ»¸öÃû´Ê½Ð×öÂýÆô¶¯µÄãÐÖµ, µ±ÓµÈû´°¿ÚµÄ´óС³¬¹ýÕâ¸öãÐÖµµÄʱºò,
²»ÔÙ°´ÕÕÖ¸Êý·½Ê½Ôö³¤, ¶øÊǰ´ÕÕÏßÐÔ·½Ê½Ôö³¤.
µ±TCP¿ªÊ¼Æô¶¯µÄʱºò, ÂýÆô¶¯ãÐÖµµÈÓÚ´°¿Ú×î´óÖµ
ÔÚÿ´Î³¬Ê±ÖØ·¢µÄʱºò, ÂýÆô¶¯ãÐÖµ»á±ä³ÉÔÀ´µÄÒ»°ë, ͬʱӵÈû´°¿ÚÖûØ1
ÉÙÁ¿µÄ¶ª°ü, ÎÒÃǽö½öÊÇ´¥·¢³¬Ê±ÖØ´«;
´óÁ¿µÄ¶ª°ü, ÎÒÃǾÍÈÏΪÊÇÍøÂçÓµÈû;
µ±TCPͨÐÅ¿ªÊ¼ºó, ÍøÂçÍÌÍÂÁ¿»áÖð½¥ÉÏÉý;
Ëæ×ÅÍøÂç·¢ÉúÓµ¶Â, ÍÌÍÂÁ¿»áÁ¢¿ÌϽµ.
ÓµÈû¿ØÖÆ, ¹é¸ù½áµ×ÊÇTCPÐÒéÏ뾡¿ÉÄÜ¿ìµÄ°ÑÊý¾Ý´«Ê䏸¶Ô·½, µ«ÊÇÓÖÒª±ÜÃâ¸øÍøÂçÔì³ÉÌ«´óѹÁ¦µÄÕÛÖз½°¸.
ÑÓ³ÙÓ¦´ð
Èç¹û½ÓÊÕÊý¾ÝµÄÖ÷»úÁ¢¿Ì·µ»ØACKÓ¦´ð, Õâʱºò·µ»ØµÄ´°¿Ú¿ÉÄܱȽÏС.
¼ÙÉè½ÓÊÕ¶Ë»º³åÇøÎª1M. Ò»´ÎÊÕµ½ÁË500KµÄÊý¾Ý;
Èç¹ûÁ¢¿ÌÓ¦´ð, ·µ»ØµÄ´°¿Ú´óС¾ÍÊÇ500K;
µ«Êµ¼ÊÉÏ¿ÉÄÜ´¦Àí¶Ë´¦ÀíµÄËٶȺܿì, 10msÖ®ÄھͰÑ500KÊý¾Ý´Ó»º³åÇøÏû·ÑµôÁË; ÔÚÕâÖÖÇé¿öÏÂ,
½ÓÊÕ¶Ë´¦Àí»¹Ô¶Ã»Óдﵽ×Ô¼ºµÄ¼«ÏÞ, ¼´Ê¹´°¿ÚÔÙ·Å´óһЩ, Ò²ÄÜ´¦Àí¹ýÀ´;
Èç¹û½ÓÊÕ¶ËÉÔ΢µÈÒ»»á¶ùÔÙÓ¦´ð, ±ÈÈçµÈ´ý200msÔÙÓ¦´ð, ÄÇôÕâ¸öʱºò·µ»ØµÄ´°¿Ú´óС¾ÍÊÇ1M
´°¿ÚÔ½´ó, ÍøÂçÍÌÍÂÁ¿¾ÍÔ½´ó, ´«ÊäЧÂʾÍÔ½¸ß.
TCPµÄÄ¿±êÊÇÔÚ±£Ö¤ÍøÂç²»Óµ¶ÂµÄÇé¿öϾ¡Á¿Ìá¸ß´«ÊäЧÂÊ;
ÄÇôËùÓеÄÊý¾Ý°ü¶¼¿ÉÒÔÑÓ³ÙÓ¦´ðô?
¿Ï¶¨Ò²²»ÊÇ
ÓÐÁ½¸öÏÞÖÆ
ÊýÁ¿ÏÞÖÆ: ÿ¸ôN¸ö°ü¾ÍÓ¦´ðÒ»´Î
ʱ¼äÏÞÖÆ: ³¬¹ý×î´óÑÓ³Ùʱ¼ä¾ÍÓ¦´ðÒ»´Î
¾ßÌåµÄÊýÁ¿NºÍ×î´óÑÓ³Ùʱ¼ä, ÒÀ²Ù×÷ϵͳ²»Í¬Ò²ÓвîÒì
Ò»°ã N È¡2, ×î´óÑÓ³Ùʱ¼äÈ¡200ms
ÉÓ´øÓ¦´ð
ÔÚÑÓ³ÙÓ¦´ðµÄ»ù´¡ÉÏ, ÎÒÃÇ·¢ÏÖ, ºÜ¶àÇé¿öÏÂ
¿Í»§¶ËºÍ·þÎñÆ÷ÔÚÓ¦ÓòãÒ²ÊÇ ¡°Ò»·¢Ò»ÊÕ¡± µÄ
Òâζ×ſͻ§¶Ë¸ø·þÎñÆ÷˵ÁË ¡°How are you¡±
·þÎñÆ÷Ò²»á¸ø¿Í»§¶Ë»ØÒ»¸ö ¡°Fine, thank you¡±
ÄÇôÕâ¸öʱºòACK¾Í¿ÉÒÔ´î˳·ç³µ, ºÍ·þÎñÆ÷»ØÓ¦µÄ ¡°Fine,
thank you¡± Ò»Æð·¢Ë͸ø¿Í»§¶Ë
ÃæÏò×Ö½ÚÁ÷
´´½¨Ò»¸öTCPµÄsocket, ͬʱÔÚÄÚºËÖд´½¨Ò»¸ö ·¢ËÍ»º³åÇø ºÍÒ»¸ö ½ÓÊÕ»º³åÇø;
µ÷ÓÃwriteʱ, Êý¾Ý»áÏÈдÈë·¢ËÍ»º³åÇøÖÐ;
Èç¹û·¢Ë͵Ä×Ö½ÚÊýÌ«´ó, »á±»²ð·Ö³É¶à¸öTCPµÄÊý¾Ý°ü·¢³ö;
Èç¹û·¢Ë͵Ä×Ö½ÚÊý̫С, ¾Í»áÏÈÔÚ»º³åÇøÀïµÈ´ý, µÈµ½»º³åÇø´óС²î²»¶àÁË, »òÕßµ½ÁËÆäËûºÏÊʵÄʱ»úÔÙ·¢ËͳöÈ¥;
½ÓÊÕÊý¾ÝµÄʱºò, Êý¾ÝÒ²ÊÇ´ÓÍø¿¨Çý¶¯³ÌÐòµ½´ïÄں˵ĽÓÊÕ»º³åÇø;
È»ºóÓ¦ÓóÌÐò¿ÉÒÔµ÷ÓÃread´Ó½ÓÊÕ»º³åÇøÄÃÊý¾Ý;
ÁíÒ»·½Ãæ, TCPµÄÒ»¸öÁ¬½Ó, ¼ÈÓз¢ËÍ»º³åÇø, Ò²ÓнÓÊÕ»º³åÇø,
ÄÇô¶ÔÓÚÕâÒ»¸öÁ¬½Ó, ¼È¿ÉÒÔ¶ÁÊý¾Ý, Ò²¿ÉÒÔдÊý¾Ý, Õâ¸ö¸ÅÄî½Ð×ö ȫ˫¹¤
ÓÉÓÚ»º³åÇøµÄ´æÔÚ, ËùÒÔTCP³ÌÐòµÄ¶ÁºÍд²»ÐèҪһһƥÅä
ÀýÈç:
д100¸ö×Ö½ÚµÄÊý¾Ý, ¿ÉÒÔµ÷ÓÃÒ»´Îwriteд100¸ö×Ö½Ú, Ò²¿ÉÒÔµ÷ÓÃ100´Îwrite, ÿ´Îдһ¸ö×Ö½Ú;
¶Á100¸ö×Ö½ÚÊý¾Ýʱ, Ò²ÍêÈ«²»ÐèÒª¿¼ÂÇдµÄʱºòÊÇÔõôдµÄ, ¼È¿ÉÒÔÒ»´Îread 100¸ö×Ö½Ú, Ò²¿ÉÒÔÒ»´ÎreadÒ»¸ö×Ö½Ú,
ÖØ¸´100´Î;
Õ³°üÎÊÌâ
Ê×ÏÈÒªÃ÷È·, Õ³°üÎÊÌâÖÐµÄ ¡°°ü¡±, ÊÇÖ¸Ó¦ÓòãµÄÊý¾Ý°ü.
ÔÚTCPµÄÐÒéÍ·ÖÐ, ûÓÐÈçͬUDPÒ»ÑùµÄ ¡°±¨Îij¤¶È¡± ×Ö¶Î
µ«ÊÇÓÐÒ»¸öÐòºÅ×Ö¶Î.
Õ¾ÔÚ´«Êä²ãµÄ½Ç¶È, TCPÊÇÒ»¸öÒ»¸ö±¨ÎÄ´«¹ýÀ´µÄ. °´ÕÕÐòºÅÅźÃÐò·ÅÔÚ»º³åÇøÖÐ.
Õ¾ÔÚÓ¦ÓòãµÄ½Ç¶È, ¿´µ½µÄÖ»ÊÇÒ»´®Á¬ÐøµÄ×Ö½ÚÊý¾Ý.
ÄÇôӦÓóÌÐò¿´µ½ÁËÕâÒ»Á¬´®µÄ×Ö½ÚÊý¾Ý, ¾Í²»ÖªµÀ´ÓÄĸö²¿·Ö¿ªÊ¼µ½Äĸö²¿·ÖÊÇÒ»¸öÍêÕûµÄÓ¦ÓòãÊý¾Ý°ü.
´ËʱÊý¾ÝÖ®¼ä¾ÍûÓÐÁ˱߽ç, ¾Í²úÉúÁËÕ³°üÎÊÌâ
ÄÇôÈçºÎ±ÜÃâÕ³°üÎÊÌâÄØ?
¹é¸ù½áµ×¾ÍÊÇÒ»¾ä»°, Ã÷È·Á½¸ö°üÖ®¼äµÄ±ß½ç
¶ÔÓÚ¶¨³¤µÄ°ü
- ±£Ö¤Ã¿´Î¶¼°´¹Ì¶¨´óС¶ÁÈ¡¼´¿É
ÀýÈçÉÏÃæµÄRequest½á¹¹, Êǹ̶¨´óСµÄ, ÄÇô¾Í´Ó»º³åÇø´ÓÍ·¿ªÊ¼°´sizeof(Request)ÒÀ´Î¶ÁÈ¡¼´¿É
¶ÔÓڱ䳤µÄ°ü
- ¿ÉÒÔÔÚÊý¾Ý°üµÄÍ·²¿, Ô¼¶¨Ò»¸öÊý¾Ý°ü×ܳ¤¶ÈµÄ×Ö¶Î, ´Ó¶ø¾ÍÖªµÀÁ˰üµÄ½áÊøÎ»ÖÃ
»¹¿ÉÒÔÔÚ°üºÍ°üÖ®¼äʹÓÃÃ÷È·µÄ·Ö¸ô·ûÀ´×÷Ϊ±ß½ç(Ó¦ÓòãÐÒé, ÊdzÌÐòÔ±×Ô¼ºÀ´¶¨µÄ, Ö»Òª±£Ö¤·Ö¸ô·û²»ºÍÕýÎijåÍ»¼´¿É)
¶ÔÓÚUDPÐÒéÀ´Ëµ, ÊÇ·ñÒ²´æÔÚ ¡°Õ³°üÎÊÌ⡱ ÄØ?
¶ÔÓÚUDP, Èç¹û»¹Ã»ÓÐÏòÉϲ㽻¸¶Êý¾Ý, UDPµÄ±¨Îij¤¶ÈÈÔÈ»´æÔÚ.
ͬʱ, UDPÊÇÒ»¸öÒ»¸ö°ÑÊý¾Ý½»¸¶¸øÓ¦ÓòãµÄ, ¾ÍÓкÜÃ÷È·µÄÊý¾Ý±ß½ç.
Õ¾ÔÚÓ¦ÓòãµÄ½Ç¶È, ʹÓÃUDPµÄʱºò, ҪôÊÕµ½ÍêÕûµÄUDP±¨ÎÄ, Ҫô²»ÊÕ.
²»»á³öÏÖÊÕµ½ ¡°°ë¸ö¡± µÄÇé¿ö.
TCP Òì³£Çé¿ö
½ø³ÌÖÕÖ¹: ½ø³ÌÖÕÖ¹»áÊÍ·ÅÎļþÃèÊö·û, ÈÔÈ»¿ÉÒÔ·¢ËÍFIN. ºÍÕý³£¹Ø±ÕûÓÐÊ²Ã´Çø±ð.
»úÆ÷ÖØÆô: ºÍ½ø³ÌÖÕÖ¹µÄÇé¿öÏàͬ.
»úÆ÷µôµç/ÍøÏß¶Ï¿ª: ½ÓÊÕ¶ËÈÏΪÁ¬½Ó»¹ÔÚ, Ò»µ©½ÓÊÕ¶ËÓÐдÈë²Ù×÷, ½ÓÊÕ¶Ë·¢ÏÖÁ¬½ÓÒѾ²»ÔÚÁË, ¾Í»á½øÐÐ
reset. ¼´Ê¹Ã»ÓÐдÈë²Ù×÷, TCP×Ô¼ºÒ²ÄÚÖÃÁËÒ»¸ö±£»î¶¨Ê±Æ÷, »á¶¨ÆÚѯÎʶԷ½ÊÇ·ñ»¹ÔÚ. Èç¹û¶Ô·½²»ÔÚ,
Ò²»á°ÑÁ¬½ÓÊÍ·Å.
ÁíÍâ, Ó¦ÓòãµÄijЩÐÒé, Ò²ÓÐһЩÕâÑùµÄ¼ì²â»úÖÆ.
ÀýÈçHTTP³¤Á¬½ÓÖÐ, Ò²»á¶¨ÆÚ¼ì²â¶Ô·½µÄ״̬.
ÀýÈçQQ, ÔÚQQ¶ÏÏßÖ®ºó, Ò²»á¶¨ÆÚ³¢ÊÔÖØÐÂÁ¬½Ó.
TCP С½á
ΪʲôTCPÕâô¸´ÔÓ?
ÒòΪ¼ÈÒª±£Ö¤¿É¿¿ÐÔ, ͬʱÓÖÒª¾¡¿ÉÄÜÌá¸ßÐÔÄÜ.
±£Ö¤¿É¿¿ÐԵĻúÖÆ
УÑéºÍ
ÐòÁкÅ(°´Ðòµ½´ï)
È·ÈÏÓ¦´ð
³¬Ê±ÖØ´«
Á¬½Ó¹ÜÀí
Á÷Á¿¿ØÖÆ
ÓµÈû¿ØÖÆ
Ìá¸ßÐÔÄܵĻúÖÆ
»¬¶¯´°¿Ú
¿ìËÙÖØ´«
ÑÓ³ÙÓ¦´ð
ÉÓ´øÓ¦´ð
¶¨Ê±Æ÷
³¬Ê±ÖØ´«¶¨Ê±Æ÷
±£»î¶¨Ê±Æ÷
TIME_WAIT¶¨Ê±Æ÷
»ùÓÚ TCP µÄÓ¦ÓòãÐÒé
HTTP
HTTPS
SSH
Telnet
FTP
SMTP
¡
µ±È», Ò²°üÀ¨ÎÒÃÇ×Ô¼ºÐ´TCP³ÌÐòʱ×Ô¶¨ÒåµÄÓ¦ÓòãÐÒé
TCP ºÍ UDP ¶Ô±È
ÎÒÃÇ˵ÁËTCPÊǿɿ¿Á¬½Ó, ÄÇôÊDz»ÊÇTCPÒ»¶¨¾ÍÓÅÓÚUDPÄØ?
TCPºÍUDPÖ®¼äµÄÓŵãºÍȱµã, ²»Äܼòµ¥¾ø¶ÔµØ½øÐбȽÏ
TCPÓÃÓÚ¿É¿¿´«ÊäµÄÇé¿ö, Ó¦ÓÃÓÚÎļþ´«Êä, ÖØÒª×´Ì¬¸üеȳ¡¾°
UDPÓÃÓÚ¶Ô¸ßËÙ´«ÊäºÍʵʱÐÔÒªÇó½Ï¸ßµÄͨÐÅÁìÓò
ÀýÈç, ÔçÆÚµÄQQ, ÊÓÆµ´«ÊäµÈ. ÁíÍâUDP¿ÉÒÔÓÃÓڹ㲥
¹é¸ù½áµ×, TCPºÍUDP¶¼ÊÇÒ»ÖÖ¹¤¾ß, ʲôʱ»úÓÃ, ¾ßÌåÔõôÓÃ, »¹ÊÇÒª¸ù¾Ý¾ßÌåµÄÐèÇ󳡾°È¥¾ö¶¨.
|