2008-05-26 21:46:00 luozhuang 阅读数 11858
  • 【直通华为HCNA/HCNP系列R篇4】WAN接入配置与管理

    本课程全面、系统、深入地介绍了华为AR G3系列路由器所支持主要拨号WAN接入方式技术原理和配置与管理方法,包括DCC、3G Cellular、4G LTE Cellular、PPP、MP、PPPoE、ADSL、VDSL、G.SHDSL等常用的一些WAN接入方式。课程中包括了大量的配置实验和示例,配置思路非常清晰、实验演示非常直观、真正做到一学就会。

    28775 人正在学习 去看看 王达
 
计算机网络习题解答
教材 计算机网络   谢希仁编著
第一章 概述
习题1-01 计算机网络的发展可划分为几个阶段?每个阶段各有何特点?
答: 计算机网络的发展过程大致经历了四个阶段。
第一阶段:(20世纪60年代)以单个计算机为中心的面向终端的计算机网络系统。这种网络系统是以批处理信息为主要目的。它的缺点是:如果计算机的负荷较重,会导致系统响应时间过长;单机系统的可靠性一般较低,一旦计算机发生故障,将导致整个网络系统的瘫痪。
第二阶段:(20世纪70年代)以分组交换网为中心的多主机互连的计算机网络系统。为了克服第一代计算机网络的缺点,提高网络的可靠性和可用性,人们开始研究如何将多台计算机相互连接的方法。人们首先借鉴了电信部门的电路交换的思想。所谓“交换”,从通信资源的分配角度来看,就是由交换设备动态地分配传输线路资源或信道带宽所采用的一种技术。电话交换机采用的交换技术是电路交换(或线路交换),它的主要特点是:① 在通话的全部时间内用户独占分配的传输线路或信道带宽,即采用的是静态分配策略;② 通信双方建立的通路中任何一点出现了故障,就会中断通话,必须重新拨号建立连接,方可继续,这对十分紧急而重要的通信是不利的。显然,这种交换技术适应模拟信号的数据传输。然而在计算机网络中还可以传输数字信号。数字信号通信与模拟信号通信的本质区别在于数字信号的离散性和可存储性。这些特性使得它在数据传输过程中不仅可以间断分时发送,而且可以进行再加工、再处理。 ③ 计算机数据的产生往往是“突发式”的,比如当用户用键盘输入数据和编辑文件时,或计算机正在进行处理而未得出结果时,通信线路资源实际上是空闲的,从而造成通信线路资源的极大浪费。据统计,在计算机间的数据通信中,用来传送数据的时间往往不到10%甚至1%。另外,由于各异的计算机和终端的传输数据的速率各不相同,采用电路交换就很难相互通信。为此,必须寻找出一种新的适应计算机通信的交换技术。1964年,巴兰(Baran)在美国兰德(Rand)公司“论分布式通信”的研究报告中提出了存储转发(store and forward)的概念。1962 — 1965年,美国国防部的高级研究计划署(Advanced Research Projects Agency,ARPA)和英国的国家物理实验室(National Physics Laboratory,NPL)都在对新型的计算机通信技术进行研究。英国NPL的戴维德(David)于1966年首次提出了“分组”(Packet)这一概念。1969年12月,美国的分组交换网网络中传送的信息被划分成分组(packet),该网称为分组交换网ARPANET(当时仅有4个交换点投入运行)。ARPANET的成功,标志着计算机网络的发展进入了一个新纪元。现在大家都公认ARPANET为分组交换网之父,并将分组交换网的出现作为现代电信时代的开始。
分组交换网是由若干节点交换机和连接这些交换机的链路组成,每一结点就是一个小型计算机。它的工作机理是:首先将待发的数据报文划分成若干个大小有限的短数据块,在每个数据块前面加上一些控制信息(即首部),包括诸如数据收发的目的地址、源地址,数据块的序号等,形成一个个分组,然后各分组在交换网内采用“存储转发”机制将数据从源端发送到目的端。由于节点交换机暂时存储的是一个个短的分组,而不是整个的长报文,且每一分组都暂存在交换机的内存中并可进行相应的处理,这就使得分组的转发速度非常快。由此可见,通信与计算机的相互结合,不仅为计算机之间的数据传递和交换提供了必要的手段,而且也大大提高了通信网络的各种性能。由此可见,采用存储转发的分组交换技术,实质上是在计算机网络的通信过程中动态分配传输线路或信道带宽的一种策略。值得说明的是,分组交换技术所采用的存储转发原理并不是一个全新的概念,它是借鉴了电报通信中基于存储转发原理的报文交换的思想。它们的关键区别在于通信对象发生了变化。基于分组交换的数据通信是实现计算机与计算机之间或计算机与人之间的通信,其通信过程需要定义严格的协议;而基于报文交换的电信通信则是完成人与人之间的通信,因而双方之间的通信规则不必如此严格定义。所以,分组交换尽管采用了古老的交换思想,但实际上已变成了一种崭新的交换技术。表1-1列出了分组交换网的主要优点。与电路交换相比,分组交换的不足之处是:① 每一分组在经过每一交换节点时都会产生一定的传输延时,考虑到节点处理分组的能力和分组排队等候处理的时间,以及每一分组经过的路由可能不等同,使得每一分组的传输延时长短不一。因此,它不适用于一些实时、连续的应用场合,如电话话音、视频图像等数据的传输;② 由于每一分组都额外附加一个头信息,从而降低了携带用户数据的通信容量; ③ 分组交换网中的每一节点需要更多地参与对信息转换的处理,如在发送端需要将长报文划分为若干段分组,在接收端必须按序将每个分组组装起来,恢复出原报文数据等,从而降低了数据传输的效率。尽管如此,分组交换技术的出现,不仅大大推动了当时的计算机网络技术的发展,而且也是现代计算机网络技术发展的重要基础。
第三阶段:(20世纪80年代)具有统一的网络体系结构,遵循国际标准化协议的计算机网络。局域网络系统日渐成熟。随着计算机网络的普及和应用推广,越来越多的用户都希望将自己的计算机连网。然而实现不同系列、不同品牌的计算机互连,显然并不是一件容易的事情。因为相互通信的计算机必须高度协调工作,而这种协调是相当复杂的。为了降低网络设计的复杂性,早在当初设计ARPANET时,就有专家提出了层次模型。分层设计的基本思想就是将庞大而复杂的问题转换为若干个较小的子问题进行分析和研究。随着ARPANET的建立,各个国家甚至大公司都建立了自己的网络体系结构,如IBM公司研制的分层网络体系结构SNA(System Network Architecture),DEC公司开发的网络体系结构DNS(Digital Network Architecture)。这些网络体系结构的出现,使得一个公司生产的各种类型的计算机和网络设备可以非常方便地进行互连。但是,由于各个网络体系结构都不相同,协议也不一致,使得不同系列、不同公司的计算机网络难以实现互联。这为全球网络的互连、互通带来了困难。
20世纪80年代开始,人们着手寻找统一的网络体系结构和协议的途径。国际标准化组织ISO(International Standard Organization)于1977年成立了专门机构研究该问题,并于1984年正式颁布了开放系统互连参考模型OSI-RM(Open Systems Interconnection Reference Model,简称OSI)。所谓“开放”,就是指只要遵循OSI标准模型的任何系统,不论位于何地,都可以进行互连、互通。这一点非常像世界范围的电话和邮政系统。这里的“开放系统”,是指在实际网络系统中与互连有关的各个部分。它也是对当时各个封闭的网络系统而言的。
在计算机网络发展的进程中,另一个重要的里程碑就是出现了局域网络。局域网可使得一个单位或一个校园的微型计算机互连在一起,互相交换信息和共享资源。由于局域网的距离范围有限、连网的拓扑结构规范、协议简单,使得局域网连网容易,传输速率高,使用方便,价格也便宜。所以很受广大用户的青睐。因此,局域网在20世纪80年代得到了很大的发展,尤其是1980年2月份美国电气和电子工程师学会组织颁布的IEEE802系列的标准,对局域网的发展和普及起到了巨大的推动作用。
第四阶段:(20世纪90年代)网络互连与高速网络。自OSI参考模型推出后,计算机网络一直沿着标准化的方向在发展,而网络标准化的最大体现是Internet的飞速发展。Internet是计算机网络最辉煌的成就,它已成为世界上最大的国际性计算机互联网,并已影响着人们生活的各个方面。由于Internet也使用分层次的体系结构,即TCP/IP网络体系结构,使得凡遵循TCP/IP的各种计算机网络都能相互通信。进入20世纪90年代后,网络进一步向着开放、高速、高性能方向发展。由于Internet还存在着技术和功能上的不足,加上用户数量猛增,使得现有的Internet不堪重负。1993年美国政府提出了“NGII(Next Generation Internet Initiative)行动计划”,该计划的目标是:开发规模更大、速度更快的下一代网络结构,使之端到端的数据传输速率超过100 Mb/s甚至10 Gb/s;提供更为先进、实时性更高的网络应用服务,如远程教育、远程医疗、高性能的全球通信、环境监测和预报等,NGII计划将使用超高速全光网络,能实现更快速的交换和路径选择;保证网络信息的可靠性和安全性。
习题1-02 试简述分组交换的要点。
答:采用存储转发的分组交换技术,实质上是在计算机网络的通信过程中动态分配传输线路或信道带宽的一种策略。
它的工作机理是:首先将待发的数据报文划分成若干个大小有限的短数据块,在每个数据块前面加上一些控制信息(即首部),包括诸如数据收发的目的地址、源地址,数据块的序号等,形成一个个分组,然后各分组在交换网内采用“存储转发”机制将数据从源端发送到目的端。由于节点交换机暂时存储的是一个个短的分组,而不是整个的长报文,且每一分组都暂存在交换机的内存中并可进行相应的处理,这就使得分组的转发速度非常快。
分组交换网是由若干节点交换机和连接这些交换机的链路组成,每一结点就是一个小型计算机。
基于分组交换的数据通信是实现计算机与计算机之间或计算机与人之间的通信,其通信过程需要定义严格的协议;
分组交换网的主要优点:
1、高效。在分组传输的过程中动态分配传输带宽。2、灵活。每个结点均有智能,可根据情况决定路由和对数据做必要的处理。3、迅速。以分组作为传送单位,在每个结点存储转发,网络使用高速链路。4、可靠。完善的网络协议;分布式多路由的通信子网。
电路交换相比,分组交换的不足之处是:① 每一分组在经过每一交换节点时都会产生一定的传输延时,考虑到节点处理分组的能力和分组排队等候处理的时间,以及每一分组经过的路由可能不等同,使得每一分组的传输延时长短不一。因此,它不适用于一些实时、连续的应用场合,如电话话音、视频图像等数据的传输;② 由于每一分组都额外附加一个头信息,从而降低了携带用户数据的通信容量; ③ 分组交换网中的每一节点需要更多地参与对信息转换的处理,如在发送端需要将长报文划分为若干段分组,在接收端必须按序将每个分组组装起来,恢复出原报文数据等,从而降低了数据传输的效率。
习题1-03 试从多个方面比较电路交换、报文交换和分组交换的主要优缺点。
答:电路交换,它的主要特点是:① 在通话的全部时间内用户独占分配的传输线路或信道带宽,即采用的是静态分配策略;② 通信双方建立的通路中任何一点出现了故障,就会中断通话,必须重新拨号建立连接,方可继续,这对十分紧急而重要的通信是不利的。显然,这种交换技术适应模拟信号的数据传输。然而在计算机网络中还可以传输数字信号。数字信号通信与模拟信号通信的本质区别在于数字信号的离散性和可存储性。这些特性使得它在数据传输过程中不仅可以间断分时发送,而且可以进行再加工、再处理。 ③ 计算机数据的产生往往是“突发式”的,比如当用户用键盘输入数据和编辑文件时,或计算机正在进行处理而未得出结果时,通信线路资源实际上是空闲的,从而造成通信线路资源的极大浪费。据统计,在计算机间的数据通信中,用来传送数据的时间往往不到10%甚至1%。另外,由于各异的计算机和终端的传输数据的速率各不相同,采用电路交换就很难相互通信。
分组交换具有高效、灵活、可靠等优点。但传输时延较电路交换要大,不适用于实时数据业务的传输。
报文交换传输时延最大。
习题1-07 计算机网络可从哪几个方面进行分类?
答:1、按交换方式:有电路交换、报文交换、分组交换、帧中继交换、信元交换等。2、按拓扑结构:有集中式网络、分散式网络、分布式网络。其中,集中式网络的特点是网络信息流必须经过中央处理机或网络交换节点(如星形拓扑结构);分布式网络的特点是任何一个节点都至少和其他两个节点直接相连(如网状形拓扑结构),是主干网常采用的一种结构;分散式网络实际上是星形网和网状形网的混合网。3、按作用范围:有广域网(WAN)、局域网(LAN)、城域网(MAN)。其中,广域网的作用范围为几十至几千公里,又称为远程网;局域网的作用范围常限制在一个单位或一个校园(1 km)内,但数据传输速率高(10 Mb/s以上);城域网常介于广域网和局域网之间,局限在一个城市(5~50 km)内。4按使用范围:有公用网和专用网。其中,公用网都是由国家的电信部门建造和控制管理的;专用网是某个单位或部门为本系统的特定业务需要而建造的,不对单位或部门以外的人员开放。
习题1-09 计算机网络由哪几部分组成?
答:一个计算机网络应当有三个主要的组成部分:
(1)若干个主机,它们向各用户提供服务;
(2)一个通信子网,它由一些专用的结点交换机和连接这些结点的通信链路所组成;
(3)一系列的协议。这些协议是为在主机之间或主机和子网之间的通信而用的。
习题1-10 试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit)。从源站到目的站共经过k段链路,每段链路的传播时延为d(s),数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?
解:采用电路交换:端到端时延:
采用分组交换:端到端时延:,
这里假定,即不考虑报文分割成分组后的零头。
欲使,必须满足
习题1-11在上题的分组交换网中,设报文长度和分组长度分别为x和(p+h)(bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。通信的两端共经过k段链路。链路的数据率为b(bit/s),但传播时延和结点的排队时间均可忽略不计。若打算使总的时延为最小,问分组的数据部分长度p应取为多大?
答:分组个数x/p,
传输的总比特数:(p+h)x/p
源发送时延:(p+h)x/pb
最后一个分组经过k-1个分组交换机的转发,中间发送时延:(k-1)(p+h)/b
总发送时延D=源发送时延+中间发送时延
         D=(p+h)x/pb+(k-1)(p+h)/b
令其对p的导数等于0,求极值
        p=√hx/(k-1)
习题1-13 面向连接服务与无连接报务各自的特点是什么?
答:所谓连接,就是两个对等实体为进行数据通信而进行的一种结合。面向连接服务是在数据交换之前,必须先建立连接。当数据交换结束后,则应终止这个连接。
面向连接服务具有连接建立、数据传输和连接释放这三个阶段。在传送数据时按序传送的。因面面向连接服务提供可靠的数据传输服务。在无连接服务的情况下,两个实体之间的通信不需要先建立好一个连接,因此其下层的有关资源不需要事先进行预留。这些资源在数据传输时动态地进行分配。
无连接服务的另一特征是它不需要通信的两个实体同时期是活跃的(即处于激活态)。当发送端有实体正在进行发送时,它才是活跃的。这时接收端的实体并不一定必须是活跃的。只有当接收端的实体正在进行接收时,它才必须是活跃的。
无连接服务的优点是灵活方便和比较迅速。但无连接服务不能防止报文的丢失、重复或失序。无连接服务特别适合于传送少量零星的报文。
习题1-14 协议与服务有何区别?有何关系?
答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
(3)同步:即事件实现顺序的详细说明。
协议是控制两个对等实体进行通信的规则的集合。在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务,而要实现本层协议,还需要使用下面一层提供服务。
协议和服务的概念的区分:
1、协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。下面的协议对上面的服务用户是透明的。
2、协议是“水平的”,即协议是控制两个对等实体进行通信的规则。但服务是“垂直的”,即服务是由下层通过层间接口向上层提供的。上层使用所提供的服务必须与下层交换一些命令,这些命令在OSI中称为服务原语。
习题1-15 网络协议的三个要素是什么?各有什么含义?
答:网络协议:为进行网络中的数据交换而建立的规则、标准或约定。由以下三个要素组成:
(1)语法:即数据与控制信息的结构或格式。
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应。
(3)同步:即事件实现顺序的详细说明。
习题1-16 试述五层协议的网络体系结构的要点,包括各层的主要功能。
答:所谓五层协议的网络体系结构是为便于学习计算机网络原理而采用的综合了OSI七层模型和TCP/IP的四层模型而得到的五层模型。五层协议的体系结构见图1-1所示。
                           图1-1五层协议的体系结构
各层的主要功能:
(1)应用层

2    数据链路层
3        网络层
4        运输层
数据链路层
  应用层确定进程之间通信的性质以满足用户的需要。应用层不仅要提供应用进程所需要的信息交换和远地操作,而且还要作为互相作用的应用进程的用户代理(user agent),来完成一些为进行语义上有意义的信息交换所必须的功能。

(2)运输层
任务是负责主机中两个进程间的通信。
因特网的运输层可使用两种不同的协议。即面向连接的传输控制协议TCP和无连接的用户数据报协议UDP。
面向连接的服务能够提供可靠的交付。
无连接服务则不能提供可靠的交付。只是best-effort delivery.
(3)网络层
网络层负责为分组选择合适的路由,使源主机运输层所传下来的分组能够交付到目的主机。
(4)数据链路层
数据链路层的任务是将在网络层交下来的数据报组装成帧(frame),在两个相邻结点间的链路上实现帧的无差错传输。
(5)物理层
物理层的任务就是透明地传输比特流。
 “透明地传送比特流”指实际电路传送后比特流没有发生变化。
物理层要考虑用多大的电压代表“1”或“0”,以及当发送端发出比特“1”时,接收端如何识别出这是“1”而不是“0”。物理层还要确定连接电缆的插头应当有多少根脚以及各个脚如何连接。
习题1-18 解释下列名词:协议栈、实体、对等层、协议数据单元、服务访问点、客户、服务器、客户-服务器方式。
答:协议栈:指计算机网络体系结构采用分层模型后,每层的主要功能由对等层协议的运行来实现,因而每层可用一些主要协议来表征,几个层次画在一起很像一个栈的结构。
实体:表示任何可发送或接收信息的硬件或软件进程。在许多情况下,实体是一个特定的软件模块。
对等层:在网络体系结构中,通信双方实现同样功能的层。
协议数据单元:对等层实体进行信息交换的数据单位。
服务访问点:在同一系统中相邻两层的实体进行交互(即交换信息)的地方。服务访问点SAP是一个抽象的概念,它实体上就是一个逻辑接口。
客户、服务器:客户和服务器都是指通信中所涉及的两个应用进程。客户-服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。
客户-服务器方式:客户-服务器方式所描述的是进程之间服务和被服务的关系,当客户进程需要服务器进程提供服务时就主动呼叫服务进程,服务器进程被动地等待来自客户进程的请求。
习题1-20 收发两端之间的传输距离为1000km,信号在媒体上的传播速率为。试计算以下两种情况的发送时延的传播时延:
(1)数据长度为107bit,数据发送速率为100kb/s。
(2)数据长度为103bit,数据发送速率为1Gb/s。
解:(1)发送时延:
传播时延:
(2)发送时延:
传播时延:
 
第二章物理层
习题2-01 物理层要解决什么问题?物理层的主要特点是什么?
答:物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指连接计算机的具体的物理设备或具体的传输媒体。现有的网络中物理设备和传输媒体种类繁多,通信手段也有许多不同的方式。物理层的作用正是要尽可能地屏蔽掉这些差异,使数据链路层感觉不到这些差异,这样数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么。物理层的重要任务是确定与传输媒体的接口的一些特性。
习题2-02 试给出数据通信系统的模型并说明其主要组成构件的作用。

答:
一个数据通信系统可划分为三大部分:
源系统(或发送端)、传输系统(或传输网络)、和目的系统(或接收端)。
源系统一般包括以下两个部分:
•源点:源点设备产生要传输的数据。例如正文输入到PC机,产生输出的数字比特流。
•发送器:通常源点生成的数据要通过发送器编码后才能在传输系统中进行传输。例如,调制解调器将PC机输出的数字比特流转换成能够在用户的电话线上传输的模拟信号。
•接收器:接收传输系统传送过来的信号,并将其转换为能够被目的设备处理的信息。例如,调制解调器接收来自传输线路上的模拟信号,并将其转换成数字比特流。
•终点:终点设备从接收器获取传送过来的信息。
习题2-03 试解释以下名词:数据、信号、模拟数据、模拟信号、数字数据、数字信号、单工通信、半双工通信、全双工通信。
答:数据:是运送信息的实体。
信号:则是数据的电气的或电磁的表现。
模拟数据:运送信息的模拟信号。
模拟信号:连续变化的信号。
数字信号:取值为有限的几个离散值的信号。
数字数据:取值为不连续数值的数据。
单工通信:即只有一个方向的通信而没有反方向的交互。
半双工通信:即通信和双方都可以发送信息,但不能双方同时发送(当然也不能同时接收)。这种通信方式是一方发送另一方接收,过一段时间再反过来。
全双工通信:即通信的双方可以同时发送和接收信息。
习题2-04 物理层的接口有哪几个特性?各包含什么内容?
答:(1)机械特性
  指明接口所用的接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。
(2)电气特性
  指明在接口电缆的各条线上出现的电压的范围。
(3)功能特性
  指明某条线上出现的某一电平的电压表示何意。
(4)规程特性
说明对于不同功能的各种可能事件的出现顺序。
习题2-06 用香农公式计算一下:假定信道带宽为3100Hz,最大信息传输速率为35kb/s,那么若想使最大信息传输速率增加60%。问信噪比S/N应增大到多少倍?如果在刚才计算出的基础上将信噪比S/N再增大到10倍,问最大信息传输速率能否再增加20%?
答:
习题2-11基带信号与宽带信号的传输各有什么特点?
答:基带信号将数字1和0直接用两种不同的电压表示,然后送到线路上传输。宽带信号是将基带信号调制后形成的频分复用模拟信号。采用基带信号传输,一条电缆只能传输一路数字信号,而采用宽带信号传输,一条电缆中可同时传送多路的数字信号,提高了线路的利用率。
习题2-13 56kb/s的调制解调器是否已突破了香农的信道极限传输速率?这种调制解调器的使用条件是怎样的?

答:56kb/s的调制解调器没有突破了香农的信道极限传输速率。这种调制解调器的使用条件是:用户通过ISP从因特网上下载信息的情况下,下行信道的传输速率为56kb/s。(见下图)
习题2-15 试写出下列英文缩写的全文,并进行简单的解释。
FDM,TDM,STDM,WDM,DWDM,CDMA,SONET,SDH,STM-1,OC-48,DTE,DCE,EIA,ITU-T,CCITT,ISO
答:
FDM(frequency division multiplexing)
TDM(Time Division Multiplexing)
STDM(Statistic Time Division Multiplexing)
WDM(Wave Division Multiplexing)
DWDM(Dense Wave Division Multiplexing)
CDMA(Code Wave Division Multiplexing)
SONET(Synchronous Optical Network)同步光纤网
SDH(Synchronous Digital Hierarchy)同步数字系列
STM-1(Synchronous Transfer Module)第1级同步传递模块
OC-48(Optical Carrier)第48级光载波
 
习题2-17 共有4个站进行码分多址CDMA通信。4个站的码片序列为:
A:(-1 –1 –1 +1 +1 –1 +1 +1)    B:(-1 –1 +1 -1 +1 +1 +1 -1)
C:(-1 +1 –1 +1 +1 +1 -1 -1)     D:(-1 +1 –1 –1 -1 –1 +1 -1)
现收到这样的码片序列:(-1 +1 –3 +1 -1 –3 +1 +1)。问哪个站发送数据了?发送数据的站发送的1还是0?
答:S·A=(+1-1+3+1-1+3+1+1)/8=1,   A发送1
S·B=(+1-1-3-1-1-3+1-1)/8=-1, B发送0
S·C=(+1+1+3+1-1-3-1-1)/8=0,   C无发送
S·D=(+1+1+3-1+1+3+1-1)/8=1,   D发送1
习题2-18 假定在进行异步通信时,发送端每发送一个字符就发送10个等宽的比特(一个起始比特,8个比特的ASCII码字符,最后一个结束比特)。试问当接收端的时钟频率和发送端的时钟频率相差5%时,双方能否正常通信?
解:设发送端和接收端的时钟周期分别为X和Y。若接收端时钟稍慢,则最后一个采样必须发生在停止比特结束之前,即9.5Y<10X。
若接收端时钟稍快,则最后一个采样必须发生在停止比特开始之后,即9.5Y>9X。
解出:
因此收发双方频率相差5%是可以正常工作的。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
第三章 数据链路层
习题3-02 数据链路层中的链路控制包括哪些功能?
答:数据链路层中的链路控制功能有:(1)链路管理。(2)帧定界。(3)流量控制。(4)差错控制。(5)将数据和控制信息区分开。(6)透明传输。(7)寻址。
习题3-03考察停止等待协议算法。在接收结点,当执行步骤(4)时,若将“否则转到(7)”改为“否则转到(8)”,将产生什么结果?
答:“否则”是指发送方发送的帧的N(S)和接收方的状态变量V(R)不同。表明发送方没有收到接收方发出的ACK,于是重传上次的帧。若“转到(8)”,则接收方要发送NAK。发送方继续重传上次的帧,一直这样下去。
习题3-06 信道速率为4kb/s。采用停止等待协议。传播时延,确认帧长度和处理时间均可忽略。问帧长为多少才能使信道利用率达到至少50%。
解:根据下图所示停等协议中的时间关系:
 
 
 
 
 
 
 
 
 
 

在确认帧长度和处理时间均可忽略的情况下,要使信道利用率达到至少50%必须使数据帧的发送时间等于2倍的单程传播时延。
即:
已知:,其中C为信道容量,或信道速率。为帧长(以比特为单位)。
所以得帧长 bit
习题3-09试证明:当用n个比特进行编号时,若接收窗口的大小为1,则只有在发送窗口的大小WT≤2n-1时,连续ARQ协议才能正确运行。
答:(1)显然 WT内不可能有重复编号的帧,所以WT≤2n。设WT=2n;
(2)注意以下情况:
发送窗口:只有当收到对一个帧的确认,才会向前滑动一个帧的位置;
接收窗口:只有收到一个序号正确的帧,才会向前滑动一个帧的位置,且同时向发送端发送对该帧的确认。
显然只有接收窗口向前滑动时,发送端口才有可能向前滑动。发送端若没有收到该确认,发送窗口就不能滑动。
(3)为讨论方便,取n=3。并考虑当接收窗口位于0时,发送窗口的两个极端状态。
状态1:               发送窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
全部确认帧收到         接收窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
 
状态2:                发送窗口:  0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
全部确认帧都没收到     接收窗口: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
(4)可见在状态2下,接收过程前移窗口后有效序列号的新范围和发送窗口的旧范围之间有重叠,致使接收端无法区分是重复帧还是新帧。为使旧发送窗口和新接收窗口之间序列号不发生重叠,有WT+WR≤2n,所以WT≤2n-1
习题3-10、试证明:对于选择重传ARQ协议,若有n比特进行编号,则接收窗口的最大值受公式WR≤2n/2的约束。
答:因WT+WR≤2n,而WR≤WT,当WR= WT时,WR取最大值,为2n/2。
习题3-11在选择重传ARQ协议中,设编号用3bit。再设发送窗口WT=6,而接收窗口WR=3。试找出一种情况,使得在此情况下协议不能正常工作。
答:发送端:0 1 2 3 4 5  6 7 0 1 2 3 4 5 6 7 0
    接收端:0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0
 
习题3-12在连续ARQ协议中,设编号用3bit,而发送窗口WT=8,试找出一种情况,使得在此情况下协议不能正常工作。
答:发送端:0 1 2 3 4 5 6 7  0 1 2 3 4 5 6 7 0
    接收端:0 1 2 3 4 5 6 7  0 1 2 3 4 5 6 7 0
 
习题3-13在什么条件下,选择重传ARQ协议和连续ARQ协议在效果上完全一致?
答:当选择重传ARQ协议WR=1时,或当连续ARQ协议传输无差错时。
习题3-15设卫星信道的数据速率是1Mbit/s,取卫星信道的单程传播时延为0.25秒。每一个数据帧长为2000bit,忽略误码率、确认帧长和处理时间。试计算下列情况下的信道利用率。
(1)采用停-等协议。 
(2)采用连续ARQ协议,窗口大小WT=7。
(3)采用连续ARQ协议,窗口大小WT=127。
(4)采用连续ARQ协议,窗口大小WT=255。
解:
习题3-16试简述HDLC帧各字段的意义。HDLC用什么方法保证数据的透明传输?
答:HDLC帧结构如下图:
 
1. 标志域F。HDLC用一种特殊的位模式01111110作为标志以确定帧的边界。 同一个标志既可以作为前一帧的结束, 也可以作为后一帧的开始。链路上所有的站都在不断地探索标志模式, 一旦得到一个标志就开始接收帧。 在接收帧的过程中如果发现一个标志, 则认为该帧结束了。
 
2. 地址域A。 地址域用于标识从站的地址。 虽然在点对点链路中不需要地址, 但是为了帧格式的统一, 也保留了地址域。 地址通常是8位长, 然而经过协商之后, 也可以采用更长的扩展地址。
3. 控制域C。HDLC定义了三种帧, 可根据控制域的格式区分之。 信息帧(I帧)装载着要传送的数据, 此外还捎带着流量控制和差错控制的信号。
4. 信息域INFO。只有I帧和某些无编号帧含有信息域。这个域可含有表示用户数据的任何比特序列, 其长度没有规定, 但具体的实现往往限定了帧的最大长度。
5. 帧校验和域FCS。FCS域中含有除标志域之外的所有其他域的校验序列。通常使用16 bit的CRC-CCITT标准产生校验序列, 有时也使用CRC-32产生32位的校验序列。
采用零比特填充法就可传送任意组合的比特流,或者说,就可实现数据链路层的透明传输。
 
习题3-17 HDLC帧可分为哪几大类?试简述各类帧的作用。
答:分三大类。1信息帧:用于数据传输,还可同时用来对已收到的数据进行确认和执行轮询功能。2监督帧:用于数据流控制,帧本身不包含数据,但可执行对数据帧的确认,请求重发信息帧和请求暂停发送信息帧等功能。3无编号帧:主要用于控制链路本身,不使用发送或接收帧序号。
习题3-19 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?
答:主要特点:
(1)点对点协议,既支持异步链路,也支持同步链路。
(2)PPP是面向字节的。
PPP不采用序号和确认机制是出于以下的考虑:
第一,      若使用能够实现可靠传输的数据链路层协议(如HDLC),开销就要增大。在数据链路层出现差错的概率不大时,使用比较简单的PPP协议较为合理。
第二,      在因特网环境下,PPP的信息字段放入的数据是IP数据报。假定我们采用了能实现可靠传输但十分复杂的数据链路层协议,然而当数据帧在路由器中从数据链路层上升到网络层后,仍有可能因网络授拥塞而被丢弃。因此,数据链路层的可靠传输并不能保证网络层的传输也是可靠的。
第三,      PPP协议在帧格式中有帧检验序列FCS安段。对每一个收到的帧,PPP都要使用硬件进行CRC检验。若发现有差错,则丢弃该帧(一定不能把有差错的帧交付给上一层)。端到端的差错检测最后由高层协议负责。因此,PPP协议可保证无差错接受。
PPP协议适用于用户使用拨号电话线接入因特网的情况。
习题3-20要发送的数据为1101011011。采用CRC的生成多项式是P(x)=x4+x+1 。试求应添加在数据后面的余数。
数据在传输过程中最后一个1变成了0,问接收端能否发现?
若数据在传输过程中最后两个1都变成了0,问接收端能否发现?
答:添加的检验序列为1110 (11010110110000除以10011)
    数据在传输过程中最后一个1变成了0,11010110101110除以10011,余数为011,不为0,接收端可以发现差错。
数据在传输过程中最后两个1都变成了0,11010110001110除以10011,余数为101,不为0,接收端可以发现差错。
PPP协议
2016-05-16 20:18:34 q1w2e3r4470 阅读数 2336
  • 【直通华为HCNA/HCNP系列R篇4】WAN接入配置与管理

    本课程全面、系统、深入地介绍了华为AR G3系列路由器所支持主要拨号WAN接入方式技术原理和配置与管理方法,包括DCC、3G Cellular、4G LTE Cellular、PPP、MP、PPPoE、ADSL、VDSL、G.SHDSL等常用的一些WAN接入方式。课程中包括了大量的配置实验和示例,配置思路非常清晰、实验演示非常直观、真正做到一学就会。

    28775 人正在学习 去看看 王达

概念

PPP(Point to Point Protocol)即点对点协议,是一种广域网链路层协议,可以帮助隔了很多个异构网络的两端实现逻辑直连。我们常用的宽带拨号就是PPPoE协议(Point to Point Protocol over Ethernet),即以太网上的点对点协议。PPP有身份认证的功能,当运营商确认了我们的身份后才会给我们分配IP地址,我们才可以上网。

组成部分

  1. 一个将IP数据报封装到串行链路的方法。
  2. 一个用来建立、配置和测试数据链路链接的链路控制协议LCP(Link Control Protocol),用于通信双方协商选项
  3. 一套网络控制协议(NCP,Network Control Protocol),支持不同的网络层协议

两种验证方式

(1)PAP

特点:验证从客户端发起,密码明文传输,仅在连接建立阶段进行,数据传输阶段不进行PAP验证.
过程:
1. A与B间通过PPP协议互联,A设置为验证方,B为被验证方,当B拨通A后,B会将用户名(一般设置为路由器的名字)与口令一起发给A;
2. 验证方A根据本端的数据库查看是否有此用户,口令是否正确。如正确则会给对端发送ACK报文,通告对端已被允许进入下一阶段协商;否则发送NAK报文,通告对端验证失败。

(2)CHAP

配置

我们学校通过串口连接两个路由器,做这个实验需要进入Serial 0/0配置

[R1]inter Serial 0/0
[R1-Serial0/0]ip address 192.0.0.1 24
[R1-Serial0/0]link-protocol ppp # 启动PPP
[R1-Serial0/0]shutdown
[R1-Serial0/0]undo shutdown # 需要重启端口才会生效
# R2也需要进行类似配置,并测试是否能ping通
<R1>debugging ppp all
<R1>terminal debugging
[R1-Serial0/0]shutdown
[R1-Serial0/0]undo shutdown

LCP状态转移图

根据R1的debug信息画出LCP状态转移图
这里写图片描述

PAP验证状态转移图

这里用R1为主验证方,来验证R2,用户名RTB, 密码aaa

[R1]local-uer RTB class network # 配置用户列表
[R1-user-RTB]service-type ppp # 配置服务类型
[R1-user-RTB]password simple aaa # 这是该用户密码
[R1-user-RTB]quit
[R1]inter Serial 0/0
[R1-Serial0/0]ppp authentication pap # 为s0/0端口授权PAP验证
# 重启端口,生效配置
[R1-Serial0/0]shutdown
[R1-Serial0/0]undo shutdown

重启端口,不是路由器。还要在R2添加R1的用户名和密码

[R2]inter Serial 0/0
# 在该端口添加用户名和密码
[R2-Serial0/0]ppp pap local-user RTB password simple aaa
# 重启端口,生效配置
[R1-Serial0/0]shutdown
[R1-Serial0/0]undo shutdown

执行下列指令显示debug信息,画出PAP状态转移图

验证R1是否能pingR2
<R1>debugging ppp all
<R1>terminal debugging
[R1-Serial0/0]shutdown
[R1-Serial0/0]undo shutdown
2019-12-28 14:23:40 weixin_43419753 阅读数 22
  • 【直通华为HCNA/HCNP系列R篇4】WAN接入配置与管理

    本课程全面、系统、深入地介绍了华为AR G3系列路由器所支持主要拨号WAN接入方式技术原理和配置与管理方法,包括DCC、3G Cellular、4G LTE Cellular、PPP、MP、PPPoE、ADSL、VDSL、G.SHDSL等常用的一些WAN接入方式。课程中包括了大量的配置实验和示例,配置思路非常清晰、实验演示非常直观、真正做到一学就会。

    28775 人正在学习 去看看 王达

概述

数据链路层属于计算机网络的低层,数据链路层使用的信道的类型有以下两种:
(1)点对点通信:这种信道使用一对一的点对点通信方式
(2)广播信道:这种信道使用一对多的广播通信方式,因此过程比较复杂,广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。
下图表示数据从主机H1传送到主机H2需要在路径中的各结点的协议栈向上和向下流动多次:在这里插入图片描述
如果只考虑数据链路层:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20191222211425268.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzQxOTc1Mw==,size_16,color_FFFFFF,t

数据链路

数据链路:当需要在一条线路上传送数据时,除了必须要有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输,若把这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器来实现这些协议的硬件和软件,一般的适配器都包括了数据链路层和物理层这两层的功能。
在这里插入图片描述

数据链路中的封装成帧、透明传输、差错检测

1. 封装成帧
封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
在这里插入图片描述
2. 透明传输
帧在传输过程中,帧头有一个SOH帧定界控制字符,帧尾有一个EOT帧定界控制字符,如果帧中间出现帧尾EOT相同标识符的内容时,帧就会舍弃该内容之后的报文,这样传输就出现错误,为了避免这种情况的发生,就必须设法将数据中可能出现的字符‘SOH’,'EOT’在接收端不被解释为控制字符。
具体的做法是:发送端的数据链路层在数据中出现控制字符"SOH",“EOT"的前面插入一个转义字符"ESC”,而在这种方法称为字节填充或字符填充,如果转义字符也出现在数据中,那么解决方法仍然是在转义字符前面插入一个转义字符,因此,当接收端收连续两个转义字符时,就删除其中前面的一个。
在这里插入图片描述
3. 错误检测
数据链路层主要使用循环冗余检验CRC检测技术
OSI的观点是必须把数据链路层做成是可靠传输的,因此在CRC检错的基础上,加上了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认,发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。

信道分类

1.点对点信道

点对点通信是一对一信道,因此不会发生碰撞,因此比较简单,采用PPP协议;其中PPP协议就是用户计算机和ISP(互联网服务提供商)进行通信时使用的数据链路层的协议;

点对点信道的数据链路层在进行通信时的主要步骤为:

  • 结点A的数据链路层把网络交下来的IP数据报添加到首部和尾部封装成帧;
  • 结点A 把封装好的帧发送给结点B的数据链路层
  • 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层,否则丢弃这个帧;
    数据链路层不必考虑物理层如何实现比特传输的细节,甚至可以简单的设想好像是两个数据链路层之间的水平方向把帧直接发送到对方。

点对点协议PPP

目前使用最广泛的数据链路层协议:PPP

(1) PPP协议的组成:

  • 一个将IP数据报文封装到串行链路的方法,PPP既支持异步链路,也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分,这个信息部分的长度就是受最大传送单元MTU的限制。
  • 一个用来建立、配置和测试数据链路的链路控制协议LCP
  • 一套网络控制协议NCP,其中每一个协议支持不同的网络层协议。

(2) PPP协议的需求

  • 简单
  • 封装成帧:必须规定特殊的字符作为帧定界符
  • 透明性:保证数据传输的透明性
  • 多层网络层协议 :必须能在同一条物理链路上同时支持多种网络层协议的运行。当点对点链路所连接的是局域网或路由器时,PPP协议必须同时支持在链路所连接的局域网或路由器上运行的各种网络层协议。
  • 差错检测
  • 检测连接状态
  • 最小传送单元
  • 网络层地址协议
  • 数据压缩协商

(3) PPP帧格式
在这里插入图片描述

2.广播信道

广播信道是一对一信道,一个节点发送的数据能够被广播信道上所有的节点接收到;
所有节点都在同一个广播信道上发送数据,因此需要专门的控制方法进行协调,避免发生冲突(冲突也叫碰撞);
主要有两种控制方法进行协调,一种是使用信道复用技术(物理层技术);另一种是使用CSMA/CD协议

CSMA/CD是数据链路层中最重要的一个协议,是载波监听多点接入/碰撞检测的缩写;

  • 多点接入:是总线型网路,许多计算机在以多点接入的方式连接子在一根总线上,协议的实质是:载波监听和碰撞检测;
  • 载波监听:在发送前监听,每一站在发送数据前先要检测一下总线上是否有其他站在发送数据,如果有,则暂时不发送数据,要等待信道变为空闲时在发送;
  • 碰撞检测:边发送边检测,适配器边发送数据边检测信道上的电压的变化情况,以便判断自己在发送数据时其他数据时其他站是否也在发送数据。

MAC地址

MAC地址是数据链路层的地址,长度为6字节(48位),用来唯一标志网络适配器(网卡);
一台主机有多少个网络适配器就有多少个MAC地址,只要电脑的适配器不发生变化吗,那么MAC地址也不随电脑位置的变化而变化;

局域网

局域网是一种典型的广播信道,主要特点是网路为一个单位所拥有,且地理位和站点数目均有限,主要有以太网、令牌环网、FDDI、和ATM等局域网技术,目前以太网占领着有线局域网市场,按照网络拓扑结构可以对局域网分成星型、环形和直线型。

以太网

以太网是一种星型拓扑结构的局域网,早期使用集线器进行连接,目前使用交换机代替集线器,交换机是一种链路层设备,他不会发生碰撞,能够根据MAC地址进行存储转发;
以太网的扩展:

  • 物理层:扩展主机和集线器之间使用光纤和一对光纤调制解调器;
  • 数据链路层:使用网桥;根据MAC帧目的地址对收到的帧进行存储和转发;
参考书籍:计算机网络第五版谢希仁编著
2019-07-27 21:48:47 wintershii 阅读数 25
  • 【直通华为HCNA/HCNP系列R篇4】WAN接入配置与管理

    本课程全面、系统、深入地介绍了华为AR G3系列路由器所支持主要拨号WAN接入方式技术原理和配置与管理方法,包括DCC、3G Cellular、4G LTE Cellular、PPP、MP、PPPoE、ADSL、VDSL、G.SHDSL等常用的一些WAN接入方式。课程中包括了大量的配置实验和示例,配置思路非常清晰、实验演示非常直观、真正做到一学就会。

    28775 人正在学习 去看看 王达

网络层

1.网络层的功能

网络层负责在不同网络之间转发数据包, 基于数据包的IP地址转发. 如果数据丢失,不负责丢失重传, 也不负责顺序处理. 路由器就工作在网络层

数据包在互联网中传送时, 在物理层中有各种不同的介质. 因为既有局域网的广播传输, 又有广域网的点对点传输. 所以在局域网使用CSMA/CD协议, 在路由器间使用PPP协议

2.网络设备和OSI参考模型间的关系

在这里插入图片描述

计算机通信过程

发送端 :

  • 1.应用程序准备要传输的文件,
  • 2.传输层 将文件分段 并编号
  • 3.在网络层对分段数据加上源, 目标IP地址
  • 4.在数据链路层 : 两种情况, 使用自己的子网掩码判断源IP和目标IP是否在同一网段

在这里插入图片描述

1>本网段通信

若在同一网段, 则直接使用ARP协议, 广播解析目标地址的MAC地址. 然后用对方的MAC地址封装成数据帧

2>跨网段通信

如果不是一个网段,则先通过ARP协议广播获取网关(路由器)的MAC地址, 再传送到路由器(借助路由表), 通过点对点传输到另一网段, 再进行传输.

3.网络层协议

1>ARP协议

  • 1.将IP地址通过广播, 目标MAC地址是全F, 解析目标IP地址的MAC地址

    无论是在网段内通信还是跨网段通信, 都要获取目标段的MAC地址或网关的MAC, 这时就通过ARP向网段内所有设备发送广播, 接收到广播的设备判断该IP地址是否是自己的, 如果是, 则将自己的MAC地址返回给发送端. 发送端将这个MAC地址缓存下来, 之后再发送就直接用这个MAC地址.

  • 2.ARP欺骗 : 我们之前说过交换机有存储功能, 维护了一个MAC地址表, 如果目标MAC地址确定, 并存在与交换机的MAC地址表中, 交换机就只将数据发送给目的MAC地址的设备, 而不发送给其他接口的设备. 网段内M1与M2进行通信, M1发送ARP广播, M2收到后检测目标地址是自己的IP, 就把自己的MAC地址发送给M1, 但是这时M3(欺骗者), 将自己的MAC地址也发给M1. 这时M1里缓存的MAC地址就是M3的MAC地址, 并把数据发送给M3, M3再把源MAC地址改成自己的,然后将数据转发给M2, 这样M1,M2之间通信就会经过一层M3, 这就是ARP欺骗

2>ICMP协议

依赖于IP协议, 多用于测试网络畅通

应用 : ping(Packet Internet Group), 因特网包探索期 , 用于测试网络连接量的程序. TTL 表示数据包的生存时间

3>IGMP

​ 配置在路由器上, 周期性扫描网段中有没有计算机绑定多播地址, 只要有一个计算机绑定多播地址, 就会有数据发送过来. 但如果网段内没有计算机绑定多播地址, 就会停止发送数据包, 用于多播

4.IP数据包结构

一个IP数据包由首部和数据两部分组成

  • 首部的前一部分是 固定长度, 共20字节, 是所有IP数据包必须具有的
  • 在在首部的固定部分的后面是一些可选字段, 长度是可变的

在这里插入图片描述

版本 : TCP/IP协议版本 v4,v6

首部长度 : 若没有可选字段, 只有固定长度的20字节, 则值为5 (单位为4字节)

区分服务 : 设定服务的优先级, 让一些需要即时服务的数据包先传输. 实现这种服务叫QOS

总长度 : 用于表示整个数据包的长度, 最大65536字节, 但数据链路层最大传输单元1500字节. 若数据包过大,则会在分片后传送到 数据链路层.

标识 : 如果数据包分片了, 数据包里就需要标识来指定多个分片是同一个数据包

标志 : 占e3位, 只有 前两位有意义. 最低位是MF(More Fragment), MF = 1表示后面还有分片. MF = 0表示最后一个分片. 标志字段中间的一位是DF(Don’t Fragment), 只有当DF = 0时才允许分片

片偏移 : 分片处的字节值/8 (8字节/1偏移)

生存时间 : TTL每过一个路由器减1. TTL变为1,就不能再转发到其他网段了(无法再路由), 作用 : 防止路由环路.linux默认TTL64,windows默认 TTL 128

协议 : 标识协议号, 数据包中的数据 是什么 协议的数据, 协议字段指出应该将数据部分交给哪一个进程

ICMP : 1; IGMP : 2; TCP : 6; UDP : 17; IPv6 : 41

首部检验和 : 接收端进行校验, 对首部信息进行校验

源地址和目的地址 : 两个32位的IP地址

5.IP协议

路由器在网络层的作用就是在不同网段之间转发数据包, 如何判断该选择哪条路径? 路由表, 路由表通过静态路由或动态路由获取

静态路由 : 管理员配置路由表,适合晓得网络

网络畅通条件 : 数据包有去有回(有网关,知道来回路由器上下一跳去哪)

动态路由 : RIP ,OSPF等协议自动学习, 可以随着网络状态变化自动调整

RIP : 周期性向周围发广播, 告诉其他路由器自己连着哪个网段(自己的路由表). 过得路由器越少, 就越优. 周期性更新

2018-11-22 17:21:47 Sky_327 阅读数 254
  • 【直通华为HCNA/HCNP系列R篇4】WAN接入配置与管理

    本课程全面、系统、深入地介绍了华为AR G3系列路由器所支持主要拨号WAN接入方式技术原理和配置与管理方法,包括DCC、3G Cellular、4G LTE Cellular、PPP、MP、PPPoE、ADSL、VDSL、G.SHDSL等常用的一些WAN接入方式。课程中包括了大量的配置实验和示例,配置思路非常清晰、实验演示非常直观、真正做到一学就会。

    28775 人正在学习 去看看 王达

本文主要是自己学习过程中的一些知识总结,文中有些图片来自经典的计算机网络书籍和一些大神的BLOG,如有错误,还请指正。

目录

一、概论

1、互联网的组成

2、计算机的时延

3、协议分层

二、物理层

1、物理层的四大特性

2、信息的通信方式

3、集线器:物理层

三、数据链路层

1、数据链路层的3个基本问题

2、PPP协议

3、数据链路层的以太网CSMA/CD

四、网络层

1、IP协议

2、IP数据报格式:首部最小20字节

3、网际控制报文协议ICMP

4、IP层的路由选择协议(内RIP、OSPF、外BGP边界网关)

5、IPv6

6、熟知端口号

五、传输层

1、用户数据报协议UDP

2、传输控制协议TCP

 六、应用层

1、域名系统DNS

2、文件传输协议FTP

七、HTTP相关

1、HTTP

2、加密和证书

3、HTTP和HTTPS

4、HTTP1.0、HTTP1.1和HTTP2.0

5、从输入网址到获得页面的网络请求过程

6、GET和POST的区别

7、cookie和session的区别

8、如何理解HTTP协议是无状态的?

9、什么是短连接和长连接

八、网络安全

1、跨站脚本攻击XSS

2、跨站请求伪造CSRF

3、SQL 注入攻击

4、拒绝服务攻击DoS

5、I/O复用select/poll/epoll)


