²úÆ··ÖÀà+
TCP/UDPÐÒéÊÇʲô£¿ÉîÈëÀí½âTCP¡¢UDPÐÒé¼°Á½ÕßµÄÇø±ð
Ò»¡¢TCPÐÒ飺
λÓÚ´«Êä²ã£¬ Ìṩ¿É¿¿µÄ×Ö½ÚÁ÷·þÎñ¡£ËùνµÄ×Ö½ÚÁ÷·þÎñ£¨Byte Stream Service£© ÊÇÖ¸£¬ ΪÁË·½±ã´«Ê䣬 ½«´ó¿éÊý¾Ý·Ö¸î³ÉÒÔ±¨ÎĶΣ¨segment£© Ϊµ¥Î»µÄÊý¾Ý°ü½øÐйÜÀí¡£ ¶ø¿É¿¿µÄ´«Êä·þÎñÊÇÖ¸£¬ Äܹ»°ÑÊý¾Ý׼ȷ¿É¿¿µØ´«¸ø¶Ô·½¡£ ¼´TCP ÐÒéΪÁ˸üÈÝÒ×´«ËÍ´óÊý¾Ý²Å°ÑÊý¾Ý·Ö¸î£¬ ¶øÇÒ TCP ÐÒéÄܹ»È·ÈÏÊý¾Ý×îÖÕÊÇ·ñËÍ´ïµ½¶Ô·½¡£ËùÒÔ£¬TCPÁ¬½ÓÏ൱ÓÚÁ½¸ù¹ÜµÀ£¨Ò»¸öÓÃÓÚ·þÎñÆ÷µ½¿Í»§¶Ë£¬Ò»¸öÓÃÓÚ¿Í»§¶Ëµ½·þÎñÆ÷£©£¬¹ÜµÀÀïÃæÊý¾Ý´«ÊäÊÇͨ¹ý×Ö½ÚÂë´«Ê䣬´«ÊäÊÇÓÐÐòµÄ£¬Ã¿¸ö×Ö½Ú¶¼ÊÇÒ»¸öÒ»¸öÀ´´«Êä¡£
(1)¡¢Èý´ÎÎÕÊÖ£ºÎÕÊÖ¹ý³ÌÖÐʹÓÃÁË TCP µÄ±êÖ¾£¨flag£© ¡ª¡ª SYN£¨synchronize£© ºÍACK£¨acknowledgement£© ¡£
µÚÒ»´ÎÎÕÊÖ£º½¨Á¢Á¬½Óʱ£¬¿Í»§¶ËA·¢ËÍSYN°ü£¨SYN=j£©µ½·þÎñÆ÷B£¬²¢½øÈëSYN_SEND״̬£¬µÈ´ý·þÎñÆ÷BÈ·ÈÏ¡£
µÚ¶þ´ÎÎÕÊÖ£º·þÎñÆ÷BÊÕµ½SYN°ü£¬±ØÐëÈ·ÈϿͻ§AµÄSYN£¨ACK=j+1£©£¬Í¬Ê±×Ô¼ºÒ²·¢ËÍÒ»¸öSYN°ü£¨SYN=k£©£¬¼´SYN+ACK°ü£¬´Ëʱ·þÎñÆ÷B½øÈëSYN_RECV״̬¡£
µÚÈý´ÎÎÕÊÖ£º¿Í»§¶ËAÊÕµ½·þÎñÆ÷BµÄSYN£«ACK°ü£¬Ïò·þÎñÆ÷B·¢ËÍÈ·ÈϰüACK£¨ACK=k+1£©£¬´Ë°ü·¢ËÍÍê±Ï£¬Íê³ÉÈý´ÎÎÕÊÖ¡£
ÈôÔÚÎÕÊÖ¹ý³ÌÖÐij¸ö½×¶ÎĪÃûÖжϣ¬ TCP ÐÒé»áÔÙ´ÎÒÔÏàͬµÄ˳Ðò·¢ËÍÏàͬµÄÊý¾Ý°ü¡£
£¨2£©¡¢ËĴλÓÊÖ£ºÓÉÓÚTCPÁ¬½ÓÊÇȫ˫¹¤µÄ£¬Òò´Ëÿ¸ö·½Ïò¶¼±ØÐëµ¥¶À½øÐйرա£Õâ¸öÔÔòÊǵ±Ò»·½Íê³ÉËüµÄÊý¾Ý·¢ËÍÈÎÎñºó¾ÍÄÜ·¢ËÍÒ»¸öFINÀ´ÖÕÖ¹Õâ¸ö·½ÏòµÄÁ¬½Ó¡£ÊÕµ½Ò»¸ö FINÖ»Òâζ×ÅÕâÒ»·½ÏòÉÏûÓÐÊý¾ÝÁ÷¶¯£¬Ò»¸öTCPÁ¬½ÓÔÚÊÕµ½Ò»¸öFINºóÈÔÄÜ·¢ËÍÊý¾Ý¡£ÏȽøÐйرյÄÒ»·½½«Ö´ÐÐÖ÷¶¯¹Ø±Õ£¬¶øÁíÒ»·½±»¶¯¹Ø±Õ¡£
¿Í»§¶ËA·¢ËÍÒ»¸öFIN£¬ÓÃÀ´¹Ø±Õ¿Í»§Aµ½·þÎñÆ÷BµÄÊý¾Ý´«ËÍ¡£
·þÎñÆ÷BÊÕµ½Õâ¸öFIN£¬Ëü·¢»ØÒ»¸öACK£¬È·ÈÏÐòºÅΪÊÕµ½µÄÐòºÅ¼Ó1¡£
·þÎñÆ÷B¹Ø±ÕÓë¿Í»§¶ËAµÄÁ¬½Ó£¬·¢ËÍÒ»¸öFIN¸ø¿Í»§¶ËA¡£
¿Í»§¶ËA·¢»ØACK±¨ÎÄÈ·ÈÏ£¬²¢½«È·ÈÏÐòºÅÉèÖÃΪÊÕµ½ÐòºÅ¼Ó1¡£
Èý´ÎÎÕÊÖºÍËĴλÓÊÖ£ºÔÚTCPÁ¬½ÓÖУ¬·þÎñÆ÷¶ËµÄSYNºÍACKÏò¿Í»§¶Ë·¢ËÍÊÇÒ»´ÎÐÔ·¢Ë͵쬶øÔÚ¶Ï¿ªÁ¬½ÓµÄ¹ý³ÌÖУ¬ B¶ËÏòA
¶Ë·¢Ë͵ÄACKºÍFINÊÇ·ÖÁ½´Î·¢Ë͵ġ£ÒòΪÔÚB¶Ë½ÓÊÕµ½A¶ËµÄFINºó£¬ B¶Ë¿ÉÄÜ»¹ÓÐÊý¾ÝÒª´«Ê䣬ËùÒÔÏÈ·¢ËÍACK£¬µÈB¶Ë´¦ÀíÍê×Ô¼ºµÄÊÂÇéºó¾Í¿ÉÒÔ·¢ËÍFIN¶Ï¿ªÁ¬½ÓÁË¡£
£¨3£©¡¢ÉîÈëÀí½âTCPÁ¬½Ó£º
ÓÉÓÚTCPÊÇȫ˫¹¤µÄ£¬Òò´ËÔÚÿһ¸ö·½Ïò¶¼±ØÐëµ¥¶À¹Ø±Õ¡£ÕâÔÔòÊǵ±Ò»·½Íê³ÉËüµÄÊý¾Ý·¢ËÍÈÎÎñºó¾ÍÄÜ·¢ËÍÒ»¸öFINÀ´ÖÕÖ¹Õâ¸ö·½ÏòµÄÁ¬½Ó¡£ÊÕµ½Ò»¸öFINÖ»Òâζ×ÅÕâ¸ö·½ÏòÉÏûÓÐÊý¾ÝÁ÷¶¯£¬Ò»¸öTCPÁ¬½ÓÔÚ½ÓÊÕµ½Ò»¸öFINºóÈÔÄÜ·¢ËÍÊý¾Ý¡£ Ê×ÏȽøÐйØ
±ÕµÄÒ»·½½«Ö´ÐÐÖ÷¶¯¹Ø±Õ£¬¶øÁíÒ»·½Ö´Ðб»¶¯¹Ø±Õ¡£
TCPÐÒéµÄÁ¬½ÓÊÇȫ˫¹¤Á¬½Ó£¬Ò»¸öTCPÁ¬½Ó´æÔÚË«ÏòµÄ¶ÁдͨµÀ¡£¼òµ¥À´Ëµ£¬ÊÇ¡°ÏȹضÁ£¬ÔÙ¹ØÐ´¡± £¬×ܹ²ÐèÒª4¸ö½×¶Î¡£ÒÔ¿Í»§»ú·¢Æð¹Ø±ÕÁ¬½ÓΪÀý£º1.·þÎñÆ÷¶ÁͨµÀ¹Ø±Õ£»2.¿Í»§¶ËдͨµÀ¹Ø±Õ£»3.¿Í»§¶Ë¶ÁͨµÀ¹Ø±Õ£»4.·þÎñÆ÷дͨµÀ¹Ø±Õ¡£
¹Ø±ÕÐÐΪÊÇÔÚ·¢Æð·½Êý¾Ý·¢ËÍÍê±ÏÖ®ºó£¬¸ø¶Ô·½·¢³öÒ»¸öFIN£¨finish£©Êý¾Ý¶Î£¬Ö±µ½½ÓÊÕµ½¶Ô·½·¢Ë͵ÄFIN,ÇÒ¶Ô·½ÊÕµ½Á˽ÓÊÕÈ·ÈϵÄACKÖ®ºó£¬Ë«·½µÄÊý¾ÝͨÐÅÍêÈ«½áÊø£¬¹ý³ÌÖÐÿ´Î¶¼ÐèÒª·µ»ØÈ·ÈÏÊý¾Ý¶ÎACK¡£
£¨4£©¡¢TCPʹÓû¬¶¯´°¿Ú»úÖÆÀ´½øÐÐÁ÷Á¿¿ØÖÆ¡£
½¨Á¢Á¬½Óʱ£¬¸÷¶Ë·ÖÅäÒ»¸ö»º³åÇøÓÃÀ´´æ´¢½ÓÊÕµÄÊý¾Ý£¬²¢½«»º³åÇøµÄ³ß´ç·¢Ë͸øÁíÒ»¶Ë¡£½ÓÊÕ·½·¢Ë͵ÄÈ·ÈÏÏûÏ¢Öаüº¬ÁË×Ô¼ºÊ£ÓàµÄ»º³åÇø³ß´ç¡£Ê£Ó໺³åÇø¿Õ¼äµÄÊýÁ¿½Ð×ö´°¿Ú¡£Æäʵ¾ÍÊǽ¨Á¢Á¬½ÓµÄË«»¢»¥ÏàÖªµÀ±Ë´ËÊ£ÓàµÄ»º³åÇø´óС¡£

