第3章 网络访问层
第3章 网络访问层
协议和硬件
网络访问层是最神秘、最不统一的TCP/IP层,它管理为物理网络准备数据所必须的服务器与功能,包括:
- 与计算机网络适配器的连接
- 根据合适的访问方式调整数据传输
- 把数据转换为电子流或模拟脉冲的形式,以在传输介质上进行传输
- 对接收到的数据进行错误检查
- 给发送的数据添加错误检查信息,从而让接收端计算机能够对数据进行错误检查
网络访问层定义了与网络硬件交互和访问传输介质的过程。不幸的是,现实世界中存在着很多不同类型的物理网络,它们都具有自己的规范,而且都可能作为网络访问层的底层。好在网络访问层对于日常用户来说几乎是透明的。网络适配器与操作系统和协议软件的一些关键底层组件,管理与网络访问层相关的主要任务,用户只需要进行一些简单的配置步骤即可。而桌面操作系统不断完善的即插即用和自动配置特性进一步简化了这些步骤
网络访问层与OSI模型
TCP/IP网络访问层大致对应OSI的物理层和数据链路层。OSI的物理层负责把数据帧转换为适合于传输介质的比特流,也就是说,OSI物理层****管理和同步实际传输的电子或模拟脉冲。在接收端,物理层把这些脉冲重新组合为数据帧
OSI数据链路层执行两个独立的任务,相应地划分为两个子层。
- 介质访问控制(MAC):这个子层提供与网络适配器连接的接口。实际上,网络适配器驱动程序被称为MAC驱动,而网卡在工厂固化的硬件地址通常被称为MAC地址
- 逻辑链路控制(LLC):这个子层对经过 子网传递的帧 进行 错误检查 ,并且管理子网上通信设备之间的链路
网络体系
网络体系(比如以太网)具有一系列的规范来管理介质访问、物理寻址、计算机与传输介质的交互。网络体系包含对物理网络的定义,以及该物理网络上定义的通信规范。这些规范包含以下几个方面。
- 访问方法:定义了计算机如何共享传输介质的一组规则。
- 数据帧格式:来自于网际层的IP级别的数据报以预定义的格式封装为数据帧,封装在包头上的数据必须提供在物理网络上传递数据所需要的信息
- 布线类型:网络所使用的线缆类型对于其他设计参数具有一定的影响,比如适配器传递的比特流的电子特性
- 布线规则:协议、线缆类型和传输的电子特性影响着线缆的最大和最小长度、电缆连接器的规范
像线缆类型和连接器类型这样的细节问题并不是由网络访问层直接负责的,但为了设计网络访问层的软件组件,开发人员必须假定物理网络具有特定的性质。
最重要的是,网络访问层以上的协议层不必关心硬件设计问题。TCP/IP协议栈的设计保证了与硬件交互相关的细节都发生在网络访问层,使得TCP/IP能够工作于多种不同的传输介质
网络访问层包括如下一些网络体系。
- IEEE 802.3(以太网):在大多数办公室和家庭使用的基于线缆的网络
- IEEE 802.11(无线网络):在办公室、家庭和咖啡厅使用的无线网络技术
- IEEE 802.16(WiMAX):用于移动通信长距离无线连接的技术
- 点到点协议(PPP):Modem通过电话线进行连接的技术
由于网络访问层封装了传输介质的细节,因此协议栈的上层可以独立于硬件进行操作
物理寻址
前面的章节讲到,网络访问层需要把逻辑IP地址与网络适配器的固定物理地址相关联。物理地址通常也被称为MAC地址,这是因为在OSI模型中,物理寻址是由介质访问控制(MAC)子层负责的。由于物理寻址系统是封装在网络访问层中的,所以地址可以根据网络体系规范采用不同的形式。
经过局域网传递的数据帧必须使用这个物理地址来标识源适配器和目的适配器,但冗长的物理地址(以太网使用48比特地址)的可用性非常差。但是,在较高的协议层对物理地址进行编码又会破坏TCP/IP模块化带来的灵活性,因为模块化要求上层协议与物理细节无关。TCP使用地址解析协议ARP和逆向地址解析协议RARP把ip地址关联到网络适配器的物理地址。ARP和RARP为用户提供的逻辑ip地址与局域网上使用的硬件地址建立了一个对应关系。
以太网
以太网软件使用的地址并不是逻辑ip地址,但这个地址在网际层的接口上与IP地址有映射关系。在典型的以太网上,全部计算机共享同一个传输介质。以太网使用称为载波侦听多路访问/冲突检测(CSMA/CD的方法,来判断计算机何时可以把数据发送到访问介质。通过使用CSMA/CD,所有计算机都监听传输介质的状态,在传输之前等待线路空闲。如果两台计算机尝试同时发送数据,就会发生冲突,计算机就会停止发送,等待一个随机的时间间隔,然后再次尝试发送。
CSMA/CD可以比喻为一个有很多人的房间。如果有人想说话,首先要确认目前是否有人在说话(这就是载波侦听)。如果两个同时开始讲话,他们都会发现这个问题,从而停止讲话,等待一段时间再开始讲话(这就是冲突检测)。
传统以太网在中低负载情况下运行良好,但在大负载的情况下会由于冲突的增多而影响性能。在现代以太网中,像网络交换机这样的设备会对流量进行管理,减少冲突的发生,从而让以太网的运行更具效率。
剖析以太网帧
网络访问层的软件从网际层接收数据报,把它转化符合物理网络规范的形式。在以太网中,网络访问层的软件必须把数据转化成能够通过网络适配器硬件进行传输的形式。
当以太网软件从网际层接收到数据报之后,执行以下操作:
- 根据需要把网络层的数据分解成较小的块,以符合以太网帧数据段的要求。
- 把数据块打包成帧。每一帧都包含数据及其他信息,这些信息是以太网网络适配器所需要的。IEEE802.3以太网帧包含以下内容。
- 前导码:表示帧起始的一系列比特(一共8字节,最后一个字节是帧起始符)
- 目标地址:接受帧的网络适配器的6字节物理地址
- 源地址:发送帧的内容适配器的6字节物理地址
- 可选的VLAN标记:16比特字段,其目的是允许多个虚拟LAN通过同一个网络交换机运行
- 长度:两个字节,表示数据段的长度
- 数据:帧中传输的数据
- 帧校验序列(FCS):帧的4字节校验和。FCS是校验数据传输的常见方式。发送方计算帧的循环冗余码校验CRC值(检验数据帧中的数据有没有被破坏的校验和),把这个值写到帧里。接受放计算机重新计算CRC,与FCS字段的值进行比较,如果两个值不相同,就表示传输过程中发生了数据丢失或改变,这时就需要重新传输这一帧了。
- 把数据帧传递给对应于OSI模型物理层的底层组件,后者把帧转换为比特流,并且通过传输介质发送出去