一、概论

1、互联网的组成

答:分为边缘部分和核心部分,边缘部分有C/S和P2P两种方式;核心部分主要有3种方式:电路交换、分组交换和报文交换。

2、计算机的时延

答:发送时延、传播时延长、处理时延、排队时延。

3、协议分层

答:(1)分层的好处:

A、各层之间独立;B、灵活性好C、结构上可分开D、易于实现和维护E、能促进标准化工作

(2)各层应该实现的功能:

A、差错控制;B、流量控制C、分段和重组D、复用和分用E、连接建立和释放

(3)协议层次:

    

二、物理层

1、物理层的四大特性

2、信息的通信方式

答:单工、半双工和全双工。

3、集线器:物理层

       中间设备:

三、数据链路层

1、数据链路层的3个基本问题

答:封装成帧(SOH、EOT)、透明传输(字节填充)、差错控制(循环冗余检测)。

2、PPP协议

答:(1)组成及工作状态:

(2)帧格式

3、数据链路层的以太网CSMA/CD

答:(1)以太网的工作方式

(2)CSMA\CD协议——协调总线上各计算机的工作,只能使用半双工通信

截断二进制指数退避、争用期51.2us、帧间最小间隔9.6us

       截断二进制指数退避:确定碰撞后的重传时机。

       CSMA\CD的流程:

