书名:华为HCNA路由与交换学习指南
ISBN:978-7-115-50776-1
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
策 划 51CTO学院
著 韩立刚 李圣春 韩利辉
责任编辑 武晓燕
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书专门介绍华为认证网络工程师(HCNA)路由与交换技术的相关内容。全书共分为13章。本书首先介绍了计算机网络的产生和演进、计算机通信使用的协议、IP地址和子网划分;然后介绍了使用华为设备进行企业组网的基本技术,包括路由器和交换机的基本配置、IP地址的规划、静态路由和动态路由的配置、使用交换机进行组网;最后讲解了高级网络技术,其中涉及网络安全的实现、网络地址转换和端口映射、将路由器配置为DHCP以实现IP地址的自动分配,以及IPv6、广域网、VPN相关的知识。
本书以理论知识为铺垫,重点凸显内容的实用性,旨在通过以练代学的方式提升读者的理论理解能力和实操能力。本书适合备考华为HCNA认证的考生阅读,也适合有志投身于网络技术领域的初学者阅读,还可作为网络专业课程的教材。
韩立刚,微软最有价值专家(MVP),具有18年的微软、思科、华为技术培训和实战经验;现任国内最大的IT在线教育网站51CTO学院金牌讲师,课程访问量超过1000万次,有2000余名正式学生。
在IT教育领域倡导“视频教学+QQ答疑”和“终身师徒关系”的教学模式,是多本计算机相关图书的作者。
共录制了40余门课程,其中有从零起点到能够胜任企业高端IT运维职位的系列课程,还有部分课程涵盖了网络、Windows和Linux服务器、虚拟化和云计算、数据库等主流的IT技术。
李圣春,思科互联网认证专家、华为互联网认证专家,51CTO认证讲师。
计算机网络技术专家,思科、华为系列培训主管,具有丰富的工程项目和扎实的理论知识,讲课风格亲切自然、课程内容贴近实战。善于举例,喜欢通过生活案例来诠释技术原理,强调培养学习能力的重要性。
韩利辉,思科网络工程师CCNP,华为网络工程师。精通计算机网络、Windows服务器、微软数据库管理和设计。先后就职于国内大型上市软件公司、IT集成商、世界500强外企等,担任资深技术专家、技术总监等职务。
感谢我们的祖国各行各业的迅猛发展,为那些不甘于平凡的人提供了展现个人才能的空间,很庆幸自己生活在这个时代。
互联网技术的发展为每个老师提供了广阔的舞台,感谢51CTO学院为全国的IT专家和IT教育工作者提供教学平台。
感谢我的学生们!正是他们的提问,才让我了解到学习者的困惑,讲课技巧的提升离不开对学生的了解。更要感谢那些工作在一线的IT运维人员,在帮他们解决工作中遇到的疑难杂症的同时,我讲课的案例也得到了丰富。
感谢那些深夜还在网上看视频学习我课程的学生,虽然没有见过面,却能够让我感受到你们怀揣梦想、想通过知识改变命运的决心和毅力。这也一直激励着我,不断录制新课程,编写、出版新教程。
我大学学的专业是无机化工,1999年毕业后到化肥厂工作。我的直觉告诉我IT技术在未来必将得到广泛应用,IT技术更能体现个人价值,且学高端IT技术只需一台计算机。于是怀揣着对未来美好生活的期待,我毅然决定改行,进军IT领域,开始学习IT技术。
从一名非计算机专业的大学生到一位IT职业培训讲师,从IT菜鸟到出版了10多本计算机图书的作者,从化工技术员到微软最有价值专家,我历经18年,这期间有对学习IT技术持之以恒的坚持,也有对IT职业化培训的思考。面对互联网时代的到来,我敏锐地察觉到IT培训要和互联网结合,要通过在线教育打破教学的时间和空间限制。
由于我自己学的是非计算机专业,我从零基础开始学习计算机网络,后成为计算机网络课程的讲师,因此我非常了解零基础的学生学习计算机网络时所遇到的困惑,所以我的授课内容易学易懂。在微软高级培训中心我经常给企业网管做培训,帮他们解决工作中的问题。我还录了实战风格的网络课程,很多计算机专业的学生学习我的网络课程,也能感觉到我和学院派讲师的差别。
我听过很多老师的计算机网络课程,有些老师参照书本制作PPT,上课照着PPT讲解,所讲内容仅限于书中的内容,对知识没有进一步扩展,和实际不进行关联,这其实和学生自己看书差不多。这些老师尊重知识、尊重书本、尊重作者,但这种教学方式却没有尊重学生。作为老师,一定要了解学生,才能把课讲好。
我讲“计算机网络”课程18年,讲“计算机网络原理”课程10年,每一年都有新的提高,每一遍都有新的认识。如今我把对网络的认识写成书,用直白的语言、通俗的案例给大家阐述计算机网络技术,将实战融入理论。本书还讲解了如何使用华为路由器和交换机搭建计算机网络的学习环境。读者在阅读完本书之后,能够掌握计算机网络通信理论,使用华为路由器和交换机组建企业局域网和广域网,熟练配置华为网络设备。
相较于市面上已有的其他图书,本书具有如下特色。
本书共分为13章,每章讲解的主要内容如下。
作者为本书提供了完整的PPT以及完全配套的视频课程。PPT资源可通过本书在异步社区的相应页面进行下载,也可以向本书作者索要。与本书完全配套的视频课程,可到51CTO学院官方网站搜索“华为认证网络工程师(HCNA)路由交换视频教程”,找到韩立刚录制的课程,然后进行访问(注意,视频课程为收费课程)。
由于作者水平有限,书中错漏之处在所难免,恳请广大读者批评指正。欢迎各位读者扫描下方的二维码,关注我的微信公众号,或者加入QQ群(群号:301678170)与我进行沟通。
微信公众号
扫码加入QQ群
韩立刚微信
本书由异步社区出品,社区(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技术也可以很容易接入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。
不同的运营商独立地规划和部署自己的网络,在同一运营商内部,网络能实现高度冗余和带宽的优化,运营商之间的网络连接链路数量有限,跨运营商通信网速比较慢。如图1-4所示,A运营商网络和B运营商网络使用1000 Mbit/s的线路连接,虽然带宽很高,但其承载了所有A运营商访问B运营商的流量以及B运营商访问A运营商的流量,因此还是显得拥堵。A小区的用户访问A网站速度快,访问B运营商机房中的D网站时速度就会显得较慢。
图1-4 双线机房
为了解决跨运营商访问网速慢的问题,可以把公司的服务器托管在双线机房,即同时连接A运营商和B运营商的机房,如图1-4所示。这样通过A运营商上网的网民和通过B运营商上网的网民访问C网站时,速度没有差别。
有些网站为了解决跨运营商访问慢的问题,将内容相同的网站部署到多个运营商。如图1-4所示,把B网站部署在两台服务器上,分别托管在A运营商机房和B运营商机房,网站内容一模一样,对用户来说就是一个网站。如果用户需要从网站下载较大文件,可以让用户选择从哪个运营商下载。比如下载软件,用户可以根据是联通上网还是电信上网选择联通下载还是电信下载,如图1-5所示。
图1-5 选择运营商
根据服务的覆盖面积大小以及所拥有的IP地址数目的不同,ISP也分为不同的层次。最高级别的第一层ISP为主干ISP,主干ISP的服务面积最大(一般都能覆盖国家范围),并且还拥有高速主干网。第二层ISP为地区ISP,一些大公司都属于第二层ISP的用户。第三层ISP又称为本地ISP,它们是第二层ISP的用户,且只拥有本地范围的网络。一般的校园网和企业网以及拨号上网的用户,都是第三层ISP的用户,如图1-6所示。
比如中国联通是一级ISP,负责铺设全国范围内连接各地区的网络,中国联通有限公司石家庄分公司是地区ISP,负责石家庄地区的网络连接,石家庄联通藁城区分公司就属于三级ISP了,也就是本地ISP了。
如何理解ISP分级呢?比如你家通过联通的光纤接入Internet,带宽是100Mbit/s,上网费每年700元。你的3个邻居通过你家的路由器上网,每家每年给你300元上网费,你就相当于一个四级ISP了,你每年还能赢利200元。
图1-6 多层级的ISP
有些公司的网站是为全国甚至全球提供服务的,比如淘宝网和12306网上订票网站,这样的网站最好接入主干ISP,全国网民访问主干网都比较快。有些公司的网站主要服务于本地区,比如58同城之类的网站,负责石家庄地区的网站就可以部署在石家庄地区的ISP机房。藁城区中学的网站主要是藁城区的学生和学生家长访问,藁城区中学的网站通过联通的本地ISP接入Internet。
网络规模大一点的公司接入Internet,ISP通常会部署光纤提供接入,家庭用户或企业小规模网络上网,ISP通常会通过电话线使用ADSL拨号提供Internet接入。随着光纤线路的普及,现在农村和城市的小区也可以使用光纤接入Internet了。
本节讲解局域网的发展。先给大家介绍什么是局域网和广域网,再讲解局域网通信的特点以及使用的协议,最后介绍局域网组网设备,包括网卡、同轴电缆、集线器、网桥和交换机。
首先通过举例来简单了解一下局域网和广域网的概念。
中国电信运营商的网络覆盖全国,属于广域网。企业的网络通常覆盖一个厂区的几栋大楼,学校的网络覆盖整座学校。这种企业或学校自己组建的覆盖小范围的网络就是局域网。
如图1-7所示,车辆厂在石家庄和唐山都有厂区,南车石家庄车辆厂和北车唐山车辆厂都组建了自己的网络,可以看到企业按部门规划网络,基本上一个部门一个网段(网络),使用三层交换(可以充当路由器)连接各个部门的网络,企业的服务器连接到三层交换机,这就是企业的局域网。
北车唐山车辆厂需要访问南车石家庄车辆厂的服务器,这就需要将这两个厂区的网络连接起来。车辆厂不可能自己架设网线或光纤来将这两个不同城市厂区的局域网连接起来,架设和维护成本太高了。该厂租用了联通的专线以将两个局域网连接起来,只需每年缴费即可,连接后的局域网就是广域网。
图1-7 车辆厂
现在总结一下,局域网通常是企业或学校自己花钱购买网络设备组建,带宽通常为10Mbit/s、100Mbit/s或1000Mbit/s,自己维护,覆盖范围小。广域网是连接不同地区局域网与城域网计算机通信的远程网,通常跨接很大的物理范围。常见的广域网有互联网,通常是花钱租用联通、电信等运营商的线路,花钱买带宽,不用自己维护,用于长距离通信。
换个角度说,计算机通信经过了ISP的线路,就是广域网,也不完全从距离上来划分局域网和广域网。比如你家使用ADSL拨号上网,你的邻居也使用ADSL拨号上网,你们两家的计算机通过QQ传输文件,也是广域网,虽然你和邻居的计算机距离很近。
早期的计算机网络就是使用一根同轴电缆连接网络中的计算机,计算机之间的通信信号会被同轴电缆传送到所有计算机,所以说同轴电缆是广播信道,如图1-8所示。
在这样的广播信道里,如何实现点到点通信呢?那就需要通信的这些计算机都有一个地址,这个地址就是网卡的MAC地址。如果这些计算机发现收到的数据帧的目标MAC地址和自己网卡的MAC地址不一样,就丢弃这个数据帧。
MAC(Media Access Control或者Medium Access Control)地址可意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。
同轴电缆上连接的这些计算机不允许多台计算机同时发送数据,如果多台计算机同时发送数据,发送的信号就会叠加造成信号不能正确识别。所以计算机在发送数据之前先侦听网络中有没有数据在传输,发现没有信号传输才发送数据,这就是载波侦听。
即便在开始发送的时候没有检测出有信号在传输,在开始发送后,也有可能在同轴电缆的某处和其他计算机发送的信号迎面相撞,发送端收到相撞后的信号后认为发送失败。发送端必须能够检测出这种发生在链路上的冲突,然后通过退避算法计算退避时间并尝试再次发送,这就是冲突检测。
图1-8 广播信道局域网——总线型
这种使用共享介质进行通信的网络,网络中的设备接口必须有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地址表是自动构建的,构建过程如图1-12所示,图中画出了4个帧,用来说明MAC地址表的构建过程。
1.网桥接口E0收到第一个帧①,看到权该帧的源MAC地址是MA,就能断定E0接口对应MAC地址MA,在MAC地址表中添加一条记录以表示接口E0对应MA。由于MAC地址表中没有MB的记录,该帧就被转发到网桥的所有接口。
2.网桥接口E0收到第二个帧②,根据帧的源MAC地址,在MAC地址表中添加一条记录以表示接口E0对应MB,该帧就不会被转发到E1接口,你说为什么?
3.网桥接口E1收到第三个帧③,根据帧的源MAC地址,在MAC地址表中添加一条记录以表示接口E1对应MC。该帧会被转发到E0接口,因为MAC地址表中有MA的记录。
4.网桥接口E1收到第四个帧④,根据帧的源MAC地址,在MAC地址表中添加一条记录以表示接口E1对应MD,该帧会被转发到E0接口。自此,网桥1的MAC地址表包括网络中全部计算机的MAC地址。以后转发数据就会依据MAC地址表进行转发。
图1-12 MAC地址表的自动构建过程
如图1-13所示,两个网桥连接3个集线器,图中的表格里列出了网桥1和网桥2的MAC地址表。大家可以看到网桥1的MAC地址表中,E1接口对应4个MAC地址MC、MD、ME和MF。网桥2的E2接口对应4个MAC地址MA、MB、MC和MD。对于网桥1,它只知道E1接口那面有4台计算机,根本不知道有网桥2。当然,网桥2只知道E2接口那面有4台计算机,不知道有网桥1。
图1-13 构建MAC地址表的过程
随着技术的发展,网桥接口越来越多,数据交换能力越来越强。这种高性能网桥我们称为交换机(Switch),交换机是现在企业组网的主流设备。
交换机和网桥一样,可以构造MAC地址表,基于MAC地址转发帧。由于交换机直接连接计算机,如图1-14所示,因此A给B发送数据不影响D给C发送数据。如果两台计算机同时向B计算机发送数据,会不会产生冲突呢?答案是,不会。
图1-14 交换机组网
交换机的每个接口都有接收缓存和发送缓存,帧可以在缓存中排队。接收到的帧先进入接收缓存,再查找MAC地址表以确定转发端口,放到转发端口的发送缓存,排队等待发送。因此,多台计算机同时给一台计算机发送数据,会放到缓存排队等待发送,而不会产生冲突。正是因为交换机使用的是存储转发,交换机的接口可以工作在不同的速率下。
使用交换机组网比集线器和同轴电缆更安全,如图1-14所示,E计算机即便安装了抓包软件,也不能捕获A给B计算机发送的帧,因为交换机根本不会将帧转发给E计算机。
计算机的网卡直接连接交换机的接口,可以工作在全双工模式,即可以同时发送和接收帧而不用冲突检测。集线器和同轴电缆组建的以太网只能工作在半双工模式,即不能同时收发。
如果交换机收到一个广播帧,即目标MAC地址是FF-FF-FF-FF-FF-FF的数据帧,交换机将该帧发送到所有交换机端口(除发送端口外),因此交换机组建的网络就是一个广播域。
MAC地址由48位二进制数组成,F是十六进制数,F代表4位二进制数1111。
交换机组网有以下特点。
使用交换机组网,计算机通信可以设置成全双工模式,可以同时收发,不需要冲突检测,因此也不需要使用CSMA/CD协议,因为交换机转发的帧和以太网的帧格式相同,我们依然习惯说交换机组建的网络是以太网。
如图1-15所示,路由器连接两个交换机,交换机连接计算机和集线器,路由器隔绝广播,图中标出了广播域和冲突域。
图1-15 广播域和冲突域
为了在广播信道中实现点到点通信,需要网络中的每个网卡有一个地址。这个地址称为物理地址或MAC地址(因为这种地址用在MAC帧中)。IEEE 802标准为局域网规定了一种48位二进制的全球地址。
在生产网卡时,这种48位二进制(占6个字节)的MAC地址已被固化在网卡的ROM中。因此,MAC地址也称为硬件地址或物理地址。当把这块网卡插入(或嵌入)某台计算机后,网卡上的MAC地址就成为这台计算机的MAC地址了。
如何确保各网卡生产厂家生产的网卡的MAC地址全球唯一呢?这就要有一个组织为这些网卡生产厂家分配地址块。现在IEEE的注册管理机构RA是局域网全球地址的法定管理机构,它负责分配地址字段的6个字节中的前3个字节(高位24位)。世界上凡要生产局域网网卡的厂家都必须向IEEE购买由这3个字节构成的这个号(即地址块),这个号的正式名称是组织唯一标识符,通常也叫作公司标识符。例如,如图1-16所示,3Com公司生产的网卡的MAC地址的前3个字节是02-60-8C(在计算机中是以十六进制显示的)。地址字段中的后3个字节(低位24位)则由厂家自行指派,称为扩展标识符,只要保证生产出的网卡没有重复地址即可。由此可见,用一个地址块可以生成224个不同的地址。
图1-16 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-17所示,在教室1、教室2和教室3分别部署一台交换机,对教室内的计算机进行连接。教室中的交换机要求端口多,这样能够将更多的计算机接入网络,这一级别的交换机称为接入层交换机,接计算机的端口带宽为100Mbit/s。
图1-17 二层结构的局域网
学校机房部署一台交换机,该交换机连接学校的服务器和教室中的交换机,并通过路由器连接Internet。该交换机汇聚教室中交换机上网流量,该级别的交换机称为汇聚层交换机。可以看到这一级别的交换机端口不一定有太多,但端口带宽要比接入层交换机的带宽高,否则就会成为制约网速的瓶颈。
在网络规模比较大的学校,局域网可能采用三层结构。如图1-18所示,某高校有3个学院,每个学院有自己的机房和网络,学校网络中心为3个学院提供Internet接入,各学院的汇聚层交换机连接到网络中心的交换机,网络中心的交换机称为核心层交换机,学校的服务器接入到核心层交换机,为整个学校提供服务。
图1-18 三层结构的局域网
三层结构的局域网中的交换机有3个级别:接入层交换机、汇聚层交换机和核心层交换机。层次模型可以用来帮助设计、实现和维护可扩展、可靠、性价比高的层次化互联网络。
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-19所示,计算机C给计算机F发送一个帧,在图中写出网桥1和网桥2在MAC地址表中增加的内容,MA、MB、MC、MD、ME和MF是计算机网卡的MAC地址。
图1-19 构建MAC地址表
8.网卡的MAC地址在出厂时就已固化到ROM中,但是我们可以配置计算机不使用网卡ROM中的MAC地址,而使用指定的MAC地址。上百度网站查资料,将你的计算机网卡的MAC地址加1,比如网卡的MAC地址是F4-8E-38-E7-37-83,更改为F4-8E-38-E7-37-84。
本章内容
本章讲解计算机通信使用的TCP/IP协议,协议分层的标准和好处。
首先讲解什么是协议、签协议的意义和协议包含的内容,计算机通信使用的协议应该包含哪些约定,抓包分析应用层协议通信数据包,观察客户端发送请求和服务器端返回响应的交互过程,通过禁用应用层协议的特定方法限制客户端对服务器端的特定访问,实现高级安全控制。
然后讲解传输层协议TCP和UDP的应用场景,TCP协议实现可靠传输的机制,传输层协议和应用层协议之间的关系,服务和端口的关系,端口和网络安全的关系,随后展示如何设置Windows防火墙,关闭端口以实现网络安全。
最后讲解网络层协议、数据链路层协议和物理层协议。
对于很多学习计算机网络的读者来说,协议是很不好理解的概念。因为他们没有看见过TCP/IP协议长什么模样,所以总是感觉非常抽象,难以想象。为此,在讲TCP/IP协议之前,先让大家看一份租房协议,再去理解TCP/IP协议就不抽象了。
其实协议对于大家并不陌生,大学生走出校门参加工作就要和用人单位签署就业协议,工作后还有可能要租房住,就要和房东签署租房协议。下面就通过一份租房协议来理解签协议的意义以及协议包含的内容,进而理解计算机通信使用的协议。
如果你租房不和房东签协议,只是口头和房东约定房租多少,每个月几号交房租,押金多少,家具家电设施损坏谁负责,时间一长这些约定大家就都记不清了,一旦出现某种情况,你和房东的认识不一致,就容易产生误解和矛盾。
为了避免纠纷,就需要和房东签一份租房协议,将双方关心的事情协商一致写到协议中,双方确认后签字,协议一式两份,双方都要遵守,如图2-1所示。
图2-1 租房协议
假如图2-1所示的租房协议是全球租房协议的标准,那么租房协议就可以进一步简化和规范为图2-2所示的样子。出租房和承租方在签订租房协议时,只需填写以下表格中要求的内容即可,协议中的约定和条款就不用填写了,双方都知道使用的是全球通用租房协议。表格中出租方姓名、身份证、承租方姓名、身份证、房屋位置等称为字段,这些字段可以是定长,也可以是变长。如果是变长,要定义字段间的分界符。
图2-2 简化和规范后的租房协议
计算机通信协议也把协议中需要填写的内容进行简化和规范进而形成表格。比如网络层的IP协议,就被简化为网络层首部,如图2-3所示。网络中的计算机通信只需按照以下表格填写内容,通信双方的计算机就能够按照网络层协议的约定工作。以后大家使用抓包工具分析数据包时,看到网络层封装的首部就是IP协议。
图2-3 IP协议简化和规范后需要填写的内容
在计算机通信的协议中除了定义甲方和乙方遵循的约定外,也要定义该协议简化和规范化后的格式。在后面讲到的应用层协议中我们将其称为报文格式,网络层协议和传输层协议我们称为网络层首部和传输层首部。有的协议需要定义多种报文格式,比如ICMP协议就有3种报文格式:ICMP请求报文、ICMP响应报文、ICMP差错报告报文。再比如HTTP协议,它定义了两种报文格式:HTTP请求报文、HTTP响应报文。
前面的租房协议是双方协议,协议中有甲乙双方。有的协议是多方协议,比如大学生大四实习,要和实习单位签一份实习协议,实习协议就是三方协议——学生、校方和实习单位。在谢希仁编写的《计算机网络》那本书中,协议的甲方和乙方被称为“对等实体”。
TCP/IP通信协议是目前最完整、使用最广泛的通信协议。它的魅力在于可使不同硬件结构、不同操作系统的计算机相互通信。TCP/IP协议既可用于广域网,也可用于局域网,它是Internet/Intranet 的基石。TCP/IP通信协议事实上是一组协议,如图2-4所示,其主要协议有传输控制协议(TCP)和网际协议(IP)两个。
图2-4 TCP/IP协议组
从图2-4可以看出我们通常所说的TCP/IP协议不是一个协议,也不是TCP和IP两个协议,而是一组独立的协议。这组协议按功能进行了分层,TCP/IP协议分为4层,数据链路层和物理层被视为网络接口层,如图2-5所示。
图2-5 TCP/IP协议的分层
应用层协议定义了互联网上常见的应用(服务器和客户端通信)通信规范。互联网上的应用很多,这就意味着应用层协议也很多,图中只列出了几个常见的应用层协议,但你不能认为就只有这几个。每个应用层协议定义了客户端能够向服务器端发送哪些请求(也可以认为是哪些命令,这些命令发送的顺序),服务器端能够向客户端返回哪些响应,这些请求报文和响应报文都有哪些字段,每个字段实现什么功能,每个字段的各种取值所代表的意思。
传输层有两个协议,TCP和UDP。如果要传输的数据需要分成多个数据包发送,发送端和接收端的TCP协议确保接收端最终完整无误收到所传数据。如果在传输过程中出现丢包,发送端会超时重传丢失的数据包;如果发送的数据包没有按发送顺序到达接收端,接收端会把数据包在缓存中排序,等待迟到的数据包,最终收到连续、完整的数据。
UDP协议用于一个数据包就完成数据发送的情景,这种情况就不检查是否丢包,数据包是否按顺序到达了,以及数据发送是否成功,都由应用程序判断。UDP协议要比TCP协议简单得多。
网络层协议负责在不同网段转发数据包,为数据包选择最佳转发路径,网络中的路由器负责在不同网段转发数据包,为数据包选择转发路径,因此我们称路由器工作在网络层,是网络层设备。
数据链路层协议负责把数据包从链路的一端发送到另一端。网络设备由网线或线缆连接,连接网络设备的这段网线或线缆称为一条链路。在不同的链路上传输数据有不同的机制和方法,也就是不同的数据链路层协议,比如以太网使用CSMA/CD协议,点到点链路使用PPP协议。
物理层定义网络设备接口有关的一些特性,进行标准化,比如接口的形状、尺寸、引脚数目和排列、固定和锁定装置、接口电缆的各条线上出现的电压范围等规定,可以认为是物理层协议。
协议按功能分层的好处就是,某一层的改变不会影响其他层。某层协议可以改进或改变,但其功能是不变的。比如计算机通信可以使用IPv4,也可以使用IPv6。网络层协议变了,但其功能依然是为数据包选择转发路径,不会引起传输层协议的改变,也不会引起数据链路层协议的改变。
这些协议,每一层为上一层提供服务,物理层为数据链路层提供服务,数据链路层为网络层提供服务,网络层为传输层提供服务,传输层为应用层提供服务。以后网络出现故障时,比如不能访问Internet浏览网页了,排除网络故障要从底层到高层逐一检查。比如先看看网线是否连接,这是物理层排错;再ping Internet上的一个公网地址,看看是否畅通,这是网络层排错;最后检查浏览器设置是否正确,这是应用层排错。
网络中的计算机通信,实际上是计算机上的应用程序之间的通信。比如打开QQ和别人聊天,打开浏览器访问网站,打开暴风影音在线看电影,这些都会产生网络流量。
应用程序通常分为客户端程序和服务器端程序,客户端程序向服务端程序发送请求,服务端程序向客户端程序返回响应,提供服务。服务器端程序运行后等待客户端的连接请求。比如百度网站,不管是否有人访问百度网站,百度Web服务就一直等待客户端的访问请求,如图2-6所示。
图2-6 客户端和服务器端程序通信
客户端程序能够向服务端程序发送哪些请求,也就是客户端能够向服务器端发送哪些命令,这些命令发送的顺序,发送的请求报文有哪些字段,分别代表什么意思,都需要提前约定好。
服务器端程序收到客户端发送来的请求,应该有哪些响应,什么情况发送什么响应,发送的响应报文有哪些字段,分别代表什么意思,也需要提前约定好。
这些提前约定好的客户端程序和服务器端程序通信规范就是应用程序通信使用的协议,称为应用层协议。Internet上有很多应用,比如访问网站的应用、收发电子邮件的应用、文件传输的应用、域名解析应用等,每一种应用都需要一个专门的应用层协议,这就意味着应用层协议需要很多。
应用层协议的甲方和乙方是服务器端程序和客户端程序,在很多计算机网络原理的教材中,协议中的甲方和乙方称为对等实体。
TCP/IP协议是互联网通信的工业标准,TCP/IP协议中的应用层协议HTTP、FTP、SMTP、POP3都是标准化的应用层协议,应用层协议的标准化有什么好处呢?
Internet上用于通信的服务器端软件和客户端软件往往不是一家公司开发的,比如Web服务器有微软公司的IIS服务器,还有开放源代码的Apache、俄罗斯人开发的Nginx等,浏览器有微软的IE浏览器、UC浏览器、360浏览器、火狐浏览器、谷歌浏览器等。你会发现Web服务器和浏览器虽然是不同公司开发的,但这些浏览器却能够访问全球所有的Web服务器,这是因为Web服务器和浏览器都是参照HTTP协议进行开发的,如图2-7所示。
图2-7 HTTP使得各种浏览器能够访问各种Web服务器
HTTP协议定义了Web服务器和浏览器通信的方法,协议双方就是Web服务器和浏览器,为了更形象,称Web服务器为甲方、浏览器为乙方。
HTTP协议是TCP/IP协议中的一个标准协议,是一个开放式协议。由此你可以想到,肯定还有私有协议。比如思科公司的路由器和交换机上运行的CDP协议(思科发现协议),只有思科的设备支持。比如你公司开发的一款软件有服务器端和客户端,它们之间的通信规范由开发者定义,这就是应用层协议。不过那些做软件开发的人如果不懂网络,没有学过TCP/IP协议,他们并不会意识到他们定义的通信规范就是应用层协议,这样的协议就是私有协议,这些私有协议就不属于TCP/IP协议。
网络标准形成的过程
RFC(Request For Comments)意即“请求评议”,包含了关于Internet的几乎所有重要的文字资料。通常,当某家机构或团体开发出一套标准或提出对某种标准的设想,想要征询外界的意见时,就会在Internet上发放一份RFC,对这一问题感兴趣的人可以阅读该RFC并提出自己的意见;绝大部分网络标准的指定都以RFC的形式开始,经过大量的论证和修改过程,由主要的标准化组织指定。但RFC中收录的文件并不都正在使用或为大家公认,也有很大一部分只在某个局部领域被使用或并没有被采用,一份RFC具体处于什么状态都在文件中有明确的标识。
一个RFC文件在成为官方标准前一般至少要经历4个阶段:Internet草案、建议标准、草案标准、Internet标准。
Internet上的常见应用,比如发送电子邮件、接收电子邮件、域名解析、文件传输、远程登录、地址自动配置等,通信使用的协议都已经成为Internet标准,成为TCP/IP协议中的应用层协议。下面列出了TCP/IP协议中常见的应用层协议。
下面参照租房协议的格式将HTTP协议的主要内容列出来(注意:不是完整的),从而认识应用层协议长什么模样,如图2-8所示。
可以看到HTTP协议定义了浏览器访问Web服务器的步骤,能够向Web服务器发送哪些请求(方法),HTTP请求报文格式(有哪些字段,分别代表什么意思),也定义了Web服务器能够向浏览器发送哪些响应(状态码),HTTP响应报文格式(有哪些字段,分别代表什么意思)。
举一反三,其他的应用层协议也需要定义以下内容。
图2-8 HTTP协议
图2-8 HTTP协议(续一)
图2-8 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-9所示。
图2-9 启用POP3和SMTP服务
在Windows XP上,安装Ethereal,运行抓包工具,打开Outlook Express,使用申请的电子邮件账户连接到邮件服务器,给自己写一封邮件,单击“发送/接收”,停止抓包,如图2-10所示,可以看到发送邮件的协议SMTP,右击该数据包,单击“Follow TCP Stream”。
Outlook Express就是SMTP客户端,如图2-11所示,可以看到SMTP客户端向SMTP服务器发送电子邮件的交互过程。
图2-10 筛选数据包
图2-11 发送电子邮件的交互过程
图中SMTP客户端向SMTP服务器发送的命令以及顺序如下。
EHLO xp -- EHLO是对HELO的扩展,可以支持用户认证,xp是客户端计算机名
AUTH LOGIN --需要身份验证
MAIL FROM: <ess2005@yeah.net> --发件人
RCPT TO: <ess2005@yeah.net> --收件人
DATA --邮件内容
. --表示结束,将输入内容一起发送出去
QUIT --退出
图中有状态代码的行是SMTP服务器向SMTP客户端返回的响应。
220<domain> --服务器就绪
250 --要求的邮件操作完成
334 --服务器响应,已经过BASE64编码的用户名和密码
354 --开始邮件输入,以“.”结束
221 --服务关闭
从以上捕获的数据包,我们就可以看到SMTP协议、客户端向服务器发送的命令以及服务器返回的响应。
高级防火墙能够识别应用层协议的方法,可以设置高级防火墙禁止客户端向服务器发送某个请求,也就是禁用应用层协议的某个方法。比如浏览器请求网页使用的是GET方法,向Web服务器提交内容使用的是POST方法,如果企业不允许员工在Internet上的论坛发帖,可以在企业网络边缘部署高级防火墙以禁止HTTP协议的POST方法,如图2-12所示。
图2-12 部署高级防火墙
图2-13所示是微软企业级防火墙TMG,配置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-13 配置HTTP协议,阻止POST方法
如图2-14所示,右击FTP协议数据包,单击“跟踪流”→“TCP流”。
图2-14 访问FTP服务器的数据包
接下来会出现图2-15所示的窗口,将FTP客户端访问FTP服务器的所有交互过程中产生的数据整理到一起,可以看到FTP协议中的方法,“STOR”方法上传test.txt,“CWD”方法改变工作目录,“RNFR”方法重命名test.txt,“DELE”方法删除abc.txt文件。如果想看到FTP协议的其他方法,可以使用FTP客户端在FTP服务器上执行创建文件夹、删除文件夹、下载文件等操作,这些操作对应的方法使用抓包工具都能看到。
图2-15 FTP客户端访问FTP服务器的交互过程
我们也可以配置FTP服务器禁止FTP协议中的一些方法。比如打算禁止FTP客户端删除FTP服务器上的文件,可以配置FTP请求筛选,禁止DELE方法。如图2-16所示,单击“FTP请求筛选”。
图2-16 配置FTP请求筛选
如图2-17所示,在“FTP请求筛选”界面,单击“命令”,再单击“拒绝命令…”,在出现的“拒绝命令”对话框中输入“DELE”,单击“确定”。
图2-17 禁用DELE方法
在Windows 7上再次删除FTP服务器上的文件,就会出现提示“500 Command not allowed”,如图2-18所示,意为命令不被允许。
图2-18 命令不允许
Windows Server 2012 R2的Web站点也可以禁止HTTP协议的某些方法,如图2-19所示,单击“请求筛选”。
如图2-20所示,在“HTTP谓词”选项卡下,单击“拒绝谓词…”,输入拒绝的方法“POST”,浏览器向该网站发送的POST请求就被拒绝。
图2-19 筛选HTTP协议请求
图2-20 禁用HTTP协议的“POST”方法
使用快递寄东西,要打包,包裹的大小是有限制的。如果寄的东西少,可以打包成一个包裹邮寄;如果寄的东西多,那就要打包成多个包裹,每个包裹都贴上快递单子,作为两个独立的件发送。客户端程序和服务器端程序通信也会分两种情况:
针对这两种情况,TCP/IP协议定义了两个传输层协议,为应用程序通信(应用层)提供服务,分别是传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)。
传输层协议的甲方和乙方分别是通信的两台计算机的传输层,如图2-21所示,传输层协议为应用层协议提供服务。
图2-21 传输层协议与应用层协议之间的关系
如果应用程序要传输的文件大,需要将内容分段发送,在传输层通常就使用TCP协议,在发送方和接收方之间建立连接,实现可靠传输、流量控制和拥塞避免。
网络中一个数据包的大小通常是1500个字节,其中的数据是1460个字节,这就意味着如果要传输的文件大于1460个字节,就要分成多个数据包传输。比如要从网络中下载一部500MB的电影,或下载一个200MB的软件,这么大的文件需要分段发送,发送过程需要持续几分钟或几十分钟。在此期间,发送方将要发送的文件内容以字节为单位流入发送缓存,在发送缓存中分段,并对分段进行编号,加上IP地址后封装成数据包,按顺序发送。
网络就像公路,数据包就像汽车,在上下班高峰期交通会出现拥堵。当网络中涌入的数据包超出路由器转发能力时,路由器会丢弃来不及处理的数据包(丢包)。不同分段可能会沿不同的路径到达目的计算机,虽然发送端按分段的编号顺序发送分段,但这些分段不一定按顺序到达接收端(乱序)。
可见网络是不可靠的,既不能保证不丢包,也不能保证按顺序到达。TCP协议能够实现发送端和接收端的可靠传输,对丢了的数据包自动重传,分段在接收端缓存中能正确排序。TCP协议能够在不可靠的网络上实现数据的可靠传输。TCP协议在传输数据之前需要建立TCP连接,进行可靠传输(丢包自动重传,分段在接收端排序),通信过程有流量控制,拥塞避免,通信结束后要释放连接。
如果应用程序要发送的数据一个数据包就能发送全部内容,在传输层通常就使用UDP 协议。一个数据包就能发送全部内容,在传输层不需要分段,不需要编号,不需要在发送方和接收方建立连接,不判断数据包是否到达目的端(不可靠传输),发送过程也不需要流量控制、拥塞避免。这就使得UDP具有TCP望尘莫及的速度优势。TCP协议中植入了各种可靠保障功能,在实际执行的过程中会占用系统资源,使速度受到影响。UDP 由于排除了信息可靠传输机制,降低了执行时间,使速度得到了保证。
比如在计算机上打开浏览器,输入http://www.epubit.com,计算机就需要将该域名解析成IP地址,就会向DNS服务器发送一个数据包,查询该域名对应的IP地址,DNS服务器将查询结果放到一个数据包发送给计算机。发送域名解析请求只需要一个数据包,返回解析结果也只需要一个数据包,域名解析在传输层就使用UDP协议。
再比如,使用QQ聊天,通常一次输入的聊天内容不会有太多文字,使用一个数据包就能把聊天内容发送出去,并且聊完第一句,也不定什么时候聊第二句,发送数据不是持续的,发送QQ聊天的内容在传输层使用UDP协议。
QQ如果一次发送的聊天内容太多,一个数据包容不下,QQ聊天工具就会把聊天内容分成两个UDP数据包分别发送。如果发送失败,QQ聊天工具会尝试发送第二次、第三次,所以大家通常会遇到这种情况,QQ聊天内容发送后,如果网络出现故障,过一段时间才会出现QQ聊天内容发送失败的提示,那是因为QQ在尝试第二次、第三次发送。
上面举两个例子就是给大家介绍UDP协议的应用场景,UDP协议不负责可靠传输。如果客户端发送的UDP报文在网络中丢失,客户端程序没有收到返回的数据包,就再发送一遍,大家可以认为发送成功与否是由应用层判断的。
大家知道了两个传输层协议TCP和UDP的特点和应用场景,就很容易判断某个应用层协议在传输层使用什么协议。
前面讲了,QQ聊天时传输层协议使用的是UDP协议。如果使用QQ给好友传一个文件,传输层使用什么协议呢?传输文件需要持续几分钟或几十分钟,肯定不是使用一个数据包就能把文件传输完的,需要将要传输的文件分段传输,在传输期间需要建立会话、可靠传输、流量控制、拥塞避免等,可以断定在传输层应该使用TCP协议来实现这些功能。
访问网站、发送电子邮件、访问FTP服务器下载文件,这些应用在传输层使用什么协议呢?其实只要想一想,要传输的网页、所发送电子邮件的内容和附件、从FTP下载的文件都需要拆分成多个数据包发送,就可以判断这些应用在传输层应该使用TCP协议。
在这里需要强调的是:使用多播通信发送数据在传输层也使用UDP协议,多播通信虽然是持续发送数据包,但不需要和接收方建立会话进行可靠传输,因此在传输层使用UDP协议。比如机房多媒体教室软件,教师端发送屏幕广播,机房的学生计算机接收到教师计算机传输的屏幕,传输层使用UDP协议。
实时通信通常也会使用UDP协议,比如和好友QQ语音聊天,要求双方聊天的内容即刻发送到对方,不允许有很大延迟。如果聊天过程中网络堵塞,有丢包现象,对方听到的声音就会出现断断续续。有人说那就使用可靠传输吧,大家想想那将会出现什么样的场景呢?如果使用TCP实现可靠通信,聊天的内容丢包重传,在接收端排序后再播放声音,你的好友等到这句完整的话,可能需要几秒钟,你们就不能愉快地聊天了,所以实时通信在传输层还是选择UDP协议。
下面重点讲解传输层协议中的TCP协议。
下面举例说明发送端和接收端实现可靠传输的方式。
如图2-22所示,浏览器请求Web服务器上的一个网页,网页中的内容以字节流的形式源源不断地流入发送缓存,在发送缓存中将内容分段,并给分段编号,分段大小通常不超过1460个字节。接收端有接收缓存,无论分段是否按顺序到达,在接收缓存中按编号排序,会等待迟到的分段,浏览器从接收缓存读取连续的字节。
丢包怎么解决呢?超时自动重传。即发送端每发送一个分段,就记下发送时间,等一段时间(一段往返时间再多一点的时间),如果还没有收到接收端的确认,就会自动重发这个分段。这就意味着,接收端只要没有告诉发送端收到,发送端就会超时自动重传。
图2-22 TCP可靠传输的实现
现在Internet中的计算机无论使用什么操作系统,相互之间都能够实现可靠传输,这归功于Internet上不同的操作系统可靠传输使用的都是TCP协议,如图2-23所示。
图2-23 TCP协议使得全球使用不同操作系统的计算机能够进行可靠传输
TCP协议为应用程序通信提供可靠传输。在通信过程中实现以下功能。
要实现以上功能,传输层分段要加上TCP首部,TCP协议规定了TCP首部有哪些字段、每个字段所代表的意义,发送方和接收方使用传输层首部这些字段实现可靠传输、流量控制、拥塞避免。TCP首部长度不固定,有20个字节的固定长度,选项部分长度不固定,如图2-24所示。
图2-24 TCP首部
图中的源端口、目标端口、序号、确认号、数据偏移等是首部的字段。图中标识的32位,是指长度为32位的二进制。可以看到源端口占16位二进制,即两个字节(1个字节=8位二进制),最大值是65 535,序号和确认号占32位的二进制,4个字节。URG、ACK、PSH、RST、SYN和FIN字段占一位二进制,我们称之为标记位。各字段的意义在这里不做过多讲解,要想详细掌握各字段的意义,需要学习计算机网络原理。
TCP/IP协议中的应用层协议很多,传输层就两个协议,如何使用两个传输层协议标识应用层协议呢?
用传输层协议加一个端口号来标识一个应用层协议。如图2-25所示,图中标明了传输层协议和应用层协议之间的关系。
图2-25 传输层协议和应用层协议之间的关系
DNS同时占用UDP和TCP端口53是公认的,通过抓包分析,几乎所有的情况都在使用UDP,说明DNS主要还是使用UDP, DNS在进行区传送的情况下会使用TCP协议(区传送是指一个区域内主DNS服务器和辅助DNS服务器之间建立通信连接并进行数据传输的过程),这个存在疑问?
下面是一些常见的应用层协议和传输层协议之间的关系。
HTTP默认使用TCP的80端口。
FTP默认使用TCP的21端口。
SMTP默认使用TCP的25端口。
POP3默认使用TCP的110端口。
HTTPS默认使用TCP的443端口。
DNS使用TCP/UDP的53端口。
telnet使用TCP的23端口。
RDP远程桌面协议默认使用TCP的3389端口。
以上列出的都是默认端口,当然也可以更改应用层协议使用的端口。如果不使用默认端口,客户端访问服务器时需要指明所使用的端口。比如91学IT网站指定HTTP协议使用808端口,访问该网站时就需要指明使用的端口;http://www.91xueit.com:808,冒号后面的808指明HTTP协议使用端口808。如图2-26所示,远程桌面协议(RDP)没有使用默认端口,冒号后面的9090指定使用端口9090。
图2-26 为远程桌面协议指定使用的端口
如图2-27所示,一台服务器同时运行了Web服务、SMTP服务和POP3服务,Web服务一启动就用TCP的80端口侦听客户端请求,SMTP服务一启动就用TCP的25端口侦听客户端请求,POP3服务一启动就用TCP的110端口侦听客户端请求。现在网络中的A计算机、B计算机和C计算机分别打算访问端口服务器的Web服务、SMTP服务和POP3服务。发送3个数据包①②③,这3个数据包的目标端口分别是80、25和110,服务器收到这3个数据包,就根据目标端口将数据包提交给不同的服务进行处理。
现在大家就会明白,数据包的目标IP地址用来定位网络中的某台服务器,目标端口用来定位服务器上的某个服务。
图2-27 应用层协议和传输层协议之间的关系
上图给大家展示了A、B、C计算机访问服务器的数据包,有目标端口和源端口,源端口是计算机临时为客户端程序分配的,服务器向A、B、C计算机发送数据包时,源端口就会变成目标端口。
如图2-28所示,A计算机打开谷歌浏览器,一个窗口访问百度网站,另一个窗口访51CTO网页,这就需要建立两个TCP连接。A计算机会给每个窗口临时分配一个客户端端口(要求本地唯一),这样从51CTO学院返回的数据包的目标端口是13456,从百度网站返回的数据包的目标端口是12928,这样A计算机就知道这些数据包来自哪个网站,应给哪一个窗口。
图2-28 源端口的作用
在传输层使用16位二进制标识一个端口,端口号的取值范围是0~65 535,这个数目对一台计算机来说足够用了。
端口号分为如下两大类。
(1)服务器端使用的端口号。
服务器端使用的端口号在这里又分为两类,最重要的一类叫作熟知端口号(well-known port number)或系统端口号,取值范围为0~1023。IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。下面给出一些常用的熟知端口号,如图2-29所示。
图2-29 熟知端口号
另一类叫作登记端口号,取值范围为1024~49 151。这类端口号由没有熟知端口号的应用程序使用。要使用这类端口号,必须在IANA按照规定的手续登记,以防止重复。
(2)客户端使用的端口号。
当打开浏览器访问网站,或登录QQ等客户端软件和服务器建立连接时,计算机会为客户端软件分配临时端口,这就是客户端端口,取值范围为49 152~65 535。由于这类端口号仅在客户进程运行时才动态选择,因此又叫作临时(短暂)端口号。这类端口号留给客户进程暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的端口号,因而可以把数据发送给客户进程。通信结束后,刚才已使用过的客户端口号就不复存在。这个端口号就可以供其他客户进程以后使用。
计算机之间的通信,通常是服务器端程序(以后简称服务)运行等待客户端程序的连接请求。服务器端程序通常以服务的形式存在于Windows服务系统或Linux系统。这些服务不需要用户登录服务器,系统启动后就可以自动运行。
服务运行后就要使用TCP或UDP协议的某个端口侦听客户端的请求,服务停止,则端口关闭,同一台计算机的不同服务使用的端口不能冲突(端口唯一)。
在Windows Server 2003系统中,在命令提示符下输入netstat -an可以查看侦听的端口,如图2-30所示。
如图2-31所示,设置Windows Server 2003系统属性,启用远程桌面(相当于启用远程桌面服务),再次运行netstat-an就会看到侦听的端口多了TCP的3389端口。关闭远程桌面,再次查看侦听端口,不再侦听3389端口。
如图2-32所示,在命令提示符下使用telnet命令可以测试远程计算机是否侦听了某个端口,只要telnet没有提示端口打开失败,就意味着远程计算机侦听该端口。使用端口扫描工具也可以扫描远程计算机打开的端口,如果服务使用默认端口,根据服务器侦听的端口就能判断远程计算机开启了什么服务。你就明白了那些黑客入侵服务器时,为啥需要先进行端口扫描,扫描端口就是为了明白服务器开启了什么服务,知道运行了什么服务才可以进一步检测该服务是否有漏洞,然后进行攻击。
图2-30 Windows系统侦听的端口
图2-31 设置Windows Server 2003启用远程桌面
图2-32 telnet百度网站是否侦听25端口
客户端和服务器之间的通信使用应用层协议,应用层协议使用传输层协议+端口标识,知道了这个关系后,网络安全也就应该了解了。
如果在一台服务器上安装了多个服务,其中一个服务有漏洞,被黑客入侵,黑客就能获得操作系统的控制权,进一步破坏掉其他服务。
如图2-33所示,服务器对外提供Web服务,在服务器上还安装了微软的数据库服务(MsSQL服务),网站的数据就存储在本地的数据库中。如果没有配置服务器的防火墙对进入的流量做任何限制,且数据库的内置管理员账户sa的密码为空或弱密码,网络中的黑客就可以通过TCP的1433端口连接到数据库服务,猜测数据库的sa账户的密码,一旦猜对,就能获得服务器上操作系统管理员的身份,对服务器进行任何操作,这就意味着服务器被入侵。
图2-33 服务器防火墙开放全部端口
TCP/IP协议在传输层有两个协议:TCP和UDP,这就相当于网络中的两扇大门,如图2-33所示,门上开的洞就相当于开放TCP和UDP的端口。
如果想让服务器更加安全,那就把TCP和UDP这两扇大门关闭,在大门上只开放必要的端口。如图2-34所示,如果服务器对外只提供Web服务,便可以设置Web服务器防火墙只对外开放TCP的80端口,其他端口都关闭,这样即便服务器上运行了数据库服务,使用TCP的1433端口侦听客户端的请求,互联网上的入侵者也没有办法通过数据库入侵服务器。
图2-34 在防火墙中设置对外开放的服务端口
前面讲的是设置服务器的防火墙,只开放必要的端口,加强服务器的网络安全。
也可以在路由器上设置网络防火墙,控制内网访问Internet的流量,如图2-35所示,企业路由器只开放了UDP的53端口和TCP的80端口,允许内网的计算机将域名解析的数据包发送到Internet的DNS服务器,允许内网计算机使用HTTP协议访问Internet的Web服务器。内网计算机不能访问Internet上的其他服务,比如邮件发送(使用SMTP协议)和邮件接收(使用POP3协议)服务。
图2-35 在路由器上封锁端口
现在大家就会明白,如果我们不能访问某台服务器上的服务,也有可能是沿途路由器封掉了该服务使用的端口。在图2-35中,对内网计算机telnet SMTP服务器的25端口,就会失败,这并不是因为Internet上的SMTP服务器上没有运行SMTP服务,而是沿途路由器封掉了访问SMTP服务器的端口。
Windows Server 2003和Windows XP都有Windows防火墙,通过设置计算机对外开放什么端口来实现网络安全。Windows防火墙的设置需要Windows Firewall/Internet Connection Sharing (ICS)服务,该服务如果被异常终止,Windows防火墙就不起作用了。
还有比Windows防火墙更加安全的设置,就是使用TCP/IP筛选,更改该设置需要重启系统才能生效。
现在演示在Windows Server 2003上设置Windows防火墙,只允许网络中的计算机使用TCP的80端口访问其网站,其他端口统统关闭,网络中的计算机就不能使用远程桌面连接了。
如图2-36所示,在Windows Server 2003 Web服务上,单击“开始”→“设置”→“网络连接”。
图2-36 在Windows Server 2003中设置防火墙
在出现的“网络连接”对话框中双击“本地连接”。在出现的“本地连接 状态”对话框中,在“常规”选项卡中单击“属性”。在出现的“本地连接 属性”对话框中,在“高级”选项卡中,单击“设置”。在出现的“Windows防火墙”对话框中,提示要启动Windows防火墙/ICS服务,单击“确定”。
在出现的“Windows防火墙”对话框中,在“常规”选项卡中选中“启用”,如图2-37所示。
如图2-38所示,单击“例外”选项卡,可以看到内置的3个规则,单击“添加端口”,在出现的添加端口对话框,输入名称和端口号,选择TCP协议,单击“确定”。
如图2-39所示,在“例外”选项卡中,选中刚刚创建的规则,单击“确定”。
在Windows XP上测试,网站能够访问,远程桌面不能连接了,如图2-40所示。
在Windows Server 2003 Web服务上停止Windows Firewall/Internet Connection Sharing (ICS)服务,在Windows XP上就能够使用远程桌面连接该服务器了,说明Windows防火墙不起作用了,如图2-41所示。
图2-37 启用Windows防火墙
图2-38 添加例外端口
图2-39 选中例外端口
图2-40 远程桌面测试
下面给大家演示如何在Windows上使用TCP/IP筛选,只开放TCP的80端口。上面的操作已经停止了Windows Firewall/Internet Connection Sharing (ICS)服务,在此基础上,继续下面的操作。
如图2-42所示,打开“本地连接 属性”对话框,在“常规”选项卡中选中“Internet协议(TCP/IP)”,单击“属性”。
图2-41 停止Windows防火墙/ICS服务
图2-42 打开“本地连接 属性”对话框
在出现的“Internet协议(TCP/IP)属性”对话框中单击“高级”,在出现的“高级TCP/IP设置”对话框中,在“选项”选项卡中选中“TCP/IP筛选”,单击“属性”,如图2-43所示。
图2-43 设置高级TCP/IP属性
如图2-44所示,在出现的“TCP/IP筛选”对话框中选中“启用TCP/IP筛选(所有适配器)”,为TCP端口和UDP端口选中“只允许”,在TCP端口下,单击“添加”,在出现的“添加筛选器”对话框中输入80,单击“确定”。
设置完成后,重启系统。
如果没有选中“启用TCP/IP筛选(所有适配器)”,且计算机有多块网卡,则TCP/IP筛选只对当前网卡生效。为UDP端口选中“只允许”,而没有添加任何端口,就相当于关闭了UDP的全部端口,如图2-43所示。
在Windows XP上进行测试。你会发现网站能够访问,而远程桌面不能连接,TCP/IP筛选不受Windows Firewall/Internet Connection Sharing (ICS) 服务的影响,可见TCP/IP筛选的防护更彻底。
以上演示是在Windows Server 2003上做的,不同的操作系统(如Windows或Linux)虽然配置命令和配置方式不同,但都有相似的功能。
图2-44 设置TCP/IP筛选
网络层的功能是负责把数据包发送到目标主机,网络中的路由器负责在不同网络间转发数据包,为数据包选择转发路径。路由器厂家有思科、华为、H3C、TP-Link等,为了让不同厂家的路由器连接的网络能够相互通信,必须有统一的转发标准。TCP/IP协议中的IP协议是数据包在网络中的转发标准。数据包在转发过程中出错可以通过ICMP协议报告,ICMP协议也是网络层协议。
网络层为传输层提供服务,负责把传输层的段发送到接收端。网络层为传输层的段加上网络层首部,在图2-45中使用H表示,网络层首部包括源IP地址和目标IP地址,加了网络层首部的段称为“数据包”,网络中的路由器根据数据包的首部转发数据包。
IP协议是多方协议,发送方的网络层和接收方的网络层以及沿途所有路由器都要遵守IP协议的约定来转发数据包。
IP数据包首部的格式能够说明IP协议都具有什么功能。在TCP/IP标准中,各种数据格式常常以32位(4字节)为单位来描述,图2-46显示了IP数据包的完整格式。
图2-45 网络层协议
IP数据包由首部和数据两部分组成。首部的前一部分是固定长度,共20个字节,是所有IP数据包必须有的。首部的固定部分的后面是一些可选字段,其长度是可变的。
图2-46 网络层首部格式
版本字段用来指明是IPv4还是IPv6首部。因为IP首部有变长部分,所以首部长度指明了首部有多少个字节。区分服务用来实现QoS。总长度指明数据包的首部和数据部分总长度,总长度字段为16位,因此数据包的最大长度为216−1=65 535字节,实际上传输这样长的数据包在现实中是极少遇到的。标识和标志以及片偏移用来实现数据包分片后在接收端组装成一个完整的数据包。生存时间用来限定数据包能够经过几台路由器转发,每经过一台路由器,路由器将TTL减1,当TTL为0时,丢掉数据包。协议字段指出数据包携带的数据是何种协议,以便使目的主机的网络层知道应将数据部分上交给哪个处理过程。常用的一些协议和相应的协议字段值如图2-47所示。
图2-47 常用协议及相应的协议字段值
首部校验和字段供网络中的路由器用来检查网络层首部在传输过程中是否出现差错。源IP地址和目标IP地址用来指明数据包的发送者和接收者的地址。
以太网的网络层还需要ARP协议,其作用就是从本网段的IP地址解析出MAC地址。
如图2-48所示,网络中有两个以太网和一个点到点网络,计算机和路由器接口的地址如图2-48所示,图中的MA、MB、……、MH代表对应接口的MAC地址。下面讲解计算机A和本网段计算机C的通信过程,以及计算机A和计算机H跨网段的通信过程。
图2-48 以太网和点到点网络示意图
如果计算机A ping计算机C的IP地址192.168.0.4,计算机A判断目标IP地址和自己在一个网段,目标MAC地址就是计算机C的MAC地址,图2-49是计算机A发送给计算机C的帧示意图。
如果计算机A ping计算机H的IP地址192.168.1.4,计算机A判断出目标IP地址和自己不在一个网段,数据包就要发送给路由器R1,目标MAC地址就是网关的MAC地址,也就是路由器R1的D接口的MAC地址,图2-50所示。
图2-49 同一网段通信帧目标MAC地址
图2-50 跨网段通信帧目标MAC地址
为了将计算机接入以太网,我们只需要给计算机配置IP地址、子网掩码和网关,并没有告诉计算机网络中其他计算机的MAC地址。计算机需要知道本网段计算机的MAC地址和网关的MAC地址。本案例中,计算机A是如何知道计算机C或网关的MAC地址的?
在TCP/IP协议的网络层有ARP(Address Resolution Protocol)协议,在计算机与目标计算机通信之前,需要使用该协议解析到目标计算机(同一网段通信)或网关(跨网段通信)的MAC地址。ARP协议通过广播(目标MAC地址是FF-FF-FF-FF-FF-FF)解析MAC地址。
这里大家需要知道:ARP协议只在以太网中使用,点到点链路使用PPP协议通信,PPP帧的数据链路层根本不用MAC地址,所以也不用ARP协议解析MAC地址。
在Windows操作系统上,打开命令提示符,输入arp-a,执行后就能够看到ARP协议解析到的MAC地址,如图2-51所示,类型是“动态”的,是通过ARP协议解析到的。
图2-51 计算机中的ARP缓存
TCP/IP协议中的网络层还有一个ICMP协议,ICMP(Internet Control Message Protocol)是Internet控制报文协议,用于在IP主机、路由器之间传递控制消息,判断网络是否畅通,诊断网络故障。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
IP协议转发数据包的过程中如果出现差错,出问题的路由器会产生一个ICMP差错报告并返回给发送端。网络管理员经常需要判断某台计算机到某个地址是否畅通,这也会用到ICMP协议的诊断报告功能。
ICMP报文是在IP数据包内部传输的,封装在IP数据包内。ICMP报文通常被IP层或更高层协议(TCP或UDP)使用,一些ICMP报文把差错报文返回给用户进程。
注意,现在我们不是查看网络层首部格式,而是查看ICMP报文的格式。ping命令就能够产生一个ICMP请求报文并发送给目标地址,用来测试网络是否畅通,如果目标计算机收到ICMP请求报文,就会返回ICMP响应报文,如图2-52所示。
如图2-53所示,在PC1上ping PC2,在捕获的ICMP数据包中点中一个ICMP请求包,可以看到ICMP请求报文格式,有ICMP报文类型、ICMP报文代码、校验和以及ICMP数据部分。请求报文类型值为8,报文代码为0。
图2-52 ICMP请求与响应报文
图2-53 ICMP请求报文
如图2-54所示,点中一个ICMP响应报文,可以看到响应报文类型值为0,报文代码为0。
ICMP除了定义请求报文和响应报文的格式以外,还定义了差错报告报文的格式。
ICMP报文分几种类型,每种类型又使用代码来进一步指明ICMP报文所代表的不同含义。图2-55中列出了几种常见的ICMP报文类型和代码所代表的含义。
ICMP差错报告共有5种,具体如下。
图2-54 ICMP响应报文
图2-55 常见的ICMP报文类型和代码所代表的含义
在网络层还有一个IGMP协议,即Internet 组管理协议 (Internet Group Management Protocol),它是Internet协议家族中的一个组播协议,该协议运行在主机和组播路由器之间。先给大家介绍一下什么是组播。
计算机通信分为一对一通信、组播通信和广播通信。
如图2-56所示,教室中有一台流媒体服务器,课堂上老师安排学生在线学习这台流媒体服务器上的课程“Excel VBA”,教室中的每台计算机访问这台流媒体服务器以观看这个视频,这就是一对一通信,可以看到流媒体服务器到交换机的流量很大。
大家知道电视台发送视频信号,可以让无数台电视机同时收看节目。现在老师安排学生同时学习“Excel VBA”这门课程,在网络中也可以让流媒体服务器像电视台一样,不同的视频节目使用不同的组播地址(相当于电视台的不同频道)发送到网络中,网络中的计算机要想收到某个视频流,只需要将网卡绑定到相应的组播地址即可,这个绑定过程通常由应用程序来实现,组播节目文件就自带组播地址信息,只要使用暴风影音或其他视频播放软件播放,就会自动给计算机网卡绑定组播地址。
如图2-57所示,上午8点学校老师安排学生1班学习“Excel VBA”视频,安排2班学生学习“PPT 2010”视频,机房管理员提前就配置好了流媒体服务器,8点钟准时使用224.4.5.4这个组播地址发送“Excel VBA”这个课程视频,使用224.4.5.3这个组播地址发送“PPT 2010”这个课程视频。
图2-56 点到点通信示意图
图2-57 组播通信应用场景
网络中的计算机除配置唯一地址外,收看组播视频还需要绑定组播地址,观看组播视频过程中,学生不能“快进”或“倒退”。这样流媒体服务器的带宽压力大大降低,网络中有10个学生收看视频和1000个学生收看视频对流媒体服务器来说流量是一样的。
通过上面的介绍,你是否更好地理解了组播这个概念呢?“组”就是一组计算机绑定相同的地址。如果计算机同时收看多个组播视频,则计算机的网卡需要同时绑定多个组播地址。
大家知道了组播,再理解IGMP协议的作用就容易了。
前面给大家介绍组播时,碰到的是流媒体服务器和接收组播的计算机在同一网段的情景。组播也可以跨网段,如图2-58所示,流媒体服务器在北京总公司的网络,上海分公司和石家庄分公司接收流媒体服务器的组播视频。这就要求网络中的路由器启用组播转发,组播数据流要从路由器R1发送到R2,路由器R2将组播数据流同时转发到路由器R3和R4。
图2-58 跨网段组播应用场景
如果上海分公司的计算机都不再接收224.4.5.4组播视频,R4路由器就会告诉R2路由器,R2路由器就不再向R4路由器转发该组播数据包。上海分公司的网络中只要有一台计算机接收该组播视频,R4路由器就会向R2路由器申请该组播数据包。
这就要求上海分公司的路由器R4必须知道网络中的计算机正在接收哪些组播。这就要用到IGMP协议了,上海分公司的主机与本地路由器(R4)之间使用Internet组管理协议(IGMP)来进行组播组成员信息的交互,用于管理组播组成员的加入和离开。
IGMP提供了在转发组播数据包到目的地的最后阶段所需的信息,实现如下双向功能:
如图2-59所示,计算机A与计算机D通信,要经过3段链路:以太网链路、点到点链路和以太网链路。不同的数据链路使用不同的数据链路层协议,比如以太网使用CSMA/CD协议,点到点链路使用PPP协议。
不同的数据链路层协议,定义的帧格式也不一样,数据包经过不同的链路就要封装成该数据链路层协议的帧格式。计算机A给计算机D发送一个数据包,将该数据包封装成以太网帧,可以看到以太网帧有MAC地址,到达RouterA。RouterA去掉数据链路层的封装,看到数据包,RouterA要把数据包发送到RouterB,经过点到点链路,该链路使用PPP协议,把数据包封装成PPP帧,发送到RouterB,RouterB收到后需要将数据包发送到计算机D,把数据包封装成以太网帧。
图2-59 数据链路层封装
通过以上讲解,大家知道了数据链路层的功能就是将数据包封装成帧,从链路的一端发送到另一端,路由器才能收到数据包,为数据包选择转发路径。因此数据链路层为网络层提供服务,如图2-60所示。
图2-60 数据链路层功能
数据链路层协议有很多,以太网数据链路是CMSC/CD协议,针对点到点链路的数据链路层协议除了PPP,还有HDLC、帧中继等。
物理层协议定义了与传输媒体的接口有关的一些特性,定义了这些接口标准,各厂家生产的网络设备接口才能相互连接和通信,比如定义了以太网接口标准,不同厂家的以太网设备就能相互连接。物理层为数据链路层提供服务。
物理层包括以下几方面的定义,大家可以认为是物理层协议包括的内容。
机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定的锁定装置等,平时常见的各种规格的接插部件都有严格的标准化规定。这很像平时常见的各种规格的电源插头,其尺寸都有严格的规定。图2-61所示是某广域网接口和线缆接口。
图2-61 某广域网接口和线缆接口
电气特性:指明在接口电缆的各条线上出现的电压范围,比如+10V和−10V电压之间。
功能特性:指明某条线上出现的某一电平的电压表示何种意义。
过程特性:定义在信号线上进行二进制比特流传输的一组操作过程,包括各信号线的工作顺序和时序,使得比特流传输得以完成。
前面给大家讲的TCP/IP协议是互联网通信的工业标准。当网络刚开始出现时,典型情况下只能在同一制造商制造的计算机产品之间进行通信。20世纪70年代后期,国际标准化组织(International Organization for Standardization,ISO)创建了开放系统互连(Open System Interconnection,OSI)参考模型,从而打破了这一壁垒。
OSI参考模型将计算机通信过程按功能划分为7层,并规定了每一层实现的功能。这样互联网设备的厂家以及软件公司就能参照OSI参考模型来设计自己的硬件和软件,不同供应商的网络设备之间就能够互相协同工作。
OSI参考模型不是具体的协议,TCP/IP协议是具体的协议,怎么来理解它们之间的关系呢?
我们先来定义一下汽车参考模型,汽车要有动力系统、转向系统、制动系统、变速系统,这就相当于OSI参考模型。参照这个汽车参考模型可以研发的汽车可以很多种,比如奥迪轿车,它实现了汽车参考模型的全部功能,此时奥迪汽车就相当于TCP/IP协议。当然还有宝马汽车,它也实现了汽车参考模型的全部功能,它相当于IPX/SPX协议。这些不同的汽车,它们的动力系统有的使用汽油,有的使用天然气,发动机有的是8缸,有的是10缸,但实现的功能都是汽车参考模型的动力系统。变速系统有的是手动挡,有的是自动挡,有的是4级变速,有的是6级变速,有的是无级变速,实现的功能都是汽车参考模型的变速功能。
同样OSI参考模型只定义了要实现的功能,并没有规定如何实现以及实现的细节,不同的协议组实现方法可以不同。
OSI参考模型将计算机通信分成7层,TCP/IP协议对其进行了合并简化,其应用层实现了OSI参考模型的应用层、表示层和会话层的功能,并将数据链路层和物理层合并成网络接口层,如图2-62所示。
图2-62 OSI参考模型和TCP/IP分层对照
本书后面的内容就以TCP/IP协议分层来划分,为了给大家讲解得更加清楚,本书将TCP/IP协议组的网络接口层按照OSI参考模型拆分成数据链路层和物理层。
国际标准化组织(ISO)指定的OSI参考模型把计算机通信分成了7层。
应用层是七层OSI参考模型的第七层,应用层根据互联网中需要通信的应用程序的功能,定义客户端和服务端程序通信的规范,应用层向表示层发出请求。
表示层是七层OSI参考模型的第六层,它的功能是定义数据格式、检查是否加密或压缩。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。接收方再将收到的标准的ASCII转换成接收方计算机的字符集。这一层常常是软件开发人员需要考虑的问题,比如QQ软件开发人员就要考虑用户的聊天记录在网络传输之前加密,防止有人使用捕包工具捕获用户数据,泄露信息;针对QQ视频聊天,开发人员就要考虑如何通过压缩数据节省网络带宽。
会话层是七层OSI参考模型的第五层,它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时就可以通知应用,从而使表示层看到的数据是连续的。
传输层是七层OSI参考模型的第四层,它负责常规数据递送,面向连接或无连接。面向连接实现可靠传输,比如TCP协议,面向无连接,提供不可靠传输,比如UDP协议。传输层把消息分成若干个分组,并在接收端对它们进行重组。
网络层是七层OSI参考模型的第三层,它根据网络地址为数据包选择转发路径。网络层为传输层提供服务,只是尽力转发数据包,不保证不丢包,也不保证按顺序到达接收端。
数据链路层是七层OSI参考模型的第二层,数据链路层常简称为链路层,两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要专门的链路层的协议。在两个相邻节点之间传送数据时,数据链层将网络层提交下来的IP数据包组装成帧,在两个相邻节间的链路上传送帧。每一帧包括数据和必要的控制信息(数据链路层首部、同步信息、地址信息、差错控制等)。接收端必须知道帧的开始和结束,根据差错控制信息判断传输过程是否出现差错,如果出现差错,就丢弃该帧。
物理层是七层OSI参考模型的第一层,在物理层上所传输的数据单位是比特。发送方发送1(或0)时,接收方应该收到1(或0),而不是0(或1)。因此物理层要考虑用多大电压代表“1”或“0”,以及接收方如何识别出发送方所代表的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。
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.计算机A给计算机D发送数据包要经过两个以太网帧,如图2-63所示,写出数据包的源IP地址和目标IP地址、源MAC地址和目标MAC地址。
图2-63 计算机A与计算机D通信示意图
10.TCP/IP协议按什么分层?写出每一层协议实现的功能。
11.列出几个常见的应用层协议。
12.应用层协议要定义哪些内容?
13.写出传输层的两个协议以及应用场景。
14.写出网络层的4个协议以及每个协议的功能。