1. 计算机网络的由来 稍微简化 又能概括出大致意思的!!!
最初的计算机价格很贵,体积很庞大,只能放置在专门的机房,在需要用到计算机时到机房去及计算。在这种情况下,计算机很多时候是空闲的,这就造成了资源的浪费。因此当时利用电话线路和调制解调器连接到计算机上,另一端连到不同的办公室的终端设备上,是大家利用终端来共享一台主机,提高主机的利用率。这是第一代计算机网络,又称为面向终端的网络。
随着网络中的主机越来越多,每台主机连接的终端不同,存储的数据资料也不同,那么可不可以将多个主机互联,是终端可以访问任意的主机中的资源呢?这就是第二代网络,多个主机之间互联。又称为面向通信子网的网络
随着计算机和网络的发展,计算机生产商越来越多,每个设备厂商都有自己的生产标准,这样就导致了不同的厂商生产的设备之间不能互通。为了解决这个问题,OSI组织制定了计算机联网的标准,即OSI参考模型。网络发展到了第三代。又称为标准化网络
第四代计算机网络是随着TCP/IP协议的兴起,Internet网络的时代
2. 网络协议-- 底层网络知识详解(从二层到三层)
网线
Hub 采取的是广播的模式,如果每一台电脑发出的包,宿舍的每个电脑都能收到,那就麻烦了。这就需要解决几个问题:
这几个问题,都是第二层, 数据链路层 ,也即 MAC 层要解决的问题。 MAC 的全称是 Medium Access Control ,即媒体访问控制。控制什么呢?其实就是控制在往媒体上发数据的时候,谁先发、谁后发的问题。防止发生混乱。这解决的是第二个问题。这个问题中的规则,学名叫 多路访问 。
三种方式:
方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作 信道划分 ;
方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作 轮流协议 ;
方式三:不管三七二十一,有事儿先出门,发现特堵,就回去。错过高峰再出。我们叫作 随机接入协议 。着名的以太网,用的就是这个方式。
接下来要解决第一个问题:发给谁,谁接收?这里用到一个物理地址,叫作 链路层地址 。但是因为第二层主要解决媒体接入控制的问题,所以它常被称为 MAC 地址 。
解决第一个问题就牵扯到第二层的网络包格式。
对于以太网,第二层的最后面是 CRC,也就是循环冗余检测。通过 XOR 异或的算法,来计算整个包是否在发送的过程中出现了错误,主要解决第三个问题。
这里还有一个没有解决的问题,当源机器知道目标机器的时候,可以将目标地址放入包里面,如果不知道呢?一个广播的网络里面接入了 N 台机器,我怎么知道每个 MAC 地址是谁呢?这就是 ARP 协议 ,也就是已知 IP 地址,求 MAC 地址的协议。
ARP 是通过吼的方式(广播)来寻找目标 MAC 地址的,吼完之后记住一段时间,这个叫作缓存。
谁能知道目标 MAC 地址是否就是连接某个口的电脑的 MAC 地址呢?这就需要一个能把 MAC 头拿下来,检查一下目标 MAC 地址,然后根据策略转发的设备,这个设备显然是个二层设备,我们称为 交换机 。
交换机是有 MAC 地址学习能力的,学完了它就知道谁在哪儿了,不用广播了。(刚开始不知道的时候,是需要广播的)
当交换机的数目越来越多的时候,会遭遇环路问题,让网络包迷路,这就需要使用 STP 协议,通过华山论剑比武的方式,将有环路的图变成没有环路的树,从而解决环路问题。
在数据结构中,有一个方法叫做 最小生成树 。有环的我们常称为图。将图中的环破了,就生成了树。在计算机网络中,生成树的算法叫作 STP ,全称 Spanning Tree Protocol 。
STP 协议比较复杂,一开始很难看懂,但是其实这是一场血雨腥风的武林比武或者华山论剑,最终决出五岳盟主的方式。
交换机数目多会面临隔离问题,可以通过 VLAN 形成 虚拟局域网 ,从而解决广播问题和安全问题。
对于支持 VLAN 的交换机,有一种口叫作 Trunk 口。它可以转发属于任何 VLAN 的口。交换机之间可以通过这种口相互连接。
ping 是基于 ICMP 协议工作的。
ICMP 全称 Internet Control Message Protocol ,就是 互联网控制报文协议 。
ICMP 报文是封装在 IP 包里面的。因为传输指令的时候,肯定需要源地址和目标地址。它本身非常简单。因为作为侦查兵,要轻装上阵,不能携带大量的包袱。
ICMP总结:
ICMP 相当于网络世界的侦察兵。我讲了两种类型的 ICMP 报文,一种是主动探查的查询报文,一种异常报告的差错报文;
ping 使用查询报文,Traceroute 使用差错报文。
在进行网卡配置的时候,除了 IP 地址,还需要配置一个Gateway 的东西,这个就是 网关 。
一旦配置了 IP 地址和网关,往往就能够指定目标地址进行访问了。由于在跨网关访问的时候,牵扯到 MAC 地址和 IP 地址的变化,这里有必要详细描述一下 MAC 头和 IP 头的细节。
路由器是一台设备,它有五个网口或者网卡,相当于有五只手,分别连着五个局域网。每只手的 IP 地址都和局域网的 IP 地址相同的网段,每只手都是它握住的那个局域网的网关。
对于 IP 头和 MAC 头哪些变、哪些不变的问题,可以分两种类型。我把它们称为“欧洲十国游”型和“玄奘西行”型。
之前我说过, MAC 地址是一个局域网内才有效的地址。因而,MAC 地址只要过网关,就必定会改变,因为已经换了局域网 。
两者主要的区别在于 IP 地址是否改变。不改变 IP 地址的网关,我们称为 转发网关 ;改变 IP 地址的网关,我们称为 NAT 网关 。
网关总结:
路由分静态路由和动态路由,静态路由可以配置复杂的策略路由,控制转发策略;
动态路由主流算法有两种, 距离矢量算法 和 链路状态算法 。
距离矢量路由(distance vector routing)。它是基于 Bellman-Ford 算法的。
这种算法的基本思路是,每个路由器都保存一个路由表,包含多行,每行对应网络中的一个路由器,每一行包含两部分信息,一个是要到目标路由器,从那条线出去,另一个是到目标路由器的距离。
由此可以看出,每个路由器都是知道全局信息的。那这个信息如何更新呢?每个路由器都知道自己和邻居之间的距离,每过几秒,每个路由器都将自己所知的到达所有的路由器的距离告知邻居,每个路由器也能从邻居那里得到相似的信息。
每个路由器根据新收集的信息,计算和其他路由器的距离,比如自己的一个邻居距离目标路由器的距离是 M,而自己距离邻居是 x,则自己距离目标路由器是 x+M。
这种算法存在的问题:
第一个问题:好消息传得快,坏消息传得慢。
第二个问题:每次发送的时候,要发送整个全局路由表。
所以上面的两个问题,限制了距离矢量路由的网络规模。
链路状态路由(link state routing),基于 Dijkstra 算法。
这种算法的基本思路是:当一个路由器启动的时候,首先是发现邻居,向邻居 say hello,邻居都回复。然后计算和邻居的距离,发送一个 echo,要求马上返回,除以二就是距离。然后将自己和邻居之间的链路状态包广播出去,发送到整个网络的每个路由器。这样每个路由器都能够收到它和邻居之间的关系的信息。因而,每个路由器都能在自己本地构建一个完整的图,然后针对这个图使用 Dijkstra 算法,找到两点之间的最短路径。
不像距离距离矢量路由协议那样,更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了带宽和 CPU 利用率。而且一旦一个路由器挂了,它的邻居都会广播这个消息,可以使得坏消息迅速收敛。
基于两种算法产生两种协议,BGP 协议和 OSPF 协议。
OSPF(Open Shortest Path First,开放式最短路径优先) 就是这样一个基于链路状态路由协议,广泛应用在数据中心中的协议。由于主要用在数据中心内部,用于路由决策,因而称为 内部网关协议(Interior Gateway Protocol,简称 IGP) 。
内部网关协议的重点就是找到最短的路径。在一个组织内部,路径最短往往最优。当然有时候 OSPF 可以发现多个最短的路径,可以在这多个路径中进行负载均衡,这常常被称为 等价路由 。
但是外网的路由协议,也即国家之间的,又有所不同。我们称为 外网路由协议(Border Gateway Protocol,简称 BGP) 。
在网络世界,这一个个国家成为自治系统 AS(Autonomous System)。自治系统分几种类型。
每个自治系统都有边界路由器,通过它和外面的世界建立联系。
BGP 又分为两类, eBGP 和 iBGP 。自治系统间,边界路由器之间使用 eBGP 广播路由。内部网络也需要访问其他的自治系统。边界路由器如何将 BGP 学习到的路由导入到内部网络呢?就是通过运行 iBGP,使得内部的路由器能够找到到达外网目的地的最好的边界路由器。
BGP 协议使用的算法是 路径矢量路由协议 (path-vector protocol)。它是距离矢量路由协议的升级版。
前面说了距离矢量路由协议的缺点。其中一个是收敛慢。在 BGP 里面,除了下一跳 hop 之外,还包括了自治系统 AS 的路径,从而可以避免坏消息传得慢的问题,也即上面所描述的,B 知道 C 原来能够到达 A,是因为通过自己,一旦自己都到达不了 A 了,就不用假设 C 还能到达 A 了。
另外,在路径中将一个自治系统看成一个整体,不区分自治系统内部的路由器,这样自治系统的数目是非常有限的。就像大家都能记住出去玩,从中国出发先到韩国然后到日本,只要不计算细到具体哪一站,就算是发送全局信息,也是没有问题的。
参考:
极客时间-趣谈网络协议
极客时间-趣谈网络协议
极客时间-趣谈网络协议
极客时间-趣谈网络协议-网关
3. 谁知道什么是计算机网络,举例说明计算机网络有哪些应用
1.计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
2.电脑及系统、服务器、通信设备、传输介质、!!
常见:总线拓扑结构 星型拓扑结构 环形拓扑结构!!
4.计算机网络协议是有关计算机网络通信的一整套规则,或者说是为完成计算机网络通信而制订的规则、约定和标准。
5.TCP/IP!! OSI七层协议的名称:应用层(Application Layer)。
6.(1)可实现资源共享。(2)可实现管理科学化和专业化。
(3)可快速进行信息处理。 (4)能更好地保护原有的资源。
7.FTP:文件传输!! Telnet:远程登陆服务
8.IP地址就像你家的地址!! 域名就是为这个地址取个名字!!
9.超文本就是不仅仅只有文本,还可能有媒体(图片 视频...)
10:HTML:超文本标示语言(网页文件的拓展名)!!
主页:一般指个人网站!!
11:GOOGLE YAHOO BAIDU... 打开他们的首页输入相应的信息就可以查询!!
12.电子邮件(electronic mail,简称E-mail,标志:@,也被大家昵称为“伊妹儿”)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。
标题 收信人地址 内容(可能还会有附件!)
我这答案准对!!
我上学的时候就是这样回答的!!不对让你老师来找我!!
4. 谈谈你对计算机和网络的看法
写作思路:确立中心,围绕选材,确定重点,安排详略,选材时要注意紧紧围绕文章的中心思想,选择真实可信、新鲜有趣的材料,以使文章中心思想鲜明、深刻地表现出来。
正文:
计算机网络是计算技术,通讯技术和微电子技术相结合的产物,无疑是现代信息革命的一个非常重要的方面。随着网络技术的诞生,人类的社会经济生产有了大幅度的提高,人们的生产生活发生了大的改变。人们坐在家里就可以完成过去要跑好多路,浪费好长时间才可以完成的任务,享受过去找好多人或查找好多书才能享受到的精神幸福,可以说,你掌握了网络技术,你就拥有了整个世界,你就不用再受过去学习,工作所要受到的好多痛苦。
但是,网络技术同时又给一些不法之徒制造了新的犯罪机会和犯罪手段,给执法机关制造了新的麻烦。比如,网络黑客入侵机关企业电脑,网络诈骗。也给一些自制力差的青少年提供了沉溺于玩耍娱乐的手段,比如,结交约会异性朋友,游戏棋牌等。给青少年的学校学习带来影响,给家长教育出了一道难题。
5. 计算机网络的理解
什么是计算机网络
计算机网络(Computer Network)是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统。简单的说即连接两台或多台计算机进行通信的系统。
(1)20世纪50~60年代,出现以单个计算机为中心的远程连机系统,构成面向终端的计算机网络;
(2)20世纪60~70年代,出现了多个主计算机通过通信线路互连的计算机网络。ARPANET投入使用;
(3)世纪70~80年代,出现具有统一的网络体系结构,遵循国际标准化协议的计算机网络。
(4)从90年代算起,网络互联与高速网络。
6. 计算机网络是如何产生的
1969年美国国防部创建了第一个分组交换网ARPAnet只是一个单个的分组交换网。
产生的原因:20世纪60年代,美苏冷战期间,美国国防部领导的远景研究规划局ARPA提出要研制一种崭新的网络对付来自前苏联的核攻击威胁。
因为当时,传统的电路交换的电信网虽已经四通八达,但战争期间,一旦正在通信的电路有一个交换机或链路被炸,则整个通信电路就要中断,如要立即改用其他迂回电路,还必须重新拨号建立连接,这将要延误一些时间。
(6)计算机网络趣谈扩展阅读
计算机网络的分类与一般的事物分类方法一样,可以按事物所具有的不同性质特点(即事物的属性)分类。计算机网络通俗地讲就是由多台计算机(或其它计算机网络设备)通过传输介质和软件物理(或逻辑)连接在一起组成的。
总的来说计算机网络的组成基本上包括:计算机、网络操作系统、传输介质(可以是有形的,也可以是无形的,如无线网络的传输介质就是空间)以及相应的应用软件四部分。
7. 计算机网络讲什么
计算机网络讲的是计算机网络的基础设施如何架构,例如一个学校要建校园网,那么这张网就是一张计算机网络,首先要保证用户可以接入,例如机房,学生宿舍等。整个网络当然还要设立核心机房保证全网的联通性,数据中心,网管中心等,数据中心大多是一些服务器,学校的网站就可以架在上面,学校有些内部的资料下载中心,也可以架在上面。
学生在校园内访问网络,优酷等站点,需要校园网接入电信运营商的网络。联通,电信,移动等等就是电信运营商,也称ISP。每个ISP都有自己的业务网,例如电信有163,CN2,163是比较老的网络,负责接入普通家庭客户等,CN2负责接入有专网需求的大型客户,而设计,建设ISP的网络,也属于计算机网络的范畴。
8. 什么是计算机网络,举例说明计算机网络有哪些应用
计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
定义分类
按广义定义
计算机网络也称计算机通信网。关于计算机网络的最简单定义是:一些相互连接的、以共享资源为目的的、自治的计算机的集合。若按此定义,则早期的面向终端的网络都不能算是计算机网络,而只能称为联机系统(因为那时的许多终端不能算是自治的计算机)。但随着硬件价格的下降,许多终端都具有一定的智能,因而“终端”和“自治的计算机”逐渐失去了严格的界限。若用微型计算机作为终端使用,按上述定义,则早期的那种面向终端的网络也可称为计算机网络。
另外,从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。
从用户角度看,计算机网络是这样定义的:存在着一个能为用户自动管理的网络操作系统。由它调用完成用户所调用的资源,而整个网络像一个大的计算机系统一样,对用户是透明的。
一个比较通用的定义是:利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,以功能完善的网络软件及协议实现资源共享和信息传递的系统。
从整体上来说计算机网络就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互联成一个规模大、功能强的系统,从而使众多的计算机可以方便地互相传递信息,共享硬件、软件、数据信息等资源。简单来说,计算机网络就是由通信线路互相连接的许多自主工作的计算机构成的集合体。
最简单的计算机网络就只有两台计算机和连接它们的一条链路,即两个节点和一条链路。
按连接定义
计算机网络就是通过线路互连起来的、资质的计算机集合,确切的说就是将分布在不同地理位置上的具有独立工作能力的计算机、终端及其附属设备用通信设备和通信线路连接起来,并配置网络软件,以实现计算机资源共享的系统。
按需求定义
计算机网络就是由大量独立的、但相互连接起来的计算机来共同完成计算机任务。这些系统称为计算机网络(computer networks)[2]
发展历程
中国计算机网络设备制造行业是改革开放后成长起来的,早期与世界先进水平存在巨大差距;但受益于计算机网络设备行业生产技术不断提高以及下游需求市场不断扩大,我国计算机网络设备制造行业发展十分迅速。近两年,随着我国国民经济的快速发展以及国际金融危机的逐渐消退,计算机网络设备制造行业获得良好发展机遇,中国已成为全球计算机网络设备制造行业重点发展市场。
2010年我国计算机网络设备制造行业规模以上企业有171家,全年实现销售收入385.70亿元,同比增长15.64%;实现利润总额39.83亿元,同比增长24.93%;产品销售利润为72.18亿元,同比增长44.34%。2011年,在国内宏观经济向好的环境及电信产业投资高速增长产生的需求带动下,计算机网络设备制造行业将继续保持较好发展。2011年1-5月,计算机网络设备制造行业销售收入较上年同期增长19.78%;利润总额较上年同期增长48.61%;产品销售利润则较上年同期增长42.36%。
我国计算机网络设备制造企业主要分布在华东和华南地区,其中又以广东、江苏、浙江三地企业分布最为集中,且是全国计算机网络设备制造行业发展领先的地区,2010年行业销售收入均在84亿元以上。与此同时,四川、湖北及上海地区的计算机网络设备制造行业也得到了快速发展,2010年销售收入增长率均在30%以上。
第一代计算机网络---远程终端联机阶段;
第二代计算机网络---计算机网络阶段;
第三代计算机网络---计算机网络互联阶段;
第四代计算机网络---国际互联网与信息高速公路阶段;
早期年代
过去人们开始将彼此独立发展的计算机技术与通信技术结合起来,完成了数据通信与计算机通信网络的研究,为计算机网络的出现做好了技术准备,奠定了理论基础。
分组交换
网络符号
20世纪60年代,美苏冷战期间,美国国防部领导的远景研究规划局ARPA提出要研制一种崭新的网络对付来自前苏联的核攻击威胁。因为当时,传统的电路交换的电信网虽已经四通八达,但战争期间,一旦正在通信的电路有一个交换机或链路被炸,则整个通信电路就要中断,如要立即改用其他迂回电路,还必须重新拨号建立连接,这将要延误一些时间。这个新型网络必须满足一些基本要求:
1:不是为了打电话,而是用于计算机之间的数据传送。
2:能连接不同类型的计算机。
3:所有的网络节点都同等重要,这就大大提高了网络的生存性。
4:计算机在通信时,必须有迂回路由。当链路或结点被破坏时,迂回路由能使正在进行的通信自动地找到合适的路由。
5:网络结构要尽可能地简单,但要非常可靠地传送数据。
根据这些要求,一批专家设计出了使用分组交换的新型计算机网络。而且,用电路交换来传送计算机数据,其线路的传输速率往往很低。因为计算机数据是突发式地出现在传输线路上的,比如,当用户阅读终端屏幕上的信息或用键盘输入和编辑一份文件时或计算机正在进行处理而结果尚未返回时,宝贵的通信线路资源就被浪费了。
分组交换是采用存储转发技术。把欲发送的报文分成一个个的“分组”,在网络中传送。分组的首部是重要的控制信息,因此分组交换的特征是基于标记的。分组交换网由若干个结点交换机和连接这些交换机的链路组成。从概念上讲,一个结点交换机就是一个小型的计算机,但主机是为用户进行信息处理的,结点交换机是进行分组交换的。每个结点交换机都有两组端口,一组是与计算机相连,链路的速率较低。一组是与高速链路和网络中的其他结点交换机相连。注意,既然结点交换机是计算机,那输入和输出端口之间是没有直接连线的,它的处理过程是:将收到的分组先放入缓存,结点交换机暂存的是短分组,而不是整个长报文,短分组暂存在交换机的存储器(即内存)中而不是存储在磁盘中,这就保证了较高的交换速率。再查找转发表,找出到某个目的地址应从那个端口转发,然后由交换机构将该分组递给适当的端口转发出去。各结点交换机之间也要经常交换路由信息,但这是为了进行路由选择,当某段链路的通信量太大或中断时,结点交换机中运行的路由选择协议能自动找到其他路径转发分组。通讯线路资源利用率提高:当分组在某链路时,其他段的通信链路并不被通信的双方所占用,即使是这段链路,只有当分组在此链路传送时才被占用,在各分组传送之间的空闲时间,该链路仍可为其他主机发送分组。可见采用存储转发的分组交换的实质上是采用了在数据通信的过程中动态分配传输带宽的策略。
因特网时代
Internet的基础结构大体经历了三个阶段的演进,这三个阶段在时间上有部分重叠。
因特网
1:从单个网络ARPAnet向互联网发展:1969年美国国防部创建了第一个分组交换网ARPAnet只是一个单个的分组交换网,所有想连接在它上的主机都直接与就近的结点交换机相连,它规模增长很快,到70年代中期,人们认识到仅使用一个单独的网络无法满足所有的通信问题。于是ARPA开始研究很多网络互联的技术,这就导致后来的互联网的出现。1983年TCP/IP协议称为ARPAnet的标准协议。同年,ARPAnet分解成两个网络,一个进行试验研究用的科研网ARPAnet,另一个是军用的计算机网络MILnet。1990,ARPAnet因试验任务完成正式宣布关闭。
2:建立三级结构的因特网:1985年起,美国国家科学基金会NSF就认识到计算机网络对科学研究的重要性,1986年,NSF围绕六个大型计算机中心建设计算机网络NSFnet,它是个三级网络,分主干网、地区网、校园网。它代替ARPAnet成为internet的主要部分。1991年,NSF和美国政府认识到因特网不会限于大学和研究机构,于是支持地方网络接入,许多公司的纷纷加入,使网络的信息量急剧增加,美国政府就决定将因特网的主干网转交给私人公司经营,并开始对接入因特网的单位收费。
3:多级结构因特网的形成:1993年开始,美国政府资助的NSFnet就逐渐被若干个商用的因特网主干网替代,这种主干网也叫因特网服务提供者ISP,考虑到因特网商用化后可能出现很多的ISP,为了使不同ISP经营的网络能够互通,在1994创建了4个网络接入点NAP分别由4个电信公司经营,本世纪初,美国的NAP达到了十几个。NAP是最高级的接入点,它主要是向不同的ISP提供交换设备,使它们相互通信。因特网已经很难对其网络结构给出很精细的描述,但大致可分为五个接入级:网络接入点NAP,多个公司经营的国家主干网,地区ISP,本地ISP,校园网、企业或家庭PC机上网用户。
9. 什么是算机网络
计算机网络(computer network),简称网络,是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享和信息传递的系统,简单的说即连接两台或多台计算机进行通信的系统。最着名的计算机网络是因特网。 计算机网络支持大量应用程序和服务,例如访问万维网、共享文件服务器、打印机、电子邮件和即时通讯等。
计算机网络也称计算机通信网。关于计算机网络的最简单定义是:一些相互连接的、以共享资源为目的的、自治的计算机的集合。若按此定义,则早期的面向终端的网络都不能算是计算机网络,而只能称为联机系统(因为那时的许多终端不能算是自治的计算机)。但随着硬件价格的下降,许多终端都具有一定的智能,因而“终端”和“自治的计算机”逐渐失去了严格的界限。若用微型计算机作为终端使用,按上述定义,则早期的那种面向终端的网络也可称为计算机网络。
另外,从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。
10. 华为资深工程师总结的这本435页的书,居然把网络协议给趣谈了
苦且绕不过去。经过多次放弃之后,我发现在我的职业生涯中,网络这一关无论如何也绕不过去。本来觉得写Java程序时可以依赖别人的库,所以就不用关心这么多底层的技术了,但是到后来才发现,服务数量一多,吞吐量一大,我们关心的不再仅仅是某个Java应用,而是要提升整个集群的性能,这时网络问题就会出现。而且大规模的微服务架构必定要上云、使用VPC网络,这时就必定要考虑双活和灾备,必定要做各个层次的负载均衡,这些都需要网络方面的技术。既然绕不过去,那就必须“啃”下它,于是我就进入了暗无天日的网络协议学习的过程。
见山开路、遇水搭桥,遇到一个知识点攻克一个,再将其写到博客或者笔记里面。有时候要看很多文章和书才能攻克一个知识点,但我还是每天下班抱着网络技术相关的文章和书看,直到将各个零散的知识点串连了起来。后来在定位网络问题的时候,我开始有了自己的思路,这时才感觉算是暂时趟过了这条河。
网络协议知识点太多,学完记不住。大部分读者应该都学过计算机网络课程,学的时候感觉并不难,尤其这门课没有公式,更像是文科的东西。学了一大堆东西,也背了一大堆东西,但是最终应付完考试之后,都“还给了老师”
每次都感觉自己好像学会了,但实际应用的时候依旧无从下手。虽然很多细节都摸索得差不多了,但是当自己去应用和调试时,才发现还是没有任何思路。比如,当创建出来的虚拟机不能上网时,还是无从下手,学过的很多东西,似乎都用不上。我把这种现象总结为:一看觉得懂,一问就打鼓,一用就糊涂。
所以本书使用了“趣谈”这种方式,它可以解决从“入门到放弃”的问题,把晦涩的知识点和一些有趣的故事通过比喻的方式结合起来,这样更容易帮助读者系统、深入地了解网络技术的知识点和大致的工作流程。
主要包括的内容和总结三部分给大家进行网络协议的拓展学习,希望大家能够喜欢!!
第1 章 通信协议概述
1.1 为什么要学习网络协议
相信大家都信过通天塔的故事,上帝为了阻止人类联合起来,让人类说不同的语言,人类没法沟通,达不成“协议", 通天塔的计划就失败了。
但是千年以后,有一种叫“程序猿”的物种,“敲”着一种这个群体通用的语言,打造着互联网世界的“通天塔”。如今的世界,正是因为互联网,才连接在一起。
如果你是程序员,一定看得懂上面这一段文字。这是每一个程序员向计算机世界说“你好,世界”的方式。但是,你不一定知道,这段文字也是一种协议,是人类和计算机沟通的协议,只有通过这种协议,计算机才知道我们想让它做什么。
第 2 章 从二层到三层
2.1 从物理层到MAC 层:如何在宿舍里自己组网玩联机游戏
第一层:物理层
路由器的使用发生在第三层上。我们先从第一层物理层开始说。
物理层能折腾什么?现在的同学可能想不到,我们当时去学校配电脑的地方买网线,卖网线的师傅都会问,你的网线是要电脑连电脑啊,还是电脑连网口啊?
我们要的是电脑连电脑的网线。就是将一根网线的一头插在一台电脑的网卡上,另一头插在另一台电脑的网卡上。但是在当时,用普通的网线这样连接是通不了的,所以水晶头要做交叉线,用的就是所谓的1-3,2-6交叉接法。
水晶头的第l、2脚和第3'6脚,分别起着WL发信号的作用。将一端的1号线和3号线、2号线和6号线互换一下位置,就能够在物理层实现两端通信。
当然电脑连电脑,除了网线要交叉,还需要配置这两台电脑的IP地址、子网掩码和默认网关。这3个概念前文已经详细描述过了。要想两台电脑能够通信,两台电脑的这3项必须属于一个网络,否则是行不通的。
第二层:MAC层
你可能已经发现问题了。Hub采取的是广播的模式,如果每一台电脑发出的网络包,宿舍里的每台电脑都能收到,那就麻烦了。这时就需要解决以下几个问题:
这个网络包是发给谁的?谁应该接受?
大家都在发,会不会产生混乱?有没有谁先发、谁后发的规则?
如果发送的时候出现了错误,怎么办
这几个问题,都发生在第二层链路层,即MAC层要解决的问题。MAC的全称是MediumAccess Control,即媒体访问控制。控制什么呢?其实就是给媒体发送数据时,控制谁先发、谁后发,防止发生混乱。MAC层解决的是第二个问题,这个问题学名叫多路访问。有很多算法可以解决。就像车管所管理车辆一样,会想出很多办法,比如以下3种方式。
方式一:分多个车道。每个车一个车道,你走你的,我走我的。这在计算机网络里叫作信道划分协议。
方式二:今天单号出行,明天双号出行,轮着来。这在计算机网络里叫作轮流协议。
方式三:不管三七二十一,有事儿先出门,发现特堵,就回去,错过高峰再出门。这在计算机网络里叫作随机接入协议。着名的以太网,用的就是这个协议。
第 3 章 重要的传输层
3.1 UDP:虽然简单但是可以走制化
TCP和UDP有哪些区别
一般在面试时,如果面试官问这两个协议的区别是什么,大部分面试者会回答,TCP是面向连接的,UDP是面向无连接的。
什么叫面向无连接,什么叫面向无连接呢?在互通之前,面向连接的协议会先建立连接。例如,TCP会进行三次握手来建立连接,而UDP不会。为什么要建立连接呢?TCP可以进行三次握手,UDP可以发三个包,难道不都是建立连接吗?
所谓的建立连接,是为了维护客户端和服务端的连接而去建立一定的数据结构,从而维护双方交互的状态,并用这样的数据结构来保证面向连接的特性。
例如,TCP提供可靠交付。通过TCP连接传输的数据能够无差错、不丢失、不重复,并且可以按序到达。我们都知道IP包是没有提供任何可靠性保证的,一旦发出去,就像西天取经,走丢了、被妖怪吃了,都只能随它去。TCP号称能做到连接维护程序做的事情,这部分内容在下面两节中会详细描述。而UDP继承了IP包的特性,不保证传输的数据不丢失,也不保证按序到达。
再如,TCP是面向字节流的,发送时发的是一个流,没头没尾。但TCP基于的E层发送的可不是一个流,而是一个个的IP包。到TCP层后之所以变成流,是因为TCP自身的状态维护做了相应的处理。而UDP则不一样,它继承了IP包的特性,也是一个一个地发,一个一个地收。在UDP层发送的一个个数据包,还有-个名字叫数据包。
另外,TCP是可以进行拥塞控制的。它意识到包已经被丢弃或者网络环境变差时,就会根据情况调整自己的行为,看看是不是数据包发得太快了,要不要发慢点。UDP就不会,应用让我发,我就发,管它洪水滔天。
因而TCP是有状态服务,通俗地讲就是它“有脑子”,它精确地知道数据包是否已经被发送出去、是否被接收、发送到哪儿了、应该接收哪个数据包了,错一点儿都不行。而UDP则是无状态服务,通俗地说就是它“没脑子”,天真无邪,发出去就发出去了,后续就不管了。
如果说MAC层定义了本地局域网的传输行为,IP层定义了整个网络端到端的传输行为,那么这两层就基本定义了这样的“基因”:网络传输是以包为单位的(网络包在不同的层有不同的叫法,链路层叫帧,网络层叫包,传输层叫段,我们可以笼统地称之为包),包单独传输,自行选路,在不同的设备上进行封装、解封装,不保证到达。基于这个“基因”,生下来的“孩子”UDP就完全继承了这些特性,几乎没有自己的思想。
第 4 章 常用的应用层
4.1 HTTP:看个新闻原来这么麻烦
接下来开始讲应用层的协议。就从最常用的HTTP开始讲起。
HTTP几乎是每个人上网用的第一个协议,同时也是很容易被忽略的协议。
既然本节要讲看新闻,咱们就先登录某新闻网站http://www.***·com。
http//www.***.com是一个URL( Uniform Resource Locator,统一资源、定位符)。之所以叫统一,是因为它是有格式的。HTTP称为协议,www.*忡.com是一个域名,表示互联网上的一个位置。有的URL会有更详细的位置标识,例如http://www.***·corn/index.html。正是因为URL是统一的,所以当你把这样一个字符串输入到浏览器的地址框里进行搜索的时候,浏览器才能知道如何进行统一处理。
第 5 章 陌生的数据中心
5.1 DNS:网络世界的地址簿
什么是DNS服务器
在网络世界,也是一样的。你肯定记得住网站的名称,但是很难记住网站的IP地址,因此也需要一个地址簿,即DNS(Domain Name System,域名系统)服务器。
由此可见,DNS服务器在日常生活中多么重要。每个人上网都需要访问它。但是同时,这对它来讲也是非常大的挑战。一旦它出了故障,整个互联网都将瘫痪。另外,上网的人分布在世界各地,如果大家都去同一个地方访问某个服务器,时延将会非常大。因而,DNS服务器一定要设置成高可用、高并发和分布式的。
于是,就有了树状的层次结构,如图所示。
根DNS服务器:返回顶级域DNS服务器的IP地址。
顶级DNS服务器:返回权威DNS服务器的IP地址。
权威DNS服务器:返回相应主机的E地址。
第 6 章 云计算中的网络
6.1 云中网络:自己拿地成本高,购买公寓更灵活
我们知道了数据中心里面堆着一大片一大片的机器,相互之间用网络连接。如果机器数量非常多,那么维护起来还是挺麻烦的,有好多不灵活的地方,比如以下几点
采购不灵活:如果客户需要一台电脑,那就需要自己采购、上架、插网线、安装操作系统,周期非常长。一旦采购了,一用就得好多年,不能退货,|哪怕业务不做了,机器还在数据中心里留着。
运维不灵活:一旦需要扩容CPU、内存、硬盘,都需要去机房手动弄,非常麻烦。
规格不灵活:采购的机器往往动不动几百GB的内存,而每个应用往往可能只需要4核8GB,所以很多应用混合部署在上面,端口可能会相互冲突,容易相互影响。
复用不灵活:一台机器,一旦一个用户不用了,另外一个用户,就需要重装操作系统。
因为原来的操作系统可能遗留着很多数据,非常麻烦。
第 7 章 容器技术中的网络
7.1 容器网络:来去自由的日子,不买公寓去合租
如果说虚拟机是买公寓,容器则相当于合租,有一定的隔离,但是隔离性没有那么好。云计算解决了基础资源层的弹性伸缩问题,却没有解决由于基础资源层弹性伸缩而带来的PaaS层应用批量、快速部署问题。于是,容器应运而生。
容器即Container,而Container的另一个意思是集装箱。其实容器的思想就是要变成软件交付的集装箱。集装箱有两个特点:一是打包,二是标准。
在没有集装箱的时代,假设要将货物从A运到B,中间要经过三个码头、换三次船。那么每次都要将货物卸下船来,弄得乱七八糟,然后再搬上船重新摆好,如图7-1所示。在没有集装箱的时候,每次换船,船员们都要在岸上待几天才能干完活。
有了尺寸全部都一样的集装箱以后,可以把所有的货物都打包在一起,每次换船的时候,把整个集装箱搬过去就行了,几个小时就能完成,船员换船时间大大缩短,如图7-2所示。这是集装箱的“打包”和“标准”两大特点在生活中的应用。
第 8 章 微服务相关协议
8.1 基于XML 的SOAP:不要说NBA,请说美国职业篮球联赛
ONC RPC存在哪些问题
ONCRPC将客户端要发送的参数及服务端要发送的回复都压缩为一个二进制串,这样固然能够解决双方协议约定的问题,但是仍然不方便。
首先,需要双方的压缩格式完全一致,一点都不能差。一旦有少许的差错,多一位、少一位或者错一位,都可能造成无法解压缩。当然,我们可以通过提高传输层的可靠性,以及加入校验值等方式来减少传输过程中的差错。
其次,协议修改不灵活。除了传输过程中造成的差错,客户端因为业务逻辑的改变添加或者删除了字段,或者服务端添加或者删除了语段而没有及时通知对方,或者线上系统没有及时升级,都会造成解压缩不成功。
因而,当业务发生改变,需要多传输或者少传输一些参数时,都需要及时通知对方,并且根据约定好的协议文件重新生成双方的Stub程序。自然,这样操作的灵活性比较差。
如果仅仅是沟通的问题还好解决,更难处理的是版本的问题。比如在服务端提供一个服务,参数的格式是版本l的,已经有50个客户端在线上调用了。现在有一个客户端有一个需求,要加一个字段,怎么办呢?这可是一个大工程,所有的客户端都要适配这个,重新写程序,哪怕不需要这个字段的客户端也要加上这个字段,并传输0,这些程序员就很委屈,本来没我什么事儿,为什么让我也忙活?
最后,ONCRPC的设计明显是面向函数的,而非面向对象。而当前面向对象的业务逻辑设计与实现方式已经成为主流。
这一切的根源就在于压缩。就像平时我们爱用缩略语。如果是篮球爱好者,你直接说NBA(National Basketball Association,美国职业篮球联赛),他马上就知道什么意思,但是如果你和一个大妈说NBA,她可能就听不懂。
所以,这种RPC框架只能用于客户端和服务端全由一批人开发的场景,或者至少客户端和服务端的开发人员要密切沟通,相互合作,有大量的共同语言,才能按照既定的协议顺畅地进行工作。
XML与SOAP
但是,一般情况下,我们做一个服务,都是要提供给陌生人用的,你和客户不会经常沟通,也没有什么共同语言。这时就不适合用缩略语,就像你给别人介绍阳A,你要说美国职业篮球联赛,这样不管他是做什么的,都能听得懂。
放到我们的场景中,就是用文本类的方式进行传输。无论哪个客户端获得这个文本,都能够知道它的意义。
第 9 章 网络协议知识串讲
9.1 知识串讲:用"双*"的故事串起网络协议的碎片知识(上)
9.2 知识串讲:用"双*"的故事串起网络协议的碎片知识(中)
9.3 知识串讲:用"双*“的故事串起网络协议的碎片知识(下)
9.4 搭建—个网络实验环境:授人以鱼不如授人以渔
总目录:
好了,本篇文章就分享到这里了,希望这份【趣谈网络协议】对大家有所帮助,我在这里也感谢大家对我的支持😉