华为HCIA路由交换认证指南

978-7-115-57173-1
作者: 韩立刚薛中伟宋晓锋郑汉钦
译者:
编辑: 武晓燕

图书目录:

详情

本书是针对HCIA最新考试大纲编写的认证教材。全书共分为15章,首先介绍了计算机网络的产生和演进、计算机通信使用的协议、IP地址和子网划分等内容;然后介绍了使用华为设备进行企业组网的基本技术,包括路由器和交换机的基本配置、IP地址的规划、静态路由和动态路由的配置、使用交换机进行组网等内容;最后讲解了高级网络技术,其中涉及网络安全的实现、网络地址转换和端口映射、将路由器配置为DHCP服务器以实现IP地址的自动分配,以及IPv6、广域网、VPN、无线局域网等相关知识;第15章园区网典型组网案例将企业组网的技术进行了综合运用。 本书以理论知识为铺垫,重点凸显内容的实用性,旨在通过以练代学的方式提升读者的理论水平和实操能力。本书除了适合备考华为HCIA认证的人员阅读,还适合有志于投身于网络技术领域的新人阅读,也适合开设了网络专业课程的高校师生阅读。

图书摘要

版权信息

书名:华为HCIA路由交换认证指南

ISBN:978-7-115-57173-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。


著    韩立刚 薛中伟 宋晓锋 郑汉钦

责任编辑 武晓燕

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


本书是针对HCIA最新考试大纲编写的认证教材。全书共分为15章,首先介绍了计算机网络的产生和演进、计算机通信使用的协议、IP地址和子网划分等内容;然后介绍了使用华为设备进行企业组网的基本技术,包括路由器和交换机的基本配置、IP地址的规划、静态路由和动态路由的配置、使用交换机进行组网等内容;最后讲解了高级网络技术,其中涉及网络安全的实现、网络地址转换和端口映射、将路由器配置为DHCP服务器以实现IP地址的自动分配,以及IPv6、广域网、VPN、无线局域网等相关知识;第15章园区网典型组网案例将企业组网的技术进行了综合运用。

本书以理论知识为铺垫,重点凸显内容的实用性,旨在通过以练代学的方式提升读者的理论水平和实操能力。本书除了适合备考华为HCIA认证的人员阅读,还适合有志于投身于网络技术领域的新人阅读,也适合开设了网络专业课程的高校师生阅读。


我大学学的是无机化工,1999年毕业后到化肥厂上班,直觉告诉我IT(信息技术)在未来必将得到广泛应用,IT更能体现个人价值,且学IT只需一台计算机。于是,我怀揣着对未来美好生活的期待,毅然决定改行,进军IT领域,开始学习IT。

从一名非计算机专业大学生到一位IT职业培训讲师,从IT菜鸟到出版了10多本计算机图书的作者,从化工技术员到微软最有价值专家,我历经20年,这期间有对学习IT持之以恒的坚持,也有对IT职业化培训的思考。面对互联网时代的到来,我敏锐地察觉到IT培训要和互联网结合,要通过互联网打破教学的时间和空间限制,尤其是2020年的新冠疫情,让互联网教育走向舞台。

由于自己是非计算机专业出身,从零基础开始学习计算机网络,后成为计算机网络相关课程的老师,因此非常了解零基础的学生学习计算机网络会遇到的困惑,所以我的授课内容易学易懂。我在微软高级培训中心经常给企业网管做培训,帮他们解决工作中的问题。我还录制了实战风格的网络课程,很多计算机专业的学生学习我的网络课程,也能感觉到我和学院派讲师的差别。

我听过很多老师的“计算机网络”课程,有些老师是参照书本制作PPT,上课照着PPT讲解,所讲内容仅限于书中的内容,对知识没有进一步扩展,和实际不进行关联,这其实和学生自己看书差不多。这些老师尊重知识、尊重书本、尊重作者,但这种教学方式却没有尊重学生。作为老师,一定要了解学生,才能把课讲好。

我讲“计算机网络”课程20年,“计算机网络原理”课程12年,每一年都有新的提高,每一遍都有新的认识。如今我把对网络的认识写成书,用直白的语言、通俗的案例给大家阐述计算机网络技术,将实战融入理论。书中还讲解了如何使用华为路由器和交换机搭建计算机网络的学习环境。本书能够帮助读者掌握计算机网络通信理论,使用华为路由器和交换机组建企业局域网和广域网,熟练配置华为网络设备。

相较于市面上已有的其他图书,本书具有如下特色。

本书共分为15章,主要内容如下所示。

除了纸质版图书,作者还为本书提供了完整的PPT以及配套的视频课程。PPT资源可通过本书在异步社区的相应页面进行下载,也可以向本书作者索要。与本书完全配套的视频课程,可到51CTO学院官方网站搜索“华为认证网络工程师(HCIA)”,找到韩立刚录制的课程然后进行访问(注意,视频课程为收费课程)。

由于作者水平有限,书中错漏之处在所难免,恳请广大读者批评指正。


首先感谢我们的祖国各行各业的快速发展,这为那些不甘于平凡的人提供了展现个人才能的平台。我很庆幸自己生活在这个时代。

互联网技术的发展为各行各业提供了广阔的舞台,感谢51CTO学院为全国的IT专家和IT教育工作者提供教学平台。

感谢我的学生们,正是他们的提问,才让我了解到学习者的困惑,也提升了我的授课水平。更感谢那些工作在一线的IT运维人员,帮他们解决工作中遇到的疑难杂症为我积累了许多专业的案例。

感谢那些深夜还在网上看视频学习我的课程的读者,虽然没有见过面,我却能够感受到你们怀揣梦想、想通过知识改变命运的决心和毅力,这也一直激励着我不断录制新课程、编著新书。


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

本书提供配套资源,请在异步社区本书页面中点击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。

如果您是教师,希望获得教学配套资源,请在社区本书页面中直接联系本书的责任编辑。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


本章内容

全球最大的互联网络就是Internet,本章讲解网络的产生以及Internet的发展,路由器在网络中的作用,以及中国的互联网和ISP。

企业网络管理员主要管理企业的局域网。本章开门见山地为你讲解局域网使用的协议、局域网组网设备的演进,还讲解了同轴电缆组建的局域网、集线器组建的局域网、网桥优化以太网、交换机组网。本章最后还讲解了典型的企业局域网的规划和设计,根据企业的计算机数量和物理位置,局域网可以设计成二层结构的局域网和三层结构的局域网。此外,本章还介绍了通信领域常见的术语,如带宽、延迟、吞吐量等;介绍了传输媒体,如导向传输媒体和引导性传输媒体;讲解了网络的分类(公网和私网或局域网和广域网)。

Internet是全球最大的互联网络,家庭通过电话线使用ADSL拨号上网接入的就是Internet,企业的网络通过光纤接入Internet,现在我们使用智能手机通过4G技术或5G技术也可以很容易接入Internet。Internet正在深刻地改变着我们的生活,网上购物、网上订票、预约挂号、QQ聊天、支付宝转账、共享单车等应用都离不开Internet。现在我们就讲解一下Internet的产生和发展过程。

最初计算机是独立的,没有相互连接,在计算机之间复制文件和程序很不方便,于是就用同轴电缆将一个办公室内(短距离、小范围)的计算机连接起来组成网络(局域网),计算机的网络接口卡(网卡)与同轴电缆连接,如图1-1所示。

图1-1 网络

位于异地的多个办公室(如图1-2所示的Office1和Office2)的网络,如果需要通信,就要通过路由器连接,形成互联网。路由器有广域网接口用于长距离数据传输,路由器负责在不同网络之间转发数据包。

图1-2 路由器连接多个网络,形成互联网

最初只是美国各个大学和科研机构的网络进行互联,随后越来越多的公司、政府机构也接入网络。这个在美国产生的开放式的网络后来又不局限于美国,越来越多的国家网络通过海底光缆、卫星接入美国这个开放式的网络,如图1-3所示,就形成了现在的Internet,Internet是全球最大的互联网络。在这张图中你能体会到路由器的重要性,如何规划网络、配置路由器、为数据包选择最佳路径是网络工程师主要和重要的工作。当然,学完本书,你也能掌握对Internet的网络地址进行规划和简化路由器路由表的方法。

图1-3 Internet示意图

Internet是全球网络,在中国主要有3家“互联网服务提供商”(Internet Service Provider,ISP),它们向广大用户和企业提供互联网接入业务、信息业务和增值业务。中国的三大互联网服务提供商分别是中国电信、中国移动、中国联通。

这些运营商在全国各大城市和地区铺设了通信光缆,用于计算机网络通信。运营商的作用就是为城镇居民、企业和机构提供Internet的接入服务,在大城市建立机房。小企业没有机房,可以购买服务器,将服务器托管到运营商的机房。用户和企业可以根据ISP所提供的网络带宽、入网方式、服务项目、收费标准以及管理措施等选择适合自己的ISP。

Internet也就是因特网,是全球最大的互联网。我国主要有3家互联网服务提供商(ISP),他们向广大用户提供互联网接入业务、信息业务和增值业务。

中国三大基础运营商及其提供的服务如下所列。

下面以电信和联通两个ISP为例来展现Internet的局部组成,各个组织的网络和网民接入ISP的网络形成Internet。网站的连接示意如图1-4所示。

图1-4 各个组织的网络和网民接入ISP的网络形成Internet

ISP为家庭用户提供Internet接入服务,如图1-4所示,青园小区的用户光纤连接电信运营商,而红星小区使用光纤连接联通运营商。ISP也为企业网络提供Internet接入服务。

如果为企业服务器分配了公网地址,那么企业的网络就成为了Internet的一部分。

如果公司的网站需要为网民提供服务,自己又没有建设机房,就需要将服务器托管在联通和电信的机房,以提供7×24小时的高可用服务。机房不能轻易停电,需要保持无尘环境,并且温度、湿度、防火装置都有特殊要求,总之和家庭计算机的待遇不一样。

如图 1-4 所示,电信运营商和联通运营商之间使用 1000Mbit/s 的线路连接,虽然带宽很高,但其承载了所有联通访问电信的流量和电信访问联通的流量,因此还是拥堵。青园小区的用户访问A网站和B网站速度快,访问C网站和D网站的速度就会慢。

为了解决跨运营商访问网速慢的问题,可以把公司的服务器托管在双线机房,即同时连接联通和电信运营商网络的机房,如图1-4中的C网站部署在双线机房。这样用户通过联通或电信访问此类网站的速度没有差别。

有些Web站点会为用户提供软件下载功能,此时可以将软件部署到多个运营商的服务器中,让用户自己选择使用哪一个运营商下载。用户可以根据自家是联通上网还是电信上网来选择联通下载或电信下载,如图1-5所示。

图1-5 选择运营商

根据服务的覆盖面积大小以及所拥有的IP地址数目的不同,ISP也分为不同的层次。最高级别的第一层ISP为主干ISP,主干ISP的服务面积最大(一般都能覆盖国家范围),并且还拥有高速主干网。第二层ISP为地区ISP,一些大公司都属于第二层ISP的用户。第三层ISP又称为本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络。一般的校园网和企业网以及拨号上网的用户,都是第三层ISP的用户,如图1-6所示。

图1-6 多层级的ISP

比如中国联通是一级ISP,负责铺设全国范围内连接各地区的网络,中国联通有限公司石家庄分公司是地区ISP,负责石家庄地区的网络连接,石家庄联通藁城区分公司就属于三级ISP了,也就是本地ISP了。

如何理解ISP分级呢?比如你家通过联通的光纤接入Internet,带宽是100Mbit/s,上网费每年700元。你的3个邻居通过你家的路由器上网,每家每年给你300元上网费,你就相当于一个四级ISP了,你每年还能赢利200元。

有些公司的网站是为全国甚至全球提供服务的,比如淘宝网和12306网上订票网站,这样的网站最好接入主干ISP,全国网民访问主干网都比较快。有些公司的网站主要服务于本地区,比如58同城之类的网站,负责石家庄地区的网站就可以部署在石家庄地区的ISP机房。藁城区中学的网站主要是藁城区的学生和学生家长访问,藁城区中学的网站通过联通的本地ISP接入Internet。

网络规模大一点的公司接入Internet,ISP通常会部署光纤提供接入,家庭用户或企业小规模网络上网,ISP通常会通过电话线使用ADSL拨号提供Internet接入。随着光纤线路的普及,现在农村和城市的小区也可以使用光纤接入Internet了。

本节讲解局域网的发展。先给大家介绍什么是局域网和广域网,再讲解局域网通信的特点以及使用的协议,最后介绍局域网组网设备,包括网卡、同轴电缆、集线器、网桥和交换机。

首先通过举例来简单了解一下局域网和广域网的概念。

中国电信运营商的网络覆盖全国,属于广域网。企业的网络通常覆盖一个厂区的几栋大楼,学校的网络覆盖整座学校。这种企业或学校自己组建的覆盖小范围的网络就是局域网。

除了最大的互联网——因特网,大多数企业也组建了自己的互联网。接下来介绍企业互联网拓扑,以加深读者对网络的认识。如图1-7所示,车辆厂在石家庄和唐山都有厂区。中车石家庄车辆厂和中车唐山机车车辆厂都组建了自己的网络,可以看到企业按部门规划网络,基本上是一个部门一个网段(网络),然后使用三层交换(相当于路由器)连接各个部门的网段,从而企业的服务器连接到了三层交换机,这就是企业的局域网。

图1-7 企业互联网

一个车辆厂需要访问另一个车辆厂的服务器,这就需要将这两个厂区的网络连接起来。车辆厂不可能自己架设网线或光纤来将这两个厂区的局域网连接起来,架设和维护的成本太高了。车辆厂租用了联通的线路来将两个局域网连接起来,只需每年缴费即可,连接后的局域网就是广域网。中车石家庄车辆厂使用网通的光纤来连接Internet,这也是广域网。

现在总结一下,局域网通常是公司或单位自己花钱购买网络设备组建,带宽通常为10Mbit/s、100Mbit/s或1000Mbit/s,自己维护,覆盖范围小。广域网通常要花钱租用联通、电信等运营商的线路,花钱买带宽,用于长距离通信。

早期的计算机网络就是使用一根同轴电缆连接网络中的计算机,计算机之间的通信信号会被同轴电缆传送到所有计算机,所以说同轴电缆是广播信道,如图1-8所示。

图1-8 广播信道局域网——总线型

在这样的广播信道里,如何实现点到点通信呢?那就需要通信的计算机都有一个地址,这个地址就是网卡的MAC地址。如果这些计算机发现收到的数据帧的目标MAC地址和自己网卡的MAC地址不一样,就丢弃这个数据帧。

MAC(Media Access Control或者Medium Access Control)地址可意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。

同轴电缆上连接的这些计算机不允许多台计算机同时发送数据,如果多台计算机同时发送数据,发送的信号就会叠加造成信号不能正确识别。所以计算机在发送数据之前先侦听网络中有没有数据在传输,发现没有信号传输才发送数据,这就是载波侦听。

即便在开始发送的时候没有检测出有信号在传输,在开始发送后,也有可能在同轴电缆的某处和其他计算机发送的信号迎面相撞,发送端收到相撞后的信号会认为发送失败。发送端必须能够检测出这种发生在链路上的冲突,然后通过退避算法来计算退避时间并尝试再次发送,这就是冲突检测。

这种使用共享介质进行通信的网络,网络中的设备接口必须有MAC地址,每台计算机发送数据的机会均等(多路访问,Multiple Access),发送之前检测链路是否有信号在传输(载波侦听,Carrier Sense)。即便开始发送了,也要检测链路上是否产生冲突(冲突检测,Collision Detection),这种带冲突检测的载波侦听多路访问机制就是CSMA/CD协议,使用CSMA/CD协议的网络就是以太网。局域网通常使用共享介质线路组建,使用CSMA/CD协议通信,所以有人不严谨地说局域网就是以太网,但你应该知道以太网的实质和局域网的实质,使用CSMA/CD协议的是以太网,覆盖小范围的网络是局域网。

同轴电缆随后被集线器(HUB)这种设备替代,使用双绞线可以很方便地将计算机接入到网络中。其功能和同轴电缆一样,只是负责将一个接口收到的信号扩散到全部接口,计算机通信依然共享介质,使用的依然是CSMA/CD协议,因此使用集线器组建的网络也被称为以太网,如图1-9所示,图中的MA、MB、MC和MD代表计算机的MAC地址。

图1-9 集线器组建的以太网

使用集线器和同轴电缆组网具有如下特点。

如果网络中的计算机数量太多,就将计算机接入多个集线器,再将集线器连接起来。集线器相连可以扩大以太网的规模,但随之而来的一个问题就是冲突的增加。如图1-10所示,集线器1和集线器2相连,形成了一个大的以太网,这两个集线器就形成了一个大的冲突域。A计算机和B计算机通信的数据也被传输到集线器2的全部接口,D计算机和E计算机就不能通信了,冲突域变大,冲突增加。