(3)MAC层:6字节,48位

四、网络层

1IP协议

答:(1)分层:

(2)分类的IP地址:32位

       两级的IP地址:

       重要特点:4个

(3)地址解析协议ARP

为什么要采用抽象的IP地址而不是直接使用硬件地址?

2IP数据报格式:首部最小20字节

(1)IP数据报的格式

2)固定部分的字段

3)可变部分的字段

(4)IP层转发分组的流程

(5)划分子网

子网掩码:将IP地址与子网掩码转化为二进制再相与就可得到网络地址

       使用子网时的分组转发:

(6)构建超网

3、网际控制报文协议ICMP

答:(1)格式:

(2)2种类型:差错报告报文ICMP询问报文

(3)重要应用    

Aping

ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。

ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。

BTraceroute

Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。

Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。

4IP层的路由选择协议(内RIPOSPF、外BGP边界网关)

答:(1)总体划分:

(2)RIP协议:距离向量协议、UDP报文(20字节)

       距离向量算法

(3)内部网络协议OSPF:IP报文(24字节)

(4)外部网关协议BGP:TCP连接

5IPv6

答:(1)组成:

(2)IPv4向IPv6过渡

       双协议栈隧道技术

6、熟知端口号

答:服务器端口号客户端口号

五、传输层

1、用户数据报协议UDP

