ÉèΪÊ×Ò³Êղر¾Õ¾language¡ú¡ú ÓïÑÔÇл»

ºèðÀÂÛ̳

 ÕÒ»ØÃÜÂë
 ÂÛ̳ע²á

QQ怬

ÏÈ×¢²áÔÙ°ó¶¨QQ

²é¿´: 87707|»Ø¸´: 1602
ÊÕÆð×ó²à

[Êé¼®] ¡¶TCP/IPÏê½â¡·Èý¾í Ψһһ²¿ÖµµÃÒ»¶ÁÔÙ¶ÁµÄÊé¼®

  [¸´ÖÆÁ´½Ó]
·¢±íÓÚ 2012-8-17 22:30:17 | ÏÔʾȫ²¿Â¥²ã |ÔĶÁģʽ
¡¡´ó¼ÒÖªµÀ£¬TCP/IPÒѳÉΪ¼ÆËã»úÍøÂçµÄÊÂʵÉϵıê×¼¡£ÔÚ¹ØÓÚTCP/IPµÄÂÛÖøÖУ¬×îÓÐÓ°ÏìµÄ¾ÍÊÇÁ½²¿Öø×÷¡£Ò»²¿ÊÇDouglas E. ComerµÄ¡¶ÓÃTCP/IP½øÐÐÍø¼Ê»¥Á¬¡·£¬¶øÁíÒ»²¿¾ÍÊÇStevensдµÄÕâ3¾íÊé¡£ÕâÁ½Ì×¾ÞÖø¶¼ºÜÓÐÃû£¬¸÷ÓÐÆäÌص㡣ÎÞÂÛÊÇ´ÓʼÆËã»úÍøÂçµÄ½Ìʦ»¹ÊǽøÐпÆÑеļ¼ÊõÈËÔ±£¬ÕâÁ½Ì×Ê鶼Ӧµ±ÊDZضÁµÄ¡£
¡¡¡¡¡¶TCP/IPÏê½â£¬¾í1£ºÐ­Òé¡·ÊÇÒ»±¾ÍêÕû¶øÏêϸµÄTCP/IPЭÒéÖ¸ÄÏ¡£ÃèÊöÁËÊôÓÚÿһ²ãµÄ¸÷¸öЭÒéÒÔ¼°ËüÃÇÈçºÎÔÚ²»Í¬²Ù×÷ϵͳÖÐÔËÐС£×÷ÕßÓÃLawrence BerkeleyʵÑéÊÒµÄtcpdump³ÌÐòÀ´²¶»ñ²»Í¬²Ù×÷ϵͳºÍTCP/IPʵÏÖÖ®¼ä´«ÊäµÄ²»Í¬·Ö×é¡£¶ÔtcpdumpÊä³öµÄÑо¿¿ÉÒÔ°ïÖúÀí½â²»Í¬Ð­ÒéÈçºÎ¹¤×÷¡£±¾ÊéÊʺÏ×÷Ϊ¼ÆËã»úרҵѧÉúѧϰÍøÂçµÄ½Ì²ÄºÍ½Ìʦ²Î¿¼Êé¡£Ò²ÊÊÓÃÓÚÑо¿ÍøÂçµÄ¼¼ÊõÈËÔ±¡£
¡¡¡¡¡¶TCP/IPÏê½â ¾í2£ºÊµÏÖ¡·ÍêÕû¶øÏêϸµØ½éÉÜÁËTCP/IPЭÒéÊÇÈçºÎʵÏֵġ£ÊéÖиø³öÁËÔ¼500¸öͼÀý£¬15 000ÐÐʵ¼Ê²Ù×÷µÄC´úÂ룬²ÉÓþÙÀý½ÌѧµÄ·½·¨°ïÖúÄãÕÆÎÕTCP/IPʵÏÖ¡£±¾Êé²»½ö˵Ã÷Á˲å¿ÚAPIºÍЭÒé×åµÄ¹ØϵÒÔ¼°Ö÷»úʵÏÖÓë·ÓÉÆ÷ʵÏֵIJî±ð¡£»¹½éÉÜÁË4.4BSD-Lite°æµÄеÄÌص㣬Èç¶à²¥¡¢³¤·Ê¹ÜµÀÖ§³Ö¡¢´°¿ÚËõ·Å¡¢Ê±¼ä´ÁÑ¡ÏîÒÔ¼°ÆäËûÖ÷ÌâµÈµÈ¡£¶ÁÕßÔĶÁ±¾Êéʱ£¬Ó¦µ±¾ß±¸¾í1ÖвûÊöµÄ¹ØÓÚTCP/IPµÄ»ù±¾ÖªÊ¶¡£±¾ÊéÊÊÓÃÓÚÏ£ÍûÀí½âTCP/TPЭÒéÈçºÎʵÏÖµÄÈË£¬°üÀ¨±àдÍøÂçÓ¦ÓóÌÐòµÄ³ÌÐòÔ±ÒÔ¼°ÀûÓÃTCP/IPά»¤¼ÆËã»úÍøÂçµÄϵͳ¹ÜÀíÔ±¡£
¡¡¡¡¡¶TCP-IPÏê½â¾íÈýTCPÊÂÎñЭÒé,HTTP,NNTPºÍUNIXÓòЭÒé¡·ÊÇ¡°TCP/IPÏê½âϵÁС±µÄÑÓÐø¡£Ö÷ÒªÄÚÈÝ°üÀ¨£ºTCPÊÂÎñЭÒ飬¼´T/TCP£¬ÕâÊǶÔTCPµÄÀ©Õ¹£¬Ê¹¿Í»§-·þÎñÆ÷ÊÂÎñ¸ü¿ì¡¢¸ü¸ßЧºÍ¸ü¿É¿¿£»TCP/IPÓ¦Óã¬Ö÷ÒªÊÇHTTPºÍNNTP£»UNIXÓòЭÒ飬ÕâЩЭÒéÌṩÁ˽ø³ÌÖ®¼äͨÐŵÄÒ»ÖÖÊֶΡ£µ±¿Í»§Óë·þÎñÆ÷½ø³ÌÔÚͬһ̨Ö÷»úÉÏʱ£¬UNIXÓòЭÒéͨ³£Òª±ÈTCP/IP¿ìÒ»±¶¡£±¾ÊéͬÑù²ÉÓÃÁË´óÁ¿µÄʵÀýºÍʵÏÖϸ½Ú£¬²¢²Î¿¼ÒýÓÃÁ˾í2ÖеĴóÁ¿Ô´³ÌÐò¡£ ±¾ÊéÊÊÓÃÓÚÏ£ÍûÀí½âTCP/IPÈçºÎ¹¤×÷µÄÈË£¬°üÀ¨±àдÍøÂçÓ¦ÓóÌÐòµÄ³ÌÐòÔ±ÒÔ¼°ÀûÓÃTCP/IPά»¤¼ÆËã»úÍøÂçµÄϵͳ¹ÜÀíÔ±¡£

