Linux PPP Êý¾ÝÊÕ·¢Á÷³Ì
Linux PPP Êý¾ÝÊÕ·¢Á÷³Ì
×ªÔØÊ±Çë×¢Ã÷³ö´¦ºÍ×÷ÕßÁªÏµ·½Ê½£ºhttp://blog.csdn.net/absurd
×÷ÕßÁªÏµ·½Ê½£ºÀîÏȾ²<xianjimli at hotmail dot com>
¸üÐÂʱ¼ä£º2007-5-4
PPP£¨Point-to-Point£©ÌṩÁËÒ»ÖÖ±ê×¼µÄ·½·¨ÔÚµã¶ÔµãµÄÁ¬½ÓÉÏ´«Êä¶àÖÖÐÒéÊý¾Ý°ü£¬Ëü×î³£¼ûµÄÓÃ;¿ÉÄÜÊÇ´«Í³µÄ²¦ºÅÉÏÍøÁË(¾Ý˵ÏÖÔÚµÄ¿í´ø½ÓÈëÒ²ÓвÉÓÃPPPOE·½Ê½µÄ)¡£ÔÚLinux Mobile PhoneÉÏ£¬ÍøÂçÓ¦ÓóÌÐòʹÓÃPPP×÷ΪÓëGSMÄ£×éÖ®¼äµÄͨÐÅÐÒ飬×î½üÓöµ½ÁËÒ»µã¹ØÓÚPPPµÄÂé·³£¬ËùÒÔ»¨Á˵ãʱ¼äÈ¥Ñо¿Ëü¡£
PPPÐÒé¿Ï¶¨²»ÊÇ×ÔÓµÄÍøÂçÐÒ飬²»¹ýpppd¡¢chat¡¢tty¡¢socket¡¢ccp¡¢chap¡¢pap¡¢eap¡¢ecp¡¢ipcpºÍºÜ¶àÆäËü¸ÅÄî½ÁÔÚÒ»ÆðÖ®ºó£¬Ë¶¼»á±»¸ãµÃÔÎͷתÏò¡£ÎÒ¹ØÐĵįäʵÊÇPPPÐÒéÖи÷¸öʵÌåÖ®¼äµÄÐ×÷¹ØÏµ£¬¶ø²»ÊÇÐÒéµÄ״̬ת»»»òÕß·þÎñµÄÅäÖã¬ÓÉÓÚûÓÐÕÒµ½Õâ·½ÃæµÄ×ÊÁÏ£¬Ö»ºÃÈ¥¶ÁRFC£¬Äںˡ¢pppdºÍÒ»Ð©ÍøÂ繤¾ßµÄ´úÂë¡£
PPPÐÒéÌṩÁ½¸öʵÌåÖ®¼äµÄÊý¾ÝÁ´Â·Á¬½ÓµÄ½¨Á¢¡¢Î¬³ÖºÍÊÍ·Å£¬¸ºÔðÁ÷Á¿ºÍ²î´í¿ØÖƵȵȹ¦ÄÜ£¬ËùÒÔËüÓ¦¸ÃÊÇÊôÓÚÊý¾ÝÁ´Â·²ãÐÒéµÄ¡£
PPPÐÒéÖ®ÏÂÊÇÒÔÌ«ÍøºÍ´®¿ÚµÈÎïÀí²ã£¬Ö®ÉÏÊÇIPÐÒéµÈÍøÂç²ã¡£ÕâÀ¶ÔÓÚϲ㣬ÎÒÃÇÖ»ÌÖÂÛ´®¿ÚµÄÇé¿ö£¬¶ÔÓÚÉϲ㣬ÎÒÃÇÖ»ÌÖÂÛTCP/IPµÄÇé¿ö¡£·¢ËÍʱ£¬TCP/IPÊý¾Ý°ü¾¹ýPPP´ò°üÖ®ºó¾¹ý´®¿Ú·¢ËÍ¡£½ÓÊÕʱ£¬´Ó´®¿ÚÉÏÀ´µÄÊý¾Ý¾PPP½â°üÖ®ºóÉϱ¨¸øTCP/IPÐÒé²ã¡£
ÍøÂçÐÒéÊÇ·Ö²ãʵÏֵģ¬ÉϲãÒ»°ãÖ»ÐèÒªÖªµÀÆäÖ±½Óϲ㣬ֻÓÐÔÚ¼«ÉÙÊý¾ÝÇé¿ö²ÅʹÓüä½ÓϲãµÄ½Ó¿Ú¡£±ÈÈ磬²ÊÐÅ¡¢ä¯ÀÀÆ÷ºÍÓʼþµÈÓ¦ÓóÌÐòʹÓÃsocket½Ó¿Ú±à³Ì£¬ËüÃÇÖ»ÐèÒªÖªµÀTCP/IPÐÒ飬¶øÎÞÐèÒªÖªµÀPPPÐÒéµÄ´æÔÚ¡£ÕâÖÖ·Ö²ãÉè¼Æ¼ò»¯ÁËÐÒéµÄʵÏÖºÍÓ¦ÓóÌÐòµÄ¿ª·¢¡£
ÎÊÌâÀ´ÁË£ºPPPÐÒé²»Ö»ÊÇÌṩÁ˼òµ¥µÄÊý¾ÝÁ´Â·²ã¹¦ÄÜ£¬Ëü»¹ÌṩÁËÖîÈç¼øÈ¨(ÈçPAP/CHAP)£¬Êý¾ÝѹËõ/½âѹ(ÈçCCP)ºÍÊý¾Ý¼ÓÃÜ/½âÃÜ£¨ÈçECP£©µÈÀ©Õ¹¹¦ÄÜ¡£Ó¦ÓóÌÐòÒªÇóʹÓÃ͸Ã÷»¯£¬²»¹ØÐÄÕâЩÀ©Õ¹¹¦ÄܵĴæÔÚ£¬¶ø·´¹ýÀ´£¬PPPÐÒé´¦ÀíÄ£¿é±¾ÉíÓÖÎÞ·¨´¦ÀíÕâЩ²ßÂÔÐԵĶ«Î÷£¬ÒòΪËü²»ÖªµÀÓû§Ãû/ÃÜÂ룬²»ÖªµÀÊÇ·ñÒª½øÐÐѹËõ£¬²»ÖªµÀÊÇ·ñÒª½øÐмÓÃÜ¡£
Ôõô°ì£¿ÈçºÎÔÚ¶ÔÓ¦ÓóÌÐò͸Ã÷µÄÇé¿öÏÂʹÓÃÀ©Õ¹¹¦ÄÜÄØ£¿ÉϵÛ˵£¬Õâ¸öÎÊÌâ±ØÐë½â¾ö£¡ÓÚÊÇpppd¾Í³öÏÖÁË¡£pppdÊÇÒ»¸öºǫ́·þÎñ½ø³Ì(daemon)£¬ÊÇÒ»¸öÓû§¿Õ¼äµÄ½ø
Ïà¹ØÎĵµ£º
×ܾõµÃÔÚITÐÐÒµÀï»ì£¬Ñ§±à³ÌÓïÑÔҪѧϰC²ÅÏñÑù£¬¿ª·¢ÒªÔÚLinuxϲÅÄÜ·¢»ÓºÃ£¬ºÇºÇ£¬Ëæ¿Ú˵µÄ£¬²»¹ý¸öÈËÈÏΪÏëÉîÈëµÄѧϰ¼ÆËã»ú֪ʶ£¬»¹ÊÇÓ¦¸ÃѧϰLinux²Ù×÷ϵͳ£¬ËùÒÔ´Ó½ñÌ쿪ʼÿÌì³é³öÒ»¸öСʱѧϰ£¬ÔÚ´Ë×öһЩѧϰ¼Ç¼£¬ÒÔ¹©ÒÔºó²éѯ×ܽᡣ
½ñÌìÊǰ²×°£¬ÊÇÔÚVMwareϰ²×°µÄRed hat 9,°²×°Ï൱˳³©£¬Ò»Â·nextÏÂÈ¥£¬¾ÍOKÁ ......
LinuxÐźÅÁ¿ ¹²ÏíÄÚ´æºÍÏûÏ¢¶ÓÁÐ
1. ÐźÅÁ¿
ʹÓÃÐźÅÁ¿¿ÉÒÔʵÏÖ½ø³Ì¼äͬ²½¡£Ö÷Òªº¯Êý¶¨Ò壺
#include <sys/sem.h>
int semctl(int sem_id, int sem_num, int command, …);
int semget(key_t key, int num_sems, int sem_flags);
int semop(int sem_id, struct sembuf *sem_ops, size_t num_sem_ops);
& ......
<1> ÈÎÎñ0µÄ¶ÑÕ»ÎÊÌâ
Ò»Ö±²»Ã÷°×schedule.cÀïµÄtask_unionµÄstackºÍuser_stackÊÇʲô¹ØÏµ£¬head.sÀï¾ÍÉèÖÃÁËespÖ¸Ïòuser_stack, ȴһֱûÓÐÓõ½task_union£¬Ö±µ½¿´µ½INIT_TASK²ÅÃ÷°×£¬´Ó½øÈë±£»¤Ä£Ê½µ½Ìø×ª½øÓû§Ì¬¶¼ÊÇÓõÄuser_stackÕâ¸öÕ»£¬¶øÈÎÎñ0µÄtssÖеÄesp0Ö¸Ïòtask_unionµÄstack, Ò²¾ÍÊǵ±ÈÎÎñ0ÔÙÌø×ª½øÄÚºË ......