图1-10 扩展的以太网

为了解决集线器级联冲突域增大的问题,研究人员研发了网桥这种设备,用网桥的每个接口连接一个集线器。网桥能够构造MAC地址表,记录每个接口对应的MAC地址,如图1-11所示。网桥的E0接口连接集线器1,集线器1上连接3台计算机,这3台计算机的MAC地址分别为MA、MB和MC,于是网桥就在MAC地址表中记录E0接口对应MA、MB和MC 3个MAC地址。E1接口连接集线器2,集线器2连接的3台计算机的MAC地址分别是MD、ME和MF,于是在MAC地址表中E1接口对应MD、ME和MF 3个MAC地址。

图1-11 网桥优化以太网

有了MAC地址表,A计算机发送给B计算机的帧被传输到网桥的E0接口,网桥查MAC地址表后发现目标MAC对应的接口就是E0,该帧就不会转发到E1接口。这时D计算机也可以向E计算机发送数据了。这样网桥就把一个大的冲突域划分成了两个小的冲突域,从而优化了集线器组建的以太网。

如果A计算机向D计算机发送帧,网桥会根据帧的目标MAC地址来对照MAC地址表以确定转发端口,从E1接口发送出去。当然,从E1接口发送出去时,计算机也要冲突检测载波侦听,寻找机会发送出去。

网桥组网有以下特点。

若使用网桥优化以太网,那么网络中的计算机是无法识别该操作的,也就是说以太网中的计算机并不知道网络中有网桥存在,因此也不需要网络管理员配置网桥的MAC地址表。这时,我们称网桥是透明桥接

网桥接入以太网时,MAC地址表是空的,网桥会在计算机通信过程中自动构建MAC地址表。这叫作“自学习”。网桥通过自学习构建MAC地址表,再根据MAC地址表转发帧。

(1)自学习。

网桥的接口收到一个帧后,就要检查MAC地址表中有无与收到的帧源MAC地址匹配的项。如果没有,就在MAC地址表中添加该接口与该帧的源MAC地址之间的对应关系以及进入接口的时间;如果有,则对原有的项目进行更新。

(2)转发帧。

网桥接口收到一个帧后,就要检查MAC地址表中有没有该帧目标MAC地址的对应端口。如果有,就将该帧转发到对应的端口;如果没有,则将该帧转发到全部端口(接收端口除外)。如果转发表中给出的接口就是该帧进入网桥的接口,则应该丢弃这个帧(因为这个帧不需要经过网桥进行转发)。

下面举例说明MAC地址表的构建过程,如图1-12所示。网桥1和网桥2刚刚接入以太网,此时MAC地址表是空的。

图1-12 构建MAC地址表的过程

(1)计算机A给计算机B发送一个帧,源MAC地址为MA,目标MAC地址为MB。网桥1的E0接口收到该帧,查看该帧的源MAC地址是MA,就可以断定E0接口连接MA,于是在MAC地址表中记录一条对应关系——MA和E0。这就意味着以后要有到达MA的帧,就需要转发给E0。

(2)网桥1在MAC地址表中没有找到MB和接口的对应关系,就会将该帧转发到E1。

(3)网桥2的E2接口收到该帧,查看该帧的源MAC地址,然后在MAC地址表中记录一条MA和E2的对应关系。

(4)这时,计算机F给计算机C发送一个帧,这会在网桥2的MAC地址表添加一条MF和E3的对应关系。由于网桥2的MAC地址表中没有MC和接口的对应关系,所以该帧会被发送到E2接口。

(5)网桥1的E1接口收到该帧,这会在MAC地址表中添加一条MF和E1的对应关系,同时将该帧发送到E0接口。

(6)同样,计算机E给计算机B发送一个帧,会在网桥1的MAC地址表中添加ME和E1的对应关系,在网桥2的MAC地址表中添加ME和E3的对应关系。

只要网桥收到的帧的目标MAC地址能够在MAC地址表找到和接口的对应关系,该帧就会被转发到指定接口。

网桥MAC地址表中的MAC地址和接口的对应关系只是临时的,这是为了适应网络中的计算机出现的调整,比如连接在集线器1上的计算机A连接到了集线器2,或者计算机F从网络中移除了,网桥中的MAC地址表中的条目就不能一成不变。大家需要知道,接口和MAC地址的对应关系有时间限制,如果过了几分钟没有使用该对应关系转发帧,该条目将会从MAC地址表中删除。

随着技术的发展,网桥接口越来越多,数据的交换能力也越来越强。这种高性能网桥我们称为交换机(Switch),交换机是现在企业组网的主流设备。

交换机和网桥一样,可以构造MAC地址表,并基于MAC地址转发帧。如图1-13所示,由于交换机直接连接计算机,因此A计算机给B计算机发送数据不影响D计算机给C计算机发送数据。如果两台计算机同时向B计算机发送数据,会不会产生冲突呢?答案是,不会。

图1-13 交换机组网

交换机的每个接口都可以接收缓存和发送缓存,帧可以在缓存中排队。接收到的帧先进入接收缓存,再查找MAC地址表以确定转发端口,然后进入转发端口的发送缓存,排队等待发送。因此,多台计算机同时给一台计算机发送数据,数据会进入缓存排队等待发送,而不会产生冲突。正因为交换机使用的是存储转发,所以交换机的接口可以工作在不同的速率下。

使用交换机组网比集线器和同轴电缆更安全,如图1-13所示,E计算机即便安装了抓包软件,也不能捕获A计算机给B计算机发送的帧,因为交换机根本不会将帧转发给E计算机。

计算机的网卡直接连接交换机的接口,它可以工作在全双工模式下,即可以同时发送和接收帧而不用冲突检测。集线器和同轴电缆组建的以太网只能工作在半双工模式下,即不能同时收发。

如果交换机收到一个广播帧,即目标MAC地址是FF-FF-FF-FF-FF-FF的数据帧,交换机将该帧发送到所有交换机端口(除发送端口),因此交换机组建的网络就是一个广播域。

MAC地址由48位二进制数组成,F是十六进制数,F代表4位二进制数1111。

与集线器组网相比,交换机组网有以下特点。

交换机的每个端口独享带宽,10Mbit/s交换机每个端口的带宽是10Mbit/s,24个10Mbit/s交换机的总体交换能力是240Mbit/s,这和集线器不同。

使用交换机组建的网络比使用集线器组建的安全,比如计算机A发送给计算机B的帧,以及计算机D发送给计算机C的帧,交换机根据MAC地址表只转发到目标端口,E计算机根本收不到其他计算机通信的数字信号,即便安装了抓包工具也没用。

交换机接口和计算机直接相连,计算机和交换机之间的链路可以使用全双工通信。

交换机接口和计算机直接相连,使用全双工通信的数据链路层就不再需要使用CSMA/CD协议,但我们还是称交换机组建的网络是以太网,是因为帧格式和以太网的一样。

交换机使用的是存储转发,这意味着交换机的每一个接口都可以存储帧,从其他端口转发出去时,可以使用不同的速率。通常连接服务器的接口要比连接普通计算机的接口带宽高,交换机连接交换机的接口也比连接普通计算机的接口带宽高。

广播帧会转发到除了发送端口以外的全部端口。广播帧就是指的目标MAC地址的48位二进制全是1。

使用交换机组网,计算机通信可以设置成全双工模式,可以同时收发,不需要冲突检测,因此也不需要使用CSMA/CD协议。因为交换机转发的帧和以太网的帧格式相同,所以我们依然习惯说交换机组建的网络是以太网。

如图1-14所示,路由器连接两个交换机,交换机连接计算机和集线器,路由器隔绝广播,图中标出了广播域和冲突域。

图1-14 广播域和冲突域

为了在广播信道中实现点到点通信,需要网络中的每个网卡有一个地址。这个地址称为物理地址或MAC地址(因为这种地址用在MAC帧中)。IEEE 802标准为局域网规定了一种48位二进制的全球地址。

在生产网卡时,这种48位二进制(占6字节)的MAC地址已被固化在网卡的ROM中。因此,MAC地址也称为硬件地址或物理地址。当把这块网卡插入(或嵌入)某台计算机后,网卡上的MAC地址就成为这台计算机的MAC地址了。

如何确保各网卡生产厂家生产的网卡的MAC地址全球唯一呢?这就要有一个组织为这些网卡生产厂家分配地址块。现在IEEE的注册管理机构RA是局域网全球地址的法定管理机构,它负责分配地址字段的6字节中的前3字节(高位24位)。世界上凡要生产局域网网卡的厂家都必须向IEEE购买由这3字节构成的号(即地址块),这个号的正式名称是组织唯一标识符,通常也叫作公司标识符。例如,如图1-15所示,3Com公司生产的网卡的MAC地址的前3字节是02-60-8C(在计算机中是以十六进制显示的)。地址字段中的后3字节(低位24位)则由厂家自行指派,它称为扩展标识符,只要保证生产出的网卡没有重复地址即可。由此可见,用一个地址块可以生成224个不同的地址。

图1-15 3Com公司生产的网卡的MAC地址

连接在以太网上的路由器接口和计算机网卡的一样,也有MAC地址。

网卡有帧过滤功能,网卡从网络上每收到一个MAC帧,就先用硬件检查MAC帧中的目的地址。如果是发往本站的帧,则收下,然后进行其他的处理;否则就将此帧丢弃,不再进行其他的处理。这样做不浪费主机的CPU和内存资源。这里“发往本站的帧”包括以下3种帧。

所有的网卡都至少应当能够识别前两种帧,即能够识别单播地址和广播地址。有的网卡可用编程方法识别多播地址。当操作系统启动时,它就把网卡初始化,使网卡能够识别某些多播地址。显然,只有目的地址才能使用广播地址和多播地址。

在Windows中查看网卡MAC地址的命令如下:

C:\Users\hanlg>ipconfig /all

以太网适配器 以太网:

  媒体状态 . . . . . . . . . . . .   : 媒体已断开连接

  连接特定的DNS后缀 . . . . . . . :

  描述. . . . . . . . . . . . . . .   : Realtek PCIe GBE Family Controller

  物理地址. . . . . . . . . . . . .   : F4-8E-38-E7-37-8B --MAC地址

……

根据网络规模和物理位置,企业的网络可以设计成二层结构或三层结构。通过本节的学习,你能掌握企业内网的交换机如何部署和连接,以及服务器部署的位置。

现在以某高校网络为例介绍校园网的网络拓扑。如图1-16所示,在教室1、教室2和教室3分别部署一台交换机,对教室内的计算机进行连接。教室中的交换机要求端口多,这样能够将更多的计算机接入网络,这一级别的交换机称为接入层交换机,接计算机的端口带宽为100Mbit/s。

图1-16 二层结构的局域网

学校机房部署一台交换机,该交换机连接学校的服务器和教室中的交换机,并通过路由器连接Internet。该交换机汇聚教室中交换机的上网流量,该级别的交换机称为汇聚层交换机。可以看到这一级别的交换机端口不一定太多,但端口带宽要比接入层交换机的带宽高,否则就会成为制约网速的瓶颈。

在网络规模比较大的学校中,局域网可能采用三层结构。如图1-17所示,某高校有3个学院,每个学院有自己的机房和网络,学校网络中心为3个学院提供Internet接入,各学院的汇聚层交换机连接到网络中心的交换机,网络中心的交换机称为核心层交换机,学校的服务器接入核心层交换机,为整个学校提供服务。

图1-17 三层结构的局域网

三层结构的局域网中的交换机有3个级别:接入层交换机、汇聚层交换机和核心层交换机。层次模型可以用来帮助设计,实现和维护可扩展、可靠、性价比高的层次化互联网络。

计算机通信需要将发送的信息转换成二进制数字来传输,一位二进制数称为一个比特(bit)。二进制数字要转换成数字信号在线路上传输,如图1-18所示。

图1-18 二进制数与数字信号

网络技术中的速率指的是每秒传输的比特数量,也叫作数据率(data rate)或比特率(bit rate),速率的单位为b/s(比特每秒)或bit/s。当速率较高时,可以用kb/s(k=103,千)、Mbit/s(M=106,兆)、Gbit/s(G=109,吉)或Tbit/s(T=1012,太)来表示。现在人们习惯用更简洁但不严格的说法来描述速率,比如10M网速,而省略了单位中的bit/s。

在Windows操作系统中,速率以字节为单位。如果安装了测速软件,比如360安全卫士,就有带宽测速器,可以用来检测你的计算机访问Internet时的下载网速。不过这里的单位是B/秒,大写的B代表字节,是byte的缩写,8比特=1字节。如果测速为3.82MB/s,则下载速率为3.82 MB/s×8,即30.56Mbit/s。

如图1-19所示,我们在Windows 7中复制文件时,可以看到以字节为单位的速率。它转换成以比特为单位的速率时要乘8,因此一定要注意速率是大写的B还是小写的b。

图1-19 操作系统的网速以字节为单位

在通信领域,带宽用来表示接口或通信线路传输数据的能力,即最高速率。图1-20所示的是便携式笔记本网卡的本地连接,可以看到速率为100.0Mbps(100.0Mbit/s),说明网卡最快每秒传输100Mbit。再比如家庭上网使用ADSL拨号,有4Mbit/s带宽、8Mbit/s带宽,这里说的带宽是访问Internet的最高带宽,上网带宽要由电信运营商来控制。

图1-20 本地连接带宽

吞吐量表示在单位时间内通过某个网络或接口的数据量,包括上传和下载的全部流量。如图1-21所示,计算机A同时进行3个操作:浏览网页,在线看电影,向FTP服务器上传文件。访问网页的下载速率为30Kb/s,播放视频的下载速率为40Kb/s,向FTP上传文件速率为20Kb/s,A计算机的吞吐量就是全部上传下载速率总和,即30+40+20=90(kbit/s)。

图1-21 吞吐量

吞吐量受网络带宽或网络额定速率的限制。计算机的网卡如果连接交换机,那么网卡就可以在全双工模式下工作,即能够同时接收和发送数据。如图1-22所示,如果网卡在100Mbit/s的全双工模式下工作,就意味着网卡的最大吞吐量为200Mbit/s。

图1-22 全双工吞吐量

如果计算机的网卡工作在半双工模式下,那么就不能同时发送和接收数据。网卡工作在100M半双工模式,则网卡的最大吞吐量为100Mbit/s。

时延(delay或latency)是指数据(一个数据包或bit)从网络的一端传送到另一端所需要的时间。时延是一个很重要的性能指标,有时也称为延迟或迟延。

接下来就以计算机A给计算机B发送数据为例,来说明网络中的时延包括哪几部分,如图1-23所示。

图1-23 各种时延

(1)发送时延。

发送时延(transmission delay)是主机或路由器发送数据帧所需的时间,也就是从发送数据帧的第一个比特开始,到该帧最后一个比特发送完毕所需要的时间。图1-24表示数据流发送完毕。

图1-24 发送时延

可以看到发送时延和数据帧的长度以及发送速率有关,发送速率就是网卡的带宽,100Mbit/s的网卡就意味着1秒能够发送100×106比特。

以太网最大的数据帧为1518字节,再加上8字节前导字符,共计1526字节,即1526×8=12208比特。网卡带宽如果是10Mbit/s,发送一个最大以太网数据帧的

(2)传播时延。

传播时延(propagation delay)是指电磁波在信道中传播一定的距离需要花费的时间。如图1-25所示,t1时刻最后一比特发送完毕,t2时刻路由器收到最后一比特,t2-t1就是传播时延。

图1-25 传播时延

电磁波在自由空间中的传播速度是光速,即3.0×105km/s。电磁波在网络中的传播速度要比在自由空间中略低一些:在铜线电缆中的传播速率约为2.3×105km/s,在光纤中的传播速率约为2.0×105km/s。例如在1000km长的光纤线路产生的传播时延大约为5ms。

电磁波在指定介质中的传播速率是固定的,从公式可以看出,信道长度固定了,传播时延也就固定了,我们没有办法改变。

网卡的不同带宽改变的只是发送时延,而不是传播时延。如图1-26所示,4Mbit/s带宽网卡发送10比特需要2.5μs,2Mbit/s带宽网卡发送10比特需要5μs。1s(秒)=1000ms(毫秒)= 1000000μs(微秒)。如果同时从A端向B端发送,4Mbit/s网卡发送完10比特,而2Mbit/s网卡刚刚发送完5比特。

图1-26 带宽和发送时延的关系

(3)排队时延。

数据分组在经过网络传输时要经过许多的路由器。但数据分组在进入路由器后要先在输入队列中排队等待处理。在路由器确定了转发接口后,还要在输出队列中排队等待转发,这就产生了排队时延。排队时延的长短往往取决于网络当时的通信量。当网络的通信量很大时会发生队列溢出,使分组丢失,这相当于排队时延为无穷大。

