锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美日韩中文在线制服,亚洲第一天堂av,欧美大尺度在线http://m.shnenglu.com/finehai/category/11208.html褰撴椂鍙亾鏄甯竳zh-cnTue, 24 Apr 2012 19:05:58 GMTTue, 24 Apr 2012 19:05:58 GMT60linux鍐呮牳緗戠粶鏍?/title><link>http://m.shnenglu.com/finehai/archive/2012/04/24/172589.html</link><dc:creator>Bluesea</dc:creator><author>Bluesea</author><pubDate>Tue, 24 Apr 2012 05:50:00 GMT</pubDate><guid>http://m.shnenglu.com/finehai/archive/2012/04/24/172589.html</guid><wfw:comment>http://m.shnenglu.com/finehai/comments/172589.html</wfw:comment><comments>http://m.shnenglu.com/finehai/archive/2012/04/24/172589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/finehai/comments/commentRss/172589.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/finehai/services/trackbacks/172589.html</trackback:ping><description><![CDATA[<span style="font-size: 12pt;"> </span><div><div> <div><strong style="font-size: 14pt;"><br /><div><span style="font-size: 14pt;"><br />涓銆乴inux鍐呮牳緗戠粶鏍堜唬鐮佺殑鍑嗗鐭ヨ瘑<br /><br /></span></div><br /></strong><strong style="font-size: 12pt;">1.</strong><span style="font-size: 12pt;"> </span><strong style="font-size: 12pt;">linux鍐呮牳ipv4緗戠粶閮ㄥ垎鍒嗗眰緇撴瀯</strong><span style="font-size: 12pt;">錛?/span></div> <div> </div> <div><br /><strong style="font-size: 12pt;">BSD socket灞傦細 </strong>榪欎竴閮ㄥ垎澶勭悊BSD socket鐩稿叧鎿嶄綔錛屾瘡涓猻ocket鍦ㄥ唴鏍鎬腑浠truct socket緇撴瀯浣撶幇銆傝繖涓閮ㄥ垎鐨勬枃浠?/div> <div> </div> <div><span style="font-size: 12pt;">涓昏鏈夛細/net/socket.c /net/protocols.c etc</span><br /><br /><strong style="font-size: 12pt;">INET socket灞傦細</strong>BSD socket鏄釜鍙互鐢ㄤ簬鍚勭緗戠粶鍗忚鐨勬帴鍙o紝鑰屽綋鐢ㄤ簬tcp/ip錛屽嵆寤虹珛浜咥F_INET褰㈠紡鐨剆ocket鏃訛紝</div> <div> </div> <div><span style="font-size: 12pt;">榪橀渶瑕佷繚鐣欎簺棰濆鐨勫弬鏁幫紝浜庢槸灝辨湁浜唖truct sock緇撴瀯銆傛枃浠朵富瑕?/span></div> <div> </div> <div><span style="font-size: 12pt;">鏈夛細/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc</span><br /><br /><strong style="font-size: 12pt;">TCP/UDP灞傦細</strong>澶勭悊浼犺緭灞傜殑鎿嶄綔錛屼紶杈撳眰鐢╯truct inet_protocol鍜宻truct proto涓や釜緇撴瀯琛ㄧず銆傛枃浠朵富瑕?/div> <div> </div> <div><span style="font-size: 12pt;">鏈夛細/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c /net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c /net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c </span></div> <div> </div> <div><span style="font-size: 12pt;">etc  </span><br />     <br /><strong style="font-size: 12pt;">IP灞傦細</strong>澶勭悊緗戠粶灞傜殑鎿嶄綔錛岀綉緇滃眰鐢╯truct packet_type緇撴瀯琛ㄧず銆傛枃浠朵富瑕佹湁錛?net/ipv4/ip_forward.c </div> <div><span style="font-size: 12pt;">ip_fragment.c ip_input.c ip_output.c etc.</span><br /><br /><strong style="font-size: 12pt;">鏁版嵁閾捐礬灞傚拰椹卞姩紼嬪簭錛?/strong>姣忎釜緗戠粶璁懼浠truct net_device琛ㄧず錛岄氱敤鐨勫鐞嗗湪dev.c涓紝椹卞姩紼嬪簭閮藉湪/driver/net鐩?/div> <div> </div> <div><span style="font-size: 12pt;">褰曚笅銆?/span></div> <div> </div> <div><strong style="font-size: 12pt;">2.</strong><span style="font-size: 12pt;"> </span><strong style="font-size: 12pt;">涓ゅ彴涓繪満寤虹珛udp閫氫俊鎵璧拌繃鐨勫嚱鏁板垪琛?/strong></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">^</span><br /><span style="font-size: 12pt;">|       sys_read                fs/read_write.c</span><br /><span style="font-size: 12pt;">|       sock_read               net/socket.c</span><br /><span style="font-size: 12pt;">|       sock_recvmsg            net/socket.c</span><br /><span style="font-size: 12pt;">|       inet_recvmsg            net/ipv4/af_inet.c</span><br /><span style="font-size: 12pt;">|       udp_recvmsg             net/ipv4/udp.c</span><br /><span style="font-size: 12pt;">|       skb_recv_datagram       net/core/datagram.c</span><br /><span style="font-size: 12pt;">|       -------------------------------------------</span><br /><span style="font-size: 12pt;">|       sock_queue_rcv_skb      include/net/sock.h</span><br /><span style="font-size: 12pt;">|       udp_queue_rcv_skb       net/ipv4/udp.c</span><br /><span style="font-size: 12pt;">|       udp_rcv                 net/ipv4/udp.c</span><br /><span style="font-size: 12pt;">|       ip_local_deliver_finish net/ipv4/ip_input.c</span><br /><span style="font-size: 12pt;">|       ip_local_deliver        net/ipv4/ip_input.c</span><br /><span style="font-size: 12pt;">|       ip_recv                 net/ipv4/ip_input.c</span><br /><span style="font-size: 12pt;">|       net_rx_action           net/dev.c</span><br /><span style="font-size: 12pt;">|       -------------------------------------------</span><br /><span style="font-size: 12pt;">|       netif_rx                net/dev.c</span><br /><span style="font-size: 12pt;">|       el3_rx                  driver/net/3c309.c</span><br /><span style="font-size: 12pt;">|       el3_interrupt           driver/net/3c309.c</span><br /><br /><span style="font-size: 12pt;">錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳錛濓紳</span><br /><br /><span style="font-size: 12pt;">|       sys_write               fs/read_write.c</span><br /><span style="font-size: 12pt;">|       sock_writev             net/socket.c                    </span><br /><span style="font-size: 12pt;">|       sock_sendmsg            net/socket.c</span><br /><span style="font-size: 12pt;">|       inet_sendmsg            net/ipv4/af_inet.c</span><br /><span style="font-size: 12pt;">|       udp_sendmsg             net/ipv4/udp.c</span><br /><span style="font-size: 12pt;">|       ip_build_xmit           net/ipv4/ip_output.c</span><br /><span style="font-size: 12pt;">|       output_maybe_reroute    net/ipv4/ip_output.c</span><br /><span style="font-size: 12pt;">|       ip_output               net/ipv4/ip_output.c</span><br /><span style="font-size: 12pt;">|       ip_finish_output        net/ipv4/ip_output.c</span><br /><span style="font-size: 12pt;">|       dev_queue_xmit          net/dev.c</span><br /><span style="font-size: 12pt;">|       --------------------------------------------</span><br /><span style="font-size: 12pt;">|       el3_start_xmit          driver/net/3c309.c</span><br /><span style="font-size: 12pt;">V</span></div> <div> </div> <div> </div> <div><strong style="font-size: 12pt;">3.</strong> <strong>緗戠粶璺緞鍥俱侀噸瑕佹暟鎹粨鏋剆k_buffer鍙婅礬鐢變粙緇?/strong></div> <div><strong></strong> </div> <div><strong>    </strong><span style="font-size: 12pt;">linux-net.pdf 絎?.1绔?絎?.3绔?絎?.4绔?/span></div> <div>    </div> <div><strong style="font-size: 12pt;">4.</strong> <strong>浠庤繛鎺ャ佸彂閫併佸埌鎺ユ敹鏁版嵁鍖呯殑榪囩▼</strong></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">    linux-net.pdf 絎?銆?銆?绔犺緇嗛槓榪?/span></div> <div> </div> <div> </div> <div><strong style="font-size: 14pt;">浜?linux鐨則cp-ip鏍堜唬鐮佺殑璇︾粏鍒嗘瀽<br /><br /></strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">1.鏁版嵁緇撴瀯(msghdr,sk_buff,socket,sock,proto_ops,proto)</strong></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">bsd濂楁帴瀛楀眰,鎿嶄綔鐨勫璞℃槸socket,鏁版嵁瀛樻斁鍦╩sghdr榪欐牱鐨勬暟鎹粨鏋勶細</span></div> <div> </div> <div><span style="font-size: 12pt;">鍒涘緩socket闇瑕佷紶閫抐amily,type,protocol涓変釜鍙傛暟錛屽垱寤簊ocket鍏跺疄灝辨槸鍒涘緩涓涓猻ocket瀹炰緥錛岀劧鍚庡垱寤轟竴 涓枃浠舵弿榪扮緇撴瀯錛屽茍涓斾簰鐩稿緩绔嬩竴浜涘叧鑱旓紝鍗沖緩绔嬩簰鐩歌繛鎺ョ殑鎸囬拡錛屽茍涓斿垵濮嬪寲榪欎簺瀵規枃浠剁殑鍐欒鎿嶄綔鏄犲皠鍒皊ocket鐨剅ead錛寃rite鍑芥暟涓婃潵銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">鍚屾椂鍒濆鍖杝ocket鐨勬搷浣滃嚱鏁幫紙proto_ops緇撴瀯),濡傛灉浼犲叆鐨則ype鍙傛暟鏄疭TREAM綾誨瀷錛岄偅涔堝氨鍒濆鍖栦負 SOCKET->ops涓篿net_stream_ops錛屽鏋滄槸DGRAM綾誨瀷錛屽垯SOCKET-ops涓篿net_dgram_ops銆傚浜?inet_stream_ops鍏跺疄鏄竴涓粨鏋勪綋錛屽寘鍚簡stream綾誨瀷鐨剆ocket鎿嶄綔鐨勪竴浜涘叆鍙e嚱鏁幫紝鍦ㄨ繖浜涘嚱鏁伴噷涓昏鍋氱殑鏄socket榪涜 鐩稿叧鐨勬搷浣滐紝鍚屾椂閫氳繃璋冪敤涓嬮潰鎻愬埌鐨剆ock涓殑鐩稿叧鎿嶄綔瀹屾垚socket鍒皊ock灞傜殑浼犻掋傛瘮濡傚湪inet_stream_ops閲屾湁涓?inet_release鐨勬搷浣滐紝榪欎釜鎿嶄綔闄や簡閲婃斁socket鐨勭被鍨嬬┖闂存搷浣滃錛岃繕閫氳繃璋冪敤socket榪炴帴鐨剆ock鐨刢lose鎿嶄綔錛屽浜?stream綾誨瀷鏉ヨ錛屽嵆tcp_close鏉ュ叧闂璼ock</span></div> <div><span style="font-size: 12pt;">閲婃斁sock銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">鍒涘緩socket鍚屾椂榪樺垱寤簊ock鏁版嵁絀洪棿錛屽垵濮嬪寲sock,鍒濆鍖栬繃紼嬩富瑕佸仛鐨勪簨鎯呮槸鍒濆鍖栦笁涓槦鍒楋紝receive_queue錛堟帴鏀跺埌 鐨勬暟鎹寘sk_buff閾捐〃闃熷垪),send_queue(闇瑕佸彂閫佹暟鎹寘鐨剆k_buff閾捐〃闃熷垪),backlog_queue(涓昏鐢ㄤ簬tcp涓笁 嬈℃彙鎵嬫垚鍔熺殑閭d簺鏁版嵁鍖?鑷繁鐚滅殑),鏍規嵁family銆乼ype鍙傛暟錛屽垵濮嬪寲sock鐨勬搷浣滐紝姣斿瀵逛簬family涓篿net綾誨瀷鐨勶紝type涓?stream綾誨瀷鐨勶紝sock->proto鍒濆鍖栦負tcp_prot.鍏朵腑鍖呮嫭stream綾誨瀷鐨勫崗璁畇ock鎿嶄綔瀵瑰簲鐨勫叆鍙e嚱鏁般?/span></div> <div> </div> <div><span style="font-size: 12pt;">鍦ㄤ竴绔socket榪涜write鐨勮繃紼嬩腑錛岄鍏堜細鎶婅write鐨勫瓧絎︿覆緙撳啿鍖烘暣鐞嗘垚msghdr鐨勬暟鎹粨鏋勫艦寮?鍙傝linux鍐呮牳 2.4鐗堟簮浠g爜鍒嗘瀽澶у叏),鐒跺悗璋冪敤sock_sendmsg鎶妋sghdr鐨勬暟鎹紶閫佽嚦inet灞傦紝瀵逛簬msghdr緇撴瀯涓暟鎹尯涓殑姣忎釜鏁版嵁鍖咃紝鍒涘緩 sk_buff緇撴瀯錛屽~鍏呮暟鎹紝鎸傝嚦鍙戦侀槦鍒椼備竴灞傚眰寰涓嬪眰鍗忚浼犻掋備竴涓嬫瘡灞傚崗璁笉鍐嶅鏁版嵁榪涜鎷瘋礉銆傝屾槸瀵箂k_buff緇撴瀯榪涜鎿嶄綔銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">inet濂楁帴瀛楀強浠ヤ笅灞?鏁版嵁瀛樻斁鍦╯k_buff榪欐牱鐨勬暟鎹粨鏋勯噷錛?/span></div> <div> </div> <div><span style="font-size: 12pt;">璺敱錛?/span></div> <div>    </div> <div><span style="font-size: 12pt;">    鍦╨inux鐨勮礬鐢辯郴緇熶富瑕佷繚瀛樹簡涓夌涓庤礬鐢辯浉鍏崇殑鏁版嵁錛岀涓縐嶆槸鍦ㄧ墿鐞嗕笂鍜屾湰鏈虹浉榪炴帴鐨勪富鏈哄湴鍧淇℃伅琛紝絎簩縐嶆槸淇濆瓨浜嗗湪緗戠粶璁塊棶涓垽鏂竴涓綉緇滃湴鍧搴旇璧頒粈涔堣礬鐢辯殑鏁版嵁琛紱絎笁縐嶆槸鏈鏂頒嬌鐢ㄨ繃鐨勬煡璇㈣礬鐢卞湴鍧鐨勭紦瀛樺湴鍧鏁版嵁琛ㄣ?/span></div> <div><span style="font-size: 12pt;">    1.neighbour緇撴瀯  neighbour_table{ }鏄竴涓寘鍚拰鏈満鎵榪炴帴鐨勬墍鏈夐偦鍏冪礌鐨勪俊鎭殑鏁版嵁緇撴瀯銆傝緇撴瀯涓湁涓厓绱犳槸neighbour緇撴瀯鐨勬暟緇勶紝鏁扮粍鐨勬瘡涓涓厓绱犻兘鏄竴涓搴斾簬閭繪満鐨?neighbour緇撴瀯錛岀郴緇熶腑鐢變簬鍗忚鐨勪笉鍚岋紝浼氭湁涓嶅悓鐨勫垽鏂偦灞呯殑鏂瑰紡錛屾瘡縐嶉兘鏈塶eighbour_table{}綾誨瀷鐨勫疄渚嬶紝榪欎簺瀹炰緥鏄氳繃 neighbour_table{}涓殑鎸囬拡next涓茶仈璧鋒潵鐨勩傚湪neighbour緇撴瀯涓紝鍖呭惈鏈変笌璇ラ偦灞呯浉榪炵殑緗戠粶鎺ュ彛璁懼net_device鐨?鎸囬拡錛岀綉緇滄帴鍙g殑紜歡鍦板潃錛岄偦灞呯殑紜歡鍦板潃錛屽寘鍚湁neigh_ops{}鎸囬拡錛岃繖浜涘嚱鏁版寚閽堟槸鐩存帴鐢ㄦ潵榪炴帴浼犺緭鏁版嵁鐨勶紝鍖呭惈鏈?queue_xmit(struct * sk_buff)鍑芥暟鍏ュ彛鍦板潃錛岃繖涓嚱鏁板彲鑳戒細璋冪敤紜歡椹卞姩紼嬪簭鐨勫彂閫佸嚱鏁般?/span></div> <div> </div> <div><span style="font-size: 12pt;">    2.FIB緇撴瀯 鍦‵IB涓繚瀛樼殑鏄渶閲嶈鐨勮礬鐢辮鍒?閫氳繃瀵笷IB鏁版嵁鐨勬煡鎵懼拰鎹㈢畻錛屼竴瀹氳兘澶熻幏寰楄礬鐢變竴涓湴鍧鐨勬柟娉曘傜郴緇熶腑璺敱涓鑸噰鍙栫殑鎵嬫鏄細鍏堝埌璺敱緙撳瓨涓煡鎵?琛ㄩ」錛屽鏋滆兘澶熸壘鍒幫紝鐩存帴瀵瑰簲鐨勪竴欏逛綔涓鴻礬鐢辯殑瑙勫垯錛涘鏋滀笉鑳芥壘鍒幫紝閭d箞灝卞埌FIB涓牴鎹鍒欐崲綆椾紶綆楀嚭鏉ワ紝騫朵笖澧炲姞涓欏規柊鐨勶紝鍦ㄨ礬鐢辯紦瀛樹腑灝嗛」鐩坊鍔犺繘 鍘匯?/span></div> <div><span style="font-size: 12pt;">    3.route緇撴瀯錛堝嵆璺敱緙撳瓨涓殑緇撴瀯)</span></div> <div> </div> <div> </div> <div> </div> <div><span style="font-size: 12pt;">鏁版嵁閾捐礬灞傦細</span></div> <div>   </div> <div><span style="font-size: 12pt;">   net_device{}緇撴瀯錛屽搴斾簬姣忎竴涓綉緇滄帴鍙h澶囥傝繖涓粨鏋勪腑鍖呭惈寰堝鍙互鐩存帴鑾峰彇緗戝崱淇℃伅鐨勫嚱鏁板拰鍙橀噺錛屽悓鏃跺寘鍚緢澶氬浜庣綉鍗℃搷浣滅殑鍑芥暟錛岃繖浜?鐩存帴鎸囧悜璇ョ綉鍗¢┍鍔ㄧ▼搴忕殑璁稿鍑芥暟鍏ュ彛錛屽寘鎷彂閫佹帴鏀舵暟鎹撫鍒扮紦鍐插尯絳夈傚綋榪欎簺瀹屾垚鍚庯紝姣斿鏁版嵁鎺ユ敹鍒扮紦鍐插尯鍚庝究鐢眓etif_rx(鍦╪et/core /dev.c鍚勭璁懼椹卞姩紼嬪簭鐨勪笂灞傛鏋剁▼搴?鎶婂畠浠粍鎴恠k_buff褰㈠紡鎸傚埌緋葷粺鎺ユ敹鐨刡acklog闃熷垪鐒跺悗浜ょ敱涓婂眰緗戠粶鍗忚澶勭悊銆傚悓鏍鳳紝瀵逛簬涓婂眰 鍗忚澶勭悊涓嬫潵鐨勯偅浜泂k_buff銆備究鐢眃ev_queue_xmit鍑芥暟鏀懼叆緗戠粶緙撳啿鍖猴紝浜ょ粰緗戝崱椹卞姩紼嬪簭鐨勫彂閫佺▼搴忓鐞嗐?/span></div> <div> </div> <div><span style="font-size: 12pt;">   鍦ㄧ郴緇熶腑瀛樺湪涓寮犻摼琛╠ev_base灝嗙郴緇熶腑鎵鏈夌殑net_device{}緇撴瀯榪炲湪涓璧楓傚搴斾簬鍐呮牳鍒濆鍖栬岃█錛岀郴緇熷惎鍔ㄦ椂渚夸負姣忎釜鎵鏈夊彲鑳芥敮鎸佺殑緗?緇滄帴鍙h澶囩敵璇蜂簡涓涓猲et_device{}絀洪棿騫朵覆榪炶搗鏉ワ紝鐒跺悗瀵規瘡涓帴鐐硅繍琛屾嫻嬭繃紼嬶紝濡傛灉媯嫻嬫垚鍔燂紝鍒欏湪dev_base閾捐〃涓繚鐣欒繖涓帴鐐癸紝鍚?鍒欏垹闄ゃ傚搴斾簬妯″潡鍔犺澆鏉ヨ錛屽垯鏄皟鐢╮egister_netdev()娉ㄥ唽net_device,鍦ㄨ繖涓嚱鏁頒腑榪愯媯嫻嬭繃紼嬶紝濡傛灉鎴愬姛錛屽垯鍔犲埌 dev_base閾捐〃銆傚惁鍒欏氨榪斿洖媯嫻嬩笉鍒頒俊鎭傚垹闄ゅ悓鐞嗭紝璋冪敤</span></div> <div><span style="font-size: 12pt;">unregister_netdev銆?/span></div> <div> </div> <div> </div> <div><strong style="font-size: 12pt;">2.鍚姩鍒嗘瀽</strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">    2.1 鍒濆鍖栬繘紼?/strong> 錛歴tart-kernel(main.c)---->do_basic_setup(main.c)---->sock_init(/net/socket.c)---->do_initcalls(main.c)</div> <div> </div> <div><strong style="font-size: 12pt;">void __init sock_init(void)<br /></strong>{<br /> int i;</div> <div> </div> <div><span style="font-size: 12pt;"> printk(KERN_INFO "Linux NET4.0 for Linux 2.4\n");</span><br /><span style="font-size: 12pt;"> printk(KERN_INFO "Based upon Swansea University Computer Society NET3.039\n");</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Initialize all address (protocol) families. 姣忎竴欏硅〃紺虹殑鏄拡瀵逛竴涓湴鍧鏃忕殑鎿嶄綔闆嗗悎錛屼緥濡傚浜巌pv4鏉ヨ錛屽湪net/ipv4/af_inet.c鏂囦歡涓殑鍑芥暟 inet_proto_init()灝辮皟鐢╯ock_register()鍑芥暟灝唅net_families_ops鍒濆鍖栧埌灞炰簬IPV4鐨?net_families鏁扮粍涓殑涓欏廣?/span><br /><span style="font-size: 12pt;">  */</span><br />  <br /><span style="font-size: 12pt;"> for (i = 0; i < NPROTO; i++) </span><br /><span style="font-size: 12pt;">  net_families[i] = NULL;  </span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Initialize sock SLAB cache.鍒濆鍖栧浜巗ock緇撴瀯棰勭暀鐨勫唴瀛樼殑slab緙撳瓨銆?/span><br /><span style="font-size: 12pt;">  */</span><br />  <br /><span style="font-size: 12pt;"> sk_init();</span></div> <div> </div> <div><span style="font-size: 12pt;">#ifdef SLAB_SKB</span><br /><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Initialize skbuff SLAB cache 鍒濆鍖栧浜巗kbuff緇撴瀯鐨剆lab緙撳瓨銆備互鍚庡浜巗kbuff鐨勭敵璇峰彲浠ラ氳繃鍑芥暟kmem_cache_alloc()鍦ㄨ繖涓紦瀛樹腑鐢寵絀洪棿銆?/span><br /><span style="font-size: 12pt;">  */</span><br /><span style="font-size: 12pt;"> skb_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Wan router layer. </span><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;">#ifdef CONFIG_WAN_ROUTER  </span><br /><span style="font-size: 12pt;"> wanrouter_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Initialize the protocols module. 鍚戠郴緇熺櫥璁皊ock鏂囦歡緋葷粺錛屽茍涓斿皢鍏跺畨瑁呭埌緋葷粺涓婃潵銆?/span><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;"> register_filesystem(&sock_fs_type);</span><br /><span style="font-size: 12pt;"> sock_mnt = kern_mount(&sock_fs_type);</span><br /><span style="font-size: 12pt;"> /* The real protocol initialization is performed when</span><br /><span style="font-size: 12pt;">  *  do_initcalls is run.  </span><br /><span style="font-size: 12pt;">  */</span></div> <div><br /><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * The netlink device handler may be needed early.</span><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;">#ifdef CONFIG_NET</span><br /><span style="font-size: 12pt;"> rtnetlink_init();</span><br /><span style="font-size: 12pt;">#endif</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_NETLINK_DEV</span><br /><span style="font-size: 12pt;"> init_netlink();</span><br /><span style="font-size: 12pt;">#endif</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_NETFILTER</span><br /><span style="font-size: 12pt;"> netfilter_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;">#ifdef CONFIG_BLUEZ</span><br /><span style="font-size: 12pt;"> bluez_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;">/*yfhuang ipsec*/</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_IPSEC            </span><br /><span style="font-size: 12pt;"> pfkey_init();</span><br /><span style="font-size: 12pt;">#endif</span><br /><span style="font-size: 12pt;">/*yfhuang ipsec*/</span><br /><span style="font-size: 12pt;">}</span></div> <div><strong></strong> </div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">    2.2 do_initcalls()</strong> 涓仛浜嗗叾瀹冪殑鍒濆鍖栵紝鍏朵腑鍖呮嫭</div> <div> </div> <div><span style="font-size: 12pt;">                鍗忚鍒濆鍖栵紝璺敱鍒濆鍖栵紝緗戠粶鎺ュ彛璁懼鍒濆鍖?/span></div> <div> </div> <div><strong style="font-size: 12pt;">(渚嬪inet_init鍑芥暟浠init寮澶磋〃紺烘槸緋葷粺鍒濆鍖栨椂鍋氾紝鍑芥暟緇撴潫鍚庤窡 module_init(inet_init),榪欐槸涓涓畯錛屽湪include/linux/init.c涓畾涔夛紝灞曞紑涓?_initcall(inet_init),琛ㄧず榪欎釜鍑芥暟鍦╠o_initcalls琚皟鐢ㄤ簡)</strong></div> <div> </div> <div><strong style="font-size: 12pt;">    2.3 鍗忚鍒濆鍖?/strong></div> <div><strong style="font-size: 12pt;">姝ゅ涓昏鍒椾婦inet鍗忚鐨勫垵濮嬪寲榪囩▼銆?/strong></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">static int __init inet_init(void)</span><br /><span style="font-size: 12pt;">{</span><br /><span style="font-size: 12pt;"> struct sk_buff *dummy_skb;</span><br /><span style="font-size: 12pt;"> struct inet_protocol *p;</span><br /><span style="font-size: 12pt;"> struct inet_protosw *q;</span><br /><span style="font-size: 12pt;"> struct list_head *r;</span></div> <div> </div> <div><span style="font-size: 12pt;"> printk(KERN_INFO "NET4: Linux TCP/IP 1.0 for NET4.0\n");</span></div> <div> </div> <div><span style="font-size: 12pt;"> if (sizeof(struct inet_skb_parm) > sizeof(dummy_skb->cb)) {</span><br /><span style="font-size: 12pt;">  printk(KERN_CRIT "inet_proto_init: panic\n");</span><br /><span style="font-size: 12pt;">  return -EINVAL;</span><br /><span style="font-size: 12pt;"> }</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Tell SOCKET that we are alive... 娉ㄥ唽socket錛屽憡璇塻ocket inet綾誨瀷鐨勫湴鍧鏃忓凡緇忓噯澶囧ソ浜?/span><br /><span style="font-size: 12pt;">  */</span><br />   <br /><span style="font-size: 12pt;">   (void) sock_register(&inet_family_ops);</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Add all the protocols. 鍖呮嫭arp,ip銆両CMP銆乁PD銆乼cp_v4銆乼cp銆乮gmp鐨勫垵濮嬪寲錛屼富瑕佸垵濮嬪寲鍚勭鍗忚瀵瑰簲鐨刬node鍜宻ocket鍙橀噺銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">鍏朵腑arp_init瀹屾垚緋葷粺涓礬鐢遍儴鍒唍eighbour琛ㄧ殑鍒濆鍖?/span></div> <div> </div> <div><span style="font-size: 12pt;">ip_init瀹屾垚ip鍗忚鐨勫垵濮嬪寲銆傚湪榪欎袱涓嚱鏁頒腑錛岄兘閫氳繃瀹氫箟涓涓猵acket_type緇撴瀯鐨勫彉閲忓皢榪欑鏁版嵁鍖呭搴旂殑鍗忚鍙戦佹暟鎹佸厑璁稿彂閫佽澶囬兘鍋氬垵濮嬪寲銆?/span></div> <div><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;"> printk(KERN_INFO "IP Protocols: ");</span><br /><span style="font-size: 12pt;"> for (p = inet_protocol_base; p != NULL;) {</span><br /><span style="font-size: 12pt;">  struct inet_protocol *tmp = (struct inet_protocol *) p->next;</span><br /><span style="font-size: 12pt;">  inet_add_protocol(p);</span><br /><span style="font-size: 12pt;">  printk("%s%s",p->name,tmp?", ":"\n");</span><br /><span style="font-size: 12pt;">  p = tmp;</span><br /><span style="font-size: 12pt;"> }</span></div> <div> </div> <div><span style="font-size: 12pt;"> /* Register the socket-side information for inet_create. */</span><br /><span style="font-size: 12pt;"> for(r = &inetsw[0]; r < &inetsw[SOCK_MAX]; ++r)</span><br /><span style="font-size: 12pt;">  INIT_LIST_HEAD(r);</span></div> <div> </div> <div><span style="font-size: 12pt;"> for(q = inetsw_array; q < &inetsw_array[INETSW_ARRAY_LEN]; ++q)</span><br /><span style="font-size: 12pt;">  inet_register_protosw(q);</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Set the ARP module up  </span><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;"> arp_init();</span></div> <div> </div> <div><span style="font-size: 12pt;">   /*</span><br /><span style="font-size: 12pt;">    * Set the IP module up</span><br /><span style="font-size: 12pt;">    */</span></div> <div> </div> <div><span style="font-size: 12pt;"> ip_init();</span></div> <div> </div> <div><span style="font-size: 12pt;"> tcp_v4_init(&inet_family_ops);</span></div> <div> </div> <div><span style="font-size: 12pt;"> /* Setup TCP slab cache for open requests. */</span><br /><span style="font-size: 12pt;"> tcp_init();</span></div> <div><br /><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Set the ICMP layer up</span><br /><span style="font-size: 12pt;">  */</span></div> <div> </div> <div><span style="font-size: 12pt;"> icmp_init(&inet_family_ops);</span></div> <div> </div> <div><span style="font-size: 12pt;"> /* I wish inet_add_protocol had no constructor hook...</span><br /><span style="font-size: 12pt;">    I had to move IPIP from net/ipv4/protocol.c :-( --ANK</span><br /><span style="font-size: 12pt;">  */</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_NET_IPIP</span><br /><span style="font-size: 12pt;"> ipip_init();</span><br /><span style="font-size: 12pt;">#endif</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_NET_IPGRE</span><br /><span style="font-size: 12pt;"> ipgre_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Initialise the multicast router</span><br /><span style="font-size: 12pt;">  */</span><br /><span style="font-size: 12pt;">#if defined(CONFIG_IP_MROUTE)</span><br /><span style="font-size: 12pt;"> ip_mr_init();</span><br /><span style="font-size: 12pt;">#endif</span></div> <div> </div> <div><span style="font-size: 12pt;"> /*</span><br /><span style="font-size: 12pt;">  * Create all the /proc entries.</span><br /><span style="font-size: 12pt;">  */</span><br /><span style="font-size: 12pt;">#ifdef CONFIG_PROC_FS</span><br /><span style="font-size: 12pt;"> proc_net_create ("raw", 0, raw_get_info);</span><br /><span style="font-size: 12pt;"> proc_net_create ("netstat", 0, netstat_get_info);</span><br /><span style="font-size: 12pt;"> proc_net_create ("snmp", 0, snmp_get_info);</span><br /><span style="font-size: 12pt;"> proc_net_create ("sockstat", 0, afinet_get_info);</span><br /><span style="font-size: 12pt;"> proc_net_create ("tcp", 0, tcp_get_info);</span><br /><span style="font-size: 12pt;"> proc_net_create ("udp", 0, udp_get_info);</span><br /><span style="font-size: 12pt;">#endif  /* CONFIG_PROC_FS */</span></div> <div> </div> <div><span style="font-size: 12pt;"> ipfrag_init();</span></div> <div> </div> <div><span style="font-size: 12pt;"> return 0;</span><br /><span style="font-size: 12pt;">}   </span></div> <div><span style="font-size: 12pt;">module_init(inet_init);</span></div> <div>                                                 </div> <div> </div> <div>    <strong style="font-size: 12pt;"> 2.4 璺敱鍒濆鍖?鍖呮嫭neighbour琛ㄣ丗IB琛ㄣ佸拰璺敱緙撳瓨琛ㄧ殑鍒濆鍖栧伐浣?</strong></div> <div><strong></strong> </div> <div>            <strong style="font-size: 12pt;">2.4.1 rtcache琛?ip_rt_init()鍑芥暟 鍦╪et/ipv4/ip_output涓皟鐢紝net/ipv4/route.c涓畾涔?/strong></div> <div><strong></strong> </div> <div>            <strong style="font-size: 12pt;">2.4.2 FIB鍒濆鍖?鍦╥p_rt_init()涓皟鐢?鍦╪et/ipv4/fib_front.c涓畾涔?/strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">           2.4.3 neigbour琛ㄥ垵濮嬪寲  arp_init錛堬級鍑芥暟涓畾涔?nbsp;</strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">     2.5 緗戠粶鎺ュ彛璁懼鍒濆鍖?/strong></div> <div>             </div> <div><span style="font-size: 12pt;">             鍦ㄧ郴緇熶腑緗戠粶鎺ュ彛閮芥槸鐢變竴涓猟ev_base閾捐〃榪涜綆$悊鐨勩傞氳繃鍐呮牳鐨勫惎鍔ㄦ柟寮忎篃鏄氳繃榪欎釜閾捐〃榪涜鎿嶄綔鐨勩傚湪緋?緇熷惎鍔ㄤ箣鍒濓紝灝嗘墍鏈夊唴鏍歌兘澶熸敮鎸佺殑緗戠粶鎺ュ彛閮藉垵濮嬪寲鎴愯繖涓摼琛ㄤ腑鐨勪竴涓妭鐐癸紝騫朵笖姣忎釜鑺傜偣閮介渶瑕佸垵濮嬪寲鍑篿nit鍑芥暟鎸囬拡錛岀敤鏉ユ嫻嬬綉緇滄帴鍙h澶囥傜劧鍚庯紝 緋葷粺閬嶅巻鏁翠釜dev_base閾捐〃錛屽姣忎釜鑺傜偣鍒嗗埆璋冪敤init鍑芥暟鎸囬拡錛屽鏋滄垚鍔燂紝璇佹槑緗戠粶鎺ュ彛璁懼鍙敤錛岄偅涔堣繖涓妭鐐瑰氨鍙互榪涗竴姝ュ垵濮嬪寲錛屽鏋滆繑鍥炲け 璐ワ紝閭d箞璇佹槑璇ョ綉緇滆澶囦笉瀛樺湪鎴栨槸涓嶅彲鐢紝鍙兘灝嗚鑺傜偣鍒犻櫎銆傚惎鍔ㄧ粨鏉熶箣鍚庯紝鍦╠ev_base涓墿涓嬬殑閮芥槸鍙互鐢ㄧ殑緗戠粶鎺ュ彛璁懼銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">            2.5.1 do_initcalls---->net_dev_init()(net/core /dev.c)------>ethif_probe()(drivers/net/Space.c,鍦╪etdevice{}緇撴瀯鐨刬nit涓皟 鐢紝榪欒竟ethif_probe鏄互澶綉鍗¢拡瀵圭殑璋冪敤)</span></div> <div> </div> <div><strong></strong> </div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">3.緗戠粶璁懼椹卞姩紼嬪簭錛堢暐)</strong></div> <div><strong>        </strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">4.緗戠粶榪炴帴</strong></div> <div><strong></strong> </div> <div><strong style="font-size: 12pt;">     4.1 榪炴帴鐨勫緩绔嬪拰鍏抽棴</strong></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">            tcp榪炴帴寤虹珛鐨勪唬鐮佸涓?</span></div> <div><span style="font-size: 12pt;">                    server=gethostbyname(SERVER_NAME);</span></div> <div><span style="font-size: 12pt;">                    sockfd=socket(AF_INET,SOCK_STREAM,0);</span></div> <div><span style="font-size: 12pt;">                    address.sin_family=AF_INET錛?/span></div> <div><span style="font-size: 12pt;">                    address.sin_port=htons(PORT_NUM);</span></div> <div><span style="font-size: 12pt;">                    memcpy(&address.sin_addr,server->h_addr,server->h_length);</span></div> <div><span style="font-size: 12pt;">                    connect(sockfd,&address,sizeof(address));</span></div> <div> </div> <div><span style="font-size: 12pt;">       榪炴帴鐨勫垵濮嬪寲涓庡緩绔嬫湡闂翠富瑕佸彂鐢熺殑浜嬫儏濡備笅錛?/span></div> <div>                      </div> <div><span style="font-size: 12pt;">       1錛塻ys_socket璋冪敤錛氳皟鐢╯ocket_creat(),鍒涘緩鍑轟竴涓弧瓚充紶鍏ュ弬鏁癴amily銆乼ype銆佸拰 protocol鐨剆ocket,璋冪敤sock_map_fd()鑾峰彇涓涓湭琚嬌鐢ㄧ殑鏂囦歡鎻忚堪絎︼紝騫朵笖鐢寵騫跺垵濮嬪寲瀵瑰簲鐨刦ile{}緇撴瀯銆?/span></div> <div>        </div> <div><span style="font-size: 12pt;">       2錛塻ock_creat()錛氬垱寤簊ocket緇撴瀯錛岄拡瀵規瘡縐嶄笉鍚岀殑family鐨剆ocket緇撴瀯鐨勫垵濮嬪寲錛屽氨闇瑕佽皟鐢ㄤ笉鍚?鐨刢reate鍑芥暟鏉ュ畬鎴愩傚搴斾簬inet綾誨瀷鐨勫湴鍧鏉ヨ錛屽湪緗戠粶鍗忚鍒濆鍖栨椂璋冪敤sock_register()鍑芥暟涓畬鎴愭敞鍐岀殑瀹氫箟濡備笅錛?/span></div> <div><span style="font-size: 12pt;">        struct net_proto_family inet_family_ops={</span></div> <div><span style="font-size: 12pt;">                PF_INET;</span></div> <div><span style="font-size: 12pt;">                inet_create</span></div> <div><span style="font-size: 12pt;">        };鎵浠net鍗忚鏈鍚庝細璋冪敤inet_create鍑芥暟銆?/span></div> <div>        </div> <div><span style="font-size: 12pt;">       3錛塱net_create: 鍒濆鍖杝ock鐨勭姸鎬佽緗負SS_UNCONNECTED,鐢寵涓涓柊鐨剆ock緇撴瀯錛屽茍涓斿垵濮嬪寲socket鐨勬垚鍛榦ps鍒濆鍖栦負 inet_stream_ops,鑰宻ock鐨勬垚鍛榩rot鍒濆鍖栦負tcp_prot銆傜劧鍚庤皟鐢╯ock_init_data,灝嗚socket緇撴瀯鐨勫彉 閲弒ock鍜宻ock綾誨瀷鐨勫彉閲忓叧鑱旇搗鏉ャ?/span></div> <div> </div> <div><span style="font-size: 12pt;">       4錛夊湪緋葷粺鍒濆鍖栧畬姣曞悗渚挎槸榪涜connect鐨勫伐浣滐紝緋葷粺璋冪敤connect灝嗕竴涓拰socket緇撴瀯鍏寵仈鐨勬枃浠舵弿榪扮鍜屼竴涓?sockaddr{}緇撴瀯鐨勫湴鍧瀵瑰簲鐨勮繙紼嬫満鍣ㄧ浉鍏寵仈錛屽茍涓旇皟鐢ㄥ悇涓崗璁嚜宸卞搴旂殑connect榪炴帴鍑芥暟銆傚搴斾簬tcp綾誨瀷錛屽垯 sock->ops->connect渚夸負inet_stream_connect銆?/span></div> <div> </div> <div> </div> <div><span style="font-size: 12pt;">       5錛塱net_stream_connect: 寰楀埌sk,sk=sock->sk,閿佸畾sk錛屽鑷姩鑾峰彇sk鐨勭鍙e彿瀛樻斁鍦╯k->num涓紝騫朵笖鐢╤tons()鍑芥暟杞崲瀛樻斁鍦╯k-& gt;sport涓傜劧鍚庤皟鐢╯k->prot->connect()鍑芥暟鎸囬拡錛屽tcp鍗忚鏉ヨ灝辨槸tcp_v4_connect()鍑?鏁般傜劧鍚庡皢sock->state鐘舵佸瓧璁劇疆涓篠S_CONNECTING,絳夊緟鍚庨潰涓緋誨垪鐨勫鐞嗗畬鎴愪箣鍚庯紝灝卞皢鐘舵佹敼鎴?SS_CONNECTTED銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">       6) tcp_v4_connect()錛氳皟鐢ㄥ嚱鏁癷p_route_connect()錛屽鎵懼悎閫傜殑璺敱瀛樻斁鍦╮t涓俰p_route_connect鎵句袱 嬈★紝絎竴嬈℃壘鍒頒笅涓璺崇殑ip鍦板潃錛屽湪璺敱緙撳瓨鎴杅ib涓壘鍒幫紝鐒跺悗絎簩嬈℃壘鍒頒笅涓璺崇殑鍏蜂綋閭誨眳錛屽埌neigh_table涓壘鍒般傜劧鍚庣敵璇峰嚭tcp澶寸殑絀?闂村瓨鏀懼湪buff涓傚皢sk涓浉鍏沖湴鍧鏁版嵁鍋氫竴浜涢拡瀵硅礬鐢辯殑鍙樺姩錛屽茍涓斿垵濮嬪寲涓涓猼cp榪炴帴鐨勫簭鍒楀彿錛岃皟鐢ㄥ嚱鏁皌cp_connect錛堬級錛屽垵濮嬪寲tcp 澶達紝騫惰緗畉cp澶勭悊闇瑕佺殑瀹氭椂鍣ㄣ備竴嬈onnect錛堬級寤虹珛鐨勮繃紼嬪氨緇撴潫浜嗐?/span></div> <div> </div> <div><span style="font-size: 12pt;">       榪炴帴鐨勫叧闂富瑕佸涓嬶細</span></div> <div> </div> <div><span style="font-size: 12pt;">        1錛塩lose: 涓涓猻ocket鏂囦歡鎻忚堪絎﹀搴旂殑file{}緇撴瀯涓紝鏈変竴涓猣ile_operations{}緇撴瀯鐨勬垚鍛榝_ops錛屽畠鐨勫垵濮嬪寲鍏抽棴鍑芥暟涓簊ock_close鍑芥暟銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">        2錛塻ock_close錛氳皟鐢ㄥ嚱鏁皊ock_release(),鍙傛暟涓轟竴涓猻ocket{}緇撴瀯鐨勬寚閽堛?/span></div> <div> </div> <div><span style="font-size: 12pt;">        3錛塻ock_release錛氳皟鐢╥net_release錛屽茍閲婃斁socket鐨勬寚閽堝拰鏂囦歡絀洪棿</span></div> <div> </div> <div><span style="font-size: 12pt;">        4錛塱net_release: 璋冪敤鍜岃socket瀵瑰簲鍗忚鐨勫叧闂嚱鏁癷net_release,濡傛灉鏄痶cp鍗忚錛岄偅涔堣皟鐢ㄧ殑鏄痶cp_close錛涙渶鍚庨噴鏀緎k銆?/span></div> <div> </div> <div><span style="font-size: 12pt;">        4.2 </span><strong style="font-size: 12pt;">鏁版嵁鍙戦佹祦紼嬪浘</strong></div> <div><strong></strong> </div> <div> <img alt="" src="http://blog.csdn.net/images/blog_csdn_net/cz_hyf/send.gif" usemap="#mymap" border="0" /></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">鍚勫眰涓昏鍑芥暟浠ュ強浣嶇疆鍔熻兘璇存槑錛?/span></div> <div><span style="font-size: 12pt;">        1)sock_write錛氬垵濮嬪寲msghdr{}緇撴瀯 net/socket.c</span></div> <div><span style="font-size: 12pt;">        2)sock_sendmsg:net/socket.c</span></div> <div><span style="font-size: 12pt;">        3)inet_sendmsg:net/ipv4/af_net.c</span></div> <div><span style="font-size: 12pt;">        4)tcp_sendmsg錛氱敵璇穝k_buff{}緇撴瀯鐨勭┖闂達紝鎶妋sghdr{}緇撴瀯涓殑鏁版嵁濉叆sk_buff絀洪棿銆俷et/ipv4/tcp.c</span></div> <div><span style="font-size: 12pt;">        5)tcp_send_skb:net/ipv4/tcp_output.c</span></div> <div><span style="font-size: 12pt;">        6)tcp_transmit_skb:net/ipv4/tcp_output.c</span></div> <div><span style="font-size: 12pt;">        7)ip_queue_xmit:net/ipv4/ip_output.c</span></div> <div><span style="font-size: 12pt;">        8)ip_queue_xmit2:net/ipv4/ip_output.c</span></div> <div><span style="font-size: 12pt;">        9)ip_output:net/ipv4/ip_output.c</span></div> <div><span style="font-size: 12pt;">        10)ip_finish_output:net/ipv4/ip_output.c</span></div> <div><span style="font-size: 12pt;">        11)ip_finish_output2:net/ipv4/ip_output.c</span></div> <div><span style="font-size: 12pt;">        12)neigh_resolve_output:net/core/neighbour.c</span></div> <div><span style="font-size: 12pt;">        13)dev_queue_xmit:net/core/dev.c</span></div> <div> </div> <div> </div> <div><strong style="font-size: 12pt;">        4.3 鏁版嵁鎺ユ敹嫻佺▼鍥?/strong></div> <div><img alt="" src="http://blog.csdn.net/images/blog_csdn_net/cz_hyf/receive.gif" usemap="#mymap" border="0" /></div> <div><strong></strong> </div> <div><span style="font-size: 12pt;">鍚勫眰涓昏鍑芥暟浠ュ強浣嶇疆鍔熻兘璇存槑錛?/span></div> <div> </div> <div><span style="font-size: 12pt;">        1)sock_read:鍒濆鍖杕sghdr{}鐨勭粨鏋勭被鍨嬪彉閲弇sg錛屽茍涓斿皢闇瑕佹帴鏀剁殑鏁版嵁瀛?/span><span style="font-size: 12pt;">鏀劇殑鍦板潃浼犵粰msg.msg_iov->iov_base.      net/socket.c</span></div> <div><span style="font-size: 12pt;">        2)sock_recvmsg: 璋冪敤鍑芥暟鎸囬拡sock->ops->recvmsg()瀹屾垚鍦↖NET Socket灞傜殑鏁版嵁鎺ユ敹榪囩▼.鍏朵腑sock->ops琚垵濮嬪寲涓篿net_stream_ops,鍏舵垚鍛榬ecvmsg瀵瑰簲鐨勫嚱鏁板疄鐜頒負 inet_recvmsg()鍑芥暟. net/socket.c</span></div> <div><span style="font-size: 12pt;">        3)sys_recv()/sys_recvfrom():鍒嗗埆瀵瑰簲鐫闈㈠悜榪炴帴鍜岄潰鍚戞棤榪炴帴鐨勫崗璁袱縐嶆儏鍐? net/socket.c</span></div> <div><span style="font-size: 12pt;">        4)inet_recvmsg:璋冪敤sk->prot->recvmsg鍑芥暟瀹屾垚鏁版嵁鎺ユ敹,榪欎釜鍑芥暟瀵逛簬tcp鍗忚渚挎槸tcp_recvmsg net/ipv4/af_net.c</span></div> <div><span style="font-size: 12pt;">        5)tcp_recvmsg:浠庣綉緇滃崗璁爤鎺ユ敹鏁版嵁鐨勫姩浣?鑷笂鑰屼笅鐨勮Е鍙戝姩浣滀竴鐩村埌榪欎釜鍑芥暟涓烘,鍑虹幇浜嗕竴嬈$瓑寰呯殑榪囩▼.鍑?鏁皌cp_recvmsg鍙兘浼氳鍔ㄥ湴絳夊緟鍦╯k鐨勬帴鏀舵暟鎹槦鍒椾笂,涔熷氨鏄,緋葷粺涓偗瀹氭湁鍏朵粬鍦版柟浼氬幓淇敼榪欎釜闃熷垪浣垮緱tcp_recvmsg鍙互榪涜 涓嬪幓.鍏ュ彛鍙傛暟sk鏄繖涓綉緇滆繛鎺ュ搴旂殑sock{}鎸囬拡,msg鐢ㄤ簬瀛樻斁鎺ユ敹鍒扮殑鏁版嵁.鎺ユ敹鏁版嵁鐨勬椂鍊欎細鍘婚亶鍘嗘帴鏀墮槦鍒椾腑鐨勬暟鎹?鎵懼埌搴忓垪鍙峰悎閫傜殑.</span></div> <div><span style="font-size: 12pt;">        浣嗚鍙栭槦鍒椾負絀烘椂tcp_recvmsg灝變細璋冪敤tcp_v4_do_rcv浣跨敤backlog闃熷垪濉厖鎺ユ敹闃熷垪.</span></div> <div><span style="font-size: 12pt;">        6)tcp_v4_rcv:tcp_v4_rcv琚玦p_local_deliver鍑芥暟璋冪敤,鏄粠IP灞傚崗璁悜INET Socket灞傛彁浜ょ殑"鏁版嵁鍒?璇鋒眰,鍏ュ彛鍙傛暟skb瀛樻斁鎺ユ敹鍒扮殑鏁版嵁,len鏄帴鏀剁殑鏁版嵁鐨勯暱搴?榪欎釜鍑芥暟棣栧厛縐誨姩skb->data鎸囬拡,璁╁畠 鎸囧悜tcp澶?鐒跺悗鏇存柊tcp灞傜殑涓浜涙暟鎹粺璁?鐒跺悗榪涜tcp鐨勪竴浜涘肩殑鏍¢獙.鍐嶄粠INET Socket灞備腑宸茬粡寤虹珛鐨剆ock{}緇撴瀯鍙橀噺涓煡鎵炬鍦ㄧ瓑寰呭綋鍓嶅埌杈炬暟鎹殑鍝竴欏?鍙兘榪欎釜sock{}緇撴瀯宸茬粡寤虹珛,鎴栬呰繕澶勪簬鐩戝惉绔彛銆佺瓑寰呮暟鎹?榪炴帴鐨勭姸鎬併傝繑鍥炵殑sock緇撴瀯鎸囬拡瀛樻斁鍦╯k涓傜劧鍚庢牴鎹叾浠栬繘紼嬪sk鐨勬搷浣滄儏鍐?灝唖kb鍙戦佸埌鍚堥傜殑浣嶇疆.璋冪敤濡備笅:</span></div> <div> </div> <div><span style="font-size: 12pt;">        TCP鍖呮帴鏀跺櫒(tcp_v4_rcv)灝員CP鍖呮姇閫掑埌鐩殑濂楁帴瀛楄繘琛屾帴鏀跺鐞? 褰撳鎺ュ瓧姝h鐢ㄦ埛閿佸畾,TCP鍖呭皢鏆傛椂鎺掑叆璇ュ鎺ュ瓧鐨勫悗澶囬槦鍒?sk_add_backlog).榪欐椂濡傛灉鏌愪竴鐢ㄦ埛綰跨▼浼佸浘閿佸畾璇ュ鎺ュ瓧 (lock_sock),璇ョ嚎紼嬭鎺掑叆濂楁帴瀛楃殑鍚庡澶勭悊絳夊緟闃熷垪(sk->lock.wq).褰撶敤鎴烽噴鏀句笂閿佺殑濂楁帴瀛楁椂 (release_sock,鍦╰cp_recvmsg涓皟鐢?,鍚庡闃熷垪涓殑TCP鍖呰绔嬪嵆娉ㄥ叆TCP鍖呭鐞嗗櫒(tcp_v4_do_rcv)榪涜澶?鐞?鐒跺悗鍞ら啋絳夊緟闃熷垪涓渶鍏堢殑涓涓敤鎴鋒潵鑾峰緱鍏墮攣瀹氭潈. 濡傛灉濂楁帴瀛楁湭琚笂閿?褰撶敤鎴鋒鍦ㄨ鍙栬濂楁帴瀛楁椂, TCP鍖呭皢琚帓鍏ュ鎺ュ瓧鐨勯澶囬槦鍒?tcp_prequeue),灝嗗叾浼犻掑埌璇ョ敤鎴風嚎紼嬩笂涓嬫枃涓繘琛屽鐞?濡傛灉娣誨姞鍒皊k->prequeue涓嶆垚 鍔?渚垮彲浠ユ坊鍔犲埌 sk->receive_queue闃熷垪涓?鐢ㄦ埛綰跨▼鍙互鐧昏鍒伴澶囬槦鍒?褰撻澶囬槦鍒椾腑鍑虹幇絎竴涓寘鏃跺氨鍞ら啋絳夊緟綰跨▼.)   /net/tcp_ipv4.c</span></div> <div> </div> <div><span style="font-size: 12pt;">        7)ip_rcv銆乮p_rcv_finish:浠庝互澶綉鎺ユ敹鏁版嵁錛屾斁鍒皊kb閲岋紝浣渋p灞傜殑涓浜涙暟鎹強閫夐」媯鏌ワ紝璋冪敤 ip_route_input()鍋氳礬鐢卞鐞?鍒ゆ柇鏄繘琛宨p杞彂榪樻槸灝嗘暟鎹紶閫掑埌楂樹竴灞傜殑鍗忚.璋冪敤skb->dst->input鍑芥暟鎸?閽?榪欎釜鎸囬拡鐨勫疄鐜板彲鑳芥湁澶氱鎯呭喌,濡傛灉璺敱寰楀埌鐨勭粨鏋滆鏄庤繖涓暟鎹寘搴旇杞彂鍒板叾浠栦富鏈?榪欓噷鐨刬nput渚挎槸ip_forward;濡傛灉鏁版嵁鍖呮槸緇欐湰 鏈虹殑,閭d箞input鎸囬拡鍒濆鍖栦負ip_local_deliver鍑芥暟./net/ipv4/ip_input.c</span></div> <div> </div> <div><span style="font-size: 12pt;">        8)ip_local_deliver銆乮p_local_deliver_finish:鍏ュ彛鍙傛暟skb瀛樻斁闇瑕佷紶閫佸埌涓婂眰 鍗忚鐨勬暟鎹?浠巌p澶翠腑鑾峰彇鏄惁宸茬粡鍒嗘媶鐨勪俊鎭?濡傛灉宸茬粡鍒嗘媶,鍒欒皟鐢ㄥ嚱鏁癷p_defrag灝嗘暟鎹寘閲嶇粍銆傜劧鍚庨氳繃璋冪敤 ip_prot->handler鎸囬拡璋冪敤tcp_v4_rcv(tcp)銆俰p_prot鏄痠net_protocol緇撴瀯鎸囬拡,鏄敤鏉p灞傜櫥 璁板崗璁殑錛屾瘮濡傜敱udp,tcp,icmp絳夊崗璁?/net/ipv4/ip_input.c</span></div></div></div><img src ="http://m.shnenglu.com/finehai/aggbug/172589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/finehai/" target="_blank">Bluesea</a> 2012-04-24 13:50 <a href="http://m.shnenglu.com/finehai/archive/2012/04/24/172589.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>gnu binutils(addr2line ar gprof nm objcopy ...)http://m.shnenglu.com/finehai/archive/2012/04/24/172557.htmlBlueseaBlueseaTue, 24 Apr 2012 02:28:00 GMThttp://m.shnenglu.com/finehai/archive/2012/04/24/172557.htmlhttp://m.shnenglu.com/finehai/comments/172557.htmlhttp://m.shnenglu.com/finehai/archive/2012/04/24/172557.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/172557.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/172557.html闃呰鍏ㄦ枃