£¨5£©¡¢ÓµÈû¿ØÖÆ
ÓµÈû¿ØÖÆ£º·ÀÖ¹¹ý¶àµÄÊý¾Ý×¢Èëµ½ÍøÂ·ÖУ¬ÕâÑù¿ÉÒÔÊ¹ÍøÂçÖеÄ·ÓÉÆ÷»òÁ´Â·²»ÖÁÓÚ×èÈû¡£ÓµÈû¿ØÖÆÊÇÒ»¸öÈ«¾ÖÐԵĹý³Ì£¬ºÍÁ÷Á¿¿ØÖƲ»Í¬£¬Á÷Á¿¿ØÖÆÊǵã¶ÔµãµÄ¿ØÖÆ¡£
1¡¢Âý¿ªÊ¼£º·¢ËÍ·½Î¬³ÖÒ»¸ö½Ð×öÓµÈû´°¿Úcwnd£¨congestion window£©µÄ״̬±äÁ¿¡£ÓµÈû´°¿ÚµÄ´óСȡ¾öÓÚÍøÂçµÄÓµÈû³Ì¶È£¬²¢ÇÒ¶¯Ì¬µÄ±ä»¯¡£·¢ËÍ·½ÈÃ×Ô¼ºµÄ·¢ËÍ´°¿ÚµÈÓÚÓµÈû´°¿Ú£¬ÁíÍ⿼Âǵ½½ÓÊÕ·½µÄ½ÓÊÕÄÜÁ¦£¬·¢ËÍ´°¿Ú¿ÉÄÜСÓÚÓµÈû´°¿Ú¡£Ë¼Â·¾ÍÊÇ£º²»ÒªÒ»¿ªÊ¼¾Í·¢ËÍ´óÁ¿µÄÊý¾Ý£¬ÏÈÊÔ̽һÏÂÍøÂçµÄÓµÈû³Ì¶È£¬Ò²¾ÍÊÇ˵ÓÉСµ½´óÔö¼ÓÓµÈû´°¿ÚµÄ´óС¡£
ΪÁË·ÀÖ¹cwndÔö³¤¹ý´óÒýÆðÍøÂçÓµÈû£¬»¹ÐèÒªÉèÖÃÒ»¸öÂý¿ªÊ¼ÃÅÏÞssthresh״̬±äÁ¿¡£ ssthreshµÄ·½·¨ÈçÏ£º
µ±cwnd < ssthreshʱ£¬¿ªÊ¼Ê¹ÓÃÂý¿ªÊ¼Ëã·¨£»µ±cwnd > ssthresh, ¸ÄÓÃÓµÈû±ÜÃâËã·¨£»µ±cwnd = ssthreshʱ£¬Âý¿ªÊ¼ÓëÓµÈûËã·¨ÈÎÒâ¡£
2.ÓµÈû±ÜÃ⣺
ÓµÈû±ÜÃâËã·¨ÈÃÓµÈû´°¿Ú»ºÂýÔö³¤£¬¼´Ã¿¾¹ýÒ»¸öÍù·µÊ±¼äRTT¾Í°Ñ·¢ËÍ·½µÄÓµÈû´°¿Úcwnd¼Ó1£¬¶ø²»ÊǼӱ¶£¬ÕâÑùÓµÈû´°¿Ú°´ÕÕÏßÐÔ¹æÂÉ»ºÂýÔö³¤¡£ÎÞÂÛÊÇÔÚÂý¿ªÊ¼½×¶Î»¹ÊÇÔÚÓµÈû±ÜÃâ½×¶Î£¬Ö»Òª·¢ËÍ·½ÅжÏÍøÂç³öÏÖÓµÈû£¨Æä¸ù¾Ý¾ÍÊÇûÓÐÊÕµ½È·ÈÏ£¬ËäȻûÓÐÊÕµ½È·ÈÏ¿ÉÄÜÊÇÆäËûÔÒòµÄ·Ö×鶪ʧ£¬µ«ÊÇÒòΪ?·¨Åж¨£¬ËùÒÔ¶¼µ±×÷ÓµÈû´¦Àí£©£¬¾Í°ÑÂý¿ªÊ¼ÃÅÏÞÉèÖÃΪ³öÏÖÓµÈûʱµÄ·¢ËÍ´°¿ÚµÄÒ»°ë£¬È»ºó°ÑÓµÈû´°¿ÚÉèÖÃΪ1£¬Ö´ÐÐÂý¿ªÊ¼Ëã·¨£º
´ËÍ⣬»¹ÓпìËÙÖØ´«ºÍ¿ìËÙ»Ö¸´£¬Í£Ö¹-µÈ´ýÐÒ飬»ØÍËNÖ¡ÐÒ飬ѡÔñÖØ´«ÐÒéµÈ¡£
¶þ¡¢UDPÐÒ飺
ÎÞÁ¬½ÓÐÒ飬Ҳ³ÆÍ¸Ã÷ÐÒ飬ҲλÓÚ´«Êä²ã¡£
Á½ÕßÇø±ð£º
1£© TCPÌá¹©ÃæÏòÁ¬½ÓµÄ´«Ê䣬ͨÐÅǰҪÏȽ¨Á¢Á¬½Ó£¨Èý´ÎÎÕÊÖ»úÖÆ£©£» UDPÌṩÎÞÁ¬½ÓµÄ´«Ê䣬ͨÐÅǰ²»ÐèÒª½¨Á¢Á¬½Ó¡£
2£© TCPÌṩ¿É¿¿µÄ´«Ê䣨ÓÐÐò£¬ÎÞ²î´í£¬²»¶ªÊ§£¬²»Öظ´£©£» UDPÌṩ²»¿É¿¿µÄ´«Êä¡£
3£© TCPÃæÏò×Ö½ÚÁ÷µÄ´«Ê䣬Òò´ËËüÄܽ«ÐÅÏ¢·Ö¸î³É×飬²¢ÔÚ½ÓÊն˽«ÆäÖØ×飻 UDPÊÇÃæÏòÊý¾Ý±¨µÄ´«Ê䣬ûÓзÖ×鿪Ïú¡£
4£© TCPÌṩӵÈû¿ØÖƺÍÁ÷Á¿¿ØÖÆ»úÖÆ£» UDP²»ÌṩӵÈû¿ØÖƺÍÁ÷Á¿¿ØÖÆ»úÖÆ¡£
Èý¡¢³¤Á¬½ÓºÍ¶ÌÁ¬½Ó
HTTPµÄ³¤Á¬½ÓºÍ¶ÌÁ¬½Ó±¾ÖÊÉÏÊÇTCP³¤Á¬½ÓºÍ¶ÌÁ¬½Ó¡£HTTPÊôÓÚÓ¦ÓòãÐÒ飬ÔÚ´«Êä²ãʹÓÃTCPÐÒ飬ÔÚÍøÂç²ãʹÓÃIPÐÒé¡£ IPÐÒéÖ÷Òª½â¾öÍøÂç·ÓɺÍѰַÎÊÌ⣬TCPÐÒéÖ÷Òª½â¾öÈçºÎÔÚIP²ãÖ®ÉϿɿ¿µØ´«µÝÊý¾Ý°ü£¬Ê¹µÃÍøÂçÉϽÓÊÕ¶ËÊÕµ½·¢ËͶËËù·¢³öµÄËùÓаü£¬²¢ÇÒ˳ÐòÓë·¢ËÍ˳ÐòÒ»Ö¡£TCPÐÒéÊǿɿ¿µÄ¡¢ÃæÏòÁ¬½ÓµÄ¡£
ÔÚHTTP/1.0ÖÐĬÈÏʹÓöÌÁ¬½Ó¡£Ò²¾ÍÊÇ˵£¬¿Í»§¶ËºÍ·þÎñÆ÷ÿ½øÐÐÒ»´ÎHTTP²Ù×÷£¬¾Í½¨Á¢Ò»´ÎÁ¬½Ó£¬ÈÎÎñ½áÊø¾ÍÖжÏÁ¬½Ó¡£µ±¿Í»§¶Ëä¯ÀÀÆ÷·ÃÎʵÄij¸öHTML»òÆäËûÀàÐ͵ÄWebÒ³Öаüº¬ÓÐÆäËûµÄWeb×ÊÔ´£¨ÈçJavaScriptÎļþ¡¢Í¼ÏñÎļþ¡¢CSSÎļþµÈ£©£¬Ã¿Óöµ½ÕâÑùÒ»¸öWeb×ÊÔ´£¬ä¯ÀÀÆ÷¾Í»áÖØÐ½¨Á¢Ò»¸öHTTP»á»°¡£
¶ø´ÓHTTP/1.1Æð£¬Ä¬ÈÏʹÓó¤Á¬½Ó£¬ÓÃÒÔ±£³ÖÁ¬½ÓÌØÐÔ¡£Ê¹Óó¤Á¬½ÓµÄHTTPÐÒ飬»áÔÚÏìӦͷ¼ÓÈëÕâÐдúÂ룺
Connection:keep-alive
ÔÚʹÓó¤Á¬½ÓµÄÇé¿öÏ£¬µ±Ò»¸öÍøÒ³´ò¿ªÍê³Éºó£¬¿Í»§¶ËºÍ·þÎñÆ÷Ö®¼äÓÃÓÚ´«ÊäHTTPÊý¾ÝµÄTCPÁ¬½Ó²»»á¹Ø±Õ£¬¿Í»§¶ËÔٴηÃÎÊÕâ¸ö·þÎñÆ÷ʱ£¬»á¼ÌÐøÊ¹ÓÃÕâÒ»ÌõÒѾ½¨Á¢µÄÁ¬½Ó¡£Keep-Alive²»»áÓÀ¾Ã±£³ÖÁ¬½Ó£¬ËüÓÐÒ»¸ö±£³Öʱ¼ä£¬¿ÉÒÔÔÚ²»Í¬µÄ·þÎñÆ÷Èí¼þ£¨ÈçApache£©ÖÐÉ趨Õâ¸öʱ¼ä¡£ÊµÏÖ³¤Á¬½ÓÐèÒª¿Í»§¶ËºÍ·þÎñ¶Ë¶¼Ö§³Ö³¤Á¬½Ó¡£
HTTPÐÒéµÄ³¤Á¬½ÓºÍ¶ÌÁ¬½Ó£¬ÊµÖÊÉÏÊÇTCPÐÒéµÄ³¤Á¬½ÓºÍ¶ÌÁ¬½Ó¡£