TCP/IP协议的分层(4)

2009年04月7号 21:15  |  分类:协议基础

上一讲,提出的问题,大家都有答案了吗?

分层的最大优点,个人认为主要体现在“扩展开发”方面!如果不分层,大家可以想象,一个数据帧通过网络从A机传送到B机,进入B机的链路层,最终到达B机的应用层,中途就没有任何对数据进行“深层次加工”的机会!

例如:防火墙。防火墙一般分为

1、二层防火墙

2、三层防火墙

二层防火墙是对MAC地址进行处理,三层防火墙是对IP地址进行处理!如果TCP/IP协议不分层,防火墙如何截取并处理数据包中的MAC和IP地址?就更谈不上开发单层防火墙(根据产品定位而言,当然也可以做多层防火墙)。因为,有些时候要求防火墙,仅提供简单的防护功能。例如:家用型防火墙,PC机直接与电信运营商的设备相连(ADSL上网方式),防火墙就没必要有二层的防护功能!

再举个例子:

NAT软件,如果TCP/IP不分层,NAT软件就没可能实现修改IP数据包源地址(什么是源地址,我们以后会详解)的功能!从而达到,一个公网IP供多个私网IP上INTERNET的目的!

分层,从编程的角度看,就是代码的模块化。

分层的知识,我们就讨论这么多,下一讲,我们开始分析“链路层”!

TCP/IP协议的分层(3)

2009年02月26号 01:58  |  分类:协议基础

    OK,让我们继续讲“封装”,上一篇文章,我们提到数据段被传输到了传输层,MSN的程序开发者使用的TCP协议。TCP协议接收到这个数据段后,仍然会对该数据段加入自己的相应首部、打包生成数据报,并把该数据报继续向下传输,数据报来到网络层。网络层中对该数据报进行处理的协议是IP协议,该数据报被加入IP首部变为数据包,IP协议仍然会把该数据包向下传输,进入链路层。链路层中的相应协议(这里用“相应协议”取代具体协议名称的原因,以后会解释)处理完该数据包后会把这些数据传送给网络接口驱动,最终变为一系列数据帧传向网络。这就是,“封装”的整个过程!

 

现在,大家知道了TCP/IP协议的封装过程!提一个问题,大家先思考一下,下一讲小弟会做出解释:

 

1、  为什么TCP/IP协议对用户数据采取这种逐步加工的形式,不使用一个协议完成所有的封装的工作?

TCP/IP协议的分层(2)

2009年02月23号 01:06  |  分类:协议基础
    分层的好处是什么呢?小弟是这么认为的,首先,我们从”学习TCP/IP协议”的角度看这个问题,把不同的协议归于不同的层次之中,这便于理解,为什么这么说呢?要明白这一点,我们就要知道另一个术语”封装”!先把封装的过程图贴出来,我们再解释,请看下图:

TCP/IP封装 

 

TCP/IP的层次划分,很大程度上是按照”用户数据”的走向而定的,用户数据分为两种:

 

  • 1. 需要网络传输的用户数据,例如:由网络游戏产生的数据(网络游戏可以看作是一个网络进程)。
  • 2. 不需要网络传输的用户数据,例如:由单机游戏产生的数据。

 

这里,我们只对需要网络传输的数据感兴趣!数据的走向,又分为两种:

 

  • 1. 由网络进程走向网络
  • 2. 由网络走向网络进程

 

    上图,就为”由网络进程走向网络”!网络进程工作在应用层,进程从输入设备接收用户的指示例如:用户通过键盘输入了一定信息给MSN这个程序(MSN如何精确的从键盘捕获到这些数据,这个过程,不属于协议研究的范围,感兴趣的朋友,请研究”WINDOWS的消息机制”。)。MSN进程捕获到这一系列数据后就会在这些数据的前端加入自己的相应信息,这段信息叫做:协议首部,这就是所谓的封装或者打包。并将这个数据段(不再叫用户数据)下传到传输层,前面我们已经说过,传输层包含两个协议:TCP和UDP。至于使用哪一个协议,这是根据MSN开发人员的设计而定的。TCP和UDP的区别,在这里,我们只要求大家知道,不用理解,以后,我们会详加分析!

 

TCP:面向连接、可靠的协议

UDP:无连接、不可靠协议

 

未完待续。。。。

TCP/IP协议的分层

2009年02月21号 00:47  |  分类:协议基础
 
 

      在”什么是TCP/IP协议”这篇文章中,我们初略的提到TCP/IP协议也有一个理论上的分层定义,如下图:

Tcp/ip协议层次图 

 TCP/IP协议体系中的各个协议,被人们按其自身的功能差异性和相似性分别归入了链路层、网络层、传输层中。例如:

 

链路层包含:ARP、RARP、硬件接口

网络层:IGMP、IP、ICMP

传输层:TCP、UDP

 

      强调一点,不管是OSI参考模型还是TCP/IP协议抽象层次,都是由下往上看的。最下的层次为第一层,依次往上数,区别在于TCP/IP只有四层。由于小弟研究TCP/IP协议,不是从代码的角度去研究的,因此不敢说TCP/IP中的链路层就是OSI中的物理层与链路层的浓缩,同样,TCP/IP中的应用层就完全等于OSI中的会话层+表示层+应用层。这一点,需要看完《TCP/IP详解:第二卷》的朋友,指教!

       以上,为什么没有提到TCP/IP中的应用层呢?应用层中工作的是用户进程,不是协议。对于用户进程的精确定义,需要大家向Google和百度请教,这是程序开发领域的术语!通俗的说,QQ、迅雷、PPLIVE都是用户进程,而且是网络进程,这些进程会产生,需要网络传输的用户数据。未完待续。。。。