Bluesea 2012-04-24 10:28 鍙戣〃璇勮
]]>
[linux]鎺㈢儲Linux鍚姩榪囩▼http://m.shnenglu.com/finehai/archive/2009/07/17/90335.htmlBlueseaBlueseaFri, 17 Jul 2009 06:10:00 GMThttp://m.shnenglu.com/finehai/archive/2009/07/17/90335.htmlhttp://m.shnenglu.com/finehai/comments/90335.htmlhttp://m.shnenglu.com/finehai/archive/2009/07/17/90335.html#Feedback0http://m.shnenglu.com/finehai/comments/commentRss/90335.htmlhttp://m.shnenglu.com/finehai/services/trackbacks/90335.html緗楀垪涓綃囷紝鏂逛究鎴戠瓑鑿滈笩鏉ユ俯涔犲拰鏌ラ槄,浠olaris涓轟緥

鎸変笅鐢墊簮錛岄鍏堟槸BIOS鍙栧緱緋葷粺鎺у埗鏉冿紝BIOS榪涜鏈鍒濈殑寮曞宸ヤ綔,鐒跺悗浜ゆ帶鍒舵潈浜ょ粰寮曞鍒嗗尯錛岀敱寮曞鍒嗗尯鍔犺澆鍐呮牳騫惰皟鐢╯tart_kernel鍑芥暟銆?/p>