答:(1)特点

(2)首部格式

2、传输控制协议TCP

答:

(1)特点:

(2)TCP的连接

(3)TCP报文段:首部最小20个字节

4TCP可靠传输的实现:滑动窗口、超时重传和选择确认

A、滑动窗口

       A的发送窗口:

       B的接收窗口:

       4点需要注意的地方:

B、超时重传:每次重传的时候把新的重传时间设置为旧的重传时间的2

C、选择确认

5TCP流量控制:利用滑动可变窗口实现并设置持续计时器防止死锁

6TCP拥塞控制:慢开始、拥塞避免、快重传、快恢复——都是基于拥塞窗口的机制

A、拥塞控制与流量控制的区别

B、慢开始

C、拥塞避免:引入慢开始门限,加法增大

D、快重传:让发送方尽快知道发生了个别报文段的丢失

E、快恢复:丢失个别报文段使用快恢复

F、主动队列管理RED:避免发生网络中的全局同步现象,如RED

7TCP运输连接管理:3次握手4次挥手

A、3次握手

       为什么采用3次握手?

B、4次挥手

       为什么等待2MSL

为什么会出现大量的time_wait状态?

由于主动关闭TCP连接的一方才会进入TIME_WAIT状态,一般情况服务器端不会出现TIME_WAIT状态,因为大多数情况都是客户端主动发起连接并主动关闭连接。但是某些服务如pop/smtp、ftp却是服务端收到客户端的QUIT命令后主动关闭连接,这就造成这类服务器上容易出现大量的TIME_WAIT状态的连接,而且并发量越大处于此种状态的连接越多。另外,对于被动关闭连接的服务在主动关闭客户端非法请求或清理长时间不活动的连接时(这种情况很可能是客户端程序忘记关闭连接)也会出现TIME_WAIT的状态。