¡¡ÏÖÔÚÈËÈËÔÚ̸ÍøÂç,ÕÅ¿Ú±Õ¿ÚINTERNET,ÄÇôÕâÒ»ÇеĻù´¡ÊÇʲôÄØ? TCP/IP!ÏëѧϰTCP/IP×îÓ¦¸Ã¿´µÄÊéÓÖÊÇʲôÄØ? µ±È»ÊÇÕâÌ×W.Richard StevensËùÖøµÄ<TCP/IPÏê½â>ÁË!ÕâÌ×ÊéÎÞÒÉÏà¹ØÊé¼®Ö®Öеľ­µäÖ®×÷£¬¼«¾ßÊղؼÛÖµ£¬Èç¹û¶à¿´Ò»Ð©TCP/IP·½ÃæµÄÊ飬¿ÉÒÔ·¢ÏÖ£¬±¾Êé¾­³£±»ÒýÓûòÍƼö¡£¡¡±¾Êé--¾íÒ»:ЭÒé ÊÇÕûÌ×ÊéµÄ»ù´¡.±¾ÊéµÄ×éÖ¯½á¹¹Ï൱ºÏÀí,ÃèÊö½âÊÍÇå³þϸÖÂ,ÄÚÈݸ²¸Ç¼«¹ã£¬²¢ÔÚÿһÕ½ڵĺóÃæÓаïÖú¼ÇÒäµÄÏ°Ìâ,ÏàÓ¦µÄ´ð°¸Çë¼û¸½Â¼.
¡¡¡¡µÚÒ»Õ¸ÅÊö½éÉÜÁË»ù´¡ºÍ±³¾°ÖªÊ¶,µ«Ò²Ìá³öÁËÐí¶àÖØÒªÌØÐÔÈç:·Ö²ã;TCP,UDPµÄ¸ù±¾Çø±ð;End to EndÓëHop by Hop;IPµØÖ·µÄ·ÖÀàºÍµã·ÖÊ®½øÖƱíʾ·¨;Êý¾Ý·â×°¹ý³Ì;¶Ë¿ÚºÅ...ÕâЩÊõÓïÔÚºóÃæµÄÕ½ڻáÓÐÏêϸµÄ½âÊÍ.
¡¡¡¡µÚ¶þÕ½éÉÜÁËTCP/IPµÄÁ´Â·²ãЭÒé.ÒÔÌ«ÍøÓëIEEE802Êý¾Ý·â×°µÄ±È½Ï;SLIP(ÏÖÔÚ»¹ÓÐÈËÓÃô?)ºÍPPP.ÎÄÖÐ×÷ÕßÌáµ½"ÏÖÔÚSLIPÓû§ÈÔÈ»±ÈPPPÓû§¶à",ÊÇÓÉÓÚ±¾ÊéµÄд×÷ʱ¼ä±È½ÏÔç.ÁíÍâ±¾Õ»¹Ïêϸ½éÉÜÁËLOOPBACK,MTUµÈ¸ÅÄî.
¡¡¡¡µÚÈýÖÁÊ®ÕÂÏêϸ½éÉÜÁËIP.IP°ü½á¹¹;IP·ÓÉÑ¡Ôñ;×ÓÍø¼°ÆäÑÚÂë;ARP,RARPЭÒé;ICMP,ÌرðÊÇʱ¼ä´ÁºÍ¶Ë¿Ú²»¿Éµ½´ï;ÏêϸÌÖÂÛÁËPING,TRACEROUTEÕâÁ½¸ö³£ÓõIJâÊÔÓóÌÐò;IP·ÓɺͶ¯Ì¬Ñ¡Â·(·ÓÉ)ЭÒé,ÌرðÏêϸ½éÉÜÁËRIP£¬²¢¼òµ¥½éÉÜÁËOSPF£¬BGP.ÓëÒ»°ãµÄÊ鲻ͬµÄÊDZ¾ÊéûÓÐÌá¼°CISCOµÄIGRP£¬EIGRP£¬±Ï¾¹Õâ²»ÊÇΪCISCOÈÏÖ¤±àдµÄ¡£
¡¡¡¡µÚʮһÕ½éÉÜUDP,Æð³õ¾õµÃÆæ¹Ö,ÒòΪ¼ÐÔÚÖмä¶ø²»ÊǺ͵ÚÊ®ÆßÕ¿ªÊ¼µÄTCP·ÅÔÚÒ»Æð.ºóÀ´²Å·¢ÏÖ,´ÓµÚÊ®¶þÕµĹ㲥¿ªÊ¼UDPÒѾ­¿ªÊ¼Ê¹ÓÃ.
¡¡¡¡µÚÊ®¶þ,Ê®ÈýÕ¶Թ㲥,¶à²¥(ÏÖÔÚÒ»°ã½Ð×é²¥)ºÍIGMPЭÒé½øÐÐÌÖÂÛ.¶Ô¸÷Öֹ㲥ÐÎʽ½øÐÐÃèÊö£¬¶Ô×é²¥¼°ÆäIGMPЭÒéÂÛÊöÏ൱Ïêϸ£¬×é²¥ÏÖÔÚÓõÄÔ½À´Ô½¶à£¬´ó¼Ò¿ÉÒԺúÃѧϰһÏ¡£
¡¡¡¡µÚÊ®ËÄ,Ê®Îå,Ê®ÁùÕ·ֱð½éÉÜDNS,TFTP,BOOTPÕâЩ»ùÓÚUDPµÄÓ¦ÓÃ.¶ÔÓÚ´ó¼Ò×ÔÈÏΪÊìϤµÄÕâЩӦÓã¬Ö»ÓÐÔÚ¶ÁÍêÖ®ºó£¬Äã²Å»á˵£ºÔ­À´ÊÇÕâô»ØÊ£¡
¡¡¡¡µÚÊ®ÆßÖÁ¶þÊ®ËÄÕÂÏêϸµÄÌÖÂÛÁËTCP.TCP·â×°½á¹¹;TCPÁ¬½Ó½¨Á¢(Èý´ÎÎÕÊÖ)ºÍ²ð³ý,ÆäÖнéÉÜÁ˺ܶàÒ»°ãÊéÉÏûÓгöÏÖµÄÄÚÈÝÈç°ë´ò¿ªºÍ°ë¹Ø±Õ;TCPÊý¾Ý½»»¥ºÍ´°¿Ú»úÖÆ;TCP³¬Ê±ÓëÖØ´«(¿É¿¿´«Êä),²¢ÃèÊöÁ˶àÖÖʵ¼ÊËã·¨;TCPµÄ¸÷ÖÖ¼ÆʱÆ÷;TCPµÄһЩÐ޸Ľ¨Òé,²¢Ìá³öÁËT/TCP,ÏêϸµÄ½éÉܺÍÔ´´úÂëÔÚÏÂÒ»¾í.
¡¡¡¡µÚ¶þÊ®ÎåÕ½éÉÜSNMPÍø¹ÜЭÒé.ÏêϸÌÖÂÛÁËMIBºÍTRAP.×öÍø¹ÜµÄÅóÓÑÃÇ£¬Õâ¿ÉÊǸ£Òô°¡¡£
¡¡¡¡ÆäÓàµÄÕ½ÚÓÃÀ´ÌÖÂÛ»ùÓÚTCPµÄ¸÷ÖÖÓ¦ÓÃÈçÔ¶³ÌµÇ¼µÄTELNET,RLOGIN,Îļþ´«ÊäFTP,µç×ÓÓʼþÓõÄSMTP,»ùÓÚSUN RPCµÄNFS,ºÍ³£ÓõÄһЩFINGER,WHOIS,X WINDOWµÈÓ¦ÓóÌÐò.×÷ÕßʹÓÃÁË´óÁ¿µÄƪ·ù¶ÔÿÖÖÓ¦ÓýøÐÐÁËÆÊÎö.
¡¡¡¡ÔÚ¸½Â¼ÖÐ,×÷ÕßÌṩÁËÊéÖо­³£Ìáµ½µÄtcpdump,sock³ÌÐòµÄÏà¹ØÄÚÈÝ;UNIX³£ÓõÄÅäÖÃÑ¡Ïî;ºÍ´óÁ¿µÄÃâ·Ñ×ÊÔ´ºÍ²Î¿¼ÎÄÏ×.
¡¡¡¡±¾ÊéµÄ·­ÒëÒ»Ö±Ôâµ½Ðí¶àÍøÓѵÄÅúÆÀ,µÄÈ·ÒëÎÄÖÐÓÐЩÊõÓïµÄ°ÑÎÕÓÐЩÎÊÌâ,µ«ÊÇ»¹²»»áÓ°Ïìµ½¶ÁÕßµÄÀí½â.±Ï¾¹±¾ÊéµÄд×÷ºÍ·­Òëʱ¼ä½ÏÔç.
¡¡¡¡ÕâÊÇÒ»±¾°Ù¶Á²»ÑáµÄ±¦Êé,µÚÒ»´Î¿´Ê±¿ÉÒÔÊǶÔTCP/IPÓÐÒ»¸ö±È½ÏÈ«ÃæµÄÁ˽â¹ý³Ì£¬ÒÔºóÿ´Î¿´¶¼»á·¢ÏÖ»¹ÐèÒª¿ÉÒÔѧµ½ÐµIJ¢·¢ÏÖ¿ÉÒÔ½øÒ»²½Ñ§Ï°µÄ¶«Î÷.Ç¿ÁÒÍƼö¹ã´ó¶ÁÕß¹ºÂò.ÎÞÂÛÄãÊdzõѧÕß»¹ÊÇ×ÊÉîÍøÂçÈËÊ¿,Ö»ÒªÏëÒªÒ»±¾TCP/IPµÄÊé,±¾ÊéÒ»¶¨ÊÇÊ×Ñ¡!
¡¡¡¡¿ÉϧµÄÊDZ¾Êé²»»áÔÙÓнøÒ»²½µÄÐÞ¸ÄÁË£¬ÒѳɾøÏì¡£¶ÔÓÚм¼ÊõÈçIPV6£¬¾ÍÖ»Óп¿´ó¼Ò×Ô¼ºÅ¬Á¦ÁË¡£ÓÐÐËȤ½øÐнøÒ»²½Ñо¿µÄ±à³ÌÈËÔ±,Çë¼ÌÐø¹Ø×¢¾í¶þºÍ¾íÈý¡£[1]