鍐呮牳棣栧厛寮曞鏍稿績鏁版嵁緇撴瀯鐨勫垵濮嬪寲錛屽湪start_kernel鍑芥暟涓畬鎴愬涓嬪伐浣滐細

  • 杈撳嚭Linux鐗堟湰淇℃伅錛坧rintk(linux_banner)錛?
  • 璁劇疆涓庝綋緋葷粨鏋勭浉鍏崇殑鐜錛坰etup_arch()錛?
  • 欏佃〃緇撴瀯鍒濆鍖栵紙paging_init()錛?
  • 浣跨敤"arch/alpha/kernel/entry.S"涓殑鍏ュ彛鐐硅緗郴緇熻嚜闄峰叆鍙o紙trap_init()錛?
  • 浣跨敤alpha_mv緇撴瀯鍜宔ntry.S鍏ュ彛鍒濆鍖栫郴緇烮RQ錛坕nit_IRQ()錛?
  • 鏍稿績榪涚▼璋冨害鍣ㄥ垵濮嬪寲錛堝寘鎷垵濮嬪寲鍑犱釜緙虹渷鐨凚ottom-half錛宻ched_init()錛?
  • 鏃墮棿銆佸畾鏃跺櫒鍒濆鍖栵紙鍖呮嫭璇誨彇CMOS鏃墮挓銆佷及嫻嬩富棰戙佸垵濮嬪寲瀹氭椂鍣ㄤ腑鏂瓑錛宼ime_init()錛?
  • 鎻愬彇騫跺垎鏋愭牳蹇冨惎鍔ㄥ弬鏁幫紙浠庣幆澧冨彉閲忎腑璇誨彇鍙傛暟錛岃緗浉搴旀爣蹇椾綅絳夊緟澶勭悊錛岋紙parse_options()錛?
  • 鎺у埗鍙板垵濮嬪寲錛堜負杈撳嚭淇℃伅鑰屽厛浜嶱CI鍒濆鍖栵紝console_init()錛?
  • 鍓栨瀽鍣ㄦ暟鎹粨鏋勫垵濮嬪寲錛坧rof_buffer鍜宲rof_len鍙橀噺錛?
  • 鏍稿績Cache鍒濆鍖栵紙鎻忚堪Cache淇℃伅鐨凜ache錛宬mem_cache_init()錛?
  • 寤惰繜鏍″噯錛堣幏寰楁椂閽焜iffies涓嶤PU涓婚ticks鐨勫歡榪燂紝calibrate_delay()錛?
  • 鍐呭瓨鍒濆鍖栵紙璁劇疆鍐呭瓨涓婁笅鐣屽拰欏佃〃欏瑰垵濮嬪鹼紝mem_init()錛?
  • 鍒涘緩鍜岃緗唴閮ㄥ強閫氱敤cache錛?slab_cache"錛宬mem_cache_sizes_init()錛?
  • 鍒涘緩uid taskcount SLAB cache錛?uid_cache"錛寀idcache_init()錛?
  • 鍒涘緩鏂囦歡cache錛?files_cache"錛宖ilescache_init()錛?
  • 鍒涘緩鐩綍cache錛?dentry_cache"錛宒cache_init()錛?
  • 鍒涘緩涓庤櫄瀛樼浉鍏崇殑cache錛?vm_area_struct"錛?mm_struct"錛寁ma_init()錛?
  • 鍧楄澶囪鍐欑紦鍐插尯鍒濆鍖栵紙鍚屾椂鍒涘緩"buffer_head"cache鐢ㄦ埛鍔犻熻闂紝buffer_init()錛?
  • 鍒涘緩欏礳ache錛堝唴瀛橀〉hash琛ㄥ垵濮嬪寲錛宲age_cache_init()錛?
  • 鍒涘緩淇″彿闃熷垪cache錛?signal_queue"錛宻ignals_init()錛?
  • 鍒濆鍖栧唴瀛榠node琛紙inode_init()錛?
  • 鍒涘緩鍐呭瓨鏂囦歡鎻忚堪絎﹁〃錛?filp_cache"錛宖ile_table_init()錛?
  • 媯鏌ヤ綋緋葷粨鏋勬紡媧烇紙瀵逛簬alpha錛屾鍑芥暟涓虹┖錛宑heck_bugs()錛?
  • SMP鏈哄櫒鍏朵綑CPU錛堥櫎褰撳墠寮曞CPU錛夊垵濮嬪寲錛堝浜庢病鏈夐厤緗甋MP鐨勫唴鏍革紝姝ゅ嚱鏁頒負絀猴紝smp_init()錛?
  • 鍚姩init榪囩▼錛堝垱寤虹涓涓牳蹇冪嚎紼嬶紝璋冪敤init()鍑芥暟錛屽師鎵ц搴忓垪璋冪敤cpu_idle() 絳夊緟璋冨害錛宨nit()錛?

