ÎÞÂÛÊÇWebä¯ÀÀ¡¢Îļþ´«Êä¡¢ÔÚÏßÓÎÏ·£¬»¹ÊÇÔÆ¼ÆËãºÍ´óÊý¾Ý´¦Àí£¬±³ºó¶¼Àë²»¿ªÎȶ¨µÄÍøÂçͨÐÅÐÒé
ÔÚÖÚ¶àÐÒéÖУ¬´«Êä¿ØÖÆÐÒ飨TCP£©ÒÔÆä¿É¿¿ÐÔ¡¢Ë³ÐòÐÔºÍÁ÷Á¿¿ØÖÆ»úÖÆ£¬³ÉΪÁË»¥ÁªÍøÍ¨ÐŵĻùʯ
¶øÔÚLinux²Ù×÷ϵͳÕâһǿ´óƽ̨ÉÏ£¬¿ª·¢TCP³ÌÐò²»½öÄܹ»³ä·ÖÀûÓÃÆä·á¸»µÄÍøÂ繦ÄÜ£¬»¹ÄÜÏíÊܵ½¸ßЧµÄÐÔÄܺ͹㷺µÄÖ§³Ö
±¾ÎĽ«ÉîÈë̽ÌÖÈçºÎÔÚLinux»·¾³Ï¿ª·¢TCP³ÌÐò£¬Í¨¹ý´úÂëʾÀýºÍÀíÂÛ½âÎö£¬Õ¹ÏÖÈçºÎ¹¹½¨¸ßЧÇÒ¿É¿¿µÄÍøÂçͨÐÅÓ¦ÓÃ
Ò»¡¢TCPÐÒé»ù´¡ TCPÊÇÒ»ÖÖÃæÏòÁ¬½ÓµÄ¡¢¿É¿¿µÄ¡¢»ùÓÚ×Ö½ÚÁ÷µÄ´«Êä²ãͨÐÅÐÒé
Ëüͨ¹ýÈý´ÎÎÕÊÖ½¨Á¢Á¬½Ó£¬È·±£Êý¾Ý°üµÄ˳Ðò´«ÊäºÍ´íÎóÖØ´«£¬´Ó¶øÌṩÁ˶˵½¶ËµÄ¿É¿¿Í¨ÐÅ·þÎñ
TCPÐÒéµÄºËÐÄÌØÐÔ°üÀ¨£º - Èý´ÎÎÕÊÖ£º¿Í»§¶Ë·¢ËÍSYNÇëÇ󣬷þÎñÆ÷»Ø¸´SYN-ACKÈ·ÈÏ£¬¿Í»§¶ËÔÙ·¢ËÍACKÈ·ÈÏ£¬Íê³ÉÁ¬½Ó½¨Á¢
- ËĴλÓÊÖ£º¶Ï¿ªÁ¬½Óʱ£¬Ò»·½·¢ËÍFINÇëÇó£¬ÁíÒ»·½»Ø¸´ACK²¢¿ÉÄÜÉÔºó·¢ËÍ×Ô¼ºµÄFIN£¬Ë«·½¾ùÈ·ÈϺóÁ¬½Ó¹Ø±Õ
- »¬¶¯´°¿Ú£ºÊµÏÖÁ÷Á¿¿ØÖÆ£¬¸ù¾Ý½ÓÊÕ·½µÄ´¦ÀíÄÜÁ¦¶¯Ì¬µ÷Õû·¢ËÍ·½µÄ·¢ËÍËÙÂÊ
- ÓµÈû¿ØÖÆ£ºÍ¨¹ýÂýÆô¶¯¡¢ÓµÈû±ÜÃâ¡¢¿ìËÙÖØ´«ºÍ¿ìËÙ»Ö¸´µÈ»úÖÆ£¬·ÀÖ¹ÍøÂç¹ýÔØ
¶þ¡¢LinuxϵÄTCP±à³Ì»·¾³ LinuxÌṩÁËÇ¿´óµÄÍøÂç±à³Ì½Ó¿Ú£¬Ö÷Òª°üÀ¨Ì×½Ó×Ö£¨socket£©API£¬ËüÔÊÐí¿ª·¢ÕßÔÚÓ¦ÓóÌÐò¼¶±ð´´½¨¡¢²Ù×÷ÍøÂç¶Ëµã
LinuxϵÄTCP±à³Ìͨ³£Éæ¼°ÒÔϼ¸¸ö¹Ø¼ü²½Ö裺 1.´´½¨Ì×½Ó×Ö£ºÊ¹ÓÃsocket()º¯Êý´´½¨Ò»¸öеÄÌ×½Ó×Ö
2.°ó¶¨µØÖ·ºÍ¶Ë¿Ú£ºÍ¨¹ýbind()º¯Êý½«Ì×½Ó×ÖÓëÌØ¶¨µÄIPµØÖ·ºÍ¶Ë¿ÚºÅ¹ØÁª
3.¼àÌýÁ¬½Ó£¨·þÎñÆ÷¶Ë£©£ºÊ¹ÓÃlisten()º¯Êýʹ·þÎñÆ÷Ì×½Ó×Ö½øÈë¼àÌý״̬£¬×¼±¸½ÓÊÜÁ¬½ÓÇëÇó
4.½ÓÊÜÁ¬½Ó£¨·þÎñÆ÷¶Ë£©£ºÍ¨¹ýaccept()º¯Êý½ÓÊÜÀ´×Ô¿Í»§¶ËµÄÁ¬½ÓÇëÇ󣬷µ»ØÒ»¸öÒÑÁ¬½ÓµÄÌ×½Ó×Ö
5.½¨Á¢Á¬½Ó£¨¿Í»§¶Ë£©£ºÊ¹ÓÃconnect()º¯ÊýÏò·þÎñÆ÷·¢ÆðÁ¬½ÓÇëÇó
6.Êý¾ÝÊÕ·¢£ºÊ¹ÓÃsend()»òwrite()º¯Êý·¢ËÍÊý¾Ý£¬Ê¹ÓÃ`recv()`»ò`read()`º¯Êý½ÓÊÕÊý¾Ý
7.¹Ø±ÕÌ×½Ó×Ö£ºÊ¹ÓÃclose()»ò`shutdown()`º¯Êý¹Ø±ÕÌ×½Ó×ÖÁ¬½Ó
Èý¡¢TCP³ÌÐòʵÀý·ÖÎö ÏÂÃæÊÇÒ»¸ö¼òµ¥µÄTCP·þÎñÆ÷ºÍ¿Í»§¶Ë³ÌÐòµÄʾÀý£¬Õ¹Ê¾ÁËÈçºÎÔÚLinux»·¾³ÏÂʵÏÖ»ù±¾µÄTCPͨÐÅ
TCP·þÎñÆ÷ʾÀý£¨CÓïÑÔ£©
include