(4)处理时延。

路由器或主机在收到数据包时,要花费一定的时间对其进行处理,例如分析数据包的首部、进行首部差错检验、查找路由表为数据包选定的转发出口,这就产生了处理时延。

数据在网络中经历的总时延就是以上4种时延的总和:

总时延=发送时延+传播时延+处理时延+排队时延

把链路上的传播时延和带宽相乘,就会得到时延带宽积。

时延带宽积=传播时延×带宽

这个指标用来计算通信线路上有多少比特。下面我们通过案例来看看时延带宽积的意义。

如图1-27所示,A端到B端是1km的铜线路,电磁波在铜线中的传播速率为2.3×105km/s,在1km长的铜线传播时延大约为4.3×106s。A端网卡带宽为10Mbit/s,A端向B端发送数据时,问链路上有多少比特?我们只需要计算4.3×106s的时间内A端网卡发送多少比特即可得出链路上有多少比特,这就是时延带宽积。

时延带宽积=4.3×106s×10×106bit/s=43bit,进一步计算得出每比特在铜线中的长度是23m。

如果发送端的带宽为100Mbit/s,则时延带宽积=4.3×106s×100×106bit/s=430bit。这意味着1km铜线中可以容纳430bit,每比特2.3m。

图1-27 时延带宽积

在计算机网络中,往返时间(Round-Trip Time,RTT)也是一个重要的性能指标,它表示从发送端发送数据开始,到发送端接收到来自接收端的确认(接收端收到数据后立即发送确认)为止,总共经历的时间。

往返时间带宽积,可以用来计算当发送端连续发送数据时,接收端如果发现有错误立即向发送端发送通知使发送端停止发送数据,发送端在这段时间所发送的比特量。

在Windows操作系统中使用ping命令也可以显示往返时间。如图1-28所示,我们分别ping 网关、国内的网站和美国的网站,可以看到每一个数据包的往返时间和系统统计的平均往返时间,可以看到途经的路由器越多、距离越远,往返时间也会越长。

图1-28 往返时间

经验分享:通常情况下,企业内网之间计算机ping的往返时间小于10ms。如果大于10ms,就要安装抓包工具来分析网络中的数据包是否有恶意的广播包,以找到发广播包的计算机。

利用率是指网络有百分之几的时间是被利用的(有数据通过),没有数据通过的网络的利用率为零。网络利用率越高,数据分组在路由器和交换机处理时就需要排队等待,因此时延也就越大。下面的公式可以表示网络利用率和延迟之间的关系。

U是网络利用率,D表示网络当前时延,D0表示网络空闲时的时延。图 1-29 所示为网络利用率和时延之间的关系,当网络的利用率接近最大值1时,网络的时延就趋于无穷大。因此,一些拥有较大主干网的ISP通常要控制它们的信道利用率不超过50%。如果超过了就要准备扩容,以增大线路的带宽。

图1-29 时延和网络利用率

传输媒体也称为传输介质或传输媒介,它就是数据传输系统中发送器和接收器之间的物理通路。传输媒体可分为两大类,导向传输媒体(也称为导引型传输媒体)和非导向传输媒体(非导引型传输媒体)。在导向传输媒体中,电磁波被导向沿着固体媒体(铜线或光纤)传播,而非导向传输媒体就是指自由空间,在非导向传输媒体中电磁波的传输常称为无线传输。

1.双绞线

双绞线也称为双扭线,它是最古老但又是最常用的传输媒体。把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合(twist)起来就构成了双绞线。这种方式不仅可以抵御一部分来自外界的电磁波干扰,也可以降低多对绞线之间的相互干扰。使用双绞线最多的地方就是到处都有的电话系统。几乎所有的电话都用双绞线连接到电话交换机。这段从用户电话机到交换机的双绞线称为用户线或用户环路。通常将一定数量的双绞线捆成电缆,然后在其外面包上护套。

模拟传输和数字传输都可以使用双绞线,其通信距离一般为几千米到十几千米。距离太长时就要加放大器以便将衰减的信号放大到合适的数值(对于模拟传输),或者加上中继器以便将失真的数字信号进行整形(对于数字传输)。导线越粗,其通信距离就越远,但导线的价格也越高。在数字传输时,若传输速率为每秒几个兆比特,则传输距离可达几千米。由于双绞线的价格便宜且性能也不错,因此使用范围十分广泛。

为了提高双绞线的抗电磁干扰的能力,可以在双绞线的外面再加上一层用金属丝编织的屏蔽层,这就是屏蔽双绞线(Shielded Twisted Pair,STP)。它的价格当然比非屏蔽双绞线(Unshielded Twisted Pair,UTP)要贵一些。图1-30所示的是非屏蔽双绞线,图1-31所示的是屏蔽双绞线。

图1-30 非屏蔽双绞线

图1-31 屏蔽双绞线

1991年,美国电子工业协会 (Electronic Industries Association,EIA)和电信行业协会(Telecommunications Industries Association,TIA)联合发布了一个标准EIA/TIA,它的名称是“商用建筑物电信布线标准”(Commercial Building Telecommunications Cabling Standard)。这个标准规定了用于室内传送数据的非屏蔽双绞线和屏蔽双绞线的标准。随着局域网上数据传送速率的不断提高,EIA/TIA也不断对其布线标准进行更新。

表1-1展示了常用的绞合线的类别、带宽和典型应用。无论是哪种类别的线,衰减都随频率的升高而增大。使用更粗的导线可以降低衰减,但却增加了导线的价格和重量;线对之间的绞合度(即单位长度内的绞合次数)和线对内两根导线的绞合度都必须经过精心设计,并在生产中加以严格的控制,使干扰在一定程度上得以抵消,这样才能提高线路的传输性能。使用更大的和更精确的绞合度可以获得更高的带宽。在设计布线时,要考虑受到衰减的信号应当有足够大的振幅,以便在有噪声干扰的条件下能够在接收端正确地被检测出来。双绞线究竟能够传送多高速率(Mbit/s)的数据还与数字信号的编码方法有很大的关系。

表1-1 常用的绞合线的类别、带宽和典型应用

绞合线类别

带  宽

典 型 应 用

3

16MHz

低速网络;模拟电话

4

20MHz

短距离的10BASE-T以太网

5

100MHz

10BASE-T以太网;某些100BASE-T快速以太网

5E(超5类)

100MHz

100BASE-T快速以太网;某些1000BASE-T吉比特以太网

6

250MHz

1000BASE-T吉比特以太网;ATM网络

7

600MHz

只使用STP,可用于10吉比特以太网

现在计算机连接使用的网线就是双绞线,其中有8根线,RJ-45连接头(俗称水晶头)的各触点对传输信号来说所起的作用分别是:1、2用于发送,3、6用于接收,4、5,7、8是双向线。对与其相连接的双绞线来说,为了降低相互干扰,要求1、2必须是绞缠的一对线,3、6也必须是绞缠的一对线,4、5相互绞缠,7、8相互绞缠。

8根线的接法标准分别为TIA/EIA 568B 和 TIA/EIA 568A。

TIA/EIA-568B:1、白橙,2、橙,3、白绿,4、蓝,5、白蓝,6、绿,7、白棕,8、棕。

TIA/EIA-568A:1、白绿,2、绿,3、白橙,4、蓝,5、白蓝,6、橙,7、白棕,8、棕。

如图1-32所示,网线的水晶头两端的线序如果都是T568B,我们称其为直通线;如果网线的一头的线序是T568B另一端是T568A,我们就称其为交叉线。不同的设备相连时要注意线序,不过现在网卡大多是自适应线序。

图1-32 线序

2.同轴电缆

如图1-33所示,同轴电缆由内导体铜质芯线(单股实心线或多股绞合线)、绝缘层、网状的外导体屏蔽层(也可以是单股的)以及绝缘保护层(保护塑料外层)所组成。由于外导体屏蔽层的作用,所以同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据。

图1-33 同轴电缆结构

在局域网发展的初期,我们曾广泛地使用同轴电缆作为传输媒体。但随着技术的进步,现在局域网领域基本上是采用双绞线作为传输媒体。目前同轴电缆主要用于有线电视网。同轴电缆的带宽取决于电缆的质量。目前高质量的同轴电缆的带宽已接近1GHz。

3.光缆

从20世纪70年代到现在,通信和计算机都发展得非常快。近20年来,计算机的运行速度大约每10年提高10倍。但在通信领域,信息的传输速率提高得更快,从20世纪70年代的56kbit/s提高到现在的几个到几十个Gbit/s(使用光纤通信技术),相当于每10年提高100倍。光纤通信成为了现代通信技术中的一个十分重要的领域。

光纤通信就是利用光导纤维(以下简称为光纤)传递光脉冲来进行通信。有光脉冲相当于1,没有光脉冲相当于0。由于可见光的频率非常高,约为108MHz的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽。

光纤是光纤通信的传输媒体。当发送端有光源时,可以采用发光二极管或半导体激光器,它们在电脉冲的作用下能产生出光脉冲。在接收端将光电二极管做成光检测器,在检测到光脉冲时可还原出电脉冲。

光纤通常是由非常透明的石英玻璃拉成细丝,它主要是由纤芯和包层构成的双层通信圆柱体。纤芯很细,其直径只有8μm~100μm(1μm=106m)。光波通过纤芯进行传导。包层较纤芯有较低的折射率。当光线从高折射率的媒体射向低折射率的媒体时,其折射角大于入射角(如图1-34所示)。因此,如果入射角足够大,就会出现全反射,即光线碰到包层时会折射回纤芯。这个过程不断重复,光也就沿着光纤传输下去。

图1-34 光线在光纤中折射

图1-35是光波在纤芯中传播的示意图。现代的生产工艺可以制造出超低损耗的光纤,即做到光线在纤芯中传输数千米而几乎没有什么衰耗。这一点是光纤通信得到飞速发展的关键因素之一。

图1-35 光波在线芯中的传播

图1-35只画了一条光线。实际上,只要从纤芯中射到纤芯表面的光线的入射角大于某一个临界角度,就可产生全反射。因此,有许多条不同入射角度的光线会在一条光纤中传输。这种光纤就称为多模光纤(图1-36(a))。光脉冲在多模光纤中传输时会逐渐展宽,造成失真。因此多模光纤只适合于近距离传输。若光纤的直径减小到只有一个光的波长,则光纤就像一根波导那样,它可使光线一直向前传播,而不会产生多次反射。这样的光纤就称为单模光纤(图1-36(b))。单模光纤的纤芯很细,其直径只有几微米,制造起来成本较高。单模光纤的光源要使用昂贵的半导体激光器,而不能使用较便宜的发光二极管。但单模光纤的衰耗较小,在2.5Gbit/s的高速率下可传输数十千米而不必采用中继器。

图1-36 单模光纤和多播光纤

光纤除了通信容量非常大的优点,还具有以下优点。

(l)传输损耗小,中继距离长,适用于远距离传输,经济实惠。

(2)抗雷电和电磁干扰性能好,这在有大电流脉冲干扰的环境下尤为重要。

(3)无串音干扰,保密性好,也不易被窃听或截取数据。

(4)体积小,重量轻。这在现有电缆管道已拥塞不堪的情况下特别有利。例如,1km长的1000对双绞线电缆约重8000kg,而同样长度但容量大得多的一对两芯光缆仅重100kg。

光纤也有一定的缺点,要将两根光纤精确地连接起来需要专用设备。

前面介绍了3种导向传输媒体。但是,若通信线路要通过一些高山或岛屿,有时就很难施工。即使是在城市中,挖开马路铺设电缆也不是一件很容易的事。当通信距离很远时,铺设电缆既昂贵又费时。但利用无线电波在自由空间中的传播就可较快地实现多种通信。由于这种通信方式不使用之前介绍的各种导向传输媒体,因此称为“非导向传输媒体”。

特别要指出的是,由于信息技术的发展,社会各方面的节奏变快了。人们不仅要求能够在运动中进行电话通信(即移动电话通信),而且还要求能够在运动中进行计算机数据通信(俗称上网),现在的智能手机大多使用4G技术访问Internet。因此最近十几年无线电通信发展得特别快,因为利用无线信道进行信息的传输,是在运动中通信的唯一手段。

1.无线电频段

无线传输可使用的频段很广,人们现在已经利用了好几个波段进行通信。紫外线和更高的波段目前还不能用于通信。如图1-37所示,国际电信联盟(International Telecommunications Union,ITU)对不同波段取了正式名称。例如,LF波段的波长是从1km到10km(对应于30kHz到300kHz)。LF、MF和HF的中文名字分别是低频、中频和高频。更高的频段中的V、U、S和E分别对应于Very、Ultra、Super和Extremely,相应的频段的中文名字分别是甚高频、特高频、超高频和极高频。在低频LF的下面其实还有几个更低的频段,如甚低频VLF,特低频ULF,超低频SLF和极低频ELF等,因不用于一般的通信,故未在图中画出。

图1-37 电信领域使用的电磁波的频谱

表1-2列出了无线电波频段的名称和频段范围。

表1-2 无线电波划分

频段名称

频率范围

波段名称

波长范围

甚低频(VLF)

3kHz~30kHz

万米波,甚长波

10km~100km

低频(LF)

30kHz~300kHz

千米波,长波

1km~10km

中频(MF)

300kHz~3000kHz

百米波,中波

100m~1000m

高频(HF)

3MHz~30MHz

十米波,短波

10m~100m

甚高频(VHF)

30MHz~300MHz

米波,超短波

1m~10m

特高频(UHF)

300MHz~3000MHz

分米波

10cm~100cm

超高频(SHF)

3GHz~30GHz

厘米波

1cm~10cm

极高频(EHF)

30GHz~300GHz

毫米波

1mm~10mm

2.短波通信

短波通信即高频通信,主要是靠电离层的反射。人们发现,当电波以一定的入射角到达电离层时,它也会像光学中的反射那样以相同的角度离开电离层。显然,电离层越高或电波进入电离层时与电离层的夹角越小,电波从发射点经电离层反射到达地面的跨越距离越大,这就是利用电波可以进行远程通信的根本原因。而且,电波返回地面时又可能被大地反射而再次进入电离层,形成电离层的第二次、第三次反射,如图1-38所示。由于电离层对电波的反射作用,这就使本来是直线传播的电波有可能到达地球的背面或其他任何一个地方。电波经电离层的一次反射称为 “单跳”,单跳的跨越距离取决于电离层的高度。

但由电离层的不稳定所产生的衰落现象和电离层反射所产生的多径效应会使得短波信道的通信质量较差。因此,当必须使用短波无线电台传送数据时,一般都是低速传输,即速率为几十至几百比特/秒。只有在采用复杂的调制解调技术后,才能使数据的传输速率达到几千比特/秒。

3.微波通信

微波通信在数据通信中占有重要地位。微波的频率范围为300MHz~300GHz(波长1mm~1m),但主要是使用2GHz~40GHz的频率范围。微波在空间主要是直线传播。由于微波会穿透电离层而进入宇宙空间,因此它不像短波那样可以经电离层反射传播到地面上很远的地方。传统的微波通信主要有两种主要的方式:即地面微波接力通信和卫星通信。

图1-38 短波通信

由于微波在空间是直线传播,而地球表面是个曲面,或地球上有高山或高楼等障碍,因此其传播距离受到限制,一般只有50km左右。但若采用100m高的天线塔,则传播距离可增大到100km。如图1-39所示,为实现远距离通信必须在一条无线电通信信道的两个终端之间建立若干个中继站。中继站把前一站送来的信号经过放大后再发送到下一站,故称为“接力”。

图1-39 微波接力通信

微波接力通信可传输电话、电报、图像、数据等信息。其主要特点如下所列。

(1)微波波段频率很高,其频段范围也很宽,因此其通信信道的容量很大。

(2)因为工业干扰和天电干扰的主要频谱成分比微波频率低得多,对微波通信的危害比对短波和米波(波长1m~10m的电磁波)通信小得多,因而微波传输质量较高。

(3)与相同容量和长度的电缆载波通信比较,微波接力通信建设投资少,见效快,易于跨越山区、江河。

当然,微波接力通信也存在如下的一些缺点。

(1)相邻站之间不能有障碍物。有时一个天线发射出的信号也会分成几条略有差别的路径到达接收天线,因而造成失真。

(2)微波的传播有时也会受到恶劣气候的影响。

(3)与电缆通信系统比较,微波通信的隐蔽性和保密性较差。

(4)大量中继站的使用和维护要耗费较多的人力和物力。

另一种微波中继是使用地球卫星,如图1-40所示。卫星通信方法是在地球站之间利用位于约3.6万千米高空的人造地球同步卫星作为中继器的一种微波接力通信。对地静止通信卫星就是在太空的无人值守的微波通信的中继站。可见卫星通信的主要优缺点应当大体上和地面微波通信的差不多。