鑷蟲start_kernel()緇撴潫錛屽熀鏈殑鏍稿績鐜宸茬粡寤虹珛璧鋒潵浜嗐?

start_kernel鏈鍚庝竴欏規槸鍚姩浜唅nit鍑芥暟錛屾帴鐫鐢卞畠鏉ュ畬鎴愬璁劇殑鍒濆鍖?/strong>

  • 鎬葷嚎鍒濆鍖栵紙姣斿pci_init()錛?
  • 緗戠粶鍒濆鍖栵紙鍒濆鍖栫綉緇滄暟鎹粨鏋勶紝鍖呮嫭sk_init()銆乻kb_init()鍜宲roto_init()涓夐儴鍒嗭紝鍦╬roto_init()涓紝灝嗚皟鐢╬rotocols緇撴瀯涓寘鍚殑鎵鏈夊崗璁殑鍒濆鍖栬繃紼嬶紝sock_init()錛?
  • 鍒涘緩bdflush鏍稿績綰跨▼錛坆dflush()榪囩▼甯擱┗鏍稿績絀洪棿錛岀敱鏍稿績鍞ら啋鏉ユ竻鐞嗚鍐欒繃鐨勫唴瀛樼紦鍐插尯錛屽綋bdflush()鐢眐ernel_thread()鍚姩鍚庯紝瀹冨皢鑷繁鍛藉悕涓簁flushd錛?
  • 鍒涘緩kupdate鏍稿績綰跨▼錛坘update()榪囩▼甯擱┗鏍稿績絀洪棿錛岀敱鏍稿績鎸夋椂璋冨害鎵ц錛屽皢鍐呭瓨緙撳啿鍖轟腑鐨勪俊鎭洿鏂板埌紓佺洏涓紝鏇存柊鐨勫唴瀹瑰寘鎷秴綰у潡鍜宨node琛級
  • 璁劇疆騫跺惎鍔ㄦ牳蹇冭皟欏電嚎紼媖swapd錛堜負浜嗛槻姝swapd鍚姩鏃跺皢鐗堟湰淇℃伅杈撳嚭鍒板叾浠栦俊鎭腑闂達紝鏍稿績綰胯皟鐢╧swapd_setup()璁劇疆kswapd榪愯鎵瑕佹眰鐨勭幆澧冿紝鐒跺悗鍐嶅垱寤?kswapd鏍稿績綰跨▼錛?
  • 鍒涘緩浜嬩歡綆$悊鏍稿績綰跨▼錛坰tart_context_thread()鍑芥暟鍚姩context_thread()榪囩▼錛屽茍閲嶅懡鍚嶄負keventd錛?
  • 璁懼鍒濆鍖栵紙鍖呮嫭騫跺彛parport_init()銆佸瓧絎﹁澶嘽hr_dev_init()銆佸潡璁懼 blk_dev_init()銆丼CSI璁懼scsi_dev_init()銆佺綉緇滆澶噉et_dev_init()銆佺鐩樺垵濮嬪寲鍙婂垎鍖烘鏌ョ瓑絳夛紝device_setup()錛?
  • 鎵ц鏂囦歡鏍煎紡璁劇疆錛坆infmt_setup()錛?
  • 鍚姩浠諱綍浣跨敤__initcall鏍囪瘑鐨勫嚱鏁幫紙鏂逛究鏍稿績寮鍙戣呮坊鍔犲惎鍔ㄥ嚱鏁幫紝do_initcalls()錛?
  • 鏂囦歡緋葷粺鍒濆鍖栵紙filesystem_setup()錛?
  • 瀹夎root鏂囦歡緋葷粺錛坢ount_root()錛?

