计算机网络基础学习笔记
2018-05-03 13:24 改改~_~ 阅读(1282) 评论(0) 编辑 收藏 举报1.基本概念划分
OIS的七层协议:
应用层、表示层、会话层、运输层、网络层、数据链路层、物理层。
OIS的五层协议:
应用层、运输层、网络层、数据链路层、物理层。
由下往上介绍如下:
2.第一章 物理层
特性:机械特性、电气特性、功能特性、过程特性。
数据通信系统:源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接受端、接受方)
源系统:
- 源点:源点设备产生要传输的数据。源点又称为源站或者信源
- 发送器:通常,源点生成的数字比特流要通过发送器编码后才能够在传输系统进行传输。典型的发送器就是调制器。现在很多PC实用内置的调制解调器。
目的系统:
- 接收器:接受传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。典型的接收器就是解调器,它把来自传输路线上的模拟信号进行解调,提取出在发送端置入的信息,还原出发送端产生的数字比特流。
- 终点:终点设备从接收器获取传送来的数字比特流,然后把信息输出。终点又称目的站,或信宿。
信号:模拟信号(连续信号)、数字信号(离散信号)
通信方式:单向通信(单工通信)、双向交替通信(半双工通信)、双向同时通信(双全工通信)
香农公式:信道的极限信息传输速率C为:
C=B log2(1+S/N)
式中:B是信道带宽(赫兹),S是信号功率(瓦),N是噪声功率(瓦)。该式即为著名的香农公式,显然,信道容量与信道带宽成正比,同时还取决于系统信噪比以及编码技术种类香农定理指出,如果信息源的信息速率R小于或者等于信道容量C,那么,在理论上存在一种方法可使信息源的输出能够以任意小的差错概率通过信道传输。该定理还指出:如果R>C,则没有任何办法传递这样的信息,或者说传递这样的二进制信息的差错率为1/2。
信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高。
物理层下面的传输媒体
传输媒体可分为两大类:导引型传输媒体(有线传输铜线或者光纤)和非导引型传输媒体(自由空间,无线传输)
第二章 数据链路层
数据链路层使用信道种类:点对点信道、广播信道
链路:从一个结点到相邻结点的一段物理路线(有线或无线),而中间没有任何其他的交换点。
数据链路:当在一条线路上传输数据时,除了必须有一条物理路外,还必须有一些必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上就构成了数据链路。现在最常用的是使用网络适配器来实现这些协议。
帧:点信道的数据链路层的协议数据单元。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出来并上交给网络层。在因特网中,网络协议数据单元就是IP数据报(简称数据报、分组或包)。
数据链路层三个基本问题:
封装成帧、透明传输、差错检测。
- 封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。帧定界可以使用特殊的帧定界符。帧开始字符SOH,帧结束字符EOT
- 透明传输当传送的帧是文本文件组成的帧时。其数据部分不会出现SOH和EOT这样的帧定界控制字符。不管从键盘上输入什么字符都能传输过去,这样的传输就是透明传输。“透明”某一个实际存在的事物看起来是好像不存在一样。为了解决不透明问题在接收端的数据链路层吧数据送网络层之前删除这个插入的转义字符,这种方法称为字节填充或字符填充。
- 差错检测比特传输过程中可能会出现差错,1可能会变成0,0可能会变成1.这就叫做比特差错。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率。目前在数据链路层广泛使用了循环冗余检测CRC( Cyclic Redundancy Check)的检错技术。CRC运算就是在数据M后面添加供差错检测用的n位冗余码。为了检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence).在CRC检测的基础上增加帧编号、确认、重传机制
点对点协议PPP(高级数据链路控制HDLC)
1.PPP协议满足的需求
(1)简单
(2)封装成帧
(3)透明性
(4)多种网络层协议 在同一物理链路上同事支持多种网络协议
(5)多种类型的链路
(6)差错检测
(7)检测链接状态
(8)最大传送单元
(9)网络层地址协商
(10)数据压缩协议
2.PPP协议的组成
(1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检测的8比特数据),也支持面向比特的同步链路。IP数据报在平PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制。
(2)一个用来建立、配置和测试数据链路的链路控制协议LCP。
(3)一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层。。。。
PPP帧首部和尾部分别为四个字段和两个字段
3.PPP协议的工作状态
链路的发送响应:
(1)配置确认帧(Configure-Ack):所有的选项都接受。
(2)配置否认帧(Configure-Nak):所有选项都理解但是不接受。
(3)配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商。
口令鉴别协议PAP(Password Authentication Protocol).口令握手鉴别协议CHAP(Challenge-Handshake Authentication Protocol).
4.使用广播信道的数据链路层
1.局域网的数据链路层
星形网、环形网、总线网。
共享信道分为两种:
(1)静态划分信道
(2)动态媒体接入控制,又称为多点接入。
- 随机接入 所有的用户可随机的发送信息
- 受控接入 用户不能随机的发送信息必须服从一定的控制。
2.CSMA/CD协议
CSMA/CD协议的要点。:
- 多点接入
- 载波监听 不管在发送前,还是发送中,每个站都必须不停的检测信道。
电磁波在1km电缆的传播时延约为5us
一个站不可能同时进行发送和接受(但必须边发送边监听信道)。因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。
凡是长度小于64字节的帧都是由于冲突而异常终止的无效帧。以太网还规定了帧间最小间隔为9.6us,相当于96比特时间。
5.使用广播信道的以太网
1.使用集线器的星型拓扑
集线器:在星形拓扑的中心增加了一种可靠性非常高的设备。
集线器的特点:
(1)使用集线器的以太网在逻辑上仍是一个总线网,个站共享逻辑上的总线,使用的还是CSMA/CD协议。网络中的各占必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。
(2)一个集线器有很多接口,一个集线器就像一个多接口的转发器。
(3)集线器工作在物理层,他的每个接口仅仅简单地转发比特~~接收到1就转发1,就到到0就转发0,不进行碰撞检测。
(4)集线器采用了专门的芯片,进行自适应串音回波抵消。这样就可以使接口转发出去的较强信号不致对该接口接收到的较弱的信号产生干扰。
2.以太网的MAC层
(1)MAC层的硬件地址
实际上就是适配器地址或适配器标识符
发往本站的帧:单播(unicast)帧(一对一),即受到的帧的MAC地址与本站硬件地址相同。
广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧。
多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。
第三章 网络层
3.1网络层提供的两种服务
网络层提供的服务:
(1)虚电路服务。(2)数数据报服务
(网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务)**
3.2网际协议IP
与IP协议配套使用的三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
网络连接的中间设备:
- 物理层使用的中间设备转发器(repeater)
- 数据链路层使用的中间设备网桥或桥接器(bridge)
- 网络层使用的中间设备路由器(router)
*在网络层以上使用的中间设备叫网关(gateway)
3.3IP地址
IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围唯一的32位标识符。IP地址由因特网名字和数字分配机构ICANN(Internet
Corporation for Assigned Names and Numbers)进行分配。
IP地址的编址方法三个阶段:
- 分类的IP地址 就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。网络号必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)
- 子网的划分
-
构成超网
IP地址 ::{<网络号>,<主机号>}
IP地址并不仅仅指明一个主机,而是还指明了主机所连接到的网络。
IP地址的特点:
- 每一个IP地址都是由网络号和主机号组成。IP地址是一个分等级的地址结构。第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),剩下的主机号(第二级)由得到该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号转发分组,这样就可以使路由器表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间。
- 实际上IP地址是标志一个主机和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。由于一个路由器至少连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络
- 在IP地址中,所有分配到的网络号的网络都是平等的。
物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。
(1)在IP层抽象的互联网上只能看到IP数据报。
(2)虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
(3)在局域网的链路层,只能看到MAC帧。
(4)皮层抽象的互联网屏蔽了下层复杂的细节,使用统一的、抽象的IP地址研究主机和主机或者路由器之间的通信。
IP数据报首部的固定部分中的各字段
- 版本 占4位,IP协议的版本。
- 首部长度 占4位,可表示最大十进制数值是15.
- 区分服务 占8位,用来获得更好的服务
- 总长度 总长度字段为16位
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。
- 标识 占16位
- 标志 占3位,标志字段中的最低位记为MF(More Fragment)。MF = 1 表示后面“还有分片”的数据报。MF= 0 表示这已经是数据报中的最后一个。标志字段中间的一位记为DF(Don’t Fragment),意思“不能分片”,只有当DF = 0时才允许分片。
- 片偏移 占13位,片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移一8个字节为偏移单位,每个分片的长度一定是8字节的整数倍。
- 生存时间 占8位,TTL(Time To Life),数据报在网络中的寿命。
- 协议 占8位,表示数据报使用何种协议。
- 首部检验和 占16位,检验数据报的首部,不包括数据部分。
- 源地址 占32位
- 目的地址 占32位
3.4划分子网和构造超网
1.划分子网
(1)从两级IP地址到三级IP地址
IP地址::={<网络号>,<子网号>,<主机号>}
(2)子网掩码
从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行子网的划分。32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。所以使用子网掩码(subnet mask).
使用子网掩码的好处:不管网络有没有子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就能立即得出网络地址来。这样在路由器处理到来的分组是就可以采用同样的算法。
(现在因特网的标准规定:所有的网络必须使用子网掩码,路由表中也必须有子网掩码这一栏。如果不划分子网掩码,使用默认子网掩码。)
A类地址的默认子网掩码是255.0.0.0,或0xFF000000;
B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000;
C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00;
子网掩码是一个网络或一个子网的重要属性。划分子网增加了灵活性,但却减少了能够连接在网络上的总计数。
2.使用子网时分组转发
路由表必须包含三项内容:目的网络地址、子网掩码和下一跳地址。
3.无分类编址CIDR(构成超网)
1网络前缀
无分类域路由选择CIDR(Classless Inter-Domain Routing)
CIRD特点:
(1)CIDR消除了传统的A类、B类、C类地址以及划分子网的概念,可以更加有效的分配IPv4的地址空间。使用“网络前缀”,从三级变回无分类的两级编址。
IP地址::={<网络前缀>,<主机号>}
CIDR还使用“斜线记法”,在IP地址后面增加“/”,然后写上网络前缀所占的位数。
(2)CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道之歌地址块的起始地址(最小地址)和最大地址,以及地址块中的地址树。(斜线记法中,斜线后面的数字就是地址掩码中1的个数)
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合。路由聚合也称构成超网。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀边长。
2最长前缀匹配
网络前缀,应当从匹配结果中选择具有最长网络前缀的路由,叫做最长前缀匹配。
3使用二叉线索查找路由表(为了提高二叉线索的查找速度,使用压缩技术)
3.5网际控制报文协议ICMP
1.ICMP报文种类有两种,ICMP差错报告报文和ICMP询问报文
ICMP差错报告报文:
- 终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
- 源点抑制 当路由器或主机由于拥塞而丢弃数据报时,就向源点抑制报文,使源点知道应当把数据报的发送速率放慢
- 时间超长 当路由器接收到生存时间为0的数据报时,除了丢弃数据报外,还要向源点发送时间超过报文。
- 参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就该丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向) 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
ICMP询问报文:
- 回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 时间戳请求和回答 ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
3.6因特网的路由器选择协议
1.理想的路由算法
(1)算法必须是正确的和完整的。
(2)算法应能适应通信量和网络拓扑的变化。
(3)算法在计算上应简单。
(4)算法应具有稳定性。
(5)算法应是公平的。
(6)算法应是最佳的。“最佳”只能是相对于某一种特定要求得出的较为合理的选择而已。
2.分层次的路由选择协议
因特网将整个互联网划分为许多较小的自治系统(autonomous system),记为AS。一个AS对其他AS表现出的是一个单一和一致的路由选择策略。
在目前的因特网中,一个大的ISP就是一个自治系统。因特网把路由选择协议划分为两类:
- 内部网关协议IGP(Interior Gateway Protocol) 在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么路由选择协议无关。如RIP和OSPF协议。
-
外部网关协议EGP(External Gateway Protocol) 若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议)。当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
自治系统之间的路由选择也叫域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)
内部网关协议RIP
2.1工作原理
RIP(Routing Information Protocol)是内部网关协议中最先的到广泛使用的协议,叫路由信息协议。RIP是一种分布式的基于距离向量的路由选择协议,最大特点就是简单。
RIP协议“距离”:从一路由器到直接连接的网络的距离定义为1.从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1.
RIP协议的“距离”也成为“跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP认为好的路由就是通过的路由器的数目少,即距离短。RIP允许一条路径最多只能包含15个路由器。RIP只适用于小型互联网。
RIP协议的特点:
- 仅和相邻路由器交换信息。
- 路由器交换的信息是当前本路由所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息
路由表中最重要的信息就是:到某个网络的距离最短,下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离。这种更新叫做距离向量算法。
2.2距离向量算法
(1)对地址X的路由器发来的RIP报文,每一个项目都有三个关键数据:到目的网络N,距离d,下一跳路由器是X。
(2)对修改后的RIP报文中的每一个项目,进行以下步骤:
若原来的路由表没有目的网络N,则把该项目添加到路由表中,若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目,若收到的项目中的距离d小于路由表中的距离,则进行更新。
(3)若3分钟黑没有收到响铃路由器的更新路由表,则把此距离路由器记为不可达的路由器,即把距离置为16.
(4)返回。距离向量算法的基础就是Bellman-Ford算法(或Ford-Fullkerson算法):设X是结点A到B的最短路径上的一个结点。若把路径A->B拆成两段路径A->X和X->B,则每一段也都是最短路径。
2.3RIP协议的报文格式
RIP报文由首部和路由部分组成。路由标记填入自治系统号ASN(Autonomous System
Number),这是考虑使RIP有可能受到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。一个RIP保温最多可包括25个路由,RIP报文最大长度4+20*25=504字节.
RIP存在一个问题是当网络出现故障时,要经过比较常的时间才能将此信息传送到所有的路由器。这一特点叫做:好消息传播得快,而坏消息传播得慢。
内部网关协议OSPF
2.4OSPF(Open Shortest First)开放最短路径优先。
它只是一个协议名字,并不表示其他的路由选择协议不是“最短路径优先”。OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),OSPF有三个要点:
(1)向本自治系统中所有路由器发送信息。使用洪泛法(flooding),路由器通过所有输出端口向所有相邻的路由器发送信息。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。链路状态就是说明本路由器都和那些路由器相邻,以及该链路的“度量”(metric)。用来表示费用、距离、时延、带宽、等等。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送信息。
OSPF特点:
(1)OSPF允许管理员给每条路由指派不同的代价。OSPF对于不同类型的业务可计算出不同的路由。
(2)若果到同一个目的网络有多条相同代价的路径,那么可以将同信量分配给这几条路径,这叫做路径间的负载均衡。
(3)所有在OSPF路由器之间交换的分组,都具有鉴别的功能。
(4)OSPF支持可变长度的子网划分和无分类的编址CIDR.
(5)由于网络中的链路状态可能经常发生变化,因此OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新。
2.5OSPF的五种分组类型
- 问候(hello)分组,用来发现和维持邻站的可达性。
- 数据库描述(database description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 链路状态请求(link state request)分组,向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新(link state update)分组,用洪泛法对全网更新链路状态。
- 链路状态确认(link state acknowledgment)分组,对链路更新分组的确认。
外部网关协议BGP
BGP采用了路径向量(path vector)路由选择协议。BGP协议交换路由信息的结点数量级是自治系统个数的量级。
BGP-4的四种报文:
(1)open(打开)报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化。版本(1字节)、本自治系统号(2字节)、保持时间(2字节)、BGP标识符(4字节)、可选参数长度(1字节)、可选参数。
(2)update(更新)报文,用来通告某一路由的信息,以及列出要撤销的多条路由。不可行路由长度(2字节)、撤消的路由、路径属性总长度(2字节)、路径属性、网络层可达性信息NLRI
(3)keeplive(保活)报文,用来周期性地证实邻站的连通性。只有BGP的19字节长通用首部。
(4)notification(通知)报文,用来发送检测到的差错。差错代码(1字节)、差错子代码(1字节)、差错数据
3.7路由器的构成
1路由器的结构
路由器可以划分两大部分:路由选择部分和分组转发部分
路由选择部分也叫控制部分,核心构件是路由选择处理机;分组转发部分由三部分组成:交换结构、一组输入端口、一组输出端口
2.交换结构
通过存储器、通过总线、通过互连网络
3.8 IP多播
1.IP多播的基本概念
能够运行多播协议的路由器称为多播路由器(multicast
router)。在因特网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。多播地址只能用于目的地址,而不能用于源地址。224.0.1.0至238.255.255.255
全球范围都可使用的多播地址。
IP多播分为两种。一种是只在局域网上进行硬件多播,另一种则是在因特网的范围进行多播。
2.网际组管理协议IGMP和多播路由选择协议
(1)IP多播需要两种协议
多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成成员接入的网络。
(2)网际组管理协议IGMP
IGMP工作分两个阶段:
第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。
第二阶段:组成员关系使动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还基础是组成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。如果没有响应,认为本网络的主机已经离开这个组,就会转发给其他多播路由器。
(3)多播路由选择协议
多播路由选择实际上就是要找出以源主机为根节点的多播转发树。
转发多播报时使用了以下三种方法:
- 洪泛与剪除 采用反向路径广播RPB(reverse path broadcasting)的策略。RPB的要点是:每一个路由器在收到一个多播数据报时,先检查数据报是否从源点经最短路径传送来的。如果在多播转发树上的某个路由器发现它下游树枝已经没有该多播组的成员,就赢把它和下游的树枝一起剪除。
- 隧道技术 隧道技术适用于多播组的位置在地理上很分散的情况。
- 基于核心的发现技术
下面是一些建议使用的多播路由选择协议:
距离向量多播路由选择协议DVMRP
基于核心的转发树CBT
开放最短通路优先的多播扩展MOSPF
协议无关多播-密集方式PIM-DM
3.9虚拟专用网VPN和网络地址转换NAT
1.虚拟专用网VPN
在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
利用公用的因特网作为机构专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(virtual private network)。所有通过因特网传送的数据都必须加密。
2.网络地址转换NAT
NAT(network address translation)。使用端口号的NAT也叫网络地址与端口号转换NAPT(network address and port translation)
第四章 运输层
4.1运输层协议概述
4.1.1进程之间的通信
运输层向它上面的应用层提供通信服务,两个主机进行通信就是两个主机中的应用进程相互通信。通信的真正端点并不是主机而是主机中的进程。端到端的通信是应用进程之间的通信。运输层有一个重要功能:复用(multiplexing)和分用(demultiplexing)。
复用指在发送方不同的应用进程都可以使用同一个运输层协议传送数据;分用指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。运输层还要对收到的报文进行检测。根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP。运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑信道对上层的变现却因运输层使用的不同协议而又很大的差别。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接UDP协议时,这种逻辑通信信道任然是一条不可靠信道。
4.1.2运输层的两个主要协议
TCP/IP运输层的两个主要协议:
(1)用户数据报协议UDP(user datagram protocol)
(2)传输控制协议TCP(transmission control protocol)
按照OSI术语,两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元TPDU(transport protocol data
unit);在TCP/IP协议中称为TCP报文段或UDP用户数据报。UDP在传送数据之前不需要先建立连接。TCP则提供面向连接的服务。
4.1.3运输层的端口
运输层的复用和分用功能类似。应用程所有的应用进程都可以通过运输层再传到IP层(网络层),这就是复用。运输层从IP层收到数据后必须交付致命的应用进程,这就是分用。
在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
TCP/IP使用源端口和目的端口两个重要字段,用一个16位端口号来标志一个端口。
运输层端口号分为两大类:
(1)服务器端使用的端口号
- 熟知端口号(well-known port number)或系统端口号
- 登记端口号
(2)客户端使用的端口号
4.2用户数据报协议UDP
4.2.1UDP概述
UDP主要特点:
(1)UDP是无连接的,发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。
(2)UDP使用尽最大努力交付
(3)UDP是面向报文的
(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
(5)UDP支持一对一、一对多、多对一和多对多的交互同信。
(6)UDP的首部开销小,只有8字节,TCP20字节。
4.2.2UDP的首部格式
IP数据报的检验和检验IP数据报的首部,UDP检验和是把首部和数据部分一起都检验的。
4.3传输控制协议TCP
4.3.1TCP主要特点
(1)TCP是面向连接的运输层协议。
(2)每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能点对点的。
(3)TCP提供可靠的交付。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。
(4)TCP提供全双工通信。
(5)面向字节流。TCP中的“流”指的是流入到进程或者从进程流出的字节序列。
4.3.2TCP连接
套接字 socket = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(两个套接字)所确定。
TCP连接::={socket1,socket2} = {(IP1:port1),(IP2:port2)}
4.4可靠传输的工作原理
4.4.1停止等待协议
全双工通信的双发即使发送方也是接收方。
(1)无差错情况
(2)出现差错
上图(b)在传输过程中出现差错的情况。
(3)确认丢失和确认迟到
使用确认和重传机制,可实现在不可靠的传输网络上实现可靠的通信。
(4)信道利用率
4.4.2连续ARQ协议
4.5报文段的首部格式
4.6TCP可靠传输的实现
第一,缓存空间和序号空间都是有限的,并且都是循环使用的。第二,由于实际缓存或窗口中的字节数是非常之大的,因此无法再图中把一个个字节的位置标注清楚。
发送缓存用来暂时存放:
(1)发送应用程序传送给发送发TCP准备发送的数据;
(2)TCP已发送出但尚未收到的确认的数据。
接受缓存用来暂时存放:
(1)按序到达的、但尚未被接受应用程序读取的数据;
(2)未按序到达的数据。
TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT。TCP保留了RTT的一个加权平均往返时间RTTs(又称为平滑的往返时间)。
新的RTTs = (1-α) * (旧的RTTs)+α * (新的RTT样本)
上式中,0≦α<1。
超时计时设置的超时重传时间RTO应略大于上面得出的甲醛平均往返时间RTTs。
RTO = RTTs +4 * RTTd (RTO是RTT的偏差的加权平均值)
新的RTTd=(1-β)*(旧的RTTd)+β*|RTTs-新的RTT样本| (β的推荐值是0.25)
在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本。这样的出的加权平均RTTs和RTO就比较准备。
选择确认SACK(selective ACK)
4.7TCP的流量控制
流量控制(flow control)就是让发送方的发送率不要太快,要让接受方来得及接收。利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP的窗口单位是字节,不是报文段。
4.8TCP的拥塞控制
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路器不致过载。拥塞控制多要做的都有一个前提,就是网络能够承受现有的网络负荷。拥塞控制是一个全局性的过程,涉及到所有的主机、多有的路由器,以及与降低网络传输性能有关的所有因素。相反,流量控制旺旺指点对点通信量的控制,是个端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
图中横坐标是提供的负载(offered
load),代表单位时间内输入给网络的分组数目。因此提供的负载也称为输入负载或网络负载。纵坐标是吞吐量(throughput),代表单位时间从网络输入的负载数目。拥塞控制可分为开环控制和闭环控制两种方法。开环控制方法就是在涉及网络时实现将有关发生拥塞的因素考虑周到,力求网络在工作时不产生拥塞。
闭环控制是基于反馈环路的概念。以下是闭环控制的具体措施:
(1)检测网络系统以便检测到拥塞在何时、何处发生。
(2)把拥塞发生的信息传送到可采取行动的地方。
(3)调整网络系统的运行以解决出现的问题。
几种拥塞控制方法:
慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery)。
1.慢开始和拥塞避免
发送方维持一个叫做拥塞窗口(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口。
慢开始算法的思路是:先探测一下,由小到大逐渐增大发送窗口,也就是说由小到大逐渐增大拥塞窗口数值。使用慢开始算法后,没经过一个传输轮次(transmission round),拥塞窗口cwnd就加倍。
拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增加,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样,拥塞窗口cwnd按现行规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。
2.快重传和快恢复
快重传算法首先要求接受方每收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等待自己发送数据时才进行确认。
快恢复算法:
(1)当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把满开始门限ssthresh减半。这是为了预防网络发生拥塞。
(2)由于发送方现在认为网络很可能没有发生拥塞,因此与慢开始不同之处是现在不执行慢开始算法,而是把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
在采用块回复算法时,慢开始算法只是在TCP连接建立时和网络出现超时时才能使用。发送方的发送窗口一定不能超过对方给出的接收窗口值rwnd.
发送方窗口的上限值 = Min[rwnd,cwnd]
当rwnd
4.9 TCP的运输连接管理
TCP连接的建立
A主动打开连接,B被动打开连接。
B的TCP服务器进程先创建传输控制块TCB(transmission control block),准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。如有,即做出响应。
A的TCP客户进程也是首先穿件传输控制模块TCB,然后向B发出连接请求报文段,这时首部中的同部位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN
= 1 的报文段)不能携带数据,但要消耗掉一个序号。这时TCP客户进入SYN-SENT(同步已发送)状态。
B收到连接请求报文段后,如同意建议连接,则向A发送确认。在确认报文段中应把SYN位和ACK位都置1,确认号是ack = x+1
,同时也为自己选择一个初始序号seq =
y。这个报文段也不能携带数据,但要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。
TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号ack = y + 1,而自己的序号seq = x
+1。TCP的标准规定,ACK报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍为seq =
x+1。这时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
当B收到A的确认后,也进入ESTABLISHED状态。
这种连接过程叫做三次握手(three-way handshake)。
TCP的连接释放
TCP的有限状态机
第五章 应用层
5.1 域名系统DNS
5.1.1 域名系统概述
域名系统DNS(domain name system)是因特网使用的命名系统,用来把便于人们使用的机器的名字转换为IP地址。域名系统其实就是名字系统。
5.1.2 因特网的域名结构
任何一个连接在因特网上的主机或者路由器,都是有一个唯一的层次结构的名字,即域名(domain name)。域可以分为顶级域、二级域、三级域等等。DNS规定,域名中的标号都是有英文字母和数字组成,每一个标号不超过63个字符(为了方便记忆最好不要超过12个字符),也不区分大小写字母。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的顶级域名则写在左右边。由多个标号组成的完整域总共不超过255个字符。
顶级域名分为三大类:
(1)国家顶级域名nTLD。如cn,us,uk….
(2)通用顶级域名gTLD。如com,net,org……
(3)基础结构域名(infrastructure domain):这种域名只有一个,即arpa,用于反向域名解析,因此又称为反向域名。
域名服务器:
(1)根域名服务器(root name server)
(2)顶级域名服务器TLD
(3)权限域名服务器
(4)本地域名服务器(local name server)
域名的解析过程:
(1)主机向本地域名服务器的查询一般都采用递归查询(recursive query)。
(2)本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query)。
5.2 文件传送协议
5.2.1 FTP
文件传送协议FTP(file transfer protocol)是英特网上使用得最广泛的文件传送协议。
网络文件系统NFS,允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
5.2.2 TFTP
简单文件传送协议TFTP(trivial file transfer protocol)。有两个优点:
(1)TFTP可用于UDP环境。
(2)TFTP代码所占内存较小。这对较小的计算机或某些特殊用途的设备是很重要的,这些设备不需要硬盘,只需要固化TFTP和UDP以及IP的小容量只读存储器即可。
TFTP主要特点:
(1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节。
(2)数据报文按序编号,从1开始。
(3)支持ASCⅡ码或二进制传送。
(4)可对文件进行读或写。
(5)使用简单地首部。
5.3 远程终端协议TELNET
TELNET又称为终端仿真协议。它定义了数据和命令应怎样通过因特网,这些定义就是所谓的网络虚拟终端NVT(network virtual terminal)。所有的通信都是用8位一个字节,在运转时,NVT使用7位ASCⅡ码传送数据,而当高位置1时用作控制命令。
5.4 万维网WWW
万维网是一个大规模、联机式的信息储藏所。万维网是一个分布式的超媒体(hypermedia)系统,它是超文本系统的扩充。万维网以客户-服务器方式工作。客户程序向服务器程序发送请求,服务器程序向客户程序发回客户所要的万维网文档。万维网使用统一资源定位符URL(uniform resource locator)来标志万维网上的各种文档。使用超文本传送协议HTTP实现交互。http是一个应用层协议,它使用TCP连接进行可靠的传送。使用超文本标记语言HTML显示万维网文档。
1.http的操作过程
http是面向事务的应用层协议,http协议是无状态的。万维网的工作过程如下图:
万维网的工作过程
2.代理服务器
代理服务器(proxy server)是一种网络实体,又称为万维网高速缓存(web cache)。
3.http的报文结构
http有两类报文:
(1)请求报文–从客户向服务器发送请求报文。
(2)响应报文–从服务器到客户的回答。
http请求报文和响应报文都是由三部分组成:
(1)开始行,用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行,而在响应报文中的开始行叫做状态行。在开始行的三个字段之间都可以空格隔开,最后的“CR”和“LF”分别代表回车和换行。
(2)首部行,用来说明浏览器、服务器或报文主体的一些信息。首部行可以有好几行,但也可以不使用。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
(3)实体主体,在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。
请求报文的主要特点:请求报文的第一行“请求行”只有三个内容,即方法,请求资源的URL,以及http的版本。
响应报文的主要特点:响应报文的第一行就是状态行。包含三个内容,http版本,状态码,以及解释状态码的简单短语。
邮件系统
一个电子邮件系统有三个主要组成构件:用户代理、邮件服务器,以及邮件协议(包括邮件发送协议,如SMTP,邮件读取协议,如POP3)。用户代理和邮件服务器都要运行这两种协议。
简单网络管理协议SNMP:
(1)SNMP本身,负责读取和改变代理中的对象名及其状态数值。
(2)管理信息结构SMI,定义命名对象和定义对象类型的通用规则,以及把对象和对象的值进行编码的基本编码规则BER。
(3)管理信息库MIB,在管理的试题中穿件了命名对象,并规定其类型。
第六章 网络安全
6.1 网络安全问题概述
6.1.1计算机网络面临的安全威胁
计算机网络面临两大类威胁:被动攻击和主动攻击。
1.被动攻击
指攻击者从网络上窃听他人的通信内容。通常把这类攻击称为截获。在被动攻击中,攻击者只是观察和分析某一个协议数据单元PUD而不干扰信息流。这种攻击又称为流量分析。
2.主动攻击
(1)篡改 攻击者故意篡改网络上传送的报文。
(2)恶意程序 计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹
(3)拒绝服务DoS 指攻击者向因特网上的某个服务器不停地发送大量分组,是因特网或服务器无法提供正常服务。若因特网上的成百上千的网站集中攻击一个网站,则称为分布式拒绝服务DDoS,或网络带宽攻击或连通性攻击。
6.1.2计算机网络安全内容
1.保密性
2.安全协议的设计
3.访问控制
访问控制(access control)也叫做存取控制或介入控制。必须对介入网络的权限加以控制,并规定每个用户的接入权限。使用多级安全访问控制。
6.1.3一般的数据加密模型
图中所示的加密和解密用的密钥K(key)是一串秘密的字符串。在传送过程中可能出现密文的截取者。
密码编码学是密码体制的设计学,而密码分析学则是在未知密钥的情况下从密文推演出明文或者密钥的技术。
6.2 两类密码体制
6.2.1对成密钥密码体制
对成密钥密码体制,即加密密钥与解密密钥是相同的密码体制。数据加密标准DES(64位二进制数据)属于对称密钥密码体制。DES的保密性取决于对密钥的保密,而算法时公开的。在DES之后出现了国际数据加密算法IDEA(128位密钥)。
6.2.2公钥密码体制
公钥密码体制(又称为公开密钥密码体制)。公钥密码体制使用不同的加密密钥与解密密钥。公钥密码体制的产生主要是因为两个方面的原因,一是由于对称密钥密码体制的密钥分配问题,二是由于对数字签名的需求。在公钥密码体制中,加密密钥PK(public key)即公钥,是想公众公开的,而解密密钥SK(即私钥)是保密的。任何加密方法的俺去眼形取决于密钥的长度,以及攻破密文所需的计算量,
6.3 数字签名
数字签名必须实现的三点功能:
(1)接受者能够合适发送者对报文的签名。叫做报文鉴别。
(2)接受者确信所收到的数据和发送者发送的完全一样而没有被篡改过。叫做报文的完整性。
(3)发送者时候不能抵赖对报文的签名。叫做不可否认。
6.4 鉴别
鉴别是要验证通信的对方的却是自己所要通信的对象,而不是其他的冒充者。鉴别可分为两种,一种是报文鉴别,一种是实体鉴别。
6.4.1 报文鉴别
当我们传送不需要加密的报文时,应当使接受者能用很简单的方法鉴别报文的真伪。报文摘要MD(message digest)是进行报文鉴别的简单方法。
6.4.2实体鉴别
实体鉴别是在系统接入的全部持续时间内和自己通信的对方实体只需验证一次。
6.5 密钥分配
密钥分配采用网内分配方式。
6.6 因特网使用的安全协议
6.6.1网络层安全协议
1.IPsec协议
IPsec协议中有两个重要的协议:鉴别首部AH(authentication header)协议和封装安全有效载荷ESP(encapsulation security payload)协议。AH协议提供源点鉴别、数据完整性,但不能保密。ESP协议能提供源点鉴别,数据完整性和保密。
在发送IPsec数据报之前,在源实体和目的实体之间必须创建一条网络层的逻辑连接,即安全关联SA(security association)。这样,IPsec就把传统的因特网无连接的网络层变为具有逻辑连接的一个层。安全关联是从源点到终点的单向连接,能够提供安全服务。
2.IPsec数据报格式
IPsec两种工作方式:运输方式(transport mode)、隧道方式(tunnel mode)
6.6.2运输层安全协议
两个协议:安全套接字层SSL(secure socket layer)、运输层安全TLS