8)解释RTORTT和超时重传

1、超时重传:发送端发送报文后若长时间未收到确认的报文则需要重发该报文。可能有以下几种情况:

发送的数据没能到达接收端,所以对方没有响应。

接收端接收到数据,但是ACK报文在返回过程中丢失。

接收端拒绝或丢弃数据。

2RTO从上一次发送数据,因为长期没有收到ACK响应,到下一次重发之间的时间。就是重传间隔。

通常每次重传RTO是前一次重传间隔的两倍,计量单位通常是RTT。例:1RTT,2RTT,4RTT,8RTT......

重传次数到达上限之后停止重传。

3RTT数据从发送到接收到对方响应之间的时间间隔,即数据报在网络中一个往返用时。大小不稳定。

 六、应用层

1、域名系统DNS

答:解析过程

2、文件传输协议FTP

答:(1)工作步骤:

(2)两个连接

七、HTTP相关

1HTTP

答:(1)特点:面向事务的、无连接的、无状态的

(2)HTTP1.0和HTTP1.1

(3)报文结构

HEAD获取报文首部

和 GET 方法一样,但是不返回报文实体主体部分。主要用于确认 URL 的有效性以及资源更新的日期时间等。

PUT上传文件

由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

PATCH对资源进行部分修改

PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。