榪欎簺姝ラ緇撴潫鍚庯紝init()鎼滅儲鏂囦歡緋葷粺涓殑init紼嬪簭錛屽茍鍒涘緩瀹冿紝涔熷氨鏄垜浠氬父鎵璇寸殑init榪涚▼錛屽畠鏄郴緇熸墍鏈夎繘紼嬬殑璧風偣錛岃繘紼婭D=1銆?/strong>

鍦ㄥ惎鍔ㄤ簡鐨凷olaris涓嬶紝鍒╃敤 "$ps -p 1" 鍙互鏌ョ湅璇ヨ繘紼嬶紝杈撳嚭濡備笅錛?/p>

PID TTY TIME CMD
1 ? 0:01 init

鎺ヤ笅鏉nit榪涚▼璇誨彇/etc/inittab鏂囦歡錛屾潵鍐沖畾涓嬩竴姝ュ浣曞仛銆?/strong>

inittab鏄互琛屼負鍗曚綅鐨勬弿榪版э紙闈炴墽琛屾э級鏂囨湰錛屾瘡涓涓寚浠よ閮藉叿鏈変互涓嬫牸寮忥細

id:runlevel:action:process 鍏朵腑id涓哄叆鍙f爣璇嗙錛宺unlevel涓鴻繍琛岀駭鍒紝action涓哄姩浣滀唬鍙鳳紝process涓哄叿浣撶殑鎵ц紼嬪簭銆?/p>

