Ëæ׿ÆËã»úÍøÂç¼¼ÊõºÍµç×ÓÐÅÏ¢¼¼ÊõµÄѸÃÍ·¢Õ¹£¬InternetµÄÆÕ¼°£¬½ÓÈëInternetµÄ·ÇPCÉ豸ԽÀ´Ô½¶à£¬¸÷Ààµç×ÓÉ豸ÏñWeb¸öÈËÊý×ÖÖúÀí¡¢Web¿ÉÊӵ绰¡¢TV»ú¶¥ºÐ½ÓÈëInternetµÄÐèÇóÒ²Ô½À´Ô½´ó£¬Ç¶ÈëʽTCP/ IPµÄInternetÍøÂ绯½«³ÉΪÍøÂç·¢Õ¹µÄÇ÷ÊÆ¡£
ǶÈëʽϵͳÖдóÁ¿´æÔÚµÄÊÇ8/16λµÍËÙ´¦ÀíÆ÷£¬ÔÚ½øÐÐInternet½ÓÈëʱ£¬Ç¶ÈëʽTCP/IP¶ÔÓÚ¼ÆËã»ú´æ´¢Æ÷¡¢ÔËËãËÙ¶ÈÒªÇó±È½Ï¸ß£¬Õ¼ÓôóÁ¿ÏµÍ³×ÊÔ´£¬Òò¶ø³£Ç¶ÈëTCP/IPÐÒé´ØµÄ×Ó¼¯»òÓÃUDP´úÌæTCPʵÏÖ¡£
±¾ÎÄÌá³öÒ»ÖÖ»ùÓÚǶÈëʽTCP/IPÈí¼þÌåϵ½á¹¹µÄÓÅ»¯Éè¼ÆºÍʵÏÖ·½°¸£¬´ÓʵÏÖÏàÓ¦µÄ¹¦ÄÜÓÖ½Úʡϵͳ×ÊÔ´½Ç¶È³ö·¢£¬¶ÔǶÈëTCP/IPÓÅ»¯Éè¼Æ£¬ÊµÏÖǶÈëʽµÄInternet½ÓÈë¡£
ǶÈëʽTCP/IP½ÓÈë·½·¨
ǶÈëʽµç×ÓÉ豸½ÓÈëInternetÓжàÖÖ½â¾ö·½°¸£ºÈçÔÚµÍËÙ΢´¦ÀíÆ÷ÔËÐмô²ÃµÄTCP/IPÐÒéÕ»£»Ê¹ÓÃһЩASICʵÏÖTCP/IPµÄоƬÈçADIµÄInternet Modem£»Ò²¿ÉÒÔʹÓÃǶÈëʽ²Ù×÷ϵͳ×Ô´øµÄÍêÕûµÄTCP/IPÐÒéÕ»¡£ÔÚijЩ¶ÔÍøÂçËÙ¶ÈÒªÇ󲻸ߵÄÁìÓò£¬¿ÉÒÔ¾«¼òµÄTCP/IPʵÏÖ£»ÔÚ¶ÔÐÔÄÜÒªÇó¸ßµÄ³¡ºÏ£¬Ôò¿ÉÒÔÑ¡ÔñºóÁ½ÖÖ·½°¸¡£Ç¶ÈëʽÉ豸½ÓÈëInternetÍøÂç³£Óõķ½°¸±È½ÏÈç±í1Ëùʾ¡£
µ«ÒÔÉϽÓÈë·½·¨Ò»°ãרÃÅΪijÖÖ΢´¦ÀíÆ÷Éè¼Æ£¬²»¾ßÓÐͨÓÃÐÔ£¬¶øÇÒЧÂʽϵͻò¹¦Äܲ»¹»È«Ãæ¡£±¾ÎÄÌá³öµÄ¾¹ýÓÅ»¯Éè¼ÆµÄǶÈëʽTCP/IPÊʺÏÒÆÖ²µ½¸÷ÖÖǶÈëʽ´¦ÀíÆ÷ÖУ¬È絥Ƭ»ú¡¢ARM»òARM+FPGA¶àºËǶÈëʽ´¦ÀíÆ÷ÖУ¬¾ßÓнÏСµÄ´úÂëÁ¿¡¢RAMʹÓÃÁ¿ºÍ½Ï¸ßµÄЧÂÊ£¬Í¬Ê±Ö§³ÖÌ×½Ó×ÖÐÎʽµÄ¶à¸öTCPÁ¬½ÓºÍ¶à¸öÍøÂçÉ豸Á¬½Ó£¬Ö§³Öͨ¹ýÍø¹Ø·¢ËÍÊý¾Ý°üºÍÊý¾Ý°üת·¢£¬Ö§³ÖTCP°üµÄÕûÐò¡¢ÖØ·¢ºÍ´°¿Ú¿ØÖÆÁ÷Á¿¿ØÖƵȵȡ£
ǶÈëʽTCP/IPµÄÈí¼þÌåϵ½á¹¹ÓëÓÅ»¯Éè¼Æ
ǶÈëʽTCP/IPÈí¼þÌåϵ½á¹¹
ÓëPC TCP/IPÐÒéÏàËÆ£¬Ç¶ÈëʽTCP/IP²ÉÓÃÐÒé·Ö²ãµÄ½á¹¹£ºÓ¦Óò㡢TCP²ã¡¢IP²ãºÍÍøÂçÉ豸½Ó¿Ú²ãͼ1ÃèÊöÁËǶÈëʽTCP/IPÊäÈëºÍÊä³öÊý¾Ý°üÁ÷³ÌÒÔ¼°µ÷Óõĺ¯Êý¡£
ÆäÖУ¬Timer()º¯Êýµ÷ÓÃTCPTimer()´¦ÀíTCPÊý¾Ý°üÖØ·¢£¬ÒÔ¼°µ÷ÓÃÿ¸ö½Ó¿ÚµÄInput()º¯Êý½ÓÊÕµ½´ïµÄÊý¾Ý°ü¡£Timer()º¯Êý±ØÐëÔÚ¶Ìʱ¼ä(Ò»°ã<20ms)ÄÚ±»µ÷ÓÃÒ»´Î£¬·ñÔò½ÓÊÕÊý¾Ý°üºÍTCP¶¨Ê±µÈ¹¦Äܽ«Í£Ö¹¡£
Êä³öʱ£¬TCP²ãÏȲ鿴unsend¶ÓÁУ¬·¢ÏÖ·Ç¿Õ£¬½«Êý¾Ý°ü²åÈë¶ÓÁУ»·¢ÏÖΪ¿Õ£¬Ôò²é¿´¶Ô·½´°¿ÚÊÇ·ñ¹»´óÄܹ»½ÓÊÕÕâ¸öÊý¾Ý°ü£¬È»ºóÌîдTCPÍ·²¿ÐÅÏ¢¡£IP²ãÑ¡ÔñÍøÂçÉ豸½Ó¿Ú£¬Ä¿µÄIPºÍ¸Ã½Ó¿ÚµÄ×ÓÍøÑÚÂëÏàÓëÊÇ·ñµÈÓÚ×ÓÍøÑÚÂ롣Ȼºóµ÷ÓÃÕâ¸ö½Ó¿ÚµÄOutputº¯ÊýÀ´·¢ËÍ¡£
ÊäÈëʱ£¬Timer()º¯Êýµ÷ÓÃÿ¸ö½Ó¿ÚµÄInputº¯Êý¡£IP²ãÅжÏIP°æ±¾¡¢IPУÑéºÍ¡¢ÅжÏÊÇ·ñÓ¦¸Ãת·¢Êý¾Ý°ü£¬È»ºó¸ù¾ÝIPÍ·²¿µÄprotocol×ֶν«°ü´«¸øÏàÓ¦µÄ¸ß²ã´¦Àí¡£TCP²ã£¬ÐèÒªÅжÏTCPУÑéºÍ£¬È»ºóÔÚÏÖÓеÄÌ×½Ó×ÖÖвéÕÒ£¬ÅжÏÊÇ·ñÓÐÌ×½Ó×Ö¿ÉÒÔ½ÓÊÕÕâ¸öÊý¾Ý°ü£¬ÅжÏTCPÐòºÅÊÇ·ñΪϣÍûµÄ£¬È»ºó¸üÐÂÕâ¸öÁ¬½ÓµÄ״̬(°üÀ¨Êͷű»Ó¦´ðµÄÊý¾Ý°üºÍTCP״̬»úµÄת»¯µÈ)£¬µ÷ÓøÃÌ×½Ó×ֵĻص÷º¯Êýrecv¡£
ͼ2³ÌÐòÖ÷Á÷³ÌÊÇÒ»¸ö´óÑ»·£¬ÔÚÑ»·Öд¦Àí·¢ËÍÊý¾Ý°üµÈÓ¦ÓòãÐÒéͬʱ²éѯ±äÁ¿bTimeOut£¬ÔÚ¶¨Ê±ÖжÏÖн«bTimerOutÉèÖÃΪÕ棬ӦÓòãÔÚ³ÌÐòÁ÷³ÌÖз´¸´²éѯbTimerOutÊÇ·ñΪÕ棬ÕæÔòµ÷ÓÃTimer()£¬È»ºóÖÃbTimerOutΪ¼Ù¡£
ǶÈëʽTCP/IPÉè¼ÆÓÅ»¯
ÒòΪÍøÂçÖÐÊý¾Ý·Ç³£¶à£¬Èç¹û°ÑËùÓеÄÊý¾Ý¶¼¶Áµ½ÄÚ´æÖÐÔÙÅжÏÊÇ·ñÓ¦¸Ã¶ªÆúÖ¡ÏÔȻЧÂʲ»¸ß¡£ËùÒԱ߶ÁÈ¡Êý¾Ý±ßÅж϶øûÓÐÒ»¿ªÊ¼¾Í°ÑÕû¸öÖ¡È«²¿¶Áµ½ÄÚ´æÖУ¬Í¬Ê±ÔÚ³ÌÐòÀﶨÒåÖ¡Öи÷¸ö²¿·ÖµÄÏà¶ÔµØÖ·£¬¿ÉÒÔ·½±ãµÄ¶ÔÖ¡µÄ¸÷¸ö×Ö½ÚÑ°Ö·¡£ÕâÑùµÄÉè¼ÆÊÇ»ùÓÚÌá¸ß·ÃÎÊËٶȿ¼Âǵġ£
ΪÁ˼õСRAMʹÓÃÁ¿£¬µ±Êý¾Ý°üÐèÒªÖØз¢ËÍʱ£¬Èç¹ûÄܹ»ÖØвúÉúÊý¾Ý°üËùÐèµÄÊý¾Ý£¬¿ÉÒÔ²»´æ´¢ÐèÒª±»Ó¦´ðµÄTCP°ü¡£Í¼3¸ø³öÁËǶÈëʽCPUÖÐTCP/IPµÄÄÚ´æ»®·Ö£¬ÒÔ¼°ÄÚ´æÖÐÖ¡µÄ¸÷¸ö×ֽڵĶ¨ÒåºÍÏà¶ÔλÖã¬ÆäÖÐPacketRAMΪ´æ·ÅÖ¡µÄÊ×µØÖ·¡£
·¢ËÍTCP/IP¹ý³ÌÖÐÖ÷ÒªµÄÔËËãÁ¿¼¯ÖÐÔÚÈý¸ö²¿·Ö£ºÓ¦ÓóÌÐò½«Êý¾Ý¿½±´µ½RAM¡¢¼ÆËãTCPУÑéºÍ¡¢½«RAMÖеÄÊý¾Ý°ü¿½±´µ½ÍøÂçÉ豸µÄ·¢ËÍ»º³åÇø¡£¶Ôÿһ¸ö×Ö½ÚÊý¾Ý£¬Á½´Î¿½±´´óÖ¹²Ê¹ÓÃ12×2£½24¸öÖ¸ÁîÖÜÆÚ£»¼ÆËãTCPУÑéºÍʹÓÃΪ16¸öÖ¸ÁîÖÜÆÚ¡£ÎªÌá¸ßËٶȿɲÉÓÿìËÙCPU»òÌá¸ß¾§ÕñƵÂÊ¡£ÀýÈç²ÉÓÃ12M¾§Õñʱ£¬ÍøÂç´«ÊäËÙ¶ÈΪ25K×Ö½Ú/s£»¶øÔÚ¸ßƵPCBµç·°åʹÓÃ233M¾§Õñʱ£¬ÍøÂç´«ÊäËÙ¶ÈÄܴﵽΪ384K×Ö½Ú/s¡£
ÁíÍ⣬TCP/IPÒ»°ã²ÉÓÃCÓïÑÔ»òÕß»ìºÏ»ã±à£¬¶øʹÓÿÉÖØÈ뺯ÊýºÍÒ»°ãÖ¸Õë(generic pointer)ʹµÃ³ÌÐò´úÂëÔö´ó£¬ÔËÐÐËٶȱäÂý¡£ËùÒÔʹÓú¯ÊýÖ¸Õëʱ£¬Ó¦ÊÖ¶¯Öؽ¨µ÷ÓÃÊ÷(Call tree)£¬»ò½«º¯ÊýÖ¸Õëµ÷Óõĺ¯ÊýÉèÖÃΪ¿ÉÖØÈ뺯Êý£¬Í¬Ê±Ê¹ÓÓָ¶¨´æ´¢ÀàÐÍ”µÄÖ¸Õë(memory-specific pointer)£¬·ÀÖ¹Êý¾Ý°üµÄ²»±ØÒªµÄ¿½±´ÒÔ¼°ÓÅ»¯¼ÆËãУÑéºÍºÍÄڴ濽±´º¯Êý¡£ÁíÍ⣬ReentrantÀàÐ͵ĺ¯Êý±ÈÒ»°ãº¯ÊýËÙ¶ÈÒªÂýºÜ¶à£¬µ«ÊÇijЩʱºòΪÁ˳ÌÐò½á¹¹µÄÐèÒª±ØÐëʹÓÃReentrant£¬Õâ¾ÍÐèÒªÔÚËٶȺͽṹ֮¼ä×÷Ò»¸öÑ¡Ôñ¡£
ǶÈëʽTCP/IPµÄʵÏÖ
TCP/IPµÄǶÈëʽʵÏÖÒ»°ãͨ¹ýÒÔÈí¼þ·½Ê½Ç¶Èëµ½ROMÖУ¬È»ºóͨ¹ýÇáÍøÂçͨѶ¼¼ÊõÓëרÓÃǶÈëʽÍø¹ØÁ¬½Ó£¬ÔÚǶÈëʽ´¦ÀíÆ÷ÖÐÔËÐÐTCP/IPÐÒ飬ÌṩTCP/IPµ½Óû§µÄÇáÐÍÍøÂçµÄÁ¬½ÓºÍ·Óɹ¦ÄÜ¡£
ÄÚ´æ¹ÜÀí·½·¨ºÍÎÞ¶àÓàÊý¾Ý°ü¿½±´µÄʵÏÖ
ǶÈëʽTCP/IPµÄÄÚ´æ¹ÜÀí¿ÉÒÔÓÃÁ´±í·½·¨£¬¼´¸ù¾ÝÊý¾Ý°ü´óС·ÖÅäÏàÓ¦´óСµÄÄÚ´æ¿é¡£Èçͼ4Ëùʾ£¬Á´±í½«ÄÚ´æ¿éÁ´½ÓÆðÀ´£¬used×ֶαíʾ¸ÃÄÚ´æ¿éÊÇ·ñÕýÔÚʹÓã¬pSstartºÍpEendÔò±íʾÊý¾Ý²¿·ÖÓÐЧÊý¾ÝµÄ¿ªÊ¼µØÖ·ºÍ½áÊøµØÖ·¡£
·ÖÅäʱ£¬ËÑË÷ÄÚ´æÁ´±íÕÒµ½Ò»¸öûÓзÖÅäµÄ±ÈËùÐè¿Õ¼ä´óµÄÄÚ´æ¿é£¬½ØÈ¡ËùÐèµÄ´óС¡£¸ÃÄÚ´æ¿é±»½ØÈ¡ÒÔºó¿ÉÄÜ»¹Óн϶àÊ£Ó࣬Õâʱ½«Ê£Óಿ·Ö´ÓÔÄÚ´æ¿éÖзÖÀë³öÀ´£¬³ÉΪһ¸öеÄÄÚ´æ¿é£¬²¢²åÈëÁ´±í¡£ÊÍ·Åʱ£¬½«usedÖµÖÃΪ¼Ù£¬Èç¹ûpNext»òÕßpPreÖ¸ÏòµÄÁ´±íµ¥ÔªÒ²ÊÇ¿ÕÏеģ¬Ôò½«ÆäºÍ×Ô¼ººÏ²¢£¬ÒÔ·ÀÖ¹ÄÚ´æ·ÖƬ¡£ÔÚÐÒé²ãÖ®¼ä´«ËÍÊý¾Ý°üÖ»Ðè´«ËÍÄÚ´æ¿éµÄÆðʼµØÖ·¡£ÕâÖÖÄÚ´æ¹ÜÀí·½·¨¿Õ¼äÀË·ÑСµ«ÊÇÔËËãÁ¿Ïà¶Ô½Ï´ó¡£
ÕûÐò¡¢ÖØ·¢ºÍ´°¿Ú¿ØÖƵÄʵÏÖ
¶ÔÓÚǶÈëʽTCP/IPϵͳ£¬¿ÉÒÔʹÓöÓÁлº´æµÄ·½Ê½À´ÊµÏÖÕûÐò¡¢ÖØ·¢ºÍ´°¿Ú¿ØÖÆ¡£¶ÓÁеÄÒ»¸öÔªËØÖ¸ÏòÒ»¸öÊý¾Ý°ü£¬¶ÓÁеÄ×î´ó³¤¶ÈûÓÐÏÞÖÆ¡£
¶ÔÓÚÕûÐò£¬Ê¹ÓÃooSeq¶ÓÁУ¬Èç¹û·¢ÏÖ½ÓÊÕµÄTCP°üÐòºÅ²¢²»ÊÇÆÚÍûµÄ£¬µ«ÐòºÅÔÚ½ÓÊÕ´°¿ÚÄÚ£¬´Ëʱ²»ÄÜÁ¢¿Ì½ÓÊÕÕâ¸ö°üÒ²²»Ó¦¶ªÆú£¬¿ÉÏȽ«Õâ¸ö°ü·ÅÈëooSeq¶ÓÁС£µ±ÆÚÍûTCP°ü±»½ÓÊÕºó£¬Ôٲ鿴ooSeq¶ÓÁÐÏÖÔÚÊÇ·ñÓÐTCP°ü³ÉΪÁËÆÚÍûµÄÊý¾Ý°ü£¬Èç¹ûÓÐÔò½«ÆäÈ¡³ö²¢´¦Àí¡£
¶ÔÓÚÖØ·¢£¬Ê¹ÓÃunacked¶ÓÁУ¬Ã¿Ò»¸öÐèÒª±»Ó¦´ðµÄTCPÊý¾Ý°ü·¢ËÍÒÔºó¶¼Òª·ÅÈëunacked¶ÓÁУ¬µÈµ½±»Ó¦´ðÒÔºó²Å´Ó¶ÓÁÐÖÐɾ³ý¡£TCPÖØ·¢¶¨Ê±Ö»Õë¶Ôunacked¶ÓÁеÚÒ»¸öTCP°ü£¬Èç¹û¶¨Ê±³¬³ö£¬ÖØз¢ËÍ£¬ÖØ·¢´ÎÊý³¬³ö¹æ¶¨Öµ£¬Ôò±¨´í¡£
¶ÔÓÚ´°¿Ú¿ØÖÆ£¬Ê¹ÓÃunsend¶ÓÁУ¬Èç¹û·¢ÏÖ¶Ô·½µÄ´°¿Ú¹ýСÎÞ·¨½ÓÊÕÕâ¸öÊý¾Ý°ü£¬ÔòÖ»·¢ËͲ¿·ÖÊý¾Ý£¬½«¶àÓಿ·Ö·ÅÈëunsend¶ÓÁУ¬µÈ´ý¶Ô·½·¢À´TCP°ü֪ͨеĴ°¿Ú´óСʱ£¬ÔÙ´ÎÅжÏÊÇ·ñ¿ÉÒÔ·¢ËÍ¡£Èç¹ûÔÚunsend¶ÓÁв»Îª¿ÕµÄÇé¿öÏ£¬ÐèÒª·¢Ë͵ÄÊý¾Ý°ü¶¼Ó¦²åÈëunsend¶ÓÁС£
ǶÈëʽTCP/IPµÄÐÔÄÜ·ÖÎö
ͼ5¸ø³öÁ˽«ÓÅ»¯Éè¼ÆºóµÄTCP/IPÒÆÖ²µ½ARM9´¦ÀíÆ÷¡¢CS8900AÍøÂç¿ØÖÆÆ÷ÖУ¬Ê±ÖÓƵÂÊΪ133MHzÏ£¬ÓëInternetÁ¬½ÓµÄÇé¿ö¡£
ϵͳ֧³Ö×î´ó·¢ÆðÁ¬½ÓÊýԼΪ380£¬×î´ó²¢·¢Á¬½ÓÂÊԼΪ170cps¡£Ëæןô½ÐÊýµÄÔö¼Ó£¬Æ½¾ù·Ö×éµ½´ïÒ²ËæÖ®Ôö¼Ó£¬µ¼ÖÂÍøÂç´«ÊäÊý¾ÝµÄÔö¼Ó£¬´Ó¶ø×î´ó½¨Á¢Ê±¼ä±ä³¤¡£µ«×îСµÄ½¨Á¢Á¬½Óʱ¼ä»ù±¾±£³Ö²»±ä£¬ËµÃ÷ϵͳ¾ßÓÐÁ¼ºÃµÄÐÔÄÜ¡£
ͼ6¸ø³öÁËË潨Á¢Ê±¼ä±ä»¯µÄ½ÓͨÂÊ¡£Í¼ÖдæÔÚÒ»¸öÁÙ½çµã£¬³É¹¦µÄÁ¬½ÓÂÊËæ×ÅTCPÁ¬½Ó³¢ÊÔÊýÄ¿Ôö¼Ó¶ø¼õÉÙ£¬Ö±ÖÁΪ0£¬¶øÏìӦʱ¼äÒ²¼±¾çÉÏÉý£¬ÕâÊÇÓÉǶÈëʽ´¦ÀíÆ÷µÄ´¦ÀíÄÜÁ¦ÓÐÏÞÔì³ÉµÄ¡£
¡¡¡¡
¡¡¡¡½áÓï
±¾ÎÄ´ÓʵÏÖÏàÓ¦µÄ¹¦ÄÜÓÖ½Úʡϵͳ×ÊÔ´½Ç¶È³ö·¢£¬¶ÔǶÈëʽTCP/IPÐÒé´Ø½øÐÐÓÅ»¯Éè¼Æ£¬¿ÉÒÔÔÚ¸÷ÖÖǶÈëʽ´¦ÀíÆ÷ÉÏʵÏÖInternet½ÓÈë¡£
¾¹ýÓÅ»¯Éè¼ÆµÄǶÈëʽTCP/IPÖ§³ÖÌ×½Ó×ÖÐÎʽµÄ¶à¸öTCPÁ¬½Ó¡¢Ö§³Ö¶à¸öÍøÂçÉ豸¡¢Ö§³Öͨ¹ýÍø¹Ø·¢ËÍÊý¾Ý°üºÍÊý¾Ý°üת·¢¹¦ÄÜ£¬ÒÔ¼°Ö§³ÖTCP°üµÄÕûÐò¡¢ÖØ·¢ºÍ´°¿Ú¿ØÖÆÁ÷Á¿¿ØÖÆ¡£Êµ¼ùÖ¤Ã÷£¬ÕâÖÖÉè¼Æ·½Ê½Áé»î£¬ÄÜ°´Óû§ÐèÇóʵÏÖ¸´ÔӵŦÄÜ¡£
×÷Õߣº±±¾©Óʵç´óѧ µçÐŹ¤³ÌѧԺ ÁÎÈÕÀ¤ ¼ÍÔ½·å À´Ô´£ºµç×Ó²úÆ·ÊÀ½ç