图1-40 短波通信使用卫星中继

卫星通信的最大特点是通信距离远,且通信费用与通信距离无关。地球同步卫星发射出的电磁波能辐射到地球上的通信覆盖区的跨度达 1.8 万多千米,面积约占全球的三分之一。在地球赤道上空的同步轨道上,如图1-40所示,放置 3 颗卫星,就能基本上实现全球的通信。和微波接力通信相似,卫星通信的频带很宽,通信容量很大,信号所受到的干扰也较小,通信比较稳定。为了避免产生干扰,赤道上空的卫星之间要有一定间隔,如果间隔不少于2度,那么整个赤道上空最多只能放置180颗同步卫星。好在人们想出来可以在卫星上使用不同的频段来进行通信。因此总的通信容量还是很大的。

卫星通信的另一特点就是具有较大的传播时延。由于各地球站的天线仰角并不相同,因此不管两个地球站之间的地面距离是多少(相隔一条街或相隔上万千米),从一个地球站经卫星到另一地球站的传播时延为250ms~300ms。一般可取为270ms。这和其他的通信有较大差别(请注意:这和两个地球站之间的距离没有什么关系)。对比之下,地面微波接力通信链路的传播时延一般为3.3μs/km。

请注意,“卫星信道的传播时延较大”并不等于“用卫星信道传送数据的时延较大”。这是因为传送数据的总时延除了传播时延外,还有传输时延、处理时延和排队时延等部分。传播时延在总时延中所占的比例有多大,取决于具体情况。但利用卫星信道进行交互式的网上游戏显然是不合适的。卫星通信非常适合于广播通信,因为它的覆盖面很广。但从安全方面考虑,卫星通信系统的保密性是较差的。

4.无线局域网

从20世纪90年代起,无线移动通信和因特网一样,得到了飞速的发展。与此同时,使用无线信道的计算机局域网也获得了越来越广泛的应用。我们知道,要使用某一段无线电频谱进行通信,通常必须得到本国政府有关无线电频谱管理机构的许可证。但是,也有一些无线电频段是可以自由使用的(只要不干扰他人在这个频段中的通信),这正好满足计算机无线局域网的需求。图1-41给出了美国的ISM频段,现在的无线局域网就使用其中的2.4GHz和5.8GHz频段。ISM是Industrial,Scientific,and Medical(工业、科学与医药)的缩写,即所谓的“工、科、医频段”。

图1-41 无线局域网使用的ISM频段

计算机网络按不同分类标准有多种类别。

局域网(Local Area Network,LAN)是在一个局部的地理范围内(如一个学校、工厂和机关内),一般是方圆几千米以内,将各种计算机、外部设备和数据库等互相连接起来组成的计算机通信网。通常是单位自己采购设备组建局域网,当前使用交换机组建的局域网带宽为10Mbit/s、100Mbit/s或1000Mbit/s,无线局域网为54Mbit/s。

广域网(Wide Area Network,WAN)通常跨接很大的物理范围,所覆盖的范围从几十千米到几千千米,能连接多个城市或国家,甚至横跨几个洲来提供远距离通信,形成国际性的远程网络。比如某企业在北京和上海有两个局域网,把这两个局域网连接起来,就是广域网的一种。通常情况下广域网需要租用ISP(Internet服务提供商,比如电信、移动、联通公司)的线路,每年向ISP支付一定的费用购买带宽。带宽和支付的费用相关,就像你家用ADSL拨号访问Internet一样,有2Mbit/s带宽、4Mbit/s带宽、8Mbit/s带宽等标准。

城域网(Metropolitan Area Network,MAN)的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离为5km~50km。城域网可以为一个或几个单位所拥有,也可以是一种公用设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网技术,因此有时也将其并入局域网的范围进行讨论。

个人区域网(Personal Area Network,PAN)就是在个人工作的地方把个人使用的电子设备(如便携式计算机等)用无线技术连接起来的网络,因此也常称为无线个人区域网(Wireless PAN,WPAN)。比如无线路由器组建的家庭网络,就是一个PAN,其范围大约在几十米。

网络按使用者分类,可分为公用网和专用网。这里讨论的网络特指计算机网络。

公用网(public network)是指电信公司(国有或私有)出资建造的大型网络。“公用”的意思就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。因此公用网也称为公众网,因特网就是全球最大的公用网络。

专用网(private network)是某个机构为本单位的特殊业务工作需要而建造的网络。这种网络不向本单位以外的人提供服务。例如,铁路、电力等系统均有本系统的专用网。

1.以太网交换机中的端口/MAC地址映射表(  )。

  A.是由交换机的生产厂商建立的

  B.是交换机在数据转发过程中通过学习动态建立的

  C.是由网络管理员建立的

  D.是由网络用户利用特殊命令建立的

2.以太网使用什么协议在数据链路上发送数据帧(  )。

  A.HTTP  

  B.UDP

  C.CSMA/CD  

  D.ARP

3.MAC地址通常存储在计算机的(  )。

  A.网卡的ROM中  

  B.内存中

  C.硬盘中  

  D.高速缓冲区中

4.在Windows系统中查看网卡的MAC地址的命令是(  )。

  A.ipconfig /all  

  B.netstat

  C.arp -a  

  D.ping

5.关于交换机组网,以下哪些说法是错误的?(  )

  A.交换机端口带宽独享,比集线器安全

  B.接口工作在全双工模式下,不再使用CSMA/CD协议

  C.能够隔绝广播

  D.接口可以工作在不同的速率下

6.关于集线器,以下哪些说法是错误的?(  )

  A.网络中的计算机共享带宽,不安全。

  B.使用集线器联网的计算机在一个冲突域中。

  C.接入集线器的设备需要有MAC地址,集线器基于帧的MAC地址转发。

  D.使用CSMA/CD协议进行通信,每个接口带宽相同。

7.如图1-42所示,计算机C给计算机F发送一个帧,在图1-42中写出网桥1和网桥2在MAC地址表中增加的内容,MA、MB、MC、MD、ME和MF是计算机网卡的MAC地址。

图1-42 构建MAC地址表

8.网卡的MAC地址在出厂时就已固化到ROM中,但是我们可以配置计算机不使用网卡ROM中的MAC地址,而使用指定的MAC地址。上网查资料,将你的计算机网卡的MAC地址加1,比如网卡的MAC地址是F4-8E-38-E7-37-83,更改为F4-8E-38-E7-37-84。

9.收发两端之间的传输距离为1000km,信号在媒体上的传播速率为2×108m/s。试计算以下两种情况的发送时延和传播时延。

(1)数据长度为107bit,数据发送速率为100kbit/s。

(2)数据长度为103bit,数据发送速率为1Gbit/s。

从以上计算结果可得出什么结论?

10.假设信号在媒体上的传播速率为2.3×108m/s。媒体长度分别为:

(1)10cm(网络接口卡)

(2)100m(局域网)

(3)100km(城域网)

(4)5000km(广域网)

试计算当数据率为1Mbit/s和10Gbit/s时信号在以上媒体中正在传播的比特数。


本章内容

本章讲解计算机通信使用的TCP/IP及协议分层的标准和好处。

首先讲解什么是协议,签协议的意义和协议包含的内容。计算机通信使用的协议应该包含哪些约定,抓包分析应用层协议通信数据包,观察客户端发送请求和服务器端返回响应的交互过程,通过禁用应用层协议的特定方法限制客户端对服务器端的特定访问,实现高级安全控制。

然后讲解传输层协议TCP和UDP的应用场景,TCP协议实现可靠传输的机制,传输层协议和应用层协议之间的关系,服务和端口的关系,端口和网络安全的关系,随后展示如何设置Windows防火墙,关闭端口以实现网络安全。

最后讲解网络层协议、数据链路层协议和物理层协议,以及OSI参考模型和TCP/IP协议之间的关系。

学习计算机网络,最重要的就是掌握和理解计算机通信使用的协议。对很多学习计算机网络的人来说,协议是他们很不好理解的概念。因为计算机通信使用的协议,看不到摸不着,所以总是感觉非常抽象、难以想象。为此,在讲计算机通信使用的协议之前,先看一份租房协议,再去理解计算机通信使用的协议就不抽象了。

先来看一个租房协议,我们先理解协议的目的、要素,进而理解计算机通信使用的协议。

其实大家对于协议并不陌生,大学生走出校门参加工作就要和用人单位签署就业协议,工作后还有可能要租房住,就要和房东签署租房协议。下面就通过一个租房协议,来理解签协议的意义以及协议包含的内容,进而理解计算机通信使用的协议。

如果出租方和承租方不签协议,只是口头和出租方约定,房租多少、每个月几号交房租、押金多少、家具家电设施损坏谁负责。时间一长这些约定大家就都记不清了,一旦出现某种情况,承租方和出租方的认识不一致,就容易产生误解和矛盾。

为了避免纠纷,出租方和承租方就需要签一份租房协议,将双方关心的事情协商一致并写到协议中,双方确认后签字,协议一式两份,双方都要遵守。签协议的双方有时候感觉会漏掉一些重要注意事项,于是就会从网上找一个公认的标准化的租房协议的模板。如图 2-1所示,它是一份租房协议模板,约定事项已经定义好,出租方和承租方只需按模板填写指定内容即可。

图2-1 租房协议模板

为了简化协议填写,租房协议模板还定义了一个表格,如图2-2所示。出租房和承租方在签订租房协议时,只需将信息填写在表格规定的位置即可,协议的详细条款就不用再填写了。在表格中,出租方姓名、出租方身份证号、承租方姓名、承租方身份证号、房屋位置等称为字段,这些字段可以是定长,也可以是变长。如果是变长,那么要定义字段间的分界符。

图2-2 租房协议模板定义的需要填写的表格

图2-3所示的是根据租房协议模板定义的表格所填写的一个具体的租房协议,根据该表格就知道出租房和承租方、房屋位置、租金、押金等信息,甲乙双方遵循的协议约定事项无须填写,但双方都知道租房协议模板的约定事项。

图2-3 具体的租房协议

计算机通信使用的协议也都进行了标准化,也就是形成了模板。像租房协议模板一样,计算机通信使用的协议有甲方和乙方,除了定义甲方和乙方遵循的约定外,它还会定义甲方和乙方交互信息时的报文格式。该格式通常包括请求报文和响应报文的格式,报文格式的定义如图2-2所示。在以后的学习中,如果使用抓包工具分析数据包,那么你看到的就是协议报文的各个字段,类似于图2-3中的租房协议中填写的各个字段。你看到的是每个字段的值,协议的具体条款看不到。图2-4所示的是IP定义的需要通信双方填写的表格,它叫作IP首部。网络中的计算机通信只需按着表格填写内容即可,这样通信双方的计算机和网络设备就能够按照IP的约定工作了。

图2-4 IP首部

应用程序通信使用的协议叫作应用层协议,应用层协议定义的需要填写的表格叫作报文格式。有的协议需要定义多种报文格式,比如ICMP,就有3种报文格式:ICMP请求报文、ICMP响应报文、ICMP差错报告报文。再比如HTTP,它定义了两种报文格式:HTTP请求报文、HTTP响应报文。

上面的租房协议是双方协议,协议中有甲、乙双方。有的协议是多方协议,比如大学生大四实习,要和实习单位签一份实习协议,实习协议就是三方协议:学生、学校和实习单位。协议规定了学生、学校以及实习单位需要遵循的约定。在很多计算机网络教材中,协议中的甲方和乙方被称为“对等实体”。

现在互联网中计算机通信使用的协议是TCP/IPv4协议栈,它是目前最完整、使用最广泛的通信协议之一。如图 2-5 所示,TCP/IPv4协议栈是一组协议,每一个协议都是独立的,有各自的甲方和乙方,有各自的目的和协议条款。这一组协议按功能分层,可分为应用层、传输层、网络层和数据链路层(网络接口层)。这一组协议共同工作才能实现网络中计算机之间的通信。

图2-5 TCP/IPv4协议栈

TCP/IPv4协议栈的魅力在于可使具有不同硬件结构、不同操作系统的计算机相互通信。TCP/IPv4协议栈既可用于广域网,也可用于局域网,它是Internet/Intranet 的基石。如图2-5所示,TCP/IPv4协议栈的主要协议有传输控制协议(TCP)和网际协议(IP)两个。

为什么说计算机通信需要这一组协议呢?怎么来理解分层呢?

大家想想网上购物,商家和顾客之间需要有购物协议,你也许没意识到这是购物协议,但商家和顾客在购物过程中一直按照购物平台要求的流程完成购物,顾客和商家的交互过程就相当于应用程序通信的交互过程,这是标准化的流程。商家提供商品,顾客浏览商品、选款式然后网上付款。接着商家发货,顾客收到货后确认收货,货款才能到商家账上,如果顾客不满意,还可以退货。购买了商品的顾客可以评价该商品。这就是购物需要的流程,可以认为是网络购物使用的协议。购物协议的甲方、乙方分别是商家和顾客,购物协议规定了购物流程、商家能做什么、顾客能做什么,操作顺序都定义好了。比如商家不能在付款前发货,顾客不能在未购物的情况下做出评价。这就相当于计算机通信使用的一个应用层协议。当然还有网上订餐,它也需要订餐流程,它相当于计算机通信中的另一个应用层协议。网络中的应用很多,比如访问网站、收发电子邮件、远程登录等,每一种应用都需要一个应用层协议。

只有购物协议就能实现网上购物了吗?购买的商品还需要快递到顾客家中,如果顾客不满意,可以将货品快递到商家。也就是说网上购物还需要快递公司提供的物流功能。顺丰快递、圆通快递、中通快递等快递公司实现的是相同的功能:为网上购物提供物流服务。

快递公司投递快件,也需要有快递协议。快递协议规定了快件投送的流程以及投送快递需要填写的快递单。客户按着快递单的格式,在指定的地方填写收件人和发件人等信息。快递单规定了为了实现物流功能需要填写的表格,表格规定了要填写的内容。快递公司根据收件人所在的城市分拣快递,选择托运路线。快递到达目标城市后,快递人员根据快递单具体地址信息将快递投送给收件人。如图2-6所示,快递公司的快递单就相当于计算机通信中的网络层的IP所定义的IP首部,其目的就是把数据包发送到目标地址。

图2-6 快递单

快递公司为网上购物提供物流服务,类似的,TCP/IPv4协议栈分为4层,底层协议为它的上层协议提供服务,即传输层为应用层提供服务,网络层为传输层提供服务,数据链路层为网络层提供服务。

图2-7展示了TCP/IPv4协议栈的分层和作用范围。应用层协议的甲方和乙方分别是服务器端程序和客户端程序。传输层协议的甲方和乙方分别是通信的两个计算机的传输层,TCP为应用层协议实现可靠传输,UDP为应用层协议提供报文转发。网络层协议中的IP为数据包跨网段转发选择路径。IP是多方协议,包括通信的两台计算机和沿途经过的路由器。路由器工作在网络层,网络层设备就是指路由器或三层交换机。数据链路层负责将网络层的数据包从链路的一端发送到另一端,数据链路层协议的作用范围是一段链路,不同的链路有不同的数据链路层协议。交换机负责将帧从一端发送到另一端,交换机属于数据链路层设备。

图2-7 协议的分层和作用范围

如图2-8所示,我们通常所说的TCP/IPv4栈不是一个协议,也不是TCP和IP两个协议,而是一组独立的协议。TCP/IPv4栈中的协议,按功能划分为4层,最高层是应用层,依次是传输层、网络层、网络接口层,本书将网络接口层拆分成两层来讲,即数据链路层和物理层。

图2-8 TCP/IPv4栈分层

下面介绍各层实现的功能。

1.应用层

应用层协议定义了互联网上常见的应用(服务器和客户端通信)通信规范。互联网中的应用很多,这就意味着应用层协议也很多,图2-8只列出了几个常见的应用层协议,但你不能认为就这几个。每个应用层协议定义了客户端能够向服务端发送哪些请求(也可以认为是哪些命令,这些命令发送的顺序),服务端能够向客户端返回哪些响应,这些请求报文和响应报文都有哪些字段,每个字段实现什么功能,每个字段的各种取值所代表的意思。

2.传输层

传输层有两个协议,TCP和UDP。如果要传输的数据需要分成多个数据包发送,那么发送端和接收端的TCP要确保接收端最终完整无误地收到所传数据。如果在传输过程中网络出现丢包,那么发送端会超时重传丢失的数据包。如果发送的数据包没有按发送顺序到达接收端,那么接收端会把数据包在缓存中排序,接着等待迟到的数据包,最终收到连续的、完整的数据。

UDP适用于应用层协议发送的内容用一个数据包就能发送完的场景,这种情况无须分段发送,不存在数据包是否按顺序到达的问题。数据发送是否成功,由应用程序判断。UDP要比TCP简单得多。

