- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ppp发送ppp发送
PPP帧的发送1) IP包被传递到到路由结构的目的驱动入口, 进入硬件层投送. 对于点对点物理连接来说, 硬件帧头和硬件地址解析都是不需要的. 对于PPP网络设备来说, 其hard_header操作初始化后为空, 在建立路由目的驱动设备时, 使用arp_direct_ops操作表, IP包被直接传递给发射包排队器(dev_queue_xmit).2) IP包头部添加2字节PPP类型码(PPP_IP)后就成为PPP帧, PPP_IP帧在传输之前, 可以变换成各种压缩的PPP帧. 常用的压缩帧类型有VJ帧头压缩(PPP_VJC_COMP, PPP_VJC_UNCOMP)和数据压缩(PPP_COMP). VJ帧头压缩利用TCPIP连接的上下文, 可以将40字节的TCPIP头标压缩到只有几个字节, 特别适用于要求实时响应的telnet应用. PPP帧数据压缩使用词典压缩算法(LZW), PPP驱动程序提供了bsd_comp和ppp_deflate两种压缩解压模块. 可以对VJ帧头压缩帧继续进行数据压缩. 3) PPP帧被通道设备编码成异步传输流. 通道设备使用256位的异步传输转义位图(xaccm)对PPP帧中的特殊字符进行转义处理, 转义字符为PPP_ESCAPE(0x7d), 转义编码完成后, PPP帧的16位CRC校验码被添加到输出流未尾, 最后添加PPP_FLAG(0x7e)特殊字符作为PPP帧流的分隔符. 4) PPP协议使用压缩控制帧(PPP_CCP)来协调对端压缩解压器状态, PPP_CCP帧包含4字节CCP头标和可选的参数区构成. PPP接口单元监视进出的PPP_CCP帧用来关闭(CCP_CONFREQ, CCP_TERMREQ, CCP_TERMACK), 打开(CCP_CONFACK), 复位(CCP_RESETACK)压缩解压器. 5) PPP协议使用链路控制帧(PPP_LCP)来协调对端传输通道的参数, PPP_LCP帧结构PPP_CCP帧结构类似, PPP通道设备监视进出的PPP_LCP帧的CONFREQ和CONFACK两种类型, 用来同步自已的最大接收单元(MRU), 最大发送单元(MTU), 控制字符接收转义位图(raccm), 控制字符发送转义位图(xaccm[0]). /* * Network protocols we support. */#define NP_IP 0 /* Internet Protocol V4 */#define NP_IPV6 1 /* Internet Protocol V6 */#define NP_IPX 2 /* IPX protocol */#define NP_AT 3 /* Appletalk protocol */#define NUM_NP 4 /* Number of NPs. */#define MPHDRLEN 6 /* multilink protocol header length */#define MPHDRLEN_SSN 4 /* ditto with short sequence numbers */#define MIN_FRAG_SIZE 64* * The basic PPP frame. */#define PPP_HDRLEN 4 /* octets for standard ppp header */#define PPP_FCSLEN 2 /* octets for FCS */#define PPP_MRU 1500 /* default MRU = max length of info field */#define PPP_ADDRESS(p) (((__u8 *)(p))[0])#define PPP_CONTROL(p) (((__u8 *)(p))[1])#define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] 8) + ((__u8 *)(p))[3])/* * Significant octet values. */#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */#define PPP_UI 0x03 /* Unnumbered Information */#define PPP_FLAG 0x7e /* Flag Sequence */#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */#define PPP_TRANS 0x20 /*
文档评论(0)