注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

ideality

@linux c 编程@

 
 
 

日志

 
 
 
 

随想录(协议栈的基本技术)(转)  

2013-01-06 22:28:34|  分类: netfilter |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

                                            ---------from http://blog.csdn.net/feixiaoxing/article/details/7447511

【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱:feixiaoxing @163.com】


    现代数字通信技术让我们的生活发生了彻底地改变,而通信协议无疑是这一改变的始作俑者。硬件有自己的通信协议,比如pci总线、usb总线、i2c总线等 等。软件也有自己的协议栈,无线的3gpp、gprs,有线的tcp/ip协议栈、atm协议等等。基于物理层的协议,很大程度是由芯片完成的,但是涉及 到交换路由、数据传输、业务处理,则很大程度上是由软件负责的。协议栈看上去复杂,但是它所使用的技术都是一些基本技术,熟悉这些常用的技术和方法有利于 我们在后面的开发中能够高效的利用这些协议。那么,下面我们就要看看,实现协议栈需要怎样的一些基本技术。


(1)状态机

    状态机是协议栈使用最多的一种方法。当协议处于不同的状态的时候,就会对不同的报文内容作出不同的处理方法。


(2)定时器

    计时器也是协议栈经常使用的方法。通常协议本身在某段时间内需要收到对端发送的响应报文,如果没有收到报文我们就认为通信失败。因此,我们完全可以通过设定定时器的方法,在一段时间之后判断当前的报文有没有发送成功。


(3)重发机制

    因为网络的链路状态是十分复杂的,所以不同的协议对报文的响应时间是不同的。只要协议本身允许,一段时间内的重发都是可以的。


(4)校验和

    为了验证报文在传输的过程中0和1没有发生改变,在报文中添加校验和也是十分必要的。这种校验方法很多,奇偶校验、crc校验都是可以的。当然,至于具体使用哪种方法需要根据rfc标准来判断。


(5)报文排序

    在tcp/ip协议层中,ip层作用就是分片和路由的功能。我们知道有的时候发送的报文是很长的,所以有必要对这些报文进行排序处理。在传输中,我们需要确认所有的报文都能正确地得到传输和处理。


(6)字节序

    x86的cpu是高地址高数据,而powerpc是低地址高数据。而报文中的内容需要的是低地址高数据,所以在处理的时候需要十分小心。


(7)其他的基本技术

    7.1 互斥                                       传输涉及到多线程的设计

    7.2 链表                                        链表是模块设计中的基本结构

    7.3 最小生成树算法                      ospf中需要涉及到基本的图论算法

    7.4 rfc标准                                   rfc是我们一切工作的准绳

    7.5 开源软件                               开源软件可以帮助我们快速熟悉相关的开发工作

    7.6 调试日志                               调试日志有助于我们对故障快速进行定位

  评论这张
 
阅读(520)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018