±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½éÉÜÁËTCP
ÐÒéµÄ»ù´¡ÖªÊ¶£¬°üÀ¨TCP ÐÒéµÄ×÷Óã¬ÒÔ¼°Êý¾ÝͨÐŵÄÍêÕûÐÔ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼ÍƼö¡£ |
|
Ò»¡¢TCP ÐÒéµÄ×÷ÓÃ
»¥ÁªÍøÓÉÒ»ÕûÌ×ÐÒé¹¹³É¡£TCP Ö»ÊÇÆäÖеÄÒ»²ã£¬ÓÐ×Å×Ô¼ºµÄ·Ö¹¤¡£

£¨Í¼Æ¬ËµÃ÷£ºTCP ÊÇÒÔÌ«ÍøÐÒéºÍ IP ÐÒéµÄÉϲãÐÒ飬ҲÊÇÓ¦ÓòãÐÒéµÄϲãÐÒé¡££©
×îµ×²ãµÄÒÔÌ«ÍøÐÒ飨Ethernet£©¹æ¶¨Á˵ç×ÓÐźÅÈçºÎ×é³ÉÊý¾Ý°ü£¨packet£©£¬½â¾öÁË×ÓÍøÄÚ²¿µÄµã¶ÔµãͨÐÅ¡£

£¨Í¼Æ¬ËµÃ÷£ºÒÔÌ«ÍøÐÒé½â¾öÁ˾ÖÓòÍøµÄµã¶ÔµãͨÐÅ¡££©
µ«ÊÇ£¬ÒÔÌ«ÍøÐÒé²»Äܽâ¾ö¶à¸ö¾ÖÓòÍøÈçºÎ»¥Í¨£¬ÕâÓÉ IP ÐÒé½â¾ö¡£ 
£¨Í¼Æ¬ËµÃ÷£ºIP ÐÒé¿ÉÒÔÁ¬½Ó¶à¸ö¾ÖÓòÍø¡££©
IP ÐÒ鶨ÒåÁËÒ»Ì××Ô¼ºµÄµØÖ·¹æÔò£¬³ÆÎª IP µØÖ·¡£ËüʵÏÖÁË·Óɹ¦ÄÜ£¬ÔÊÐíij¸ö¾ÖÓòÍøµÄ A Ö÷»ú£¬ÏòÁíÒ»¸ö¾ÖÓòÍøµÄ
B Ö÷»ú·¢ËÍÏûÏ¢¡£ 
£¨Í¼Æ¬ËµÃ÷£ºÂ·ÓÉÆ÷¾ÍÊÇ»ùÓÚ IP ÐÒé¡£¾ÖÓòÍøÖ®¼äÒª¿¿Â·ÓÉÆ÷Á¬½Ó¡££©
·ÓɵÄÔÀíºÜ¼òµ¥¡£Êг¡ÉÏËùÓеÄ·ÓÉÆ÷£¬±³ºó¶¼ÓкܶàÍø¿Ú£¬Òª½ÓÈë¶à¸ùÍøÏß¡£Â·ÓÉÆ÷ÄÚ²¿ÓÐÒ»ÕÅ·ÓÉ±í£¬¹æ¶¨ÁË
A ¶Î IP µØÖ·×ß³ö¿ÚÒ»£¬B ¶ÎµØÖ·×ß³ö¿Ú¶þ£¬¡¡Í¨¹ýÕâÌס±Ö¸Â·ÅÆ¡±£¬ÊµÏÖÁËÊý¾Ý°üµÄת·¢¡£ 
ͼƬ˵Ã÷£º±¾»úµÄ·Óɱí×¢Ã÷Á˲»Í¬ IP Ä¿µÄµØµÄÊý¾Ý°ü£¬Òª·¢Ë͵½ÄÄÒ»¸öÍø¿Ú£¨interface£©¡££©
IP ÐÒéÖ»ÊÇÒ»¸öµØÖ·ÐÒ飬²¢²»±£Ö¤Êý¾Ý°üµÄÍêÕû¡£Èç¹û·ÓÉÆ÷¶ª°ü£¨±ÈÈ绺´æÂúÁË£¬Ð½øÀ´µÄÊý¾Ý°ü¾Í»á¶ªÊ§£©£¬¾ÍÐèÒª·¢ÏÖ¶ªÁËÄÄÒ»¸ö°ü£¬ÒÔ¼°ÈçºÎÖØÐ·¢ËÍÕâ¸ö°ü¡£Õâ¾ÍÒªÒÀ¿¿
TCP ÐÒé¡£
¼òµ¥Ëµ£¬TCP ÐÒéµÄ×÷ÓÃÊÇ£¬±£Ö¤Êý¾ÝͨÐŵÄÍêÕûÐԺͿɿ¿ÐÔ£¬·ÀÖ¹¶ª°ü¡£
¶þ¡¢TCP Êý¾Ý°üµÄ´óС
ÒÔÌ«ÍøÊý¾Ý°ü£¨packet£©µÄ´óСÊǹ̶¨µÄ£¬×î³õÊÇ1518×Ö½Ú£¬ºóÀ´Ôö¼Óµ½1522×Ö½Ú¡£ÆäÖУ¬ 1500
×Ö½ÚÊǸºÔØ£¨payload£©£¬22×Ö½ÚÊÇÍ·ÐÅÏ¢£¨head£©¡£
IP Êý¾Ý°üÔÚÒÔÌ«ÍøÊý¾Ý°üµÄ¸ºÔØÀïÃæ£¬ËüÒ²ÓÐ×Ô¼ºµÄÍ·ÐÅÏ¢£¬×îÉÙÐèÒª20×Ö½Ú£¬ËùÒÔ IP Êý¾Ý°üµÄ¸ºÔØ×î¶àΪ1480×Ö½Ú¡£ 
£¨Í¼Æ¬ËµÃ÷£ºIP Êý¾Ý°üÔÚÒÔÌ«ÍøÊý¾Ý°üÀïÃæ£¬TCP Êý¾Ý°üÔÚ IP Êý¾Ý°üÀïÃæ¡££©
TCP Êý¾Ý°üÔÚ IP Êý¾Ý°üµÄ¸ºÔØÀïÃæ¡£ËüµÄÍ·ÐÅÏ¢×îÉÙÒ²ÐèÒª20×Ö½Ú£¬Òò´Ë TCP Êý¾Ý°üµÄ×î´ó¸ºÔØÊÇ
1480 - 20 = 1460 ×Ö½Ú¡£ÓÉÓÚ IP ºÍ TCP ÐÒéÍùÍùÓжîÍâµÄÍ·ÐÅÏ¢£¬ËùÒÔ TCP
¸ºÔØÊµ¼ÊΪ1400×Ö½Ú×óÓÒ¡£
Òò´Ë£¬Ò»Ìõ1500×Ö½ÚµÄÐÅÏ¢ÐèÒªÁ½¸ö TCP Êý¾Ý°ü¡£HTTP/2 ÐÒéµÄÒ»´ó¸Ä½ø£¬ ¾ÍÊÇѹËõ HTTP
ÐÒéµÄÍ·ÐÅÏ¢£¬Ê¹µÃÒ»¸ö HTTP ÇëÇó¿ÉÒÔ·ÅÔÚÒ»¸ö TCP Êý¾Ý°üÀïÃæ£¬¶ø²»ÊǷֳɶà¸ö£¬ÕâÑù¾ÍÌá¸ßÁËËÙ¶È¡£ 
£¨Í¼Æ¬ËµÃ÷£ºÒÔÌ«ÍøÊý¾Ý°üµÄ¸ºÔØÊÇ1500×Ö½Ú£¬TCP Êý¾Ý°üµÄ¸ºÔØÔÚ1400×Ö½Ú×óÓÒ¡££©
Èý¡¢TCP Êý¾Ý°üµÄ±àºÅ£¨SEQ£©
Ò»¸ö°ü1400×Ö½Ú£¬ÄÇôһ´ÎÐÔ·¢ËÍ´óÁ¿Êý¾Ý£¬¾Í±ØÐë·Ö³É¶à¸ö°ü¡£±ÈÈ磬һ¸ö 10MB µÄÎļþ£¬ÐèÒª·¢ËÍ7100¶à¸ö°ü¡£
·¢Ë͵Äʱºò£¬TCP ÐÒéΪÿ¸ö°ü±àºÅ£¨sequence number£¬¼ò³Æ SEQ£©£¬ÒÔ±ã½ÓÊÕµÄÒ»·½°´ÕÕ˳Ðò»¹Ô¡£ÍòÒ»·¢Éú¶ª°ü£¬Ò²¿ÉÒÔÖªµÀ¶ªÊ§µÄÊÇÄÄÒ»¸ö°ü¡£
µÚÒ»¸ö°üµÄ±àºÅÊÇÒ»¸öËæ»úÊý¡£ÎªÁ˱ãÓÚÀí½â£¬ÕâÀï¾Í°ÑËü³ÆÎª1ºÅ°ü¡£¼Ù¶¨Õâ¸ö°üµÄ¸ºÔس¤¶ÈÊÇ100×Ö½Ú£¬ÄÇô¿ÉÒÔÍÆËã³öÏÂÒ»¸ö°üµÄ±àºÅÓ¦¸ÃÊÇ101¡£Õâ¾ÍÊÇ˵£¬Ã¿¸öÊý¾Ý°ü¶¼¿ÉÒԵõ½Á½¸ö±àºÅ£º×ÔÉíµÄ±àºÅ£¬ÒÔ¼°ÏÂÒ»¸ö°üµÄ±àºÅ¡£½ÓÊÕ·½ÓÉ´ËÖªµÀ£¬Ó¦¸Ã°´ÕÕʲô˳Ðò½«ËüÃÇ»¹Ô³ÉÔʼÎļþ¡£ 
£¨Í¼Æ¬ËµÃ÷£ºµ±Ç°°üµÄ±àºÅÊÇ45943£¬ÏÂÒ»¸öÊý¾Ý°üµÄ±àºÅÊÇ46183£¬ÓÉ´Ë¿ÉÖª£¬Õâ¸ö°üµÄ¸ºÔØÊÇ240×Ö½Ú¡££©
ËÄ¡¢TCP Êý¾Ý°üµÄ×é×°
ÊÕµ½ TCP Êý¾Ý°üÒÔºó£¬×é×°»¹ÔÊDzÙ×÷ϵͳÍê³ÉµÄ¡£Ó¦ÓóÌÐò²»»áÖ±½Ó´¦Àí TCP Êý¾Ý°ü¡£
¶ÔÓÚÓ¦ÓóÌÐòÀ´Ëµ£¬²»ÓùØÐÄÊý¾ÝͨÐŵÄϸ½Ú¡£³ý·ÇÏß·Òì³££¬ÊÕµ½µÄ×ÜÊÇÍêÕûµÄÊý¾Ý¡£Ó¦ÓóÌÐòÐèÒªµÄÊý¾Ý·ÅÔÚ
TCP Êý¾Ý°üÀïÃæ£¬ÓÐ×Ô¼ºµÄ¸ñʽ£¨±ÈÈç HTTP ÐÒ飩¡£
TCP ²¢Ã»ÓÐÌṩÈκλúÖÆ£¬±íʾÔʼÎļþµÄ´óС£¬ÕâÓÉÓ¦ÓòãµÄÐÒéÀ´¹æ¶¨¡£±ÈÈ磬HTTP ÐÒé¾ÍÓÐÒ»¸öÍ·ÐÅÏ¢Content-Length£¬±íʾÐÅÏ¢ÌåµÄ´óС¡£¶ÔÓÚ²Ù×÷ϵͳÀ´Ëµ£¬¾ÍÊdzÖÐøµØ½ÓÊÕ
TCP Êý¾Ý°ü£¬½«ËüÃǰ´ÕÕ˳Ðò×é×°ºÃ£¬Ò»¸ö°ü¶¼²»ÉÙ¡£
²Ù×÷ϵͳ²»»áÈ¥´¦Àí TCP Êý¾Ý°üÀïÃæµÄÊý¾Ý¡£Ò»µ©×é×°ºÃ TCP Êý¾Ý°ü£¬¾Í°ÑËüÃÇת½»¸øÓ¦ÓóÌÐò¡£TCP
Êý¾Ý°üÀïÃæÓÐÒ»¸ö¶Ë¿Ú£¨port£©²ÎÊý£¬¾ÍÊÇÓÃÀ´Ö¸¶¨×ª½»¸ø¼àÌý¸Ã¶Ë¿ÚµÄÓ¦ÓóÌÐò¡£ 
£¨Í¼Æ¬ËµÃ÷£ºÏµÍ³¸ù¾Ý TCP Êý¾Ý°üÀïÃæµÄ¶Ë¿Ú£¬½«×é×°ºÃµÄÊý¾Ýת½»¸øÏàÓ¦µÄÓ¦ÓóÌÐò¡£ÉÏͼÖУ¬21¶Ë¿ÚÊÇ
FTP ·þÎñÆ÷£¬25¶Ë¿ÚÊÇ SMTP ·þÎñ£¬80¶Ë¿ÚÊÇ Web ·þÎñÆ÷¡££©
Ó¦ÓóÌÐòÊÕµ½×é×°ºÃµÄÔʼÊý¾Ý£¬ÒÔä¯ÀÀÆ÷ΪÀý£¬¾Í»á¸ù¾Ý HTTP ÐÒéµÄContent-Length×Ö¶ÎÕýÈ·¶Á³öÒ»¶Î¶ÎµÄÊý¾Ý¡£ÕâÒ²Òâζ×Å£¬Ò»´Î
TCP ͨÐÅ¿ÉÒÔ°üÀ¨¶à¸ö HTTP ͨÐÅ¡£
Îå¡¢ÂýÆô¶¯ºÍ ACK
·þÎñÆ÷·¢ËÍÊý¾Ý°ü£¬µ±È»Ô½¿ìÔ½ºÃ£¬×îºÃÒ»´ÎÐÔÈ«·¢³öÈ¥¡£µ«ÊÇ£¬·¢µÃÌ«¿ì£¬¾ÍÓпÉÄܶª°ü¡£´ø¿íС¡¢Â·ÓÉÆ÷¹ýÈÈ¡¢»º´æÒç³öµÈÐí¶àÒòËØ¶¼»áµ¼Ö¶ª°ü¡£Ïß·²»ºÃµÄ»°£¬·¢µÃÔ½¿ì£¬¶ªµÃÔ½¶à¡£
×îÀíÏëµÄ״̬ÊÇ£¬ÔÚÏß·ÔÊÐíµÄÇé¿öÏ£¬´ïµ½×î¸ßËÙÂÊ¡£µ«ÊÇÎÒÃÇÔõô֪µÀ£¬¶Ô·½Ïß·µÄÀíÏëËÙÂÊÊǶàÉÙÄØ£¿´ð°¸¾ÍÊÇÂýÂýÊÔ¡£
TCP ÐÒéΪÁË×öµ½Ð§ÂÊÓë¿É¿¿ÐÔµÄͳһ£¬Éè¼ÆÁËÒ»¸öÂýÆô¶¯£¨slow start£©»úÖÆ¡£¿ªÊ¼µÄʱºò£¬·¢Ë͵ýÏÂý£¬È»ºó¸ù¾Ý¶ª°üµÄÇé¿ö£¬µ÷ÕûËÙÂÊ£ºÈç¹û²»¶ª°ü£¬¾Í¼Ó¿ì·¢ËÍËÙ¶È£»Èç¹û¶ª°ü£¬¾Í½µµÍ·¢ËÍËÙ¶È¡£
Linux ÄÚºËÀïÃæÉ趨ÁË£¨³£Á¿TCP_INIT_CWND£©£¬¸Õ¿ªÊ¼Í¨ÐŵÄʱºò£¬·¢ËÍ·½Ò»´ÎÐÔ·¢ËÍ10¸öÊý¾Ý°ü£¬¼´¡±·¢ËÍ´°¿Ú¡±µÄ´óСΪ10¡£È»ºóÍ£ÏÂÀ´£¬µÈ´ý½ÓÊÕ·½µÄÈ·ÈÏ£¬ÔÙ¼ÌÐø·¢ËÍ¡£
ĬÈÏÇé¿öÏ£¬½ÓÊÕ·½Ã¿ÊÕµ½Á½¸ö TCP Êý¾Ý°ü£¬¾ÍÒª·¢ËÍÒ»¸öÈ·ÈÏÏûÏ¢¡£¡±È·ÈÏ¡±µÄÓ¢ÓïÊÇ acknowledgement£¬ËùÒÔÕâ¸öÈ·ÈÏÏûÏ¢¾Í¼ò³Æ
ACK¡£
ACK Я´øÁ½¸öÐÅÏ¢¡£
ÆÚ´ýÒªÊÕµ½ÏÂÒ»¸öÊý¾Ý°üµÄ±àºÅ
½ÓÊÕ·½µÄ½ÓÊÕ´°¿ÚµÄÊ£ÓàÈÝÁ¿
·¢ËÍ·½ÓÐÁËÕâÁ½¸öÐÅÏ¢£¬ÔÙ¼ÓÉÏ×Ô¼ºÒѾ·¢³öµÄÊý¾Ý°üµÄ×îбàºÅ£¬¾Í»áÍÆ²â³ö½ÓÊÕ·½´ó¸ÅµÄ½ÓÊÕËÙ¶È£¬´Ó¶ø½µµÍ»òÔö¼Ó·¢ËÍËÙÂÊ¡£Õâ±»³ÆÎª¡±·¢ËÍ´°¿Ú¡±£¬Õâ¸ö´°¿ÚµÄ´óСÊǿɱäµÄ¡£ 
£¨Í¼Æ¬ËµÃ÷£ºÃ¿¸ö ACK ¶¼´øÓÐÏÂÒ»¸öÊý¾Ý°üµÄ±àºÅ£¬ÒÔ¼°½ÓÊÕ´°¿ÚµÄÊ£ÓàÈÝÁ¿¡£Ë«·½¶¼»á·¢ËÍ ACK¡££©
×¢Ò⣬ÓÉÓÚ TCP ͨÐÅÊÇË«ÏòµÄ£¬ËùÒÔË«·½¶¼ÐèÒª·¢ËÍ ACK¡£Á½·½µÄ´°¿Ú´óС£¬ºÜ¿ÉÄÜÊDz»Ò»ÑùµÄ¡£¶øÇÒ
ACK Ö»ÊǺܼòµ¥µÄ¼¸¸ö×ֶΣ¬Í¨³£ÓëÊý¾ÝºÏ²¢ÔÚÒ»¸öÊý¾Ý°üÀïÃæ·¢ËÍ¡£ 
ͼƬ˵Ã÷£ºÉÏͼһ¹²4´ÎͨÐÅ¡£µÚÒ»´ÎͨÐÅ£¬A Ö÷»ú·¢¸øB Ö÷»úµÄÊý¾Ý°ü±àºÅÊÇ1£¬³¤¶ÈÊÇ100×Ö½Ú£¬Òò´ËµÚ¶þ´ÎͨÐÅ
B Ö÷»úµÄ ACK ±àºÅÊÇ 1 + 100 = 101£¬µÚÈý´ÎͨÐÅ A Ö÷»úµÄÊý¾Ý°ü±àºÅÒ²ÊÇ 101¡£Í¬Àí£¬µÚ¶þ´ÎͨÐÅ
B Ö÷»ú·¢¸ø A Ö÷»úµÄÊý¾Ý°ü±àºÅÊÇ1£¬³¤¶ÈÊÇ200×Ö½Ú£¬Òò´ËµÚÈý´ÎͨÐÅ A Ö÷»úµÄ ACK ÊÇ201£¬µÚËÄ´ÎͨÐÅ
B Ö÷»úµÄÊý¾Ý°ü±àºÅÒ²ÊÇ201¡££©
¼´Ê¹¶ÔÓÚ´ø¿íºÜ´ó¡¢Ïß·ºÜºÃµÄÁ¬½Ó£¬TCP Ò²×ÜÊÇ´Ó10¸öÊý¾Ý°ü¿ªÊ¼ÂýÂýÊÔ£¬¹ýÁËÒ»¶Îʱ¼äÒԺ󣬲Ŵﵽ×î¸ßµÄ´«ÊäËÙÂÊ¡£Õâ¾ÍÊÇ
TCP µÄÂýÆô¶¯¡£
Áù¡¢Êý¾Ý°üµÄÒÅʧ´¦Àí
TCP ÐÒé¿ÉÒÔ±£Ö¤Êý¾ÝͨÐŵÄÍêÕûÐÔ£¬ÕâÊÇÔõô×öµ½µÄ£¿
Ç°ÃæËµ¹ý£¬Ã¿Ò»¸öÊý¾Ý°ü¶¼´øÓÐÏÂÒ»¸öÊý¾Ý°üµÄ±àºÅ¡£Èç¹ûÏÂÒ»¸öÊý¾Ý°üûÓÐÊÕµ½£¬ÄÇô ACK µÄ±àºÅ¾Í²»»á·¢Éú±ä»¯¡£
¾ÙÀýÀ´Ëµ£¬ÏÖÔÚÊÕµ½ÁË4ºÅ°ü£¬µ«ÊÇûÓÐÊÕµ½5ºÅ°ü¡£ACK ¾Í»á¼Ç¼£¬ÆÚ´ýÊÕµ½5ºÅ°ü¡£¹ýÁËÒ»¶Îʱ¼ä£¬5ºÅ°üÊÕµ½ÁË£¬ÄÇôÏÂÒ»ÂÖ
ACK »á¸üбàºÅ¡£Èç¹û5ºÅ°ü»¹ÊÇûÊÕµ½£¬µ«ÊÇÊÕµ½ÁË6ºÅ°ü»ò7ºÅ°ü£¬ÄÇô ACK ÀïÃæµÄ±àºÅ²»»á±ä»¯£¬×ÜÊÇÏÔʾ5ºÅ°ü¡£Õâ»áµ¼Ö´óÁ¿Öظ´ÄÚÈݵÄ
ACK¡£
Èç¹û·¢ËÍ·½·¢ÏÖÊÕµ½Èý¸öÁ¬ÐøµÄÖØ¸´ ACK£¬»òÕß³¬Ê±ÁË»¹Ã»ÓÐÊÕµ½ÈκΠACK£¬¾Í»áÈ·È϶ª°ü£¬¼´5ºÅ°üÒÅʧÁË£¬´Ó¶øÔٴη¢ËÍÕâ¸ö°ü¡£Í¨¹ýÕâÖÖ»úÖÆ£¬TCP
±£Ö¤Á˲»»áÓÐÊý¾Ý°ü¶ªÊ§¡£ 
£¨Í¼Æ¬ËµÃ÷£ºHost B ûÓÐÊÕµ½100ºÅÊý¾Ý°ü£¬»áÁ¬Ðø·¢³öÏàͬµÄ ACK£¬´¥·¢ Host A ÖØ·¢100ºÅÊý¾Ý°ü¡££©
|