DELETE删除文件

与 PUT 功能相反,并且同样不带验证机制。

OPTIONS查询支持的方法

查询指定的 URL 能够支持的方法。

CONNECT要求在与代理服务器通信时建立隧道

使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

4)状态码

A1XX 信息

100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。

B2XX 成功

200 OK

204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。

206 Partial Content :表示客户端进行了范围请求。响应报文包含由 Content-Range 指定范围的实体内容。

C3XX 重定向

301 Moved Permanently :永久性重定向

302 Found :临时性重定向

303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。

注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。

304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。

307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。

D4XX 客户端错误

400 Bad Request :请求报文中存在语法错误。

401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。

403 Forbidden :请求被拒绝,服务器端没有必要给出拒绝的详细理由。

404 Not Found

E5XX 服务器错误

500 Internal Server Error :服务器正在执行请求时发生错误。

503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

2、加密和证书

答:(1)加密:2种

A、对称加密技术

加密和解密使用相同的密钥的加密算法。有时又叫传统加密算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥或者单密钥算法,常见的对称加密有DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA。

       B、非对称加密技术:

       非对称加密算法有两个密钥:公开密钥(public key)和私有密钥(private key);并且加密密钥和解密密钥是成对出现的。非对称加密算法在加密和解密过程使用了不同的密钥,非对称加密也称公钥加密,在密钥对中,其中一个密钥是对外公开的,所有都可以获取到,称为公钥,其中一个密钥是不公开的称为私钥。非对称加密算法对加密内容的长度有限制,不能超过公钥长度。常见的非对称加密RSA、DSA/DSS等。