id涓鑸姹?涓瓧絎︿互鍐咃紝runlevel鏄?strong>init鎵澶勪簬鐨勮繍琛岀駭鍒殑鏍囪瘑錛屼竴鑸嬌鐢?錛?浠ュ強S鎴杝錛圫鎴杝琛ㄧず鍗曠敤鎴鋒ā寮忥級銆?/p>

action瀛楁鍒欏憡璇塱nit榪涚▼錛屽浣曞寰卲rocess瀛楁鎸囧畾鐨勮繘紼嬶細褰搃nittab涓悇琛岀殑runlevel鍊間笌褰撳墠榪愯綰у埆鍖歸厤鏃訛紝鎸囧畾鐨刟ction鎵嶈鎵ц銆?/p>

浣嗘湁鍑犱釜鐗規畩鐨刟ction錛?/p>

initdefault鏄竴涓壒孌婄殑action鍊鹼紝鐢ㄤ簬鏍囪瘑緙虹渷鐨勫惎鍔ㄧ駭鍒紱褰搃nit鐢辨牳蹇冩縺媧諱互鍚庯紝瀹冨皢棣栧厛璇誨彇inittab涓殑initdefault欏?/strong>錛屽彇寰楀叾涓殑runlevel錛屽茍浣滀負褰撳墠鐨勮繍琛岀駭鍒?/p>