ͼÊéĿ¼¡¡¡¡Preface xix
¡¡¡¡Chapter 1. Introduction 1
¡¡¡¡1.1 Introduction 1
¡¡¡¡1.2 Source Code Presentation 1
¡¡¡¡1.3 History 3
¡¡¡¡1.4 Application Programming Interfaces 5
¡¡¡¡1.5 Example Program 5
¡¡¡¡1.6 System Calls and Library Functions 7
¡¡¡¡1.7 Network Implementation Overview 9
¡¡¡¡1.8 Descriptors 10
¡¡¡¡1.9 Mbufs (Memory Buffers) and Output Processing 15
¡¡¡¡1.10 Input Processing 19
¡¡¡¡1.11 Network Implementation Overview Revisited 22
¡¡¡¡1.12 Interrupt Levels and Concurrency 23
¡¡¡¡1.13 Source Code Organization 26
¡¡¡¡1.14 Test Network 28
¡¡¡¡1.15 Summary 29
¡¡¡¡Chapter 2. Mbufs: Memory Buffers 31
¡¡¡¡2.1 Introduction 31
¡¡¡¡2.2 Code Introduction 36
¡¡¡¡2.3 Mbuf Definitions 37
¡¡¡¡2.4 mbuf Structure 38
¡¡¡¡2.5 Simple Mbuf Macros and Functions 40
¡¡¡¡2.6 m_devget and m_pullup Functions 44
¡¡¡¡2.7 Summary of Mbuf Macros and Functions 51
¡¡¡¡2.8 Summary of Net/3 Networking Data Structures 54
¡¡¡¡2.9 m_copy and Cluster Reference Counts 56
¡¡¡¡2.10 Alternatives 60
¡¡¡¡2.11 Summary 60
¡¡¡¡Chapter 3. Interface Layer 63
¡¡¡¡3.1 Introduction 63
¡¡¡¡3.2 Code Introduction 64
¡¡¡¡3.3 ifnet Structure 65
¡¡¡¡3.4 ifaddr Structure 73
¡¡¡¡3.5 sockaddr Structure 74
¡¡¡¡3.6 ifnet and ifaddr Specialization 76
¡¡¡¡3.7 Network Initialization Overview 77
¡¡¡¡3.8 Ethernet Initialization 80
¡¡¡¡3.9 SLIP Initialization 82
¡¡¡¡3.10 Loopback Initialization 85
¡¡¡¡3.11 ifat tach Function 85
¡¡¡¡3.12 ifini tFunction 93
¡¡¡¡3.13 Summary 94
¡¡¡¡Chapter 4. Interfaces: Ethernet 95
¡¡¡¡4.1 Introduction 95
¡¡¡¡4.2 Code Introduction 96
¡¡¡¡4.3 Ethernet Interface 98
¡¡¡¡4.4 ioct1 System Call 114
¡¡¡¡4.5 Summary 125
¡¡¡¡Chapter 5. Interfaces: SLIP and Loopback 127
¡¡¡¡5.1 Introduction 127
¡¡¡¡5.2 Code Introduction 127
¡¡¡¡5.3 SLIP Interface 128
¡¡¡¡5.4 Loopback Interface 150
¡¡¡¡5.5 Summary 153
¡¡¡¡Chapter 6. IP Addressing 155
¡¡¡¡6.1 Introduction 155
¡¡¡¡6.2 Code Introduction 158
¡¡¡¡6.3 Interface and Address Summary 158
¡¡¡¡6.4 sockaddr in Structure 160
¡¡¡¡6.5 in ifaddr Structure 161
¡¡¡¡6.6 Address Assignment 161
¡¡¡¡6.7 Interface ioctl Processing 177
¡¡¡¡6.8 Internet Utility Functions 181
¡¡¡¡6.9 ifnet Utility Functions 182
¡¡¡¡6.10 Summary 183
¡¡¡¡Chapter 7. Domains and Protocols 185
¡¡¡¡7.1 Introduction 185
¡¡¡¡7.2 Code Introduction 186
¡¡¡¡7.3 domain Structure 187
¡¡¡¡7.4 protosw Structure 188
¡¡¡¡7.5 IP domain and protosw Structures 191
¡¡¡¡7.6 pffindproto and pff indtype Functions 196
¡¡¡¡7.7 pfcti input Function 198
¡¡¡¡7.8 IP Initialization 199
¡¡¡¡7.9 sysctl System Call 201
¡¡¡¡7.10 Summary 204
¡¡¡¡Chapter 8. IP: Internet Protocol 205
¡¡¡¡8.1 Introduction 2205
¡¡¡¡8.2 Code Introduction 2206
¡¡¡¡8.3 I P Packets 210
¡¡¡¡8.4 Input Processing: ipintr Function 2212
¡¡¡¡8.5 Forwarding: ip_forward Function 2220
¡¡¡¡8.6 Output Processing: ip_output¡¡2Function 228
¡¡¡¡8.7 Internet Checksum: in cksum¡¡2Function 234
¡¡¡¡8.8 setsockopt and getsockopt System Calls 2239
¡¡¡¡8.9 ip_syscti Function 2244
¡¡¡¡8.10 Summary 245
¡¡¡¡Chapter 9. IP Option Processing 247
¡¡¡¡9.1 Introduction 247
¡¡¡¡9.2 Code Introduction 247
¡¡¡¡9.3 Option Format 248
¡¡¡¡9.4 ip_doopt i ons Function 249
¡¡¡¡9.5 Record Route Option 252
¡¡¡¡9.6 Source and Record Route Options 254
¡¡¡¡9.7 Timestamp Option 261
¡¡¡¡9.8 ip_insertopt ions Function 265
¡¡¡¡9.9 ip_pcbopt s Function 269
¡¡¡¡9.10 Limitations 272
¡¡¡¡9.11 Summary 272
¡¡¡¡Chapter 10. IP Fragmentation and Reassembly 275
¡¡¡¡10.1 Introduction 275
¡¡¡¡10.2 Code Introduction 277
¡¡¡¡10.3 Fragmentation 278
¡¡¡¡10.4 ip_opt copy Function 282
¡¡¡¡10.5 Reassembly 283
¡¡¡¡10.6 ip_reass Function 286
¡¡¡¡10.7 ip_s 1 owt imo Function 298
¡¡¡¡10.8 Summary 300
¡¡¡¡Chapter 11. ICMP: Internet Control Message Protocol 301
¡¡¡¡11.1 Introduction 301
¡¡¡¡11.2 Code Introduction 305
¡¡¡¡11.3 icmp Structure 308
¡¡¡¡11.4 ICMP protosw Structure 309
¡¡¡¡11.5 Input Processing: icmp_input Function 310
¡¡¡¡11.6 Error Processing 313
¡¡¡¡11.7 Request Processing 316
¡¡¡¡11.8 Redirect Processing 321
¡¡¡¡11.9 Reply Processing 323
¡¡¡¡11.10 Output Processing 324
¡¡¡¡11.11 icmp_error Function 324
¡¡¡¡11.12 icmp_re f1ect Function 328
¡¡¡¡11.13 icmp_send Function 333
¡¡¡¡11.14 i-icmp_sy sctl Function 334
¡¡¡¡11.15 Summary 335
¡¡¡¡Chapter 12. IP Multicasting 337
¡¡¡¡12.1 Introduction 337
¡¡¡¡12.2 Code Introduction 340
¡¡¡¡12.3 Ethernet Multicast Addresses 341
¡¡¡¡12.4 e_ther mu1ti Structure 342
¡¡¡¡12.5 Ethernet Multicast Reception 344
¡¡¡¡12.6 in_mu1ti Structure 345
¡¡¡¡12.7 ip_mopt ions Structure 347
¡¡¡¡12.8 Multicast Socket Options 348
¡¡¡¡12.9 Multicast TTL Values 348
¡¡¡¡12.10 ip_setmoptions Function 351
¡¡¡¡12.11 Joining an IP Multicast Group 355
¡¡¡¡12.12 Leaving an IP Multicast Group 366
¡¡¡¡12.13 ip_getmoptions Function 371
¡¡¡¡12.14 Multicast Input Processing: ipintr Function 373
¡¡¡¡12.15 Multicast Output Processing: ip_output Function 375
¡¡¡¡12.16 Performance Considerations 379
¡¡¡¡12.17 Summary 379
¡¡¡¡Chapter 13. IGMP: Internet Group Management Protocol 381
¡¡¡¡13.1 Introduction 381
¡¡¡¡13.2 Code Introduction 382
¡¡¡¡13.3 i_gmp Structu re 384
¡¡¡¡13.4 IGMP protosw Structure 384
¡¡¡¡13.5 Joining a Group: igmp_j oingroup Function 386
¡¡¡¡13.6 i_gmp_fast timo Function 387
¡¡¡¡13.7 Input Processing: igmp_input Function 391
¡¡¡¡13.8 Leaving a Group: igmp_leavegroup Function 395
¡¡¡¡13.9 Summary 396
¡¡¡¡Chapter 14. IP Multicast Routing 397
¡¡¡¡14.1 Introduction 397
¡¡¡¡14.2 Code Introduction 398
¡¡¡¡14.3 Multicast Output Processing Revisited 399
¡¡¡¡14.4 mrouted Daemon 401
¡¡¡¡14.5 Virtual Interfaces 404
¡¡¡¡14.6 IGMP Revisited 411
¡¡¡¡14.7 Multicast Routing 416
¡¡¡¡14.8 Multicast Forwarding: ip_mforward Function 424
¡¡¡¡14.9 Cleanup: ip_mrouter_done Function 433
¡¡¡¡14.10 Summary 434
¡¡¡¡Chapter 15. Socket Layer 435
¡¡¡¡15.1 Introduction 435
¡¡¡¡15.2 Code Introduction 436
¡¡¡¡15.3 socket Structure 437
¡¡¡¡15.4 System Calls 441
¡¡¡¡15.5 Processes, Descriptors, and Sockets 445
¡¡¡¡15.6 socket System Call 447
¡¡¡¡15.7 getsock and sockargs Functions 451
¡¡¡¡15.8 bind System Call 453
¡¡¡¡15.9 1isten System Call 455
¡¡¡¡15.10 t_sleep and wakeup Functions 456
¡¡¡¡15.11 accept System Call 457
¡¡¡¡15.12 sonewconn and soi sconnect ed Functions 461
¡¡¡¡15.13 connect System call 464
¡¡¡¡15.14 shut down System Call 468
¡¡¡¡15.15 c1ose System Call 471
¡¡¡¡15.16 Summary 474
¡¡¡¡Chapter 16. Socket I/O 475
¡¡¡¡16.1 Introduction 475
¡¡¡¡16.2 Code Introduction 475
¡¡¡¡16.3 Socket Buffers 476
¡¡¡¡16.4 write, writev, sendto, and sendmsg System Calls 480
¡¡¡¡16.5 sendmsg System Call 483
¡¡¡¡16.6 sendit Function 485
¡¡¡¡16.7 sosend Function 489
¡¡¡¡16.8 read, readv, recvfrom, and recvmsg System Calls 500
¡¡¡¡16.9 recvmsg System Call 501
¡¡¡¡16.10 recvit Function 503
¡¡¡¡16.11 soreceive Function 505
¡¡¡¡16.12 soreceive Code 510
¡¡¡¡16.13 select System Call 524
¡¡¡¡16.14 Summary 534
¡¡¡¡Chapter 17. Socket Options 537
¡¡¡¡17.1 Introduction 537
¡¡¡¡17.2 Code Introduction 538
¡¡¡¡17.3 sets ockopt System Call 539
¡¡¡¡17.4 getsockopt System Call 545
¡¡¡¡17.5 font 1 and ioct 1 System Calls 548
¡¡¡¡17.6 getsockname System Call 554
¡¡¡¡17.7 getpeername System Call 554
¡¡¡¡17.8 Summary 557
¡¡¡¡Chapter 18. Radix Tree Routing Tables 559
¡¡¡¡18.1 Introduction 559
¡¡¡¡18.2 Routing Table Structure 560
¡¡¡¡18.3 Routing Sockets 569
¡¡¡¡18.4 Code Introduction 570
¡¡¡¡18.5 Radix Node Data Structures 573
¡¡¡¡18.6 Routing Structures 578
¡¡¡¡18.7 Initialization: route init and rtable init Functions 581
¡¡¡¡18.8 Initialization: rn init and rn inithead Functions 584
¡¡¡¡18.9 Duplicate Keys and Mask Lists 587
¡¡¡¡18.10 rn mat ch Function 591
¡¡¡¡18.11 rn search Function 599
¡¡¡¡18.12 Summary 599
¡¡¡¡Chapter 19. Routing Requests and Routing Messages 601
¡¡¡¡19.1 Introduction 601
¡¡¡¡19.2 rtalloc and rtallocl Functions 601
¡¡¡¡19.3 RTFREE Macro and rtfree Function 604
¡¡¡¡19.4 rtrequest Function 607
¡¡¡¡19.5 rt_setgate Function 612
¡¡¡¡19.6 rt_init Function 615
¡¡¡¡19.7 rtredirect Function 617
¡¡¡¡19.8 Routing Message Structures 621
¡¡¡¡19.9 rt_mi s smsg Function 625
¡¡¡¡19.10 rtifmsg Function 627
¡¡¡¡19.11 rt_newaddrms g Function 628
¡¡¡¡19.12 rt_ms_g 1 Function 630
¡¡¡¡19.13 rt_ms_g 2 Function 632
¡¡¡¡19.14 sysctl_rt abl e Function 635
¡¡¡¡19.15 sysctl_dumpent ry Function 640
¡¡¡¡19.16 sysctl iflist Function 642
¡¡¡¡19.17 Summary 644
¡¡¡¡Chapter 20. Routing Sockets 645
¡¡¡¡20.1 Introduction 645
¡¡¡¡20.2 routedomain and protosw Structures 646
¡¡¡¡20.3 Routing Control Blocks 647
¡¡¡¡20.4 raw init Function 647
¡¡¡¡20.5 rout e_output Function 648
¡¡¡¡20.6 rt_xaddrs Function 660
¡¡¡¡20.7 rt_setmetrics Function 661
¡¡¡¡20.8 raw_input Function 662
¡¡¡¡20.9 route_usrreq Function 664
¡¡¡¡20.10 raw_u s rreq Function 666
¡¡¡¡20.11 raw_attach, raw_detach, and raw_disconnect Functions 671
¡¡¡¡20.12 Summary 672
¡¡¡¡Chapter 21. ARP: Address Resolution Protocol 675
¡¡¡¡21.1 Introduction 675
¡¡¡¡21.2 ARP and the Routing Table 675
¡¡¡¡21.3 Code Introduction 678
¡¡¡¡21.4 ARP Structures 681
¡¡¡¡21.5 arpwhohas Function 683
¡¡¡¡21.6 arprequest Function 684
¡¡¡¡21.7 arp int r Function 687
¡¡¡¡21.8 in_arpinput Function 688
¡¡¡¡21.9 ARP Timer Functions 694
¡¡¡¡21.10 arpresolve Function 696
¡¡¡¡21.11 arpl ookup Function 701
¡¡¡¡21.12 Proxy ARP 703
¡¡¡¡21.13 arp_rt request Function 704
¡¡¡¡21.14 ARP and Multicasting 710
¡¡¡¡21.15 Summary 711
¡¡¡¡Chapter 22. Protocol Control Blocks 713
¡¡¡¡22.1 Introduction 713
¡¡¡¡22.2 Code Introduction 715
¡¡¡¡22.3 inpcb Structure 716
¡¡¡¡22.4 in_pcballoc and in_pcbdetach Functions 717
¡¡¡¡22.5 Binding, Connecting, and Demultiplexing 719
¡¡¡¡22.6 in pcblookup Function 724
¡¡¡¡22.7 in_gcbbind Function 728
¡¡¡¡22.8 in pcbconnect Function 735
¡¡¡¡22.9 in_pcbdisconnect Function 741
¡¡¡¡22.10 in_setsockaddr and in_setpeeraddr Functions 741
¡¡¡¡22.11 in_pcbnotify, in_rtchange, and in_losing Functions 742
¡¡¡¡22.12 Implementation Refinements 750
¡¡¡¡22.13 Summary 751
¡¡¡¡Chapter 23. UDP: User Datagram Protocol 755
¡¡¡¡23.1 Introduction 755
¡¡¡¡23.2 Code Introduction 755
¡¡¡¡23.3 UDP protosw Structure 758
¡¡¡¡23.4 UDP Header 759
¡¡¡¡23.5 udp init Function 760
¡¡¡¡23.6 udp_output Function 760
¡¡¡¡23.7 udp_input Function 769
¡¡¡¡23.8 udp_saveopt Function 781
¡¡¡¡23.9 udp_ctli nput Function 782
¡¡¡¡23.10 udp_usrreq Function 784
¡¡¡¡23.11 udp_sysct 1 Function 790
¡¡¡¡23.12 Implementation Refinements 791
¡¡¡¡23.13 Summary 793
¡¡¡¡Chapter 24. TCP: Transmission Control Protocol 795
¡¡¡¡24.1 Introduction 795
¡¡¡¡24.2 Code Introduction 795
¡¡¡¡24.3 TCP protosw Structure 801
¡¡¡¡24.4 TCP Header 801
¡¡¡¡24.5 TCP Control Block 803
¡¡¡¡24.6 TCP State Transition Diagram 805
¡¡¡¡24.7 TCP Sequence Numbers 807
¡¡¡¡24.8 tcp_init Function 812
¡¡¡¡24.9 Summary 815
¡¡¡¡Chapter 25. TCP Timers 817
¡¡¡¡25.1 Introduction 817
¡¡¡¡25.2 Code Introduction 819
¡¡¡¡25.3 tcp cancelt imers Function 821
¡¡¡¡25.4 tcp fast t imo Function 821
¡¡¡¡25.5 tcp_s 1 owt imo Function 822
¡¡¡¡25.6 tcp_t imers Function 824
¡¡¡¡25.7 Retransmission Timer Calculations 831
¡¡¡¡25.8 tcp newtcpcb Function 833
¡¡¡¡25.9 tcp_se tper sist Function 835
¡¡¡¡25.10 tcp_xmi t_t ime r Function 836
¡¡¡¡25.11 Retransmission Timeout: tcp_t imers Function 841
¡¡¡¡25.12 An RTT Example 846
¡¡¡¡25.13 Summary 848
¡¡¡¡Chapter 26. TCP Output 851
¡¡¡¡26.1 Introduction 851
¡¡¡¡26.2 tcp output Overview 852
¡¡¡¡26.3 Determine if a Segment Should be Sent 852
¡¡¡¡26.4 TCP Options 864
¡¡¡¡26.5 Window Scale Option 866
¡¡¡¡26.6 Timestamp Option 866
¡¡¡¡26.7 Send a Segment 871
¡¡¡¡26.8 tcp templ at a Function 884
¡¡¡¡26.9 tcp respond Function 885
¡¡¡¡26.10 Summary 888
¡¡¡¡Chapter 27. TCP Functions 891
¡¡¡¡27.1 Introduction 891
¡¡¡¡27.2 tcp_drain Function 892
¡¡¡¡27.3 tcp drop Function 892
¡¡¡¡27.4 tcp close Function 893
¡¡¡¡27.5 tcp mss Function 897
¡¡¡¡27.6 top cti input Function 904
¡¡¡¡27.7 tcp notify Function 904
¡¡¡¡27.8 tcp_quench Function 906
¡¡¡¡27.9 TCP REASS Macro and tcp_reass Functionv 906
¡¡¡¡27.10 tcp_trace Function 916
¡¡¡¡27.11 Summary 920
¡¡¡¡Chapter 28. TCP Input 923
¡¡¡¡28.1 Introduction 923
¡¡¡¡28.2 Preliminary Processing 925
¡¡¡¡28.3 tcp_doopt ions Function 933
¡¡¡¡28.4 Header Prediction 934
¡¡¡¡28.5 TCP Input: Slow Path Processing 941
¡¡¡¡28.6 Initiation of Passive Open, Completion of Active Open 942
¡¡¡¡28.7 PAWS: Protection Against Wrapped Sequence Numbers 951
¡¡¡¡28.8 Trim Segment so Data is Within Window 954
¡¡¡¡28.9 Self-Connects and Simultaneous Opens 960
¡¡¡¡28.10 Record Timestamp 963
¡¡¡¡28.11 RST Processing 963
¡¡¡¡28.12 Summary 965
¡¡¡¡Chapter 29. TCP Input (Continued) 967
¡¡¡¡29.1 Introduction 967
¡¡¡¡29.2 ACK Processing Overview 967
¡¡¡¡29.3 Completion of Passive Opens and Simultaneous Opens 967
¡¡¡¡29.4 Fast Retransmit and Fast Recovery Algorithms 970
¡¡¡¡29.5 ACK Processing 974
¡¡¡¡29.6 Update Window Information 981
¡¡¡¡29.7 Urgent Mode Processing 983
¡¡¡¡29.8 tcp_pul louto fband Function 986
¡¡¡¡29.9 Processing of Received Data 988
¡¡¡¡29.10 FIN Processing 990
¡¡¡¡29.11 Final Processing 992
¡¡¡¡29.12 Implementation Refinements 994
¡¡¡¡29.13 Header Compression 995
¡¡¡¡29.14 Summary 1004
¡¡¡¡Chapter 30. TCP User Requests 1007
¡¡¡¡30.1 Introduction 1007
¡¡¡¡30.2 tcp_usrreq Function 1007
¡¡¡¡30.3 tcp attach Function 1018
¡¡¡¡30.4 tcp disconnect Function 1019
¡¡¡¡30.5 tcp_usrclosed Function 1021
¡¡¡¡30.6 t cp_ctloutput Function 1022
¡¡¡¡30.7 Summary 1025
¡¡¡¡BPF: BSD Packet Filter 1027
¡¡¡¡Chapter 31.BPF:BSO Packet Fllter
¡¡¡¡31.1 Introduction 1027
¡¡¡¡31.2 Code Introduction 1028
¡¡¡¡31.3 bp fif Structurev 1029
¡¡¡¡31.4 bp fd Structure 1032
¡¡¡¡31.5 BPF Input 1040
¡¡¡¡31.6 BPF Output 1046
¡¡¡¡31.7 Summary 1047
¡¡¡¡Raw IP 1049
¡¡¡¡Chapter 32.Raw IP
¡¡¡¡32.1 Introduction 1049
¡¡¡¡32.2 Code Introduction 1050
¡¡¡¡32.3 Raw IP protosw Structure 1051
¡¡¡¡32.4 rip_in it Function 1053
¡¡¡¡32.5 rip_input Function 1053
¡¡¡¡32.6 rip output Function 1056
¡¡¡¡32.7 rlp_usrreq Function 1058
¡¡¡¡32.8 ripct 1output Function 1063
¡¡¡¡32.9 Summary 1065
¡¡¡¡Epilogue 1067
¡¡¡¡Appendix A.Solutions to Selected Exercises 1069
¡¡¡¡Appendix B. Source Code Availability 1093
¡¡¡¡Appendix C. RFC 1122 Compliance 1097
¡¡¡¡C.1 Link-Layer Requirements 1097
¡¡¡¡C.2 IP Requirements 1098
¡¡¡¡C.3 IP Options Requirements 1102
¡¡¡¡C.4 IP Fragmentation and Reassembly Requirements 1104
¡¡¡¡C.5 ICMP Requirements 1105
¡¡¡¡C.6 Multicasting Requirements 1110
¡¡¡¡C.7 IGMP Requirements 1111
¡¡¡¡C.8 Routing Requirements 1111
¡¡¡¡C.9 ARP Requirements 1113
¡¡¡¡C.10 UDP Requirements 1113
¡¡¡¡C.11 TCP Requirements 1115
¡¡¡¡Bibliography 1125
¡¡¡¡Index 1133