(2)数字摘要

       数字摘要是采用单项Hash函数将需要加密的明文"摘要"成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文摘要必定一定。“数字摘要”是https能确保数据完整性和防篡改的根本原因。常用的摘要主要有MD5、SHA1、SHA256等。

A、散列函数

B、MD5

C、SHA

(3)数字签名

数字签名技术就是对"非对称密钥加解密"和"数字摘要"两项技术的应用,它将摘要信息用发送者的私钥加密,与原文一起传送给接受者。接受者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原因产生一个摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输的过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。

       A、数字签名的过程:

明文——>hash运算——>摘要——>私钥加密——>数字签名

B、数字签名的两种功效:

              1、能确定消息确实由发送方签名并发出来的,因为别人假冒不了发送方的签名。

2、数字签名能确定消息的完整性。

(4)数字证书

A、数字证书的颁发过程:

用户首先产生自己的密钥对,并将公共密钥及部分个人身份信息传送给认证中心。认证中心在核实身份后,将执行一些必要的步骤,以确信请求确实由用户发送而来,然后,认证中心将发送给用户一个数字证书,该证书内包含用户的人信息和他的公钥信息,同时还附有认证中心的签名信息(根证书私钥)签名。用户就可以使用自己的数字证书进行相关的各种活动。数字证书由独立的证书发行机构发布,数字证书各不相同,每种证书可提供不同级别的可信度。

B、证书包含哪些内容

1、证书颁发机构的名称

2、证书本身的数字签名

3、证书持有者的公钥

4、证书签名用到的Hash算法

C、验证证书的有效性

浏览器默认都是会内置CA跟证书,其中根证书包含了CA的公钥。

3HTTPHTTPS

答:1)概念:

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息。

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

2)区别

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

3HTTP的工作原理

1、地址解析,需要域名系统DNS解析域名localhost.com,得主机的IP地址

2、封装HTTP请求数据包,把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

3、封装成TCP包,建立TCP连接(TCP的三次握手)

4、客户机发送请求命令,建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。

5、服务器响应

服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

6、服务器关闭TCP连接

4HTTPS的工作原理

1、客户使用https的URL访问Web服务器,要求与Web服务器建立SSL连接。

2、Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥S)传送一份给客户端。

3、客户端首先验证服务器证书S,然后与Web服务器开始协商SSL连接的安全等级,也就是信息加密的等级。

4、客户端根据双方同意的安全等级,建立会话密钥C,然后利用网站的公钥S将会话密钥加密,并传送给Web服务器。

5、Web服务器利用自己的私钥解密出会话密钥,并将需要传递的数据用私钥加密并发送。

6、客户端收到数据用私钥解密即可。

4HTTP1.0HTTP1.1HTTP2.0

答:1HTTP1.0 HTTP 1.1主要区别

A、长连接

HTTP 1.0需要使用keep-alive参数来告知服务器端要建立一个长连接,而HTTP1.1默认支持长连接。

HTTP是基于TCP/IP协议的,创建一个TCP连接是需要经过三次握手的,有一定的开销,如果每次通讯都要重新建立连接的话,对性能有影响。因此最好能维持一个长连接,可以用个长连接来发多个请求。

B、节约带宽

HTTP 1.1支持只发送header信息(不带任何body信息),如果服务器认为客户端有权限请求服务器,则返回100,否则返回401。客户端如果接受到100,才开始把请求body发送到服务器。

这样当服务器返回401的时候,客户端就可以不用发送请求body了,节约了带宽。

另外HTTP还支持传送内容的一部分。这样当客户端已经有一部分的资源后,只需要跟服务器请求另外的部分资源即可。这是支持文件断点续传的基础。

CHOST

现在可以web server例如tomat,设置虚拟站点是非常常见的,也即是说,web server上的多个虚拟站点可以共享同一个ip和端口。HTTP1.0是没有host域的,HTTP1.1才支持这个参数。

D、流水线(Pipelining

请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。例如:一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。 HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容。

2HTTP1.1 HTTP 2.0主要区别

A、多路复用

HTTP2.0使用了多路复用的技术,做到同一个连接并发处理多个请求,而且并发请求的数量比HTTP1.1大了好几个数量级。当然HTTP1.1也可以多建立几个TCP连接,来支持处理更多并发的请求,但是创建TCP连接本身也是有开销的。

B、数据压缩

HTTP1.1不支持header数据的压缩,HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

C、服务器推送

当我们对支持HTTP2.0的web server请求数据的时候,服务器会顺便把一些客户端需要的资源一起推送到客户端,免得客户端再次创建连接发送请求到服务器端获取。这种方式非常合适加载静态资源。服务器端推送的这些资源其实存在客户端的某处地方,客户端直接从本地加载这些资源就可以了,不用走网络,速度自然是快很多的。

D、新的二进制格式

HTTP 1.x的解析是基于文本。基于文本的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合,基于这种考虑HTTP2.0的协议解析决定采用二进制分帧格式,实现方便且健壮。

5、从输入网址到获得页面的网络请求过程

答:

1)查询 DNS

浏览器搜索自身的DNS缓存

搜索操作系统的DNS缓存,本地host文件查询

如果 DNS 服务器和我们的主机在同一个子网内,系统会按照下面的 ARP 过程对 DNS 服务器进行 ARP查询

如果 DNS 服务器和我们的主机在不同的子网,系统会按照下面的 ARP 过程对默认网关进行查询

2)浏览器获得域名对应的IP地址后,发起三次握手

3TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了

4TLS 握手

1、客户端发送一个 ClientHello 消息到服务器端,消息中同时包含了它的 Transport Layer Security (TLS) 版本,可用的加密算法和压缩算法。

2、服务器端向客户端返回一个 ServerHello 消息,消息中包含了服务器端的TLS版本,服务器所选择的加密和压缩算法,以及数字证书认证机构(Certificate Authority,缩写 CA)签发的服务器公开证书,证书中包含了公钥。客户端会使用这个公钥加密接下来的握手过程,直到协商生成一个新的对称密钥

3、客户端根据自己的信任CA列表,验证服务器端的证书是否可信。如果认为可信,客户端会生成一串伪随机数,使用服务器的公钥加密它。这串随机数会被用于生成新的对称密钥

4、服务器端使用自己的私钥解密上面提到的随机数,然后使用这串随机数生成自己的对称主密钥

5、客户端发送一个 Finished 消息给服务器端,使用对称密钥加密这次通讯的一个散列值

6、服务器端生成自己的 hash 值,然后解密客户端发送来的信息,检查这两个值是否对应。如果对应,就向客户端发送一个 Finished 消息,也使用协商好的对称密钥加密

7、从现在开始,接下来整个 TLS 会话都使用对称秘钥进行加密,传输应用层(HTTP)内容

5HTTP 服务器请求处理

HTTPD(HTTP Daemon)在服务器端处理请求/响应。最常见的 HTTPD 有 Linux 上常用的 Apache 和 nginx,以及 Windows 上的 IIS。

HTTPD 接收请求

服务器把请求拆分为以下几个参数:

HTTP 请求方法(GET, POST, HEAD, PUT, DELETE, CONNECT, OPTIONS, 或者 TRACE)。直接在地址栏中输入 URL 这种情况下,使用的是 GET 方法域名:google.com请求路径/页面:/ (我们没有请求google.com下的指定的页面,因此 / 是默认的路径)

服务器验证其上已经配置了 google.com 的虚拟主机

服务器验证 google.com 接受 GET 方法

服务器验证该用户可以使用 GET 方法(根据 IP 地址,身份信息等)

如果服务器安装了 URL 重写模块(例如 Apache 的 mod_rewrite 和 IIS 的 URL Rewrite),服务器会尝试匹配重写规则,如果匹配上的话,服务器会按照规则重写这个请求

服务器根据请求信息获取相应的响应内容,这种情况下由于访问路径是 "/" ,会访问首页文件(你可以重写这个规则,但是这个是最常用的)。

服务器会使用指定的处理程序分析处理这个文件,假如 Google 使用 PHP,服务器会使用 PHP 解析 index 文件,并捕获输出,把 PHP 的输出结果返回给请求者

6)服务器接受到这个请求,根据路径参数,经过后端的一些处理生成HTML页面代码返回给浏览器

7)浏览器拿到完整的HTML页面代码开始解析和渲染,如果遇到引用的外部js,CSS,图片等静态资源,它们同样也是一个个的HTTP请求,都需要经过上面的步骤

8)浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户

6GETPOST的区别

答:

1)作用

GET 用于获取资源,而 POST 用于传输实体主体。

2)参数

GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体中。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看。

3)安全

安全的 HTTP 方法不会改变服务器状态,也就是说它只是可读的。

GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。

安全的方法除了 GET 之外还有:HEAD、OPTIONS。不安全的方法除了 POST 之外还有 PUT、DELETE。