sysinit銆乥oot銆乥ootwait絳塧ction灝嗗湪緋葷粺鍚姩鏃舵棤鏉′歡榪愯錛岃屽拷鐣ュ叾涓殑runlevel錛屽嵆涓嶇褰撳墠榪愯綰у埆鏄粈涔堬紝瀹冮兘鎵ц錛屽茍涓旀槸浼樺厛鎵ц銆傚叾浣欑殑action錛堜笉鍚玦nitdefault錛夐兘涓庢煇涓猺unlevel鐩稿叧銆?/p>

鎴戠殑Solaris9涓殑/etc/inittab濡備笅

ap::sysinit:/sbin/autopush -f /etc/iu.ap #action=sysinit, 璇ヨ涓嶇鍦ㄤ粈涔堣繍琛岀駭鍒笅錛岄兘榪愯
ap::sysinit:/sbin/soconfig -f /etc/sock2path #鍚屼笂
fs::sysinit:/sbin/rcS sysinit >/dev/msglog 2<>/dev/msglog
is:3:initdefault: #璇ヨaction=initdefault錛岃〃鏄庣郴緇熺殑榛樿榪愯綰у埆鏄?
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
sS:s:wait:/sbin/rcS >/dev/msglog 2<>/dev/msglog
s0:0:wait:/sbin/rc0 >/dev/msglog 2<>/dev/msglog
s1:1:respawn:/sbin/rc1 >/dev/msglog 2<>/dev/msglog
s2:23:wait:/sbin/rc2 >/dev/msglog 2<>/dev/msglog
s3:3:wait:/sbin/rc3 >/dev/msglog 2<>/dev/msglog
s5:5:wait:/sbin/rc5 >/dev/msglog 2<>/dev/msglog
s6:6:wait:/sbin/rc6 >/dev/msglog 2<>/dev/msglog
fw:0:wait:/sbin/uadmin 2 0 >/dev/msglog 2<>/dev/msglog
of:5:wait:/sbin/uadmin 2 6 >/dev/msglog 2<>/dev/msglog
rb:6:wait:/sbin/uadmin 2 1 >/dev/msglog 2<>/dev/msglog
sc:234:respawn:/usr/lib/saf/sac -t 300 #鍦?,3,4榪愯綰у埆涓嬮兘鎵ц
co:234:respawn:/usr/lib/saf/ttymon -g -h -p "`uname -n` console login: " -T sun -d /dev/console -l console -m ldterm,ttcompat