3.网络层

网络层协议负责在不同网段间转发数据包,为数据包选择最佳的转发路径。网络中的路由器负责在不同网段转发数据包,为数据包选择转发路径,因此我们称路由器工作在网络层,是网络层设备。

4.数据链路层

数据链路层协议负责把数据包从链路的一端发送到另一端。网络设备由网线或线缆连接,连接网络设备的这一段网线或线缆叫作一条链路。在不同的链路中传输数据有不同机制和方法,也就是有不同的数据链路层协议,比如以太网使用CSMA/CD协议,点到点链路使用PPP。

5.物理层

物理层定义网络设备接口有关的一些特性,并对其进行标准化,比如接口的形状、尺寸、引脚数目和排列、固定和锁定装置、接口电缆的各条线上出现的电压范围等规定,这些都可以认为是物理层协议的内容。

协议按功能分层的好处就是,某一层的改变不会影响其他层。某层协议可以改进或改变,但它的功能是不变的。比如计算机通信可以使用IPv4也可以使用IPv6。网络层协议改变了,但其功能依然是为数据包选择转发路径,不会引起传输层协议的改变,也不会引起数据链路层的改变。

这些协议,每一层为上一层提供服务,物理层为数据链路层提供服务,数据链路层为网络层提供服务、网络层为传输层提供服务,传输层为应用层提供服务。以后网络出现故障,比如你不能访问Internet了,排除网络故障时要从底层到高层逐一检查。比如先看看网线是否连接,这是物理层排错;再ping Internet上的一个公网地址看看是否畅通,这是网络层排错;最后再检查浏览器设置是否正确,这是应用层排错。

如图2-9所示,商家给顾客发货,需要将“商品”打包,贴上快递单,这个过程可以叫作“封装”,封装后的快递包裹,我们称其为“快件”。顾客收到快件后,快递单就没用了,撕掉快递单打开包裹,看到购买的“商品”,这个过程可以叫作“解封”。快递员看不到包裹中的商品,也不关心是什么商品,我们说快递员工作在物流层。当然商家和顾客也不关心包裹是走什么路线送达的,是空运还是铁路运输。类似的,计算机在通信过程也需要对要传输的数据进行封装和解封,封装后的数据有不同的名称。

图2-9 封装和解封

如图2-10所示,应用程序通信需要发送的数据叫作“报文”,报文的格式由应用层协议定义。为了实现可靠传输,需要在传输层添加TCP首部,这就是“封装”,封装后就是“段”,TCP首部字段和格式由TCP协议定义。为了将数据段发送到目标计算机,需要在网络层为传输层的“段”添加IP首部,添加了IP首部的段称为“数据包”,IP首部字段和格式由IP定义。为了把数据包从链路的一端传输到另一端,需要给“数据包”添加数据链路层首部,以将数据包封装成“帧”。接收端收到后会去掉这些封装并提交给上层协议,这就是“解封”过程。

图2-10 封装

网络中的计算机通信,实际上是计算机上的应用程序之间的通信,比如打开QQ和别人聊天,打开浏览器访问网站,打开暴风影音在线看电影,这些都会产生网络流量。

应用程序通常分为客户端程序和服务器端程序,客户端程序向服务器端程序发送请求,服务器端程序向客户端程序返回响应,提供服务。服务器端程序运行后等待客户端的连接请求。比如百度网站,不管是否有人访问百度网站,百度Web服务就一直等待客户端的访问请求,如图2-11所示。

图2-11 客户端和服务器端程序通信

客户端程序能够向服务器端程序发送哪些请求,也就是客户端能够向服务器端发送哪些命令,这些命令发送的顺序,发送的请求报文有哪些字段,分别代表什么意思,都需要提前约定好。

服务器端程序收到客户端发来的请求。应该有哪些响应,什么情况发送什么响应,发送的响应报文有哪些字段,分别代表什么意思,也需要提前约定好。

这些提前约定好的客户端程序和服务器端程序通信规范就是应用程序通信使用的协议,称为应用层协议。Internet上有很多应用,比如访问网站的应用、收发电子邮件的应用、文件传输的应用、域名解析应用等,每一种应用都需要一个专门的应用层协议,这就意味着需要很多的应用层协议。

应用层协议的甲方和乙方是服务器端程序和客户端程序,在很多计算机网络原理的教材中,协议中的甲方和乙方称为对等实体。

TCP/IP是互联网通信的工业标准,TCP/IP中的应用层协议HTTP、FTP、SMTP、POP3都是标准化的应用层协议,应用层协议的标准化有什么好处呢?

Internet上用于通信的服务器端软件和客户端软件往往不是一家公司开发的,比如Web服务器有微软公司的IIS服务器,还有开放源代码的Apache、Nginx等,浏览器有微软的IE浏览器、UC浏览器、360浏览器、火狐浏览器、谷歌浏览器等。你会发现Web服务器和浏览器虽然是不同公司开发的,但这些浏览器却能够访问全球所有的Web服务器,这是因为Web服务器和浏览器都是参照HTTP进行开发的,如图2-12所示。

图2-12 HTTP使得各种浏览器能够访问各种Web服务器

HTTP定义了Web服务器和浏览器通信的方法,协议双方就是Web服务器和浏览器。为了更形象,我们称Web服务器为甲方、浏览器为乙方。

HTTP是TCP/IP中的一个标准协议,是一个开放式协议。由此你可以想到,肯定还有私有协议。比如在思科公司的路由器和交换机上运行的CDP(思科发现协议),只有思科的设备支持。比如你公司开发的一款软件有服务器端和客户端,它们之间的通信规范由开发者定义,这就是应用层协议。不过那些做软件开发的人如果不懂网络,没有学过TCP/IP,那么他们并不会意识到他们定义的通信规范就是应用层协议,以及这样的协议就是私有协议,而这些私有协议不属于TCP/IP。

对于Internet上的常见应用,比如发送电子邮件、接收电子邮件、域名解析、文件传输、远程登录、地址自动配置等,它们通信使用的协议都已经成为Internet标准,并成为了TCP/IP中的应用层协议。下面列出了TCP/IP中常见的应用层协议。

下面参照租房协议的格式将HTTP的主要内容列出来(注意:不是完整的),从而让读者更清楚地认识应用层协议,如图2-13所示。

可以看到HTTP定义了浏览器访问Web服务器的步骤,能够向Web服务器发送哪些请求(方法),HTTP请求报文格式(有哪些字段,分别代表什么意思),也定义了Web服务器能够向浏览器发送哪些响应(状态码),HTTP响应报文格式(有哪些字段,分别代表什么意思)。

图2-13 HTTP

图2-13 HTTP(续)

图2-13 HTTP(续)

举一反三,其他的应用层协议也需要定义以下内容。

在计算机中安装抓包工具可以捕获网卡发出和接收到的数据包,还能够捕获应用程序通信的数据包。这样就可以直观地看到客户端和服务器端的交互过程,如客户端发送了哪些请求,服务器返回了哪些响应等。这些也是应用层协议的工作过程。

接下来介绍使用抓包工具捕获SMTP客户端(Outlook Express)向SMTP服务器端发送电子邮件的过程,我们可以看到客户端向服务器发送的请求(命令)以及服务器向客户端发送的响应(状态代码)。

抓包工具Ethereal有两个版本,在Windows XP和Windows Server 2003上使用Ethereal抓包工具,在Windows 7和Windows 10上使用Wireshark(Ethereal的升级版)抓包工具。建议在VMWare Workstation虚拟机中完成抓包分析过程。以下操作在Windows XP虚拟机中进行。因为Windows XP中有Outlook Express,所以将虚拟机网卡指定到NAT网络后,抓包工具就不会捕获物理网络中大量无关的数据包了。

登录网易邮箱的网站,申请一个电子邮箱,然后启用POP3和SMTP服务,如图2-14所示。

图2-14 启用POP3和SMTP服务

在Windows XP上安装Ethereal,然后运行抓包工具。再打开Outlook Express,将申请的电子邮件账户连接到邮件服务器,给自己写一封邮件,单击“发送/接收”,停止抓包。如图2-15所示,可以看到发送邮件的协议SMTP,右键单击该数据包,并单击Follow TCP Stream。

图2-15 筛选数据包

Outlook Express就是SMTP客户端,如图2-16所示,可以看到SMTP客户端向SMTP服务器发送电子邮件的交互过程。

图2-16 发送电子邮件的交互过程

图2-16中SMTP客户端向SMTP服务器发送的命令以及顺序如下。

EHLO xp                         --EHLO是对HELO的扩展,可以支持用户认证,xp是客户端计算机名
AUTH LOGIN                      --需要身份验证
MAIL FROM: <ess2005@yeah.net>   --发件人
RCPT TO: <ess2005@yeah.net>     --收件人
DATA                            --邮件内容
.                               --表示结束,将输入内容一起发送出去
QUIT                            --退出

图2-16中有状态代码的行是SMTP服务器向SMTP客户端返回的响应。

220<domain>     --服务器就绪
250             --要求的邮件操作完成
334             --服务器响应,已经过BASE64编码的用户名和密码
354             --开始邮件输入,以“.”结束
221             --服务关闭

从以上捕获到的数据包中,我们可以看到SMTP、客户端向服务器发送的命令以及服务器返回的响应。

高级防火墙能够识别应用层协议的方法,我们可以设置高级防火墙来禁止客户端向服务器发送某个请求,也就是禁用应用层协议的某个方法。比如浏览器请求网页使用的是GET方法,向Web服务器提交内容使用的是POST方法。如果企业不允许员工在Internet上的论坛发帖,那么可以在企业网络边缘部署高级防火墙以禁止HTTP的POST方法,如图2-17所示。

图2-17 部署高级防火墙

图2-18所示的是微软企业级防火墙TMG,配置HTTP以阻止POST方法。注意:方法名称区分大小写。

图2-18 阻止HTTP的POST方法

在Windows Server 2012 R2上安装FTP服务,可以禁止FTP的某些方法。下面的操作就是在Windows 7中安装Wireshark抓包工具;开始抓包后,访问Windows Server 2012 R2上的FTP服务;然后上传一个test.txt文件,并将其重命名为abc.txt;最后删除FTP服务器上的abc.txt文件,这样抓包工具会捕获FTP客户端发送的全部命令。

如图2-19所示,右键单击某个FTP协议数据包,然后单击“追踪流”“TCP流”。

图2-19 访问FTP服务器的数据包

接下来会出现图2-20所示的窗口,它将FTP客户端访问FTP服务器的所有交互过程中产生的数据整理到了一起。我们可以从中看到FTP中的方法,“STOR”方法上传test.txt,“CWD”方法改变工作目录,“RNFR”方法重命名test.txt,“DELE”方法删除abc.txt文件。如果想看到FTP的其他方法,可以使用FTP客户端在FTP服务器上执行创建文件夹、删除文件夹、下载文件等操作,这些操作对应的方法使用抓包工具都能看到。

图2-20 FTP客户端访问FTP服务器的交互过程

我们也可以配置FTP服务器以禁止FTP中的一些方法。比如想要禁止FTP客户端删除FTP服务器上的文件,那么可以配置FTP请求筛选,从而禁止DELE方法。如图2-21所示,单击“FTP请求筛选”。

图2-21 配置FTP请求筛选

如图2-22所示,在“FTP请求筛选”界面中单击“命令”标签,然后单击“拒绝命令…”,在出现的“拒绝命令”对话框中输入“DELE”,单击“确定”按钮。

图2-22 禁用DELE方法

此时再在Windows 7上删除FTP服务器上的文件时,就会出现提示“500 Command not allowed.”,如图2-23所示,意为命令不被允许。

图2-23 命令不允许

Windows Server 2012 R2的Web站点也可以禁止HTTP的某些方法,如图2-24所示,单击“请求筛选”。

图2-24 筛选HTTP协议请求

如图2-25所示,在“HTTP谓词”标签下,单击“拒绝谓词…”,输入拒绝的方法“POST”,此时浏览器向该网站发送的POST请求就被拒绝。

图2-25 禁用HTTP的“POST”方法

传输层的两个协议,传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)有各自的应用场景。

TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收。其间若出现丢包、乱序现象,TCP负责重传和排序。下面是TCP的应用场景。

(1)客户端程序和服务端程序需要多次交互才能实现应用程序的功能,比如接收电子邮件使用的POP3和发送电子邮件的SMTP,以及传输文件的FTP,都需要客户端程序和服务端程序多次交互。

(2)应用程序传输的文件需要分段传输。比如浏览器访问网页,网页中图片和HTML文件需要分段后发送给浏览器,或QQ传文件,这些场景在传输层选用的是TCP。

如果需要将发送的内容分成多个数据包发送,这就要求在传输层使用TCP,并在发送方和接收方建立连接,从而实现可靠传输、流量控制和拥塞避免。

比如从网络中下载一个500MBit的电影或下载一个200MBit的软件,这么大的文件需要拆分成多个数据包发送,发送过程需要持续几分钟或几十分钟。在此期间,发送方将要发送的内容一边发送一边放到缓存,将缓存中的内容分成多个数据包并进行编号,然后按顺序发送。这就需要在发送方和接收方之间建立连接,协商通信过程的一些参数(比如一个数据包最大有多少字节),如果网络不稳定造成某个数据包丢失,那么发送方必须重新发送丢失的数据包,否则就会造成接收到的文件不完整,这就需要TCP来实现可靠传输。如果发送方发送速度太快,接收方来不及处理,接收方会通知发送方降低发送速度甚至停止发送。TCP还能实现流量控制。互联网中的流量不固定,流量过高时会造成网络拥塞(这一点很好理解,就像城市上下班高峰时的交通堵塞一样),在整个传输过程中发送方要一直探测网络是否拥塞来调整发送速度。TCP有拥塞避免机制。

如图2-26所示,发送方的发送速度由网络是否拥塞和接收端接收速度两个因素控制,哪个速度低,就用哪个速度发送。

图2-26 TCP功能

在有些应用程序通信中,使用TCP就会降低效率。比如有些应用,客户端只需向服务器发送一个请求报文,服务器返回一个响应报文就实现其功能。这类应用如果使用TCP,发送3个数据包建立连接,再发送4个数据包释放连接,就为了发送一个报文,就显得不值了。干脆让应用程序直接发送,如果丢包了,应用程序再发送一遍。面对这类应用,在传输层就使用UDP。

UDP的应用场景如下。

(1)客户端程序和服务端程序通信时,应用程序发送的数据包不需要分段。比如域名解析,DNS协议就是用传输层的UDP,客户端向DNS服务器发送一个报文以解析某个网站的域名,DNS服务器将解析的结果使用一个报文返回给客户端。

(2)实时通信,比如QQ语音聊天、微信语音聊天或视频聊天。在这类应用中,发送端和接收端需要实时交互,也就是不允许较长延迟,即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文。等待的时间太长了,就不能愉快地聊天了。

(3)多播或广播通信。比如学校多媒体机房,老师的计算机屏幕需要教室的学生计算机接收,在老师的计算机上安装多媒体教室服务端软件,在学生计算机上安装多媒体教室客户端软件,老师计算机使用多播地址或广播地址发送报文,学生计算机都能收到。这类应用在传输层使用UDP。

知道了传输层两个协议的特点和应用场景后,就很容易判断某个应用层协议在传输层使用什么协议了。

现在判断一下,QQ聊天在传输层使用的是什么协议,QQ传文件在传输层使用的是什么协议?

如果使用QQ给好友传输文件,且传输文件会持续几分钟或几十分钟,则肯定不是使用一个数据包就能把文件传输完的。我们需要将要传输的文件分段传输,在传输文件之前需要建立会话,并在传输过程中实现可靠传输、流量控制、拥塞避免等。我们需要在传输层中使用TCP来实现这些功能。

使用QQ聊天时,通常一次输入的聊天内容不会有太多文字,使用一个数据包就能把聊天内容发送出去。并且聊完第一句,也不一定什么时候聊第二句,此时发送数据是不持续的。若发送QQ聊天的内容需在传输层使用UDP。

可见,应用程序通信可根据通信的特点来在传输层中选择不同的协议。

接下来讲解TCP报文的首部格式。TCP能够实现数据分段传输、可靠传输、流量控制、网络拥塞避免等功能。TCP报文首部比UDP报文首部的字段要多,并且首部长度不固定。如图2-27所示,TCP报文段首部的前20字节是固定的,后面有4N个字节是根据需要而增加的选项(N是整数)。因此TCP首部的最小长度是20字节。

图2-27 TCP首部

首部固定部分各字段的意义如下。

(1)源端口和目的端口各占2字节,分别写入源端口号和目的端口号。