4)幂等性

幂等的 HTTP 方法,同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。

所有的安全方法也都是幂等的。在正确实现的条件下,GET,HEAD,PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是。

5)可缓存

如果要对响应进行缓存,需要满足以下条件:

请求报文的 HTTP 方法本身是可缓存的,包括 GET 和 HEAD,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的。

响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。

响应报文的 Cache-Control 首部字段没有指定不进行缓存。

6)数据包

GET产生一个TCP数据包;POST产生两个TCP数据包。

7cookiesession的区别

答:1Cookie

       Cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。它用于告知服务端两个请求是否来自同一浏览器,并保持用户的登录状态。

1、用途

会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)

个性化设置(如用户自定义设置、主题等)

浏览器行为跟踪(如跟踪分析用户行为等)

2、创建过程

       服务器发送的响应报文包含 Set-Cookie 首部字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。

       客户端之后对同一个服务器发送请求时,会从浏览器中读出 Cookie 信息通过 Cookie 请求首部字段发送给服务器。

3、分类

       会话期 Cookie:浏览器关闭之后它会被自动删除,也就是说它仅在会话期内有效。

持久性 Cookie:指定一个特定的过期时间(Expires)或有效期(max-age)之后就成为了持久性的 Cookie。

2Session

Session 可以存储在服务器上的文件、数据库或者内存中,现在最常见的是将 Session 存储在内存型数据库中,比如 Redis。

       使用 Session 维护用户登录的过程如下:

A、用户进行登录时,用户提交包含用户名和密码的表单,放入 HTTP 请求报文中;

B、服务器验证该用户名和密码;

C、如果正确则把用户信息存储到 Redis 中,它在 Redis 中的 ID 称为 Session ID;

D、服务器返回的响应报文的 Set-Cookie 首部字段包含了这个 Session ID,客户端收到响应报文之后将该 Cookie 值存入浏览器中;

E、客户端之后对同一个服务器进行请求时会包含该 Cookie 值,服务器收到之后提取出 Session ID,从 Redis 中取出用户信息,继续之后的业务操作。

       应该注意 Session ID 的安全性问题,不能让它被恶意攻击者轻易获取,那么就不能产生一个容易被猜到的 Session ID 值。此外,还需要经常重新生成 Session ID。在对安全性要求极高的场景下,例如转账等操作,除了使用 Session 管理用户状态之外,还需要对用户进行重新验证,比如重新输入密码,或者使用短信验证码等方式。

3)区别

1、Cookie 只能存储 ASCII 码字符串,而 Session 则可以存取任何类型的数据,因此在考虑数据复杂性时首选 Session;

2、Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密;

3、对于大型网站,如果用户所有的信息都存储在 Session 中,那么开销是非常大的,因此不建议将所有的用户信息都存储到 Session 中。

8、如何理解HTTP协议是无状态的?

答:HTTP协议是无状态的(stateless),指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

9、什么是短连接和长连接

答:在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

八、网络安全

1、跨站脚本攻击XSS

答:1)概念

XSS是跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

2)危害

       1、窃取用户的 Cookie 值

2、伪造虚假的输入表单骗取个人信息

3、显示伪造的文章或者图片

3)防范

A、设置 Cookie 为 HttpOnly

设置了 HttpOnly 的 Cookie 可以防止 JavaScript 脚本调用,就无法通过 document.cookie 获取用户 Cookie 信息。

B、过滤特殊字符

例如将 < 转义为 &lt;,将 > 转义为 &gt;,从而避免 HTML 和 Jascript 代码的运行。

2跨站请求伪造CSRF

答:1)概念

跨站请求伪造(Cross-site request forgery,CSRF),是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。

XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户浏览器的信任。

2)与XSS的区别

       xss原理上利用的是浏览器可以拼接成任意的javascript,然后黑客拼接好javascript让浏览器自动地给服务器端发出多个请求(get、post请求)。 csrf原理上利用的是网站服务器端所有参数都是可预先构造的原理,然后黑客拼接好具体请求url,可以引诱你提交他构造好的请求。

3)防范

A、检查Referer字段

HTTP请求head里有个Referer字段,用于表明请求的来源地址。正常情况下,Referer字段和请求的地址是位于同一域名下的,如果是CSRF攻击发起的请求,那么Referer字段和请求的地址就不是同一域名了,那么服务器就能识别出恶意访问。设置了 HttpOnly 的 Cookie 可以防止 JavaScript 脚本调用,就无法通过 document.cookie 获取用户 Cookie 信息。

B、添加校验token

当用户正常访问网站时,服务器会生产一个随机数,并且把该随机数埋入该页面里(一般放在form表单,<input type="hidden" name="_csrf_token" value="xxxx">)。正常访问,客户的浏览器是能够得到并且返回该字段,而CSRF一开始是不知道该字段的数值,服务器接受请求发现该字段的异常,从而拒绝该请求。

3SQL 注入攻击

答:1)概念

所谓SQL注入,是将客户机提交或Web表单递交的数据,拼接成SQL语句字符串时。如果客户端提交的数据有非法字符或SQL语句关键字时,会造成执行的SQL语句语法错误,或执行结果不正确的情况。通过SQL注入,黑客可以最终达到欺骗服务器,执行恶意的SQL语句,甚至破坏数据库结构的目的。

2)防范

       A、使用参数化查询

Java 中的 PreparedStatement 是预先编译的 SQL 语句,可以传入适当参数并且多次执行。由于没有拼接的过程,因此可以防止 SQL 注入的发生。

       B、单引号转换

将传入的参数中的单引号转换为连续两个单引号,PHP 中的 Magic quote 可以完成这个功能。

4、拒绝服务攻击DoS

答:1)概念

拒绝服务攻击(denial-of-service attack,DoS),亦称洪水攻击,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。

分布式拒绝服务攻击(distributed denial-of-service attack,DDoS),指攻击者使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击。

2)防范

没有根治的办法,除非不用TCP/IP链接

A、确保服务器的系统文件是最新版本,并及时更新系统补丁

B、关闭不必要的服务

C、限制同时打开SYN的半连接数目

D、缩短SYN半连接的time out时间

E、正确设置防火墙

F、禁止对主机的非开放服务的访问

G、限制特定IP短地址的访问

H、启用防火墙的防DDos的属性

I、严格限制对外开放的服务器的向外访问

J、运行端口映射程序祸端口扫描程序,要认真检查特权端口和非特权端口。

K、认真检查网络设备和主机/服务器系统的日志。只要日志出现漏洞或是时间变更,那这台机器就可能遭到了攻击。

L、限制在防火墙外与网络文件共享。这样会给黑客截取系统文件的机会,主机的信息暴露给黑客,无疑是给了对方入侵的机会。

5I/O复用select/poll/epoll

答:select/poll/epoll 都是 I/O 多路复用的具体实现,select 出现的最早,之后是 poll,再是 epoll。

(1)select

有三种类型的描述符类型:readset、writeset、exceptset,分别对应读、写、异常条件的描述符集合。fd_set 使用数组实现,数组大小使用 FD_SETSIZE 定义。

              timeout 为超时参数,调用 select 会一直阻塞直到有描述符的事件到达或者等待的时间超过 timeout。

成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0。

(2)poll

pollfd 使用链表实现。

(3)select和poll比较

1、功能

select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。

A、select 会修改描述符,而 poll 不会;

B、select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 的描述符类型使用链表实现,没有描述符的数量的限制;

C、poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。

D、如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。

2. 速度

select 和 poll 速度都比较慢。

A、select 和 poll 每次调用都需要将全部描述符从应用进程缓冲区复制到内核缓冲区。

B、select 和 poll 的返回结果中没有声明哪些描述符已经准备好,所以如果返回值大于 0 时,应用进程都需要使用轮询的方式来找到 I/O 完成的描述符。

3. 可移植性

几乎所有的系统都支持 select,但是只有比较新的系统支持 poll。

(4)epoll

epoll_ctl() 用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理,进程调用 epoll_wait() 便可以得到事件完成的描述符。

从上面的描述可以看出,epoll 只需要将描述符从进程缓冲区向内核缓冲区拷贝一次,并且进程不需要通过轮询来获得事件完成的描述符。

epoll 仅适用于 Linux OS。

epoll 比 select 和 poll 更加灵活而且没有描述符数量限制。

epoll 对多线程编程更有友好,一个线程调用了 epoll_wait() 另一个线程关闭了同一个描述符也不会产生像 select 和 poll 的不确定情况。

(5)工作场景

1、select 应用场景

select 的 timeout 参数精度为 1ns,而 poll 和 epoll 为 1ms,因此 select 更加适用于实时要求更高的场景,比如核反应堆的控制。

select 可移植性更好,几乎被所有主流平台所支持。

2、poll 应用场景

poll 没有最大描述符数量的限制,如果平台支持并且对实时性要求不高,应该使用 poll 而不是 select。

需要同时监控小于 1000 个描述符,就没有必要使用 epoll,因为这个应用场景下并不能体现 epoll 的优势。

需要监控的描述符状态变化多,而且都是非常短暂的,也没有必要使用 epoll。因为 epoll 中的所有描述符都存储在内核中,造成每次需要对描述符的状态改变都需要通过 epoll_ctl() 进行系统调用,频繁系统调用降低效率。并且epoll 的描述符存储在内核,不容易调试。

3、epoll 应用场景

只需要运行在 Linux 平台上,并且有非常大量的描述符需要同时轮询,而且这些连接最好是长连接。

 

没有更多推荐了,返回首页