鍘籱an inittab鍚э紝浠涔堥兘璁蹭簡 :)

鎺ョ潃鐪嬫垜鐨刬nittab鏂囦歡錛屽綋action=sysinit鐨勮鎵ц瀹屼箣鍚庯紙鍓嶄笁琛岋級錛屽皢鎵цrunlevel=3鐨勮錛屽嵆“ s3:3:wait:/sbin/rc3 ”銆傛煡鎵句簡涓涓嬶紝/sbin/rc3鏄竴涓猻hell鑴氭湰錛岀敤浜庡垵濮嬪寲鍦ㄨ繍琛岀駭鍒?鐨勭郴緇熴傚洜姝?etc/inittab涓凡緇忓畾涔夊ソ浜嗗湪榪愯綰у埆X涓嬶紝灝辮繍琛?/sbin/rcX錛岄偅/sbin/rcX鍒板簳鏄粈涔堬紵

cat涓涓?sbin/rc3錛岀湅鐪嬶紝閲嶈鐨勫嚑琛屼唬鐮佸涓嬶細

[ $_INIT_PREV_LEVEL = 2 -o $_INIT_PREV_LEVEL = 4 ] && \
echo 'Changing to state 3.' #濡傛灉浠ュ墠榪愯綰у埆鏄?鎴?錛屽垯鎵撳嵃淇℃伅“鍒囨崲鍒扮姸鎬佷笁”

#濡傛灉榪愯綰у埆!=4鑰屼笖瀛樺湪/etc/rc3.d榪欎釜鐩綍錛屽垯鍋滄帀鎵鏈変互K寮濮嬬殑鑴氭湰涓殑鏈嶅姟鎴栫▼搴忥紝鍚姩鎵鏈変互S寮濮嬬殑鑴氭湰涓殑鏈嶅姟鎴栫▼搴?/p>

if [ $_INIT_PREV_LEVEL != 4 -a -d /etc/rc3.d ]; then
for f in /etc/rc3.d/K*; do
if [ -s $f ]; then
case $f in
*.sh) . $f ;;
*) /sbin/sh $f stop ;;
esac
fi
done

for f in /etc/rc3.d/S*; do
if [ -s $f ]; then
case $f in
*.sh) . $f ;;
*) /sbin/sh $f start ;;
esac
fi
done
fi


閭e氨鍐嶈拷韙埌/etc/rc3.d涓嬮潰鍘伙紝

#cd /etc/rc3.d

K42amserver S13kdc.master S15nfs.server S34dhcp S50apache S52imq S77dmi S81volmgt S89sshd
README S14kdc S16boot.server S42amserver S50san_driverchk S76snmpdx S80mipagent S84appserv S90samba

鍝︼紝閮芥槸浜涚▼搴忔垨榪涚▼鐨勫惎鍔ㄨ剼鏈紝S寮澶存槸鍚姩鑴氭湰 K寮澶存槸鍋滄鑴氭湰銆傝繖姝f槸/sbin/rc3榪欎釜shell鑴氭湰涓瀹氱殑鎵ц鏂瑰紡銆?/font>

渚嬪錛歋90samba 浠h〃涓涓惎鍔╯amba鏈嶅姟鐨勮剼鏈紝90琛ㄧず鍚姩欏哄簭緙栧彿銆?/font> K42amserver浠h〃緇撴潫鏈嶅姟鐨勮剼鏈?/font>

rc紼嬪簭鎵ц瀹屾瘯鍚庯紝緋葷粺鐜宸茬粡璁劇疆濂戒簡錛屼笅闈㈠氨璇ョ敤鎴風櫥褰曠郴緇熶簡錛岀粓浜庣粨鏉熶簡銆?/strong>



Bluesea 2009-07-17 14:10 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              国产中文一区| 亚洲男同1069视频| 久久在线视频在线| 亚洲午夜av| 欧美在线一区二区三区| 亚洲欧美日韩综合aⅴ视频| 乱人伦精品视频在线观看| 午夜影院日韩| 久久av红桃一区二区小说| 亚洲第一久久影院| 一区二区三区视频在线观看| 久久婷婷成人综合色| 欧美成人一区二免费视频软件| 欧美一级淫片aaaaaaa视频| 一区二区三区精品视频在线观看| 国内精品久久久久影院色| 狠狠色丁香久久婷婷综合丁香| 久久久91精品国产一区二区三区| 老司机久久99久久精品播放免费| 亚洲第一区在线| 最新成人在线| 国产精品日韩电影| 亚洲无限乱码一二三四麻| 欧美在线视频a| 欧美大片va欧美在线播放| 国产亚洲综合性久久久影院| 久久久久一区| 欧美成人激情视频| 欧美日韩小视频| 久久亚洲私人国产精品va| 久久精品在线视频| 国产乱子伦一区二区三区国色天香| 亚洲欧美视频在线| 久久国产精品亚洲77777| 久久免费视频观看| 国产婷婷色综合av蜜臀av| 久久综合狠狠综合久久综合88| 亚洲精品美女在线观看播放| 欧美成人免费全部| 欧美成人午夜激情| 欧美成人r级一区二区三区| 一区在线电影| 欧美国产视频在线| 欧美视频在线观看 亚洲欧| 久久精品亚洲一区二区| 亚洲电影视频在线| 欧美日韩第一区| 欧美成人资源网| 国产乱理伦片在线观看夜一区| 欧美二区在线观看| 欧美一区二区三区视频免费播放| 亚洲丰满在线| 久久精品女人| 欧美日韩岛国| 欧美成人有码| 亚洲国产片色| 亚洲神马久久| 亚洲免费电影在线| 久久大逼视频| 美女精品一区| 欧美成人精品| 日韩亚洲欧美成人| 欧美日韩国产精品| 久久久久久国产精品mv| 免费视频一区| 欧美亚洲日本网站| 欧美激情综合五月色丁香小说| 国产美女精品| 一区二区高清视频| 亚洲在线成人| 欧美日韩1区| 亚洲视屏一区| 日韩午夜电影| 9色国产精品| 国产一区二区三区丝袜| 国产精品国产三级国产专播精品人| 亚洲激情电影在线| 欧美精品二区三区四区免费看视频| 久久久久久9| 伊人色综合久久天天五月婷| 国产伦精品一区二区三区高清| 亚洲一区二区三区高清不卡| 亚洲人成在线观看一区二区| 国产精品一区在线播放| 亚洲精品免费一区二区三区| 亚洲少妇自拍| 黄色成人小视频| 欧美中文字幕视频在线观看| 亚洲欧美国产制服动漫| 欧美日韩国产123区| 久久婷婷色综合| 亚洲资源在线观看| 欧美三区美女| 欧美ab在线视频| 久久在线免费视频| 一本久道久久综合狠狠爱| 另类天堂av| 午夜精品99久久免费| 亚洲午夜精品网| 国产色爱av资源综合区| 国产欧美在线播放| 国产女主播在线一区二区| 国产精品美女久久久久久久| 亚洲区中文字幕| 亚洲福利国产| 另类图片国产| 欧美一区二区三区啪啪| 一区二区三区鲁丝不卡| 一区二区三区日韩| 在线视频精品一区| 日韩视频在线观看免费| 欧美激情四色| 亚洲另类一区二区| 蜜臀99久久精品久久久久久软件| 亚洲色图在线视频| 欧美一区二区三区四区高清| 久久久久国产精品人| 欧美与黑人午夜性猛交久久久| 亚洲一区二区三区高清不卡| 欧美成人第一页| 欧美激情片在线观看| 久久久久综合网| 久久久久久久久久久一区| 欧美日韩在线免费观看| 国产精品高潮呻吟久久| 亚洲日本成人| 夜夜嗨av一区二区三区四区 | 亚洲中字黄色| 久久精品国产2020观看福利| 亚洲一区二区三区精品在线观看 | 国内精品久久国产| 雨宫琴音一区二区在线| 亚洲精品影视| 欧美激情小视频| 一本色道久久综合狠狠躁篇怎么玩| 亚洲综合电影一区二区三区| 亚洲欧美色婷婷| 欧美激情欧美狂野欧美精品| 亚洲精品小视频| 欧美成人综合在线| 久久精品国产第一区二区三区最新章节 | 午夜激情综合网| 免费视频亚洲| 激情综合自拍| 在线看成人片| 国产精品日韩久久久久| 亚洲午夜在线观看视频在线| 一本高清dvd不卡在线观看| 欧美sm视频| 美女久久一区| 国产一区99| 久久精品色图| 久久精品视频99| 国产精品人成在线观看免费 | 欧美色精品天天在线观看视频| 国产一区视频在线观看免费| 欧美91精品| 美女视频黄 久久| 开心色5月久久精品| 欧美专区在线| 亚洲国产精品va| 亚洲午夜激情| 国产一区清纯| 美女主播视频一区| 国产欧美一区二区三区久久人妖| 亚洲欧美色婷婷| 欧美日韩精品伦理作品在线免费观看| 亚洲视频第一页| 国产精品视频yy9099| 国产精品99久久久久久久女警| 欧美xxx成人| 久久久在线视频| 欧美理论大片| 免费成人你懂的| 国产精品一区二区男女羞羞无遮挡| 午夜久久一区| 久久精品盗摄| 久久精品久久99精品久久| 欧美肥婆在线| 亚洲精品123区| 欧美精品一区二区久久婷婷| 亚洲人成人一区二区在线观看| 狠狠噜噜久久| 亚洲欧美激情诱惑| 亚洲免费观看高清在线观看| 欧美三级在线| 一本久久综合亚洲鲁鲁| 中文国产成人精品久久一| 国产精品夫妻自拍| 午夜精品一区二区三区四区| 欧美激情a∨在线视频播放| 午夜精品成人在线| 欧美性jizz18性欧美| 欧美**人妖| 亚洲人成网站在线观看播放| 欧美日韩在线观看视频| 亚洲免费观看在线观看| 亚洲一区国产精品| 欧美视频一区二区在线观看| 香蕉成人久久|