(2)序号占4字节。序号范围是[0, 2321],共232(即4 294 967 296)个序号。序号增加到2321后,下一个序号就又回到0。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。如图2-28所示,以A计算机给B计算机发送一个文件为例来说明序号的用法。为了方便说明问题,传输层其他字段没有展现,第1个报文段的序号字段值是1,而携带的数据共有100字节。这就表明:本报文段的数据的第一个字节的序号是1,最后一个字节的序号是100。下一个报文段的数据序号应当从101开始,即下一个报文段的序号字段值应为101。这个字段的名称也叫作“报文段序号”。

图2-28 理解序号和确认号

B计算机将收到的数据包放到缓存,根据序号对收到的数据包中的字节进行排序,B计算机的程序会从缓存中读取编号连续的字节。

(3)确认号。确认号占4字节,是期望收到对方下一个报文段的第一个数据字节的序号。

TCP能够实现可靠传输。接收方收到几个数据包后,就会给发送方一个确认数据包,告诉发送方下一个数据包该发第多少个字节了。如图2-28所示的例子,B计算机收到了两个数据包,将两个数据包字节排序得到连续的前200字节,B计算机要发一个确认包给A计算机,告诉A计算机应该发送第201字节了,这个确认数据包的确认号就是201。确认数据包没有数据部分,只有TCP首部。

总之,应当记住:若确认号是N,则表明到序号N-1为止的所有数据都已正确收到。

序号字段有32位长,可对4GB(即4千兆字节)的数据进行编号。如果传输的文件大于4GB,则序号就会再次从1开始。

(4)数据偏移占4字节。它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上指出了TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。但请注意,“数据偏移”的单位为4字节,由于4位二进制数能够表示的最大十进制数是15,因此数据偏移的最大值是60字节,这也是TCP首部的最大长度,也就意味着选项长度不能超过40字节。

(5)保留占6字节。保留一般是后面会使用,目前应置为0。

(6)紧急URG(urgent)。当URG=1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据),而不要按原来的排队顺序传送。例如,已经发送了一个很长的程序要在远地的主机上运行。但后来发现了一些问题,需要取消该程序的运行。因此用户从键盘发出中断命令(Control+C)。如果不使用紧急数据,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有的数据被处理完毕后这两个字符才被交付到接收方的应用进程。这样做就浪费了许多时间。

当URG置1时,发送应用进程就告诉发送方的TCP有紧急数据要传送。于是发送方TCP就把紧急数据插入到本报文段数据的最前面,而在紧急数据后面的数据仍是普通数据。URG要与首部中的紧急指针(Urgent Pointer)字段配合使用。

(7)确认ACK(acknowlegment)。仅当ACK=1时确认号字段才有效。当ACK=0时,确认号字段无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

(8)推送PSH(push)。当两个应用进程进行交互式的通信时,有时一端的应用进程希望在键入一个命令后立即就能收到对方的响应。在这种情况下,TCP就可以使用推送(push)操作。即发送方TCP把PSH置1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段后,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。虽然应用程序可以选择推送操作,但推送操作很少使用。

(9)复位RST(reset)。当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。RST也可称为重建位或重置位。

(10)同步SYN(synchronization),在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受报文。关于连接的建立和释放,在后面TCP连接管理部分将详细讲解。

(11)终止FIN(finish),用来释放一个连接。当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接。

(12)窗口,占2字节。窗口值是[0,216−1]的整数。TCP有流量控制功能,窗口值用来告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的最大数据量(单位是字节)。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。使用TCP传输数据的计算机会根据自己的接收能力随时调整窗口值,然后对方参照这个值及时调整发送窗口,从而达到流量控制功能。

(13)检验和占2字节。检验和字段检验的范围包括首部和数据两部分。

(14)紧急指针占2字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完后,TCP就告诉应用程序恢复正常操作。值得注意的是,即使窗口为零时也可发送紧急数据。

(15)选项的长度可变,最长可达40字节。当没有使用选项时,TCP的首部长度是20字节。TCP最初只规定了一种选项,即最大报文段长度(Maximum Segment Size,MSS)。MSS是每一个TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个TCP报文段,因此MSS并不是整个TCP报文段的最大长度,而是“TCP报文段长度减去TCP首部长度”。

TCP是可靠传输协议,使用TCP通信的计算机在正式通信之前需要先确保对方是否存在,并协商通信的参数,比如接收端的接收窗口大小、支持的最大报文段长度(MSS)、是否允许选择确认(SACK)、是否支持时间戳等。建立连接后就可以进行双向通信了,通信结束后,释放连接。

TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程叫作客户端(Client),而被动等待连接建立的应用进程叫作服务端(Server)。

1.TCP的连接建立

如图2-29所示,客户端向服务端发起通信,客户端的TCP模块与服务端的TCP模块之间将通过“3次握手”(Three-way Handshaking)来建立TCP会话。

所谓3次握手,是指在TCP会话的建立过程中总共交换了3个TCP控制段, 这3个数据包就是TCP建立连接的数据包。

TCP建立连接的过程如图 2-29 所示,不同阶段在客户端和服务器端能够看到不同的状态。

图2-29 用3次握手建立TCP连接

服务端启动服务后,就会使用TCP的某个端口侦听客户端的请求,等待客户的连接,状态由CLOSED变为LISTEN状态。

3次握手具体如下。

(1)客户端的应用程序发送TCP连接请求报文,把自己的状态告诉对方,这个报文的TCP首部SYN标记位是1,ACK标记位为0,序号(seq)为x,这个x被称为客户端的初始序列号,通常为0。发送出连接请求报文后,客户端就处于SYN_SENT状态。

(2)服务端收到客户端的TCP连接请求后,发送确认连接报文,将自己的状态告诉给客户端,这个报文的TCP首部SYN标记位是1,ACK标记位为1,确认号(ack)为x+1,序号(seq)为y,y为服务端的初始序列号。服务器端此时处于SYN_RCVD状态。

(3)客户端收到连接请求确认报文后,状态就变为ESTABLISHED,然后再次发送给服务器一个确认报文,用于确认会话的建立。该报文SYN标记位为0,ACK标记位为1,确认号(ack)为y+1。服务器端收到确认报文后,状态变为ESTABLISHED。

需要特别注意的是,经过3次握手之后,A、B之间其实是建立起了两个TCP会话,一个是从客户端指向服务端的TCP会话,另一个是从服务端指向客户端的TCP会话。A是发起通信的一方,说明客户端有信息要传递给服务端,于是客户端首先发送了一个SYN段,请求建立一个从客户端指向服务端的TCP会话,这个会话的目的是要控制信息能够正确且可靠地从客户端传递给服务端。服务端在收到SYN段后,会发送一个SYN+ACK段作为回应。SYN+ACK段的含义是:服务端一方面同意了客户端的请求,另一方面也请求建立一个从服务端指向客户端的TCP会话,这个会话的目的是要控制信息能够正确且可靠地从服务端传递给客户端。客户端收到SYN+ACK段后,回应一个ACK段,表示同意服务端的请求。

以后就可以进行双向可靠通信了。

2.TCP连接释放

TCP通信结束后,需要释放连接。TCP连接释放过程比较复杂,我们结合双方状态的改变来阐明连接释放的过程。数据传输结束后,通信的双方都可释放连接。如图2-30所示,现在A和B都处于ESTABLISHED状态,A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。A把连接释放报文段首部的FIN置1,其序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1。这时A进入FIN-WAIT-1(终止等待1)状态,等待B的确认。

图2-30 TCP连接释放的过程

请注意,TCP规定,FIN报文段即使不携带数据,也会消耗掉一个序号。

B收到连接释放报文段后立即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1。然后B就进入CLOSE-WAIT(关闭等待)状态。TCP服务器进程这时应通知高层应用进程,从而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭(half-dose)状态,即A已经没有数据要发送了,但若B发送数据,A仍要接收。也就是说,从B到A这个方向的连接并未关闭。这个状态可能会持续一些时间。

A收到来自B的确认后,就进入FIN-WAIT-2(终止等待2)状态,然后等待B发出连接释放报文段。若B已经没有要向A发送的数据,那么其应用进程就通知TCP释放连接。这时B发出的连接释放报文段必须使FIN=1。现假定B的序号为w(在半关闭状态B可能又发送了一些数据)。B还必须重复上次已发送过的确认号ack=u+1。这时B就进入LAST-ACK(最后确认)状态,等待A的确认。

A在收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1,确认ack=w+1,而自己的序号seq=u+1(根据TCP标准,前面发送过的FIN报文段要消耗一个序号)。然后进入到TIME-WAIT(时间等待)状态。请注意,现在TCP连接还没有释放掉。必须经过时间等待计时器(TIME-WAIT timer)设置的时间2MSL后,A才进入CLOSED状态。时间MSL叫作最长报文段寿命(Maximum Segment Lifetime),RFC793建议设为2分钟。但这完全是从工程上来考虑的,对于现在的网络,MSL=2分钟可能太长了。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。因此,从A进入到TIME-WAIT状态后,要经过4分钟才能进入到CLOSED状态,才能开始建立下一个新的连接。

上述的TCP连接释放过程是4次握手,也可以看成是两个二次握手。除时间等待计时器外,TCP还设有一个保活计时器(Keepalive Timer)。设想有这样的情况:客户已主动与服务器建立了TCP连接,但后来客户端的主机突然出现故障。显然,服务器以后就不能再收到客户发来的数据了。因此,应当有措施使服务器不会再白白等待下去。这就要使用保活计时器。服务器每收到一次客户的数据,就重新设置保活计时器,时间的设置通常是两小时。若两小时后没有收到客户的数据,服务器就发送一个探测报文段,以后则每隔75分钟发送一次。若一连发送10个探测报文段后仍无客户的响应,服务器就认为客户端出了故障,接着就关闭这个连接。

TCP实现可靠传输使用的是连续自动重传请求(Automatic Repeat-reQuest,ARQ)协议和滑动窗口协议。下面就介绍连续ARQ和滑动窗口协议的工作过程。

TCP建立连接后,双方可以使用建立的连接相互发送数据。为了更方便地讨论问题,我们仅考虑A发送数据而B接收数据并发送确认。因此A叫作发送方,B叫作接收方。

滑动窗口是面向字节流的,为了方便大家记住每个分组的序号,下面的讲解就假设每一个分组是100字节。为了方便画图,我将分组进行编号以简化表示,如图2-31所示。不过你要记住,每一个分组的序号是多少。

图2-31 简化分组表示

如图2-32所示,在建立TCP连接时,B计算机告诉A计算机它的接收窗口为400字节,A计算机就设置一个400字节大小的发送窗口。如果一个分组有100字节,那么在发送窗口中就有M1、M2、M3和M4 4个分组,发送端A就可以连续发送这4个分组,每一个分组都记录一个发送时间,如图2-32中t1时刻所示,发送完毕后,就停止发送。接收端B收到这4个连续分组,只需给A发送一个确认,确认号为401,告诉A计算机401以前的字节已经全部收到。在t2时刻,发送端A收到M4分组的确认,发送窗口就向前滑动,M5、M6、M7和M8分组就进入发送窗口,这4个分组就可以连续发送。发送完后,停止发送,等待确认。这就是滑动窗口协议。

图2-32 连续ARQ协议和滑动窗口协议

如果M7在传输过程中丢失,B计算机只收到M5、M6和M8分组。B收到连续的M1、M2……M6分组,就会给A计算机发送一个确认,该确认的序号为601,告诉A计算机600以前的字节全部收到。在t3时刻,A计算机收到确认,但并不是立即发送M7,而是向前滑动发送窗口,M9和M10进入发送窗口,发送M9和M10。什么时候发送M7呢?M7超时后就会自动重发。这个超时时间是一个比往返时间长一点的时间。如果发送了M9之后M7就超时了,此时发送顺序就变成了M9、M7和M10。这就是连续ARQ协议。

UDP与TCP一样用于处理数据包。在OSI模型中,两者都位于传输层,处于IP的上一层。传输层中的UDP是一个无连接的传输协议,UDP为应用程序提供了一种无须建立连接就可以发送封装的 IP 数据包的方法。

UDP的缺点为不提供数据包分组和组装的功能,且不能对数据包进行排序,也就是说,当报文发送之后,我们是无法得知其是否安全、完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP。UDP从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但即使在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

许多应用只支持UDP,如多媒体数据流,它不产生任何额外的数据,即使知道有破坏的包也不进行重发。当强调传输性能而不是传输的完整性时,如音频和多媒体应用,UDP是最好的选择。

TCP/IP中的应用层协议很多,而传输层只有两个协议,如何使用两个传输层协议来标识应用层协议呢?

传输层协议加一个端口号可以标识一个应用层协议。如图2-33所示,图中标明了传输层协议和应用层协议之间的关系。

图2-33 传输层协议和应用层协议之间的关系

DNS同时占用UDP和TCP端口53是公认的,通过抓包分析,几乎所有的情况在使用UDP,这说明DNS主要还是使用UDP。DNS在进行区传送的情况下会使用TCP(区传送是指一个区域内主DNS服务器和辅助DNS服务器之间建立通信连接并进行数据传输的过程),这个存在疑问?

下面是一些常见的应用层协议和传输层协议之间的关系。

以上列出的都是默认端口,当然也可以更改应用层协议使用的端口。如果不使用默认端口,客户端访问服务器时需要指明所使用的端口。比如91学IT网站指定HTTP使用808端口,访问该网站时就需要指明使用的端口:http://www.91xueit.com:808,冒号后面的808指明HTTP使用端口808。如图2-34所示,远程桌面协议(RDP)没有使用默认端口,冒号后面的9090指定使用端口9090。

图2-34 为远程桌面协议指定使用的端口

如图 2-35 所示,一台服务器同时运行了Web服务、SMTP服务和POP3服务,Web服务一启动就用TCP的80端口侦听客户端请求,SMTP服务一启动就用TCP的25端口侦听客户端请求,POP3服务一启动就用TCP的110端口侦听客户端请求。现在网络中的A计算机、B计算机和C计算机分别打算访问端口服务器的Web服务、SMTP服务和POP3服务。它们发送3个数据包①、②、③,这3个数据包的目标端口分别是80、25和110,服务器收到这3个数据包后,就根据目标端口将数据包提交给不同的服务进行处理。

图2-35 应用层协议和传输层协议之间的关系

现在大家就会明白,数据包的目标IP地址用来定位网络中的某台服务器,目标端口用来定位服务器上的某个服务。

图2-35给大家展示了A、B、C计算机访问服务器的数据包,该数据包目标端口和源端口,源端口是计算机临时为客户端程序分配的,服务器向A、B、C计算机发送数据包时,源端口就会变成目标端口。

如图 2-36 所示,A计算机打开谷歌浏览器,一个窗口访问百度网站,另一个窗口访问51CTO网页,这就需要建立两个TCP连接。A计算机会给每个窗口临时分配一个客户端端口(要求本地唯一),从51CTO返回的数据包的目标端口是13456,从百度网站返回的数据包的目标端口是12928,这样A计算机就知道这些数据包来自哪个网站,应给哪一个窗口。

图2-36 源端口的作用

传输层使用16位二进制来标识一个端口,端口号的取值范围是0~65535,这个数目对一台计算机来说足够用了。

端口号分为如下两大类。

(1)服务器端使用的端口号。

服务器端使用的端口号在这里又分为两类,最重要的一类叫作熟知端口号(well-known port number)或系统端口号,取值范围为0~1023。这些数值可从iana网站中查到。iana把这些端口号指派给了TCP/IP中非常重要的一些应用程序,并让所有的用户都知道。下面给出一些常用的熟知端口号,如图2-37所示。

图2-37 熟知端口号

另一类叫作登记端口号,取值范围为1024~49151。这类端口号由没有熟知端口号的应用程序使用。要使用这类端口号,必须在iana中按照规定的手续登记,以防止重复。

(2)客户端使用的端口号。

当打开浏览器访问网站,或登录QQ等客户端软件和服务器建立连接时,计算机会为客户端软件分配临时端口,这就是客户端端口,取值范围为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作临时(短暂)端口号。这类端口号留给客户进程暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在。这个端口号就可以供其他客户进程以后使用。

计算机之间的通信,通常是服务器端程序(以后简称服务)运行等待客户端程序的连接请求。服务端器程序通常以服务的形式存在于Windows服务系统或Linux系统中。这些服务不需要用户登录服务器,系统启动后就可以自动运行。

服务运行后就要使用TCP或UDP的某个端口侦听客户端的请求,服务停止,则端口关闭,同一台计算机的不同服务使用的端口不能冲突(端口唯一)。

在Windows Server 2003系统中,在命令提示符下输入netstat -an可以查看侦听的端口,如图2-38所示。

图2-38 Windows系统侦听的端口

如图2-39所示,设置Windows Server 2003系统属性。启用远程桌面(相当于启用远程桌面服务)后,再次运行netstat-an就会看到侦听的端口多了TCP的3389端口。关闭远程桌面,再次查看侦听端口,可以看到不再侦听3389端口。

