ºÍÅ®ÅóÓÑÒìµØÁµÒ»Äê¶à£¬ÎªÁ˱£³Ö¸ÐÇéÎÒÌáÒéÿÌìÍíÉÏÊÓƵÁÄÌìÒ»´Î¡£
´ÓºÃÉÏ¿ªÊ¼£¬µ½ÏÖÔÚ£¬Ò»Äê¶àÒ²Ëã¼á³ÖÏÂÀ´ÁË¡£
ÓÐʱºòÁÄÌìµÄ¹ý³ÌÖУ¬ÎÒµÄÍøÂç»òÕßËýµÄÍøÂç¿ÉÄܻ᲻ºÃ£¬ÊÓƵ¾Í»á¿¨×¡£¬Ìý²»µ½¶Ô·½µÄÉùÒô£¬¹ýÒ»»á¶ùÖ®ºó²Å»á»Ö¸´¡£
ÖмäË«·½¿ÉÄܾÍÒª²»¶ÏµÄÈ·ÈÏÍøÂçÊÇ·ñ»Ö¸´£¬µ«ÊÇÓÐʱºò»á£º
Ëý£º¡°Äã¿ÉÒÔÌýµ½ÁËÂ𣿡±
ÎÒ£º¡°¿ÉÒÔÁË£¬ÄãÄØ£¿¡±¡¢
Ëý£º¡°Î¹Î¹£¬Äã¿ÉÒÔÌýµ½ÁËÂ𣿡±
ÎÒ£º¡°¿ÉÒÔÁË£¬ÎÒ¿ÉÒÔÌýµ½ÁË£¬ÄãÄØ£¿¡±
Ëý£º¡°Äã¿ÉÒÔÌýµ½ÁËÂ𣿡±
.....
ÕâÖÖÇé¿öºÜµ°ÌÛ£¬ÄÇôÔõÑù²ÅÄÜÕÒÒ»¸ö¼òµ¥µÄ°ì·¨£¬ÈÃÁ½¸öÈ˶¼È·ÈÏ×Ô¼º¿ÉÒÔÌýµ½¶Ô·½µÄÉùÒô£¬¶Ô·½Ò²¿ÉÒÔÌýµ½×Ô¼ºµÄÉùÒôÄØ£¿
×¢£ºÒÔÏÂÇé½Ú´¿ÊôÐé¹¹
TCP½¨Á¢Á¬½ÓΪʲôÊÇÈý´ÎÎÕÊÖ£¬¶ø²»ÊÇÁ½´Î»òËĴΣ¿
TCP£¬ÃûΪ´«Êä¿ØÖÆÐÒ飬ÊÇÒ»ÖÖ¿É¿¿µÄ´«Êä²ãÐÒ飬IPÐÒéºÅΪ6¡£
˳±ã˵һ¾ä£¬ÔÔòÉÏÈκÎÊý¾Ý´«Ê䶼ÎÞ·¨È·±£¾ø¶Ô¿É¿¿£¬Èý´ÎÎÕÊÖÖ»ÊÇÈ·±£¿É¿¿µÄ»ù±¾ÐèÒª¡£
¾Ù¸öÈÕ³£Àý×Ó£¬´òµç»°Ê±ÎÒÃǶԻ°ÈçÏ£º
¶ÔӦΪ¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄͨÐÅ£º
ÓÚÊÇÓÐÁËÈç϶Ի°£º
ÎÒ£º1+1µÈÓÚ¼¸£¿
Ëý£º2,2+2µÈÓÚ¼¸£¿
ÎÒ£º4
Ê×ÏÈÁ½¸öÈËÔ¼¶¨ÐÒé
1.¸Ð¾õÍøÂçÇé¿ö²»¶ÔµÄʱºò£¬ÈκÎÒ»·½¶¼¿ÉÒÔ·¢ÆðѯÎÊ
2.ÈκÎÇé¿öÏ£¬Èô·¢ÆðѯÎʺó5Ã뻹ûÊÕµ½»Ø¸´£¬ÔòÈÏΪÍøÂ粻ͨ
3.ÍøÂ粻ͨµÄÇé¿öϵÈ1min·ÓÉÆ÷Ö®ºóÔÙ·¢ÆðѯÎÊ
¶ÔÓÚÎÒ¶øÑÔ£¬·¢Æð ¡°1+1µÈÓÚ¼¸¡±µÄѯÎʺó
1. Èô5sÄÚûÓÐÊÕµ½»Ø¸´£¬ÔòÈÏΪÍøÂ粻ͨ
2. ÈôÊÕµ½»Ø¸´£¬ÔòÎÒÈ·ÈÏ¢ÙÎÒÄÜÌýµ½ËýµÄÏûÏ¢ ¢ÚËýÄÜÌýµ½ÎÒµÄÏûÏ¢£¬È»ºó»Ø¸´ËýµÄÎÊÌâµÄ´ð°¸
¶ÔÓÚËý¶øÑÔ£¬µ±¸Ð¾õÍøÂçÇé¿ö²»¶ÔµÄʱºò
1. ÈôûÓÐÊÕµ½ÎÒµÄѯÎÊ£¬ÔòËý·¢ÆðѯÎÊ
2. ÈôÊÕµ½¡°1+1µÈÓÚ¼¸¡±£¬ÔòËýÈ·ÈÏ ¢ÙËý¿ÉÒÔÌýµ½ÎÒµÄÏûÏ¢£¬È»ºó»Ø¸´ÎÒµÄÎÊÌâµÄ´ð°¸ºÍËýµÄÎÊÌâ¡°2£¬2+2µÈÓÚ¼¸¡±
3. Èô5sÄÚûÓÐÊÕµ½ÎҵĻظ´¡°4¡±£¬ÔòËýÈ·ÈÏ ¢ÚÎÒÌý²»¼ûËýµÄÏûÏ¢
4. Èô5sÄÚÊÕµ½ÁËÎҵĻظ´¡°4¡±£¬ÔòËýÈ·ÈÏ ¢ÚÎÒ¿ÉÒÔÌý¼ûËýµÄÏûÏ¢
ÕâÑù£¬Èç¹ûÉÏÃæµÄ¶Ô»°µÃÒÔÍê³É£¬¾ÍÖ¤Ã÷Ë«·½¶¼¿ÉÒÔÈ·ÈÏ×Ô¼º¿ÉÒÔÌýµ½¶Ô·½µÄÉùÒô£¬¶Ô·½Ò²¿ÉÒÔÌýµ½×Ô¼ºµÄÉùÒô£¡
Õâ¸ö¹ÊÊ¿ÉÒÔ½âÊÍTCPΪʲôҪÈý´ÎÎÕÊÖÂð ... ‡å
ÏÈÓÉ¿Í»§¶ËÏò·þÎñÆ÷¶Ë·¢ËÍÒ»¸öFIN£¬ÇëÇó¹Ø±ÕÊý¾Ý´«Êä¡£
µ±·þÎñÆ÷½ÓÊÕµ½¿Í»§¶ËµÄFINʱ£¬Ïò¿Í»§¶Ë·¢ËÍÒ»¸öACK£¬ÆäÖÐackµÄÖµµÈÓÚFIN+SEQ
È»ºó·þÎñÆ÷Ïò¿Í»§¶Ë·¢ËÍÒ»¸öFIN£¬¸æËß¿Í»§¶ËÓ¦ÓóÌÐò¹Ø±Õ¡£
µ±¿Í»§¶ËÊÕµ½·þÎñÆ÷¶ËµÄFINÊÇ£¬»Ø¸´Ò»¸öACK¸ø·þÎñÆ÷¶Ë¡£ÆäÖÐackµÄÖµµÈÓÚFIN+SEQ
ΪʲôҪ4´Î»ÓÊÖ£¿
È·±£Êý¾ÝÄܹ»ÍêÕû´«Êä¡£
µ±±»¶¯·½ÊÕµ½Ö÷¶¯·½µÄFIN±¨ÎÄ֪ͨʱ£¬Ëü½ö½ö±íʾÖ÷¶¯·½Ã»ÓÐÊý¾ÝÔÙ·¢Ë͸ø±»¶¯·½ÁË¡£
µ«Î´±Ø±»¶¯·½ËùÓеÄÊý¾Ý¶¼ÍêÕûµÄ·¢Ë͸øÁËÖ÷¶¯·½£¬ËùÒÔ±»¶¯·½²»»áÂíÉϹرÕSOCKET,Ëü¿ÉÄÜ»¹ÐèÒª·¢ËÍһЩÊý¾Ý¸øÖ÷¶¯·½ºó£¬
ÔÙ·¢ËÍFIN±¨ÎĸøÖ÷¶¯·½£¬¸æËßÖ÷¶¯·½Í¬Òâ¹Ø±ÕÁ¬½Ó£¬ËùÒÔÕâÀïµÄACK±¨ÎĺÍFIN±¨ÎĶàÊýÇé¿ö϶¼ÊÇ·Ö¿ª·¢Ë͵ġ£
Ò»¡¢TCP±¨Îĸñʽ
TCP±¨Îĸñʽͼ£º
ÉÏͼÖÐÓм¸¸ö×Ö¶ÎÐèÒªÖصã½éÉÜÏ£º
£¨1£©ÐòºÅ£ºSeqÐòºÅ£¬Õ¼32룬ÓÃÀ´±êʶ´ÓTCPÔ´¶ËÏòÄ¿µÄ¶Ë·¢Ë͵Ä×Ö½ÚÁ÷£¬·¢Æð·½·¢ËÍÊý¾Ýʱ¶Ô´Ë½øÐбê¼Ç¡£
£¨2£©È·ÈÏÐòºÅ£ºAckÐòºÅ£¬Õ¼32λ£¬Ö»ÓÐACK±ê־λΪ1ʱ£¬È·ÈÏÐòºÅ×ֶβÅÓÐЧ£¬Ack=Seq+1¡£
£¨3£©±ê־λ£º¹²6¸ö£¬¼´URG¡¢ACK¡¢PSH¡¢RST¡¢SYN¡¢FINµÈ£¬¾ßÌ庬ÒåÈçÏ£º
£¨A£©URG£º½ô¼±Ö¸Õ루urgent pointer£©ÓÐЧ¡£
£¨B£©ACK£ºÈ·ÈÏÐòºÅÓÐЧ¡£
£¨C£©PSH£º½ÓÊÕ·½Ó¦¸Ã¾¡¿ì½«Õâ¸ö±¨ÎĽ»¸øÓ¦Óò㡣
£¨D£©RST£ºÖØÖÃÁ¬½Ó¡£
£¨E£©SYN£º·¢ÆðÒ»¸öÐÂÁ¬½Ó¡£
£¨F£©FIN£ºÊÍ·ÅÒ»¸öÁ¬½Ó¡£
ÐèҪעÒâµÄÊÇ£º
£¨A£©²»Òª½«È·ÈÏÐòºÅAckÓë±ê־λÖеÄACK¸ã»ìÁË¡£
£¨B£©È·ÈÏ·½Ack=·¢Æð·½Req+1£¬Á½¶ËÅä¶Ô¡£
¶þ¡¢Èý´ÎÎÕÊÖ
TCP(Transmission Control Protocol)¡¡´«Êä¿ØÖÆÐÒé
TCPÊÇÖ÷»ú¶ÔÖ÷»ú²ãµÄ´«Êä¿ØÖÆÐÒ飬Ìṩ¿É¿¿µÄÁ¬½Ó·þÎñ£¬²ÉÓÃÈý´ÎÎÕÊÖÈ·ÈϽ¨Á¢Ò»¸öÁ¬½Ó
λÂë¼´tcp±ê־λ,ÓÐ6ÖÖ±êʾ:
SYN(synchronous½¨Á¢Áª»ú)
ACK(acknowledgement?È·ÈÏ)
PSH(push´«ËÍ)
FIN(finish½áÊø)
RST(resetÖØÖÃ)
URG(urgent½ô¼±)
Sequence number(˳ÐòºÅÂë)
Acknowledge number(È·ÈϺÅÂë)
establish ?½¨Á¢£¬´´½¨
ËùνÈý´ÎÎÕÊÖ£¨Three-Way Handshake£©¼´½¨Á¢TCPÁ¬½Ó£¬ÊÇÖ¸½¨Á¢Ò»¸öTCPÁ¬½Óʱ£¬ÐèÒª¿Í»§¶ËºÍ·þÎñ¶Ë×ܹ²·¢ËÍ3¸ö°üÒÔÈ·ÈÏÁ¬½ÓµÄ½¨Á¢¡£ÔÚsocket±à³ÌÖУ¬ÕâÒ»¹ý³ÌÓÉ¿Í»§¶ËÖ´ÐÐconnectÀ´´¥·¢£¬Õû¸öÁ÷³ÌÈçÏÂͼËùʾ£º
£¨1£©µÚÒ»´ÎÎÕÊÖ£ºClient½«±ê־λSYNÖÃΪ1£¬Ëæ»ú²úÉúÒ»¸öÖµseq=J£¬²¢½«¸ÃÊý¾Ý°ü·¢Ë͸øServer£¬Client½øÈëSYN_SENT״̬£¬µÈ´ýServerÈ·ÈÏ¡£
£¨2£©µÚ¶þ´ÎÎÕÊÖ£ºServerÊÕµ½Êý¾Ý°üºóÓɱê־λSYN=1ÖªµÀClientÇëÇó½¨Á¢Á¬½Ó£¬Server½«±ê־λSYNºÍACK¶¼ÖÃΪ1£¬ack (number )=J+1£¬Ëæ»ú²úÉúÒ»¸öÖµseq=K£¬²¢½«¸ÃÊý¾Ý°ü·¢Ë͸øClientÒÔÈ·ÈÏÁ¬½ÓÇëÇó£¬Server½øÈëSYN_RCVD״̬¡£
£¨3£©µÚÈý´ÎÎÕÊÖ£ºClientÊÕµ½È·ÈϺ󣬼ì²éackÊÇ·ñΪJ+1£¬ACKÊÇ·ñΪ1£¬Èç¹ûÕýÈ·Ôò½«±ê־λACKÖÃΪ1£¬ack=K+1£¬²¢½«¸ÃÊý¾Ý°ü·¢Ë͸øServer£¬Server¼ì²éackÊÇ·ñΪK+1£¬ACKÊÇ·ñΪ1£¬Èç¹ûÕýÈ·ÔòÁ¬½Ó½¨Á¢³É¹¦£¬ClientºÍServer½øÈëESTABLISHED״̬£¬Íê³ÉÈý´ÎÎÕÊÖ£¬ËæºóClientÓëServerÖ®¼ä¿ÉÒÔ¿ªÊ¼´«ÊäÊý¾ÝÁË¡£
? SYN¹¥»÷£º
ÔÚÈý´ÎÎÕÊÖ¹ý³ÌÖУ¬Server·¢ËÍSYN-ACKÖ®ºó£¬ÊÕµ½ClientµÄACK֮ǰµÄTCPÁ¬½Ó³ÆΪ°ëÁ¬½Ó£¨half-open connect£©£¬´ËʱServer´¦ÓÚSYN_RCVD״̬£¬µ±ÊÕµ½ACKºó£¬ServerתÈëESTABLISHED״̬¡£
SYN¹¥»÷¾ÍÊÇClientÔÚ¶Ìʱ¼äÄÚαÔì´óÁ¿²»´æÔÚµÄIPµØÖ·£¬²¢ÏòServer²»¶ÏµØ·¢ËÍSYN°ü£¬Server»Ø¸´È·ÈÏ°ü£¬²¢µÈ´ýClientµÄÈ·ÈÏ£¬ÓÉÓÚÔ´µØÖ·ÊDz»´æÔڵģ¬Òò´Ë£¬ServerÐèÒª²»¶ÏÖØ·¢Ö±ÖÁ³¬Ê±£¬ÕâЩαÔìµÄSYN°ü½«³¤Ê±¼äÕ¼ÓÃδÁ¬½Ó¶ÓÁУ¬µ¼ÖÂÕý³£µÄSYNÇëÇóÒòΪ¶ÓÁÐÂú¶ø±»¶ªÆú£¬´Ó¶øÒýÆðÍøÂç¶ÂÈûÉõÖÁϵͳ̱»¾¡£
SYN¹¥»÷ʱһÖÖµäÐ͵ÄDDOS¹¥»÷£¬¼ì²âSYN¹¥»÷µÄ·½Ê½·Ç³£¼òµ¥£¬¼´µ±ServerÉÏÓдóÁ¿°ëÁ¬½Ó״̬ÇÒÔ´IPµØÖ·ÊÇËæ»úµÄ£¬Ôò¿ÉÒԶ϶¨Ôâµ½SYN¹¥»÷ÁË£¬Ê¹ÓÃÈçÏÂÃüÁî¿ÉÒÔÈÃÖ®ÏÖÐУº
#netstat -nap | grep SYN_RECV
Èý¡¢ËĴλÓÊÖ
Èý´ÎÎÕÊÖ¶úÊìÄÜÏ꣬ËĴλÓÊÖ¹À¼Æ¾Í..ËùνËĴλÓÊÖ£¨Four-Way Wavehand£©¼´ÖÕÖ¹TCPÁ¬½Ó£¬¾ÍÊÇÖ¸¶Ï¿ªÒ»¸öTCPÁ¬½Óʱ£¬ÐèÒª¿Í»§¶ËºÍ·þÎñ¶Ë×ܹ²·¢ËÍ4¸ö°üÒÔÈ·ÈÏÁ¬½ÓµÄ¶Ï¿ª¡£ÔÚsocket±à³ÌÖУ¬ÕâÒ»¹ý³ÌÓÉ¿Í»§¶Ë»ò·þÎñ¶ËÈÎÒ»·½Ö´ÐÐcloseÀ´´¥·¢£¬Õû¸öÁ÷³ÌÈçÏÂͼËùʾ£º
ÓÉÓÚTCPÁ¬½Óʱȫ˫¹¤µÄ£¬Òò´Ë£¬Ã¿¸ö·½Ïò¶¼±ØÐëÒªµ¥¶À½øÐйرգ¬ÕâÒ»ÔÔòÊǵ±Ò»·½Íê³ÉÊý¾Ý·¢ËÍÈÎÎñºó£¬·¢ËÍÒ»¸öFINÀ´ÖÕÖ¹ÕâÒ»·½ÏòµÄÁ¬½Ó£¬ÊÕµ½Ò»¸öFINÖ»ÊÇÒâζ×ÅÕâÒ»·½ÏòÉÏûÓÐÊý¾ÝÁ÷¶¯ÁË£¬¼´²»»áÔÙÊÕµ½Êý¾ÝÁË£¬µ«ÊÇÔÚÕâ¸öTCPÁ¬½ÓÉÏÈÔÈ»Äܹ»·¢ËÍÊý¾Ý£¬Ö±µ½ÕâÒ»·½ÏòÒ²·¢ËÍÁËFIN¡£Ê×ÏȽøÐйرյÄÒ»·½½«Ö´ÐÐÖ÷¶¯¹Ø±Õ£¬¶øÁíÒ»·½ÔòÖ´ÐỶ¯¹Ø±Õ£¬ÉÏͼÃèÊöµÄ¼´ÊÇÈç´Ë¡£
£¨1£©µÚÒ»´Î»ÓÊÖ£ºClient·¢ËÍÒ»¸öFIN£¬ÓÃÀ´¹Ø±ÕClientµ½ServerµÄÊý¾Ý´«ËÍ£¬Client½øÈëFIN_WAIT_1״̬¡£
£¨2£©µÚ¶þ´Î»ÓÊÖ£ºServerÊÕµ½FINºó£¬·¢ËÍÒ»¸öACK¸øClient£¬È·ÈÏÐòºÅΪÊÕµ½ÐòºÅ+1£¨ÓëSYNÏàͬ£¬Ò»¸öFINÕ¼ÓÃÒ»¸öÐòºÅ£©£¬Server½øÈëCLOSE_WAIT״̬¡£
£¨3£©µÚÈý´Î»ÓÊÖ£ºServer·¢ËÍÒ»¸öFIN£¬ÓÃÀ´¹Ø±ÕServerµ½ClientµÄÊý¾Ý´«ËÍ£¬Server½øÈëLAST_ACK״̬¡£
£¨4£©µÚËĴλÓÊÖ£ºClientÊÕµ½FINºó£¬Client½øÈëTIME_WAIT״̬£¬½Ó×Å·¢ËÍÒ»¸öACK¸øServer£¬È·ÈÏÐòºÅΪÊÕµ½ÐòºÅ+1£¬Server½øÈëCLOSED״̬£¬Íê³ÉËĴλÓÊÖ¡£
ÉÏÃæÊÇÒ»·½Ö÷¶¯¹Ø±Õ£¬ÁíÒ»·½±»¶¯¹Ø±ÕµÄÇé¿ö£¬Êµ¼ÊÖл¹»á³öÏÖͬʱ·¢ÆðÖ÷¶¯¹Ø±ÕµÄÇé¿ö£¬¾ßÌåÁ÷³ÌÈçÏÂͼ£º
Á÷³ÌºÍ״̬ÔÚÉÏͼÖÐÒѾºÜÃ÷ÁËÁË£¬Ôڴ˲»ÔÙ׸Êö£¬¿ÉÒԲο¼Ç°ÃæµÄËĴλÓÊÖ½âÎö²½Öè¡£
ËÄ¡¢¸½×¢
¹ØÓÚÈý´ÎÎÕÊÖÓëËĴλÓÊÖͨ³£¶¼»áÓеäÐ͵ÄÃæÊÔÌ⣬ÔÚ´ËÌá³ö¹©ÓÐÐèÇóµÄXDJMÃDzο¼£º
£¨1£©Èý´ÎÎÕÊÖÊÇʲô»òÕßÁ÷³Ì£¿ËÄ´ÎÎÕÊÖÄØ£¿´ð°¸Ç°Ãæ·ÖÎö¾ÍÊÇ¡£
£¨2£©ÎªÊ²Ã´½¨Á¢Á¬½ÓÊÇÈý´ÎÎÕÊÖ£¬¶ø¹Ø±ÕÁ¬½ÓÈ´ÊÇËĴλÓÊÖÄØ£¿
ÕâÊÇÒòΪ·þÎñ¶ËÔÚLISTEN״̬Ï£¬ÊÕµ½½¨Á¢Á¬½ÓÇëÇóµÄSYN±¨Îĺ󣬰ÑACKºÍSYN·ÅÔÚÒ»¸ö±¨ÎÄÀï·¢Ë͸ø¿Í»§¶Ë¡£¶ø¹Ø±ÕÁ¬½Óʱ£¬µ±ÊÕµ½¶Ô·½µÄFIN±¨ÎÄʱ£¬½ö½ö±íʾ¶Ô·½²»ÔÙ·¢ËÍÊý¾ÝÁ˵«ÊÇ»¹ÄܽÓÊÕÊý¾Ý£¬¼º·½Ò²Î´±ØÈ«²¿Êý¾Ý¶¼·¢Ë͸ø¶Ô·½ÁË£¬ËùÒÔ¼º·½¿ÉÒÔÁ¢¼´close£¬Ò²¿ÉÒÔ·¢ËÍһЩÊý¾Ý¸ø¶Ô·½ºó£¬ÔÙ·¢ËÍFIN±¨Îĸø¶Ô·½À´±íʾͬÒâÏÖÔڹرÕÁ¬½Ó£¬Òò´Ë£¬¼º·½ACKºÍFINÒ»°ã¶¼»á·Ö¿ª·¢ËÍ¡£
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