ÏÂÔØÁ´½Ó£º
Óοͣ¬Èç¹ûÄúÒª²é¿´±¾ÌûÒþ²ØÄÚÈÝÇë»Ø¸´






                               
µÇ¼/×¢²áºó¿É¿´´óͼ
¸ÃÌùÒѾ­Í¬²½µ½ shining123µÄ΢²©

ÆÀ·Ö

²ÎÓëÈËÊý 1ºÃÆÀ¶È -1 ÊÕÆð ÀíÓÉ
XÒòËØ -1

²é¿´È«²¿ÆÀ·Ö

·¢±íÓÚ 2012-8-18 09:21:15 | ÏÔʾȫ²¿Â¥²ã
ɳ·¢ 2012-8-18 09:21:15 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-18 09:23:34 | ÏÔʾȫ²¿Â¥²ã
..................
°åµÊ 2012-8-18 09:23:34 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-18 09:40:52 | ÏÔʾȫ²¿Â¥²ã
Ó¢Îİ棿
µØ°å 2012-8-18 09:40:52 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-18 09:59:25 | ÏÔʾȫ²¿Â¥²ã
5# 2012-8-18 09:59:25 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-18 10:03:09 | ÏÔʾȫ²¿Â¥²ã
6# 2012-8-18 10:03:09 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-20 21:23:47 | ÏÔʾȫ²¿Â¥²ã
Õý×ÅÄØ¡¢¡¢¡¢
7# 2012-8-20 21:23:47 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-21 11:40:58 | ÏÔʾȫ²¿Â¥²ã
8# 2012-8-21 11:40:58 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-22 09:20:45 | ÏÔʾȫ²¿Â¥²ã
лл¿Í·þÊ®ÁùµÄ´óÁ¦ÍƼö
9# 2012-8-22 09:20:45 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-22 09:25:25 | ÏÔʾȫ²¿Â¥²ã
10# 2012-8-22 09:25:25 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-22 13:54:22 | ÏÔʾȫ²¿Â¥²ã
ÊÇ·¶µÂÈø·¢µÃ·ÖÎÞ·¨ Î¥·¨µÄ˵µÀ
11# 2012-8-22 13:54:22 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-24 06:46:20 | ÏÔʾȫ²¿Â¥²ã
12# 2012-8-24 06:46:20 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-24 08:52:22 | ÏÔʾȫ²¿Â¥²ã
IPÏê½â¡·Èý¾í Ψһһ²¿ÖµµÃÒ»¶ÁÔÙ
13# 2012-8-24 08:52:22 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-25 15:16:29 | ÏÔʾȫ²¿Â¥²ã
14# 2012-8-25 15:16:29 »Ø¸´ ÊÕÆð»Ø¸´
·¢±íÓÚ 2012-8-26 15:04:08 | ÏÔʾȫ²¿Â¥²ã
Çó´óÉñ×ÊÁÏ
15# 2012-8-26 15:04:08 »Ø¸´ ÊÕÆð»Ø¸´
ÄúÐèÒªµÇ¼ºó²Å¿ÉÒÔ»ØÌû µÇ¼ | ÂÛ̳ע²á

±¾°æ»ý·Ö¹æÔò

QQ|Archiver|ÊÖ»ú°æ|СºÚÎÝ|sitemap|ºèðÀÂÛ̳ ( ¾©ICP±¸14027439ºÅ )  

GMT+8, 2025-1-24 02:10 , Processed in 0.072143 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

¿ìËٻظ´ ·µ»Ø¶¥²¿ ·µ»ØÁбí