图2-39 设置Windows Server 2003启用远程桌面

如图2-40所示,在命令提示符下使用telnet命令可以测试远程计算机是否侦听了某个端口,只要telnet没有提示端口打开失败,就意味着远程计算机侦听该端口。使用端口扫描工具也可以扫描远程计算机打开的端口,如果服务使用默认端口,那么根据服务器侦听的端口就能判断远程计算机开启了什么服务。你就明白了那些黑客入侵服务器时,为啥需要先进行端口扫描,扫描端口就是为了明白服务器开启了什么服务,知道运行了什么服务才可以进一步检测该服务是否有漏洞,然后进行攻击。

图2-40 测试百度网站是否侦听25端口

客户端和服务器之间的通信使用应用层协议,应用层协议使用传输层协议+端口标识,知道了这个关系后,网络安全也就应该了解了。

如果在一台服务器上安装了多个服务,其中一个服务有漏洞,被黑客入侵,黑客就能获得操作系统的控制权,进一步破坏其他服务。

如图 2-41 所示,服务器对外提供 Web 服务,在服务器上还安装了微软的数据库服务(MySQL服务),网站的数据就存储在本地的数据库中。如果没有配置服务器的防火墙对进入的流量做任何限制,且数据库的内置管理员账户sa的密码为空或弱密码,那么网络中的黑客就可以通过TCP的1433端口连接到数据库服务,猜测数据库的sa账户的密码,一旦猜对,就能获得服务器上操作系统管理员的身份,对服务器进行任何操作,这就意味着服务器被入侵了。

图2-41 服务器防火墙开放全部端口

TCP/IP在传输层中有两个协议:TCP和UDP,TCP和UDP就相当于网络中的两扇大门。如图2-41所示,门上开的洞就相当于开放TCP和UDP的端口。

如果想让服务器更加安全,那就把TCP和UDP这两扇大门关闭,在大门上只开放必要的端口。如图2-42所示,如果服务器对外只提供Web服务,便可以设置Web服务器防火墙只对外开放TCP的80端口,其他端口都关闭。这样即便服务器上运行了数据库服务,并使用TCP的1433端口侦听客户端的请求,互联网上的入侵者也没有办法通过数据库入侵服务器。

图2-42 在防火墙中设置对外开放的服务端口

前面讲的是设置服务器的防火墙,只开放必要的端口以加强服务器的网络安全。

我们也可以在路由器上设置网络防火墙,控制内网访问Internet的流量。如图2-43所示,企业路由器只开放了UDP的53端口和TCP的80端口,允许内网的计算机将域名解析的数据包发送到Internet的DNS服务器,并允许内网计算机使用HTTP访问Internet的Web服务器。内网计算机不能访问Internet上的其他服务,比如邮件发送(使用SMTP)和邮件接收(使用POP3协议)服务。

图2-43 在路由器上封锁端口

现在大家就会明白,如果我们不能访问某台服务器上的服务,也有可能是沿途路由器封掉了该服务使用的端口。在图2-43中,访问内网计算机telnet SMTP服务器的25端口就会失败,这并不是因为Internet上的SMTP服务器上没有运行SMTP服务,而是沿途路由器封掉了访问SMTP服务器的端口。

计算机通信使用的协议栈有两个,分别是TCP/IPv4协议栈和TCP/IPv6协议栈,TCP/IPv6相对于TCP/IPv4的网络层进行了改进,但两者实现的功能是一样的。

网络层协议为传输层提供服务,负责把传输层的段发送到接收端。IP实现网络层协议的功能,发送端将传输层的段加上IP首部。IP首部包括源IP地址和目标IP地址,加了IP首部的段称为“数据包”,网络中的路由器根据IP首部转发数据包。

如图2-44所示,TCP/IPv4协议栈的网络层有4个协议:ARP、IP、ICMP和IGMP。TCP和UDP使用端口号标识应用层协议,TCP段、UDP报文、ICMP报文、IGMP报文都可以封装在IP数据包中,使用协议号区分,也就是说IP使用协议号标识上层协议,TCP的协议号是6,UDP的协议号是17,ICMP的协议号是1,IGMP的协议号是2。虽然ICMP和IGMP都在网络层,但从关系上来看ICMP和IGMP在IP之上,也就是ICMP和IGMP的报文要封装在IP数据包中。

图2-44 TCP/IPv4协议栈

ARP在以太网中使用,用来将通信的目标地址解析为MAC地址,跨网段通信,并解析网关的MAC地址。解析出MAC地址才能将数据包封装成帧发送出去,因此ARP为IP提供服务,虽然将其归属到网络层,但从关系上来看ARP位于IP之下。

图2-45所示的是TCP/IPv6协议栈,它的网络层协议有了较大变化,但网络层功能和IPv4一样。

图2-45 TCP/IPv6协议栈

可以看到,IPv6协议栈与IPv4协议栈相比,只是网络层发生了变化,不会影响TCP和UDP,也不会影响数据链路层协议,网络层的功能和IPv4一样。IPv6的网络层没有ARP和IGMP,对ICMP的功能做了很大的扩展。IPv4协议栈中ARP的功能和IGMP的多点传送控制功能也被嵌入到ICMPv6中,分别是邻居发现(Neighbor Discovery,ND)协议和多播侦听器发现(Multicast Listener Discovery,MLD)协议。

IPv6在本书后面章节详细讲解,在这里不做过多讲述。

不做特别说明,IP默认是指IPv4。IP(Internet Protocol)又称网际协议,它负责Internet上网络之间的通信,并规定了将数据从一个网络传输到另一个网络应遵循的规则。它是TCP/IP的核心。

IP 是点到点的。它很简单,但不能保证传输的可靠性。它采用的是无连接数据报机制,对数据是“尽力传递”,不验证正确与否,也不保证分组顺序,且不发确认。所以IP提供的是主机间不可靠的无连接数据报传送。

IP的任务是对数据报进行相应的寻址和路由选择,并将其从一个网络转发到另一个网络。IP在每个要发送的数据包前加入控制信息(IP首部),其中包含了源主机的IP地址、目的主机的IP地址和其他一些信息。如果目的主机直接连在本网络中,那么IP可直接通过网络将数据报发给目的主机。如果目的主机在远端网络中,IP则通过路由器传送数据报,而路由器则依次通过下一网络将数据报传送到目的主机或再下一个路由器,即一个IP数据报通过互联网络,从一个IP模块传到另一个IP模块,直到终点为止。

IP数据包首部的格式能够说明IP都具有什么功能。在TCP/IP的标准中,各种数据格式常常以32位(即4字节)为单位来描述。图2-46是IP数据包的完整格式。

图2-46 网络层首部格式

IP数据包由首部和数据两部分组成。首部的前一部分是固定部分,共20字节,是所有IP数据包必须有的。在首部的固定部分的后面是可变部分,它是一些可选字段,其长度是可变的。

下面就网络层首部固定部分的各个字段进行详细讲解。

(1)版本占4位,指IP的版本。IP目前有两个版本IPv4和IPv6。通信双方使用的IP版本必须一致。目前广泛使用的IP版本号为4(即IPv4)。

(2)首部长度占4位,可表示的最大十进制数值是15。请注意,这个字段所表示的数的单位是32位二进制数(即4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远以4字节的整数倍开始,这样在实现IP时较为方便。首部长度限制为60 字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度是20字节(即首部长度为0101),这时不使用任何选项。

正是因为首部长度有可变部分,所以才需要有一个字段来指明首部长度,如果首部长度是固定的也就没有必要有“首部长度”这个字段了。

(3)区分服务占8位。配置计算机给特定应用程序的数据包添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包,在网络带宽比较紧张的情况下,也能确保这种应用的带宽有保障,这就是区分服务。这个字段在旧标准中叫作服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务(Differentiated Service,DS)。只有在使用区分服务时,这个字段才起作用。

(4)总长度指IP首部和数据的长度,也就是数据包的长度,单位为字节。总长度字段为16位,因此数据包的最大长度为2161=65535字节。实际上传输这样长的数据包在现实中是极少遇到的。

(5)标识(identification)占16位。IP在存储器中维持着一个计数器,每产生一个数据包,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,所以数据包不存在按序接收的问题。当数据包由于长度超过网络的MTU而必须分片时,同一个数据包被分成多个片,这些片的标识都一样,也就是数据包中标识字段的值被复制到所有的数据包分片的标识字段中。相同的标识字段的值使分片后的各数据包片能正确地重装成为原来的数据包。

(6)标志(flag)占3位,但目前只有两位有意义。

标志字段中的最低位记为MF(more fragment)。MF=1表示后面还有“分片”的数据包。MF=0表示这是若干数据包片中的最后一个。

标志字段中间的一位记为DF(don’t fragment),意思是“不能分片”。只有当DF=0时才允许分片。

(7)片偏移占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,片偏移指出该片从何处开始。片偏移以8字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。

(8)生存时间。生存时间字段常用的英文缩写是TTL(Time To Live),表示数据包在网络中的寿命。由发出数据包的源点设置这个字段,其目的是防止无法交付的数据包无限制地在网络中兜圈子(例如从路由器R1,转发到R2,再转发到R3,然后又转发到R1,从而白白消耗网络资源)。最初的设计是以秒作为TTL值的单位。每经过一个路由器时,就在TTL中减去数据包在路由器所消耗的时间。若数据包在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值减为零时,就丢弃这个数据包。

然而随着技术的进步,路由器处理数据包所需的时间不断在缩短,一般都远远小于1秒,后来就把TTL字段的功能改为“跳数限制”(但名称不变)。路由器在转发数据包之前就把TTL值减1。若TTL值减小到零,就丢弃这个数据包,不再转发。因此,现在TTL的单位不再是秒,而是跳数。TTL的意义是指明数据包在网络中至多可经过多少个路由器。显然,数据包能在网络中经过的路由器的最大数值是255。若把TTL的初始值设置为1,就表示这个数据包只能在本局域网中传送。这个数据包一传送到局域网上的某个路由器,在被转发之前TTL值就减小到零,从而就会被这个路由器丢弃。

(9)协议占 8 位,协议字段指出此数据包携带的数据使用何种协议,以便使目的主机的网络层知道应将数据部分上交给哪个处理过程。常用的一些协议和相应的协议字段值如图 2-47所示。

图2-47 协议号

(10)首部检验和占16位,这个字段只检验数据报的首部,但不检验数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等可能发生变化)。不检验数据部分可减少计算的工作量。

(11)源IP地址占32位。

(12)目标IP地址占32位。

ICMP Internet控制报文协议(Internet Control Message Protocol,ICMP)是TCP/IPv4协议栈中网络层的一个协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

ICMP报文是在IP数据报内部被传输的,它封装在IP数据报内。ICMP报文通常被IP层或更高层的协议(TCP或UDP)使用。一些ICMP报文把差错报文返回给用户进程。

接下来以抓包查看ICMP报文的格式。如图2-48所示,用PC1 ping PC2,ping命令产生一个ICMP请求报文,该报文被发送给目标地址,用来测试网络是否畅通。如果目标计算机收到ICMP请求报文,就会返回ICMP响应报文。下面的操作就是使用抓包工具捕获链路上ICMP请求报文和ICMP响应报文,请观察这两种报文的区别。

如图2-48所示,捕获AR1和AR2路由器链路上的数据包。

图2-48 ICMP请求和响应报文

图2-49所示的是ICMP请求报文,请求报文中有ICMP报文类型字段、ICMP报文代码字段、校验和字段以及ICMP数据部分。请求报文类型的值为8,报文代码为0。

图2-49 ICMP请求报文

图2-50所示的是ICMP响应报文,响应报文类型的值为0,报文代码为0。

图2-50 ICMP响应报文

ICMP报文分几种类型,每种类型又使用代码来进一步指明ICMP报文所代表的不同的含义。表2-1列出了常见的ICMP报文的类型和代码,以及代码所代表的含义。

表2-1 ICMP报文类型和代码代表的意义

报 文 种 类 类 型 值 代 码 描 述
请求报文 8 0 请求回显报文
响应报文 0 0 回显应答报文
差错报告报文 3(终点不可到达) 0 网络不可达
1 主机不可达
2 协议不可达
3 端口不可达
4 需要进行分片,但设置了不分片
13 由于路由器过滤,通信被禁止
4 0 源端被关闭
5(改变路由) 0 对网络重定向
1 对主机重定向
11 0 传输期间生存时间(TTL)为0
12(参数问题) 0 坏的IP首部
1 缺少必要的选项

ICMP差错报告共有5种,具体如下。

(1)终点不可到达。当路由器或主机没有到达目标地址的路由时,就丢弃该数据包,给源点发送终点不可到达报文。

(2)源点抑制。当路由器或主机由于拥塞而丢弃数据包时,就会向源点发送源点抑制报文,使源点知道应当降低数据包的发送速率。

(3)时间超时。当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。

(4)参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。

(5)改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

ping命令并不能跟踪数据包从源地址到目标地址沿途经过了哪些路由器,而在Windows操作系统中,华为路由器可以使用tracert命令跟踪数据包转发路径,能够帮助我们发现在到达目标地址的众多链路中到底是哪一条链路出现了故障。tracert命令是ping命令的扩展,它用IP报文生存时间(TTL)字段和ICMP差错报告报文来确定沿途经过的路由器。

不使用tracert命令,使用ping命令也可以得到到达目标地址沿途经过的路由器。如图2-51所示,如何在PC1上测试到达PC2所途经的路由器呢?下面演示如何使用ping命令和−i参数确定数据包到达目的地途经的路由器。

图2-51 使用ping和-i参数跟踪数据包路径

(1)在PC1上ping PC2的地址:ping 192.168.3.2 -i 1,给目标地址发送ICMP请求数据包时指定TTL=1,就会由第1个路由器RA返回一个TTL耗尽的ICMP差错报告报文,PC1得到途经的第1个路由器的地址192.168.0.1。

C:\Users\han>ping 192.168.3.2 –i 1
正在 Ping 192.168.3.2 具有 32 字节的数据:
来自 192.168.0.1 的回复: TTL 传输中过期。
来自 192.168.0.1 的回复: TTL 传输中过期。
来自 192.168.0.1 的回复: TTL 传输中过期。
来自 192.168.0.1 的回复: TTL 传输中过期。

(2)PC1再次ping PC2的地址:ping 192.168.3.2 -i 2,给目标地址发送ICMP请求数据包时指定TTL=2,就会由第2个路由器RB返回一个TTL耗尽的ICMP差错报告报文,PC1得到途经的第2个路由器的地址192.168.1.2。

(3)以此类推,PC1再次ping PC2的地址,指定TTL为3,就能得到第3个路由器RC的地址192.168.2.2。

tracert命令的工作原理就是使用上述方法,给目标地址发送TTL逐渐增加的ICMP请求,根据返回的ICMP错误报告报文来确定沿途经过的路由器。

PC1通过路由器返回的TTL耗尽的ICMP报文得到沿途的全部路由器。如果出现有的路由器不允许发送TTL差错报告报文的情况,那么使用tracert将不能得知该路由器。

如图2-52所示,tracert 91XUEIT网站途经17个路由器,第18个是该网站的地址(终点)。可以看到第12、第16和第17个路由器显示“请求超时”,这表明没有返回ICMP差错报告报文,因为这些路由器设置了访问控制列表(ACL)禁止路由器发出ICMP差错报告报文。

图2-52 跟踪数据包路径

tracert能够帮助我们发现路由配置错误的问题。观察图2-53中tracert的结果,能得到什么结论?你会发现数据包在172.16.0.2和172.16.0.1两个路由器之间往复转发,可以断定问题就出在这两个路由器的路由配置上,需要检查这两个路由器的路由表。

图2-53 数据包在两个路由器之间往复转发

网络层协议还包括ARP,该协议只在以太网中使用,用来将计算机的IP地址解析出MAC地址。

如图2-54所示,网络中有两个以太网和一个点到点链路。计算机和路由器接口的地址在图2-54中标出,图中的MA、MB、……、MH代表对应接口的MAC地址。下面介绍计算机A和本网段计算机C的通信过程,以及计算机A和计算机H的跨网段通信过程。

图2-54 以太网需要ARP

如果计算机A ping计算机C的地址192.168.0.4,计算机A判断出目标IP地址和自己在一个网段,那么数据链路层封装的目标MAC地址就是计算机C的MAC地址,图2-55所示的是计算机A发送给计算机C的帧。

图2-55 同一网段的帧

如果计算机A ping计算机H的地址192.168.1.4,计算机A判断出目标IP地址和自己不在一个网段,那么数据链路层封装的目标MAC地址是网关的MAC地址,也就是路由器R1的D接口的MAC地址,如图2-56所示。

