网站大量收购闲置独家精品文档,联系QQ:2885784924

ppp发送ppp发送.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

cduutang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档