网络协议分析
文章目录
- 前言
- 一、计算机网络总体结构
- 1.网络分层
- 2 计算机网络中的重要概念
- 3 网络的运作过程
- 4 网络各层协议
- 二、数据链路层
- 1.以太网帧格式
- 2 交换机
- 3 PPP协议
- 3.1 PPP帧格式
- 3.2 PPP协议的工作状态
- 3.3 PPPoE
- 4 虚拟局域网VLAN
- 4.1 大规模局域网的问题
- 4.2 虚拟局域网VLAN
- 5 小型校园网的物理层与数据链路层的解决方案
- 总结
前言
网络协议十分重要,在各种关于安全以及开发的学习中,协议往往扮演重要角色,学习者对其的理解程度往往反映着其对底层应用的程度,也决定着其在面对各种问题所站的高度,所以协议分析不可谓不重要。
一、计算机网络总体结构
1.网络分层
1.物理层(physical layer) 物理层的任务就是传输位流。 2.数据链路层(data link layer)mac 数据链路层的任务是负责相邻结点间的通信。 3.网络层(network layer)ip 网络层的任务是为数据在网络中选择一条合适的路径。 4.运输层(transport layer)ip 端口号 运输层的任务是负责不同计算机中两个进程间的通信。 5.应用层(application layer) 应用层就是为了让用户能够使用网络,如浏览网页、QQ聊天、收发电子邮件。
2 计算机网络中的重要概念
1.实体(entity) 实体指计算机网络中参与发送或接收数据的硬件或软件进程。不同的层有不同的实体,位于不同计算机中同一层内的实体称为对等实体。 2.服务(service) 下层实体提供给上层实体使用的功能称为服务。服务通常通过函数调用来实现。 3.协议(protocol) 协议规定了两个对等实体进行通信时的数据格式,以及在收发数据时及其他事件发生时应进行的操作。既然协议是控制对等实体的,那么一个协议必然位于某一层内,不同的层内有不同的协议。因特网有两个最重要的协议TCP与IP,因此因特网的体系结构才称为TCP/IP体系结构。 有的协议非常简单,有的则非常复杂。很多复杂协议之所以复杂,是因为要对很多非正常情况进行处理,此时工作量远远超过了处理正常情况的工作量。 4.协议数据单元(protocol data unit,PDU) 每层实体都有自己处理数据的单位。这种某层实体处理数据的单位称为该层的协议数据单元。PDU通常分为首部与数据两部分。 5.封装与拆封(encapsulation and decapsulation) 在上层实体交付的PDU外面加上首部形成本层PDU的过程称为封装。去掉本层PDU首部从而得到上层PDU的过程称为拆封或解封装。某层的接收实体只查看本层PDU的首部,这个首部则是发送方的同层对等实体加上的。 6.复用与分用 运输层中的复用与分用:
其他层也有这个问题:某层可能有多个实体,下层向其提交数据时,应该给哪个实体?需要PDU首部中的一个字段加以区分。
3 网络的运作过程
计算机具有全部5层实体,工作过程容易理解。网络设备如何工作呢? “集线器工作在物理层;交换机工作在数据链路层;路由器工作在网络层”的确切意思是指该设备会查看该层及其下面其他层的PDU的首部。路由器的工作原理:
4 网络各层协议
二、数据链路层
1.以太网帧格式
前同步码长度8字节,内容是固定的,前7个字节都是10101010,最后一个字节是10101011。前同步码的作用是使接收方网卡的接收频率与发送方网卡的发送频率精确一致,这称为同步。 地址是物理地址,或称为MAC地址,或称为硬件地址,48位。全为1则是广播地址。 类型字段:用以实现复用与分用,说明数据字段是网络层什么协议的协议数据单元。例如:IP数据报0x0800,ARP数据0x0806。 数据少于46字节,则需要填充。 循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
2 交换机
以太网早期使用网桥,实际就是2接口的交换机,现在则使用交换机。它工作在数据链路层,关键是它接收数据后,并不向所有其他接口转发,只向特定接口转发。这如何实现?需要转发表,如下图所示。交换机与集线器合作,缩小了碰撞域,减少了碰撞,提高了效率。
这里的关键是转发表如何产生,管理员手工输入不现实,有必要让交换机自动生成这个表。交换机刚开机时转发表是空的,当交换机收到一个帧时,它查看帧中的源物理地址,把它与相应的接口填到转发表中。如上图所示。这一过程叫做交换机的自学习。 转发表中查不到目的物理地址时如何转发?对策是向接收接口外的其他所有接口转发,这种情况的持续时间不会长,因为转发表很快就会填满。最后一个问题是如果计算机更换了网卡,物理地址变了,这会在转发表中产生一个新行,旧的那一行却会长期留在转发表中。转发表中增加了第3列,记录这一行产生的时间,一段时间后,如果一直没有收到以该行地址为源物理地址的帧,就删除这一行。 现在通常只使用交换机,不再使用网桥与集线器,这时不会再有碰撞,可以无碰撞地传输数据。交换机通常是存储转发的,但也有直通的,好处是效率高,缺点是无法进行CRC校验,可能会转发出有错的帧。现在有些交换机已经具有路由器的部分功能,叫做三层交换机,只能工作在数据链路层的则叫做二层交换机,或是链路层交换机。 无论是集线器,还是网桥与交换机,网络一定是树型结构,不能有环路。否则帧可能沿环路无休止地绕圈子,某些交换机甚至不能正常工作。很多交换机可以使用生成树协议来消除环路。
3 PPP协议
3.1 PPP帧格式
首尾的标志长度1字节,是一个帧的开始标志,值是01111110。地址长度1字节,固定为11111111,点对点链路并不需要地址,至今仍未使用。控制长度1字节,固定为00000011,至今仍未使用。 协议长度2字节,用以实现复用与分用,说明数据字段是网络层什么协议的协议数据单元。例如0x0021说明数据字段是IP协议的协议数据单元,PPP协议实体就把数据交给IP协议实体。数据是不定长的,但不能超过1500字节。CRC长度2字节,发现差错时,PPP丢弃这一帧,不交给网络层实体,但是PPP并不改正这个差错。 为实现透明传输,PPP可以使用字节填充转义字符为0x7D**,若在数据部分中发现开始与结束标志,则在其前面插入0x7D,若在数据部分中发现0x7D,则在其前面也插入0x7D。接收时删除0x7D,以还原数据。PPP还可以使用零比特填充:发送方在数据部分中**只要发现5个连续1,就插入一个0,**保证不会出现6个连续1;接收方则在数据部分中只要发现5个连续1,就删除后面跟着的一个0,以还原数据。
3.2 PPP协议的工作状态
PPP的开始与结束都是静止状态。在建立状态,通信双方会协商一些选项,这需要链路控制协议LCP。在鉴别状态将对通信双方的身份进行鉴别,这是可选的。网络层配置状态可以对网络层的协议进行配置,如动态分配IP地址,这需要网络控制协议(NCP)。在打开状态,PPP开始传输网络层的协议数据单元。所有数据传输完毕,PPP就进入终止状态,利用子协议LCP,通信双方交换一些控制信息,结束本次通信过程,然后转入静止状态。LCP与NCP的PDU封装在PPP帧中传输。PPP是面向连接的协议。
3.3 PPPoE
以太网缺乏管理功能,但PPP协议具有强大的管理功能,PPP可以使用用户名与口令鉴别用户的身份,还可以对网络层的协议进行配置,如动态分配IP地址,利用PPP还可以实现记录上网时间与流量等更复杂的功能。 利用PPP管理以太网接入 ** 是一个好办法,但PPP是数据链路层的协议** , 以太网包括物理层与数据链路层的内容,二者如何协同工作呢?PPPoE可以做到这一点。PPPoE由RFC 2516定义,是PPP与以太网的结合体,IP数据报先封装在PPP帧中,PPP帧再封装在以太网帧中,如下图所示,PPP运行在以太网上层,所以叫做PPPoE。
4 虚拟局域网VLAN
4.1 大规模局域网的问题
当一个以太网规模过大时,会产生很多问题。最严重的是广播问题,可能导致严重的广播风暴。网络效率会明显下降。很多病毒也利用了广播帧,如流行的ARP欺骗病毒。虽然广播帧有很多用处,但对于一个具体的广播帧,并不一定每台计算机都需要,可能仅一部分计算机需要。发生这一问题的根源是广播域(若干计算机的集合,其中一台计算机发送广播帧,其他所有计算机都能收到)过大,一个广播域通常被认为是一个网络,不同的广播域则是不同的网络。应该把一个大的广播域划分为若干个小的广播域,也就是把一个大网络划分为若干个小网络。 使用路由器可以划分广播域,把一个大型网络分为几部分,路由器不转发广播帧,从而减小了广播域。一般认为路由器连接的是不同的网络,而交换机连接的是同一网络,所以这相当于把一个大的局域网物理上划分为几个小的局域网。与交换机相比,路由器价格较高、管理与维护复杂,而且同等价格下速率比交换机慢,用路由器划分广播域显然不是一个好办法。 除广播问题外,以太网的管理也很困难。例子如下图所示,如果想阻止计算机A与计算机D通信,一个办法是断开交换机1与交换机5的连线,这实际上是把一个局域网分割为互不连通的几个局域网。另一个办法是在交换机1上做一些设置,也可以阻止计算机A与计算机D通信。但是如果计算机A移动了位置,距离交换机3更近,需要就近连接到交换机3上,就必须在交换机3上再做同样的设置,或者是拉一根长线,仍把计算机连接到交换机1上。
4.2 虚拟局域网VLAN
先搞清楚“虚拟”在计算机世界中的含义,逻辑与物理这两个词也经常使用。逻辑与虚拟类似,物理与真实类似。1996年3月,IEEE发布了虚拟局域网(Virtual LAN,VLAN)标准IEEE 802.1Q。在有VLAN功能的交换机上经过设置,可以把一个局域网划分为若干个VLAN。VLAN间能否相互通信可通过设置决定,不过广播帧是不能在VLAN间转发的。整个网络没有使用路由器,物理上还是一个局域网,但每个VLAN看起来都是一个独立的局域网,所以叫做虚拟局域网。 利用二层交换机划分VLAN时,VLAN间无法相互通信,必须增加一台路由器。更简单同时效率也更高的办法是利用三层交换机划分VLAN,利用三层交换机的路由器功能就能使VLAN间相互通信。 利用VLAN可以方便地划分广播域。根据上面的管理例子,利用VLAN还可以很方便地管理以太网,VLAN的划分可以做到与计算机所在的物理位置无关,将计算机A与计算机D划分到不同VLAN,即使计算机A与交换机1断开,连结到交换机4上,这时不需做任何修改,计算机A仍属于原来VLAN,还是不能与计算机D通信。 怎样把一台计算机划入某个VLAN呢?一是利用交换机接口划分VLAN,简单容易实现,但灵活性不好,一台计算机移动到另一个新接口时,如果新接口与旧接口属于不同的VLAN,这个计算机就不能再属于旧VLAN了。二是利用计算机物理地址划分VLAN,不论计算机在网络中怎样移动,只要其物理地址保持不变,该计算机就始终属于某个VLAN,不需要重新配置,但在一个大型网络中,管理员把每个物理地址一一划分到VLAN中,是十分繁琐的。三是利用计算机IP地址划分VLAN,这种方法的优点与利用物理地址划分VLAN类似,它的缺点是效率低,因为查看IP地址比查看物理地址更费时间。 划分VLAN时为每个VLAN分配一个整数,这个整数就是VLAN的标识符,不同的整数代表了不同的VLAN。为了实现VLAN功能,VLAN帧与标准的以太网帧有所不同,VLAN帧在以太网帧的首部中增加了一个字段,该字段包含了VLAN的标识符,如下图所示。
5 小型校园网的物理层与数据链路层的解决方案
局域网自然选用以太网,设备全部使用交换机,不使用集线器。由于计算机很多,星型拓扑结构是不行的,必须采用树型拓扑结构,位于办公楼的学院网络中心是校园网的管理机构,树型拓扑结构的根置于此处,同时也从此处接入互联网。 数据传输速率方面,一般计算机上使用100Mbps网卡就可以了,服务器则采用1 000Mbps网卡。由于10Gbps的设备价格比1000Mbps的设备贵很多,所以楼间光纤使用1 000Mbps速率,没有必要使用10Gbps速率,以后有必要时可以升级到10Gbps,升级很容易,光纤不需要动,只需更换交换机即可。校园网的总体结构如下图所示。
校园网内计算机数量众多,若只设一个网络,则广播域太大,同时管理也不方便。利用路由器可以把校园网划分为不同的网络,但与交换机相比,路由器价格较高、管理与维护复杂,而且速率比交换机慢。所以不应使用路由器划分网络,可以利用三层交换机与VLAN技术,把校园网划分为多个VLAN。
每个房间设一个网线插座,称为信息点,若要连入更多计算机,用户可以自行安装简易的交换机。每层楼设一台二层交换机,每座楼设一台三层交换机,交换机的接口数根据信息点数量确定。连接方法是信息点连至本层的二层交换机,二层交换机连至本楼的三层交换机,三层交换机再连至网络中心。图书馆的阅览室与办公楼的会议室各设两台无线AP,AP连入本层的二层交换机。
三层交换机启用VLAN功能,把每一层楼划分为不同的VLAN,并设置为允许不同VLAN间相互通信。某座楼内网络的结构如下图所示,其中二层交换机有100Mbps接口,也要有1 000Mbps接口,三层交换机则全部是1 000Mbps接口。
总结
两节课,重新学习了计算机网络的物理层,链路层,感觉更清晰了。
比如,链路层就是服务网络层的 他把ip数据包进行一个包装,加头加尾,弄上mac地址,用arp建立一个路由表,搞清楚发到哪个端口哪个电脑就ok了
而总之,一步步封装数据到达网络层,再也就是扔给路由器路由器来回根据ip找路发给目标网络,目标网络得到网络层的数据包应该是一个很大的封装的玩意,最里面是ip等等的信息吧,然后一步一步拆开