图2-56 跨网段的帧

计算机接入以太网后,只给计算机配置了IP地址、子网掩码和网关,并没有告诉它网络中其他计算机的MAC地址。计算机和目标计算机通信前必须知道目标MAC地址,问题来了,计算机A是如何知道计算机C的MAC地址或网关的MAC地址的?

TCP/IP协议栈的网络层有ARP(Address Resolution Protocol)。在计算机和目标计算机通信之前,需要使用该协议解析到目标计算机的MAC地址(同一网段通信)或网关的MAC地址(跨网段通信)。

这里大家需要知道:ARP只是在以太网中使用,点到点链路使用PPP通信,PPP帧根本不需要地址,所以也不用ARP解析MAC地址。

图2-57所示的是使用抓包工具捕获的ARP请求数据包,第27帧是计算机192.168.80.20解析192.168.80.30的MAC地址发送的ARP请求数据包。注意观察目标MAC地址为ff: ff: ff: ff: ff: ff。其中Opcode是选项代码,指示当前包是请求报文还是应答报文,ARP请求报文的值是0×0001,ARP应答报文的值是0×0002。

ARP是建立在网络中各个主机互相信任的基础上的,计算机A发送ARP广播帧解析计算机C的MAC地址,同一个网段中的计算机都能够收到这个ARP请求消息,任何一个主机都可以给计算机A发送ARP应答消息。主机可能会告诉计算机A一个错误的MAC地址,计算机A收到ARP应答报文时并不会检测该报文的真实性,直接将其记入本机ARP缓存,这样就存在一个安全隐患——ARP欺骗。

图2-57 ARP请求帧

在Windows系统中运行arp -a可以查看缓存的IP地址和MAC地址的对应表。

C:\Users\hanlg>arp -a
接口: 192.168.2.161 --- 0xb
  Internet 地址          物理地址                类型
  192.168.2.1           d8-c8-e9-96-a4-61       动态
  192.168.2.169         04-d2-3a-67-3d-92       动态
  192.168.2.182         c8-60-00-2e-6e-1b       动态
  192.168.2.219         6c-b7-49-5e-87-48       动态
  192.168.2.255         ff-ff-ff-ff-ff-ff       静态

Internet组管理协议(Internet Group Management Protocol,IGMP),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。

IGMP提供了在转发组播数据包到目的地的最后阶段所需的信息,实现如下双向的功能:

IGMP共有3个版本,即IGMP v1、IGMP v2和IGMP v3。

本书对IGMP不做过多介绍,读者若有需求可参考其他资料。

数据链路层协议负责将帧从链路的一端传到另一端。如图2-58所示,PC1给PC2通信,需要经过链路1、链路2、……、链路6。数据链路层协议负责将网络层的数据包封装成帧,将帧从链路的一端发送到另一端。

在图2-58中,计算机连接交换机的链路是以太网链路,使用的是带冲突检测的载波监听多路访问技术(Carrier Sense Multiple Access with Collision Detection,CSMA/CD)协议,该协议定义的帧成为以太网帧,以太网帧包含源MAC地址和目标MAC地址这些字段。路由器和路由器之间的连接为点到点连接,针对这种链路的数据链路层协议有点对点协议(Point-to- Point,PPP)、高级数据链路控制(High-Level Data Link Control,HDLC)等。不同的数据链路层协议定义了不同的帧格式。

图2-58 链路和数据链路层协议

数据链路层的协议有许多种,但有3个基本问题是共同的。这3个基本问题是:封装成帧、透明传输和差错检测。下面针对这3个问题进行详细讨论。

(1)封装成帧。

封装成帧,就是在网络层的IP数据报的前后分别添加首部和尾部,这样就构成了一个帧。不同的数据链路层协议的帧的首部和尾部包含的信息有明确的规定,如图2-59所示,帧的首部和尾部有帧开始符和帧结束符,称为帧定界符。接收端收到物理层传过来的数字信号并读取到帧开始符,然后一直读到帧结束符,就认为接收到了一个完整的帧。

图2-59 帧首部和帧尾部封装成帧

若数据传输过程出现差错,那么帧定界符的作用更加明显。如果发送端在尚未发送完一个帧时突然出现故障,中断发送,接收端收到了只有帧开始符没有帧结束符的帧,就认为是一个不完整的帧,必须丢弃。

为了提高数据链路层的传输效率,应当使帧的数据部分尽可能地大于首部和尾部的长度。但是每一种数据链路层协议都规定了所能够传送帧的数据部分长度的上限,即最大传输单元(Maximum Transfer Unit,MTU),以太网的MTU为1500字节,如图2-59所示,MTU指的是数据部分长度。

(2)透明传输。

帧开始符和帧结束符最好选择不会出现在帧的数据部分的字符,如果帧数据部分出现帧的开始符和帧结束符,就要插入转义字符,接收端看到转义字符就去掉,然后把转义字符后面的字符当作数据来处理。这就是透明传输。

如图2-60所示,某数据链路层协议的帧开始符为SOH,帧结束符为EOT。转义字符选定为ESC。节点A给节点B发送数据帧,在被发送到数据链路之前,数据中出现SOH、ESC和EOT字符,现在需要在编码之前的位置插入转义字符ESC,这个过程就是字节填充。节点B接收到数据之后,再去掉填充的转义字符,视转义字符后的字符为数据。

图2-60 使用字节填充法解决透明传输的问题

发送节点A在发送帧之前要在原始数据中的必要位置处插入转义字符,接收节点B收到后去掉转义字符,重新得到原始数据,插入转义字符是要让传输的原始数据原封不动地到达节点B,这个过程称为“透明传输”。

(3)差错检验。

现实的通信链路不会都是理想的。这就是说,比特在传输过程中可能会产生差错:1可能会变成0,而0也可能变成1,这就叫作比特差错。比特差错是传输差错中的一种。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率(Bit Error Rate,BER)。例如,误码率为1010,表示平均每传送1010比特就会出现一个比特的差错。误码率与信噪比有很大的关系。提高信噪比就可以使误码率降低。但实际的通信链路并非理想的,它不可能使误码率下降到零。因此,为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检验措施。目前在数据链路层广泛使用的是循环冗余检验(Cyclic Redundancy Check,CRC)的差错检验技术。

要想让接收端能够判断帧在传输过程是否出现差错,则需要在传输的帧中包含用于检测错误的信息,这部分信息就叫作帧校验序列(Frame Check Sequence,FCS)。如图2-61所示,使用帧的数据部分和数据链路层首部来计算FCS,然后将其放到帧的末尾。接收端收到数据后,再使用数据部分和数据链路层首部计算一个FCS,比较两个FCS是否相同,如果相同则认为在传输过程中没有出现差错。如果出现差错,接收端丢弃该帧。

图2-61 帧校验序列

物理层协议定义了与传输媒体的接口有关的一些特性,如接口标准,有了接口标准,各厂家生产的网络设备接口才能相互连接和通信。比如定义了以太网接口标准,不同厂家的以太网设备就能相互连接。物理层为数据链路层提供服务。

物理层包括以下几方面的定义,也可以认为是物理层协议包括的内容。

(1)机械特性,指明接口所用接线器的形状和尺寸、引脚数目和排列、固定的锁定装置等,常见的各种规格的接插部件都有严格的标准化规定。这很像常见的各种规格的电源插头,其尺寸都有严格的规定。图2-62所示的是某广域网接口和线缆接口。

图2-62 某广域网接口和线缆接口

(2)电气特性,指明在接口电缆的各条线上出现的电压范围,比如−10V~10V。

(3)功能特性,指明某条信号线上出现的某一电平的电压表示何种意义。

(4)过程特性,定义在信号线上进行二进制比特流传输的一组操作过程,包括各信号线的工作顺序和时序,使得比特流传输得以完成。

前面给大家讲的TCP/IPv4协议是互联网通信的工业标准。当网络刚开始出现时,典型情况下只能在同一制造商制造的计算机产品之间进行通信。20世纪70年代后期,国际标准化组织(International Organization for Standardization,ISO)创建了开放系统互连(Open Systems Interconnection,OSI)参考模型,从而打破了这一壁垒。

OSI参考模型将计算机通信过程按功能划分为7层,并规定了每一层实现的功能。这样互联网设备的厂家以及软件公司就能参照OSI参考模型来设计自己的硬件和软件,不同供应商的网络设备之间就能够互相协同工作。

OSI参考模型不是具体的协议,TCP/IPv4协议栈是具体的协议,怎么来理解它们之间的关系呢?比如,国际标准组织定义了汽车参考模型,规定汽车要有动力系统、转向系统、制动系统、变速系统等,这就相当于OSI参考模型定义的计算机通信每一层要实现的功能。参照这个汽车参考模型汽车厂商可以研发自己的汽车,比如奥迪轿车,它实现了汽车参考模型的全部功能,此时奥迪汽车就相当于TCP/IP。奥迪轿车,动力系统有的使用汽油,有的使用天然气,发动机有的是8缸,有的是10缸,实现的功能都是汽车参考模型要求的动力系统功能。变速系统有的是手动挡,有的是自动挡,有的是4级变速,有的是6级变速,有的是无级变速,实现的功能都是汽车参考模型要求的变速功能。

同样,OSI参考模型只定义了计算机通信每层要实现的功能,并没有规定如何实现以及实现的细节,不同的协议栈实现方法可以不同。

国际标准化组织(ISO)制定的OSI参考模型把计算机通信分成了7层。

(1)应用层。应用层协议实现应用程序的功能,将实现方法标准化就形成了应用层协议。互联网中的应用很多,比如访问网站、收发电子邮件、访问文件服务器等,因此应用层协议也很多。定义客户端能够向服务器发送哪些请求(命令),服务器能够向客户端返回哪些响应,以及用到的报文格式、命令的交互顺序,都是应用层协议应该包含的内容。

(2)表示层。应用程序要将传输的信息转换成数据。如果传输的是字符文件,那么要使用字符集将文件转换成数据。如果是图片或应用程序这些二进制文件,也要被编码变成数据,数据在传输前是否压缩、是否加密处理都是表示层要解决的问题。发送端的表示层和接收端的表示层是协议的双方,数据的加密和解密、压缩和解压缩、编码和解码等都要遵循表示层协议的规范。

(3)会话层。会话层为通信的客户端和服务端程序建立会话、保持会话和断开会话。建立会话:A、B两台计算机之间需要通信,要建立一条会话供它们使用,在建立会话的过程中会有身份验证、权限鉴定等环节。保持会话:通信会话建立后,A、B两台计算机开始传递数据,当数据传递完成后,OSI会话层不一定立即将这条通信会话断开,它会根据应用程序和应用层的设置对会话进行维护,在会话维持期间,双方可以随时使用会话传输数据。断开会话:当应用程序或应用层规定的超时时间到期后,或A、B重启、关机或手动断开会话时,OSI会断开A、B之间的会话。

(4)传输层。传输层负责向两台主机进程之间的通信提供通用的数据传输服务。传输层有两种协议:传输控制协议(TCP)提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段;用户数据包协议(UDP)提供无连接的、尽最大努力的数据传输服务,其数据传输的单位是用户数据报。

(5)网络层。网络层为数据包跨网段通信选择转发路径。

(6)数据链路层。两台主机之间的数据通信,总是在一段一段的链路上传送的,这就需要专门的链路层协议。数据链路层就是将数据包封装成能够在不同链路上传输的帧。数据包在传递过程中要经过不同网络,比如集线器或交换机组建的网络就是以太网,以太网使用载波侦听多路访问协议(CSMA/CD),路由器和路由器之间的连接是点到点的链路,点到点链路可以使用PPP或帧中继(Frame Relay)协议。数据包要想在不同类型的链路传输就需要封装成不同的帧格式。比如以太网的帧,要加上目标MAC地址和源MAC地址,而点到点链路上的帧就不用添加MAC地址。

(7)物理层。物理层规定了网络设备的接口标准、电压标准,要是不定义这些标准,各个厂家生产的网络设备就不能连接到一起,更不可能相互兼容了。物理层也包括通信技术,那些专门研究通信的人就要想办法让物理线路(铜线或光纤)通过频分复用技术、时分复用技术或编码技术更快地传输数据。

TCP/IP分层对OSI参考模型进行了合并简化,其应用层实现了OSI参考模型的应用层、表示层和会话层的功能,TCP/IP分层还将数据链路层和物理层合并成网络接口层,如图2-63所示。

图2-63 OSI参考模型和TCP/IP分层

以下是将计算机通信分层的好处。

(1)各层之间是独立的。某一层并不需要知道它的下一层如何实现,仅需要知道该层通过层间接口所提供的服务。上层对下层来说就是要处理的数据,如图2-64所示。

图2-64 各层之间的关系

(2)灵活性好。每一层的改进和变化不会影响其他层。比如IPv4实现的是网络层功能,升级为IPv6后,实现的仍然是网络层功能,传输层TCP和UDP不用做任何变动,数据链路层使用的协议也不用做任何变动。如图2-65所示,计算机可以使用IPv4和IPv6进行通信。

图2-65 IPv4和IPv6实现的功能一样

(3)各层都可以采用最合适的技术来实现,比如适合布线的就使用双绞线连接网络,有障碍物的就使用无线覆盖。

(4)促进标准化工作。路由器实现网络层功能,交换机实现数据链路层功能,不同厂家的路由器和交换机能够相互连接实现计算机通信,这是因为有了网络层标准和数据链路层标准。

(5)分层后有助于将复杂的计算机通信问题拆分成多个简单的问题,有助于排除网络故障。比如计算机没有设置网关造成的网络故障属于网络层问题,MAC地址冲突造成的网络故障属于数据链路层问题,IE浏览器设置了错误的代理服务器访问不了网站,属于应用层问题。

1.计算机通信实现可靠传输的是TCP/IP的哪一层?(  )

  A.物理层

  B.应用层  

  C.传输层

  D.网络层

2.由IPv4升级到IPv6,对TCP/IP来说是哪一层做了更改?(  )

  A.数据链路层

  B.网络层

  C.应用层

  D.物理层

3.ARP有何作用?(  )

  A.将计算机的MAC地址解析成IP地址

  B.域名解析

  C.可靠传输

  D.将IP地址解析成MAC地址

4.以太网使用什么协议在链路上发送帧?(  )

  A.HTTP

  B.TCP

  C.CSMA/CD

  D.ARP

5.TCP和UDP端口号的范围是(  )。

  A.0~256

  B.0~1023

  C.0~65535

  D.1024~65535

6.下列网络协议中,默认使用TCP端口号25的是(  )。

  A.HTTP

  B.telnet

  C.SMTP

  D.POP3

7.在Windows系统中,查看侦听的端口使用的命令是(  )。

  A.ipconfig /all

  B.netstat -an

  C.ping

  D.telnet

8.在Windows中,ping命令使用的协议是(  )。

  A.HTTP

  B.IGMP

  C.TCP

  D.ICMP

9.关于OSI参考模型中网络层的功能说法正确的是(  )。

  A.OSI参考模型中最靠近用户的一层,为应用程序提供网络服务

  B.在设备之间传输比特流,规定了电平、速度和电缆针脚

  C.提供面向连接或非面向连接的数据传递以及进行重传前的差错检测

  D.提供逻辑地址,供路由器确定路径

10.OSI参考模型从高层到低层分别是(  )。

  A.应用层、会话层、表示层、传输层、网络层、数据链路层、物理层

  B.应用层、传输层、网络层、数据链路层、物理层

  C.应用层、表示层、会话层、传输层、网络层、数据链路层、物理层

  D.应用层、表示层、会话层、网络层、传输层、数据链路层、物理层

11.网络管理员能使用ping来测试网络的连通性,在这个过程中下面哪些协议可能会被使用到(   )。(多选)

  A.ARP

  B.TCP

  C.ICMP

  D.UDP

12.计算机A给计算机D发送数据包要经过两个以太网帧,如图2-66所示,写出数据包的源IP地址和目标IP地址、源MAC地址和目标MAC地址。

图2-66 计算机A与计算机D的通信示意图

13.TCP/IP按什么分层?写出每一层协议实现的功能。

14.列出几个常见的应用层协议。

15.应用层协议要定义哪些内容?

16.写出传输层的两个协议以及应用场景。

17.写出网络层的4个协议以及每个协议的功能。


相关图书

Web API设计原则通过API和微服务实现价值交付
Web API设计原则通过API和微服务实现价值交付
IPv6网络切片:使能千行百业新体验
IPv6网络切片:使能千行百业新体验
网络空间测绘—原理、技术与应用
网络空间测绘—原理、技术与应用
国之重器出版工程 企业WLAN架构与技术
国之重器出版工程 企业WLAN架构与技术
网络系统规划设计
网络系统规划设计
Windows网络与通信程序设计(第3版)
Windows网络与通信程序设计(第3版)

相关文章

相关课程