我想要写一个解除HDLC、PPP封装、直接显示ip包数据帧的程序,但不知道怎么去做,求大家给个思路谢谢,后面是一些基础背景


HDLC协议及PPP协议 .
 
 在数据链路层有两个重要的协议,即HDLC协议和PPP协议。
          HDLC协议是面向比特的,而PPP协议则是面向字节的,HDLC的帧采用开头跟结尾都是01111110作为帧的边界,这样当接收方接收到一串比特的时候可以根据它来判断该帧从哪里开始,到哪里结束,但是,假如在两个标志字段之间的比特串中恰好出现了01111110比特串,那该怎么办呢,HDLC采用零比特填充法,所谓零比特填充法就是每当出现5个1的时候就给它添加一个0进去,而接收方接收到数据时凡出现5个1的时候去掉其后面一个0,这样就能很好地确定帧。
         PPP协议本来也是跟HDLC协议一样,把01111110作为边界符(一般称为标志符),但是因为PPP协议是面向字节的,所以这里不说01111110,而是说用7E作为边界符。PPP协议在同步传输链路中也是采用零比特填充法,而在异步传输链路中则采用特殊的字符填充法。
        HDLC在控制字段中提供了可靠的确认机制,因此它可以实现可靠传输,而PPP则不提供可靠传输,要靠上层实现保证其正确性,因此,曾经在误码率比较高的链路中,HDLC曾起到了极大的作用,但随着技术的发展,在数据链路层出现差错的概率不大,因此现在全世界使用得最多的数据链路层协议是PPP协议