最新笔试战报当前位置  当前位置:首页 > 最新笔试战报
关于协议的所属的TCP/IP层次
发布时间:2014-12-19     来源:WOLF LAB     浏览次数:

 经常听到有人会问到哪些协议属于TCP/IP或者OSI参考模型的哪一层或者工作在哪一层这样的问题,这个问题我觉得最恰当的回答是“呵 呵。。。”

因为这是个不严谨的问题,自然也得不到严谨的答案。

 

先来决定下如何定义某个协议属于TCP/IP的哪一层,我们以一个WEB访问的数据包为例来看看

 

 

003.png

 

大致看一下,可能觉得这是一目了然的:

 

以太网ETHERNETII,必然这就是工作在data-link层,区分二层帧头的格式的协议都属于DATA-LINK层,TCP/IP的视角就是network_access层;

IP协议,它利用了ETHERNETII的一个类型0X0800,显然工作在DATA-LINK之上,IP协议就是NETWORK层协议

TCP协议呢?它使用IP的一个协议号6,显然工作在NETWORK层上,我们称TCP为传输层协议。

HTTP协议,使用的是传输层协议TCP的端口号80,显然工作在传输层之上,我们称HTTP为应用层协议

 

那么实际上区分协议的层次就是看它到底在利用下面哪一层来确定。

 

IP利用data-link层,如果data-link是以太网,IP的类型就是0X0800IP工作在DATA-LINK之上,IP就是网络层;TCP利用IP协议号6,它工作在network层之上,TCP就是传输层;HTTP利用TCP的端口号,它工作在传输层TCP之上,HTTP就是应用层协议了。

 

咱们来看看其他一些常见路由协议的例子,看看这个定义够不够好

 

看看 EIGRP/OSPF 这些路由协议的结构:

 

004.png

 

 

005.png

 

路由协议EIGRPOSPF都使用了IP 协议号,工作在第四层,但是很显然,它们不能被算成传输层协议。严格来说传输层只有两个协议是为上层应用做基础的,就是TCP(协议号6)UDP (协议号17)。

那么EIGRPOSPF最后被算到哪一层呢?实际上它们也被算作了网络层(network),我们把它们理解成为network层提供服务的一种特殊协议,因为路由协议最终的目的显然是为了让IP层(network层)能把那些有效的应用数据“路由”到最终的目的地址,路由协议被看成为network层提供服务的协议。

 

说到这,那大家都会认为路由协议都会被看成网络层协议了?其实不然,再看看RIPBGP呢?

 

006.png

 

RIP 使用UDP 520

 

007.png

 

BGP使用TCP端口179

 

这俩路由协议虽然设计目的和应用是为了传递路由,和OSPF/EIGRP一样,但是它们没有直接工作在network层之上(没有IP的协议号),而是工作在传输层之上,和HTTP/SMTP/FTP一样都有传输层的端口号来提供服务,结果这俩协议不被认为是网络层协议而是应用层协议

 

看到这,你就应该明白为什么当被问到各种协议属于哪一层时候,我只能“呵 呵”了,正确的问法应该是问,某个协议的包结构是如何封装的,而不是去问它属于哪一层。

 

 

008.png

 

 

ICMP 被设计用来检测NETWORKIP协议的可达性和性能测试、故障报告,从设计角度看,这个协议为IP层提供服务,类似OSPF,EIGRPIP层提供路由信息,这样这个协议也算network层;从包的封装角度看呢?ICMP跑在IP层之上,使用IP的协议号1,看起来显然是第四层协议,当然没人把ICMP看成传输层协议,ICMP被认为是网络层协议

 

 

009.png

 

 

这俩协议放一起看就更明显, ARPnetwork层,因为它位于DATA-LINK之上有TYPE类型0X0806ICMP,虽然位于IP层之上,但是仍然算network层,因为它为IP层提供了更多功能和测试能力;

 

 

 文/图:南京Wolf-lab 刘汉文

 

 

点击下载:关于协议的所属的TCP/IP层次
< 上一篇          返回目录          下一篇 >
相关文章

在线咨询