计算机网络与web技术
2013级高飙
第一章
计算机网络基本介绍:计算机网络是由不同通信媒体连接的、物理上独立的多台计算机组成的、在功能完善的网络软件的支持下实现资源共享和信息交换的系统
计算机网络的参考模型:
协议与分层:为实现计算机网络不同主机、不同操作系统之间的通信而规定的、网络全体成员都必须共同遵守的一系列规则和约定,被称为计算机网络协议(protocol)
第二章
1 异步通信
广义上讲,如果发送方和接收方之间在发送数据之前无需进行协调(时钟同步),就称这种通信是异步的(asynchronous)
从技术上讲,如果系统允许物理介质在两次传输之间空闲任意长时间,这种传输系统就被归为异步传输系统
由于异步传输机制允许发送器在传输之间空闲任意长时间,所以其在每次传输之前要发送一些额外信息(称为前导位或开始位),以使接收器能和信号同
2 波特率与比特率
波特率(baud rate): 每秒中硬件产生的电信号变化的次数
比特率(bit rate): 每秒钟传送的二进制位数,也叫“位速率”
比特率=波特率*[log2(电平数)]
3 带宽:
每个传输系统都有自己的模拟带宽(analog bandwidth),称为硬件带宽
带宽的限制起因于物质与能量的物理特性,每一种物理传输系统都只有有限的带宽
带宽为B,使用K种电压进行数据编码的传输系统上,最大数据传输速率D(每秒位数)为:
D = B * log2(K)
4 香农定理
信号平均功率S 噪声为N
D = B * log2(1 + S/N)
5 传输方式半双工,单工,全双工
6 串行传输与并行传输
串行传输是将组成字符的各个位(bit)串行地发往线路
串行传输的特点:
传输速度较低,一次一位
通信成本也较低,只需一个信道
支持长距离传输,目前计算机网络中所用的传输方式均为串行传输字符编码的各位(比特)同时传输
并行传输的特点:
传输速度快:一位(比特)时间内就可传输一个字符
通信成本高:每位传输要求一个单独的信道支持;一个字符包含8个二进制位,则
并行传输要求8个独立的信道的支持
不支持长距离传输:由于信道之间的电容感应,远距离传输时,可靠性较低。目前、
还仅限于计算机内的传输
7远距离通信各种复用技术
信号电流在传导过程中会逐渐减弱,这称为信号损耗(signal loss),所以它不能沿导线传播任意长的距离
连续的振荡信号要比其他形式的信号能传播更远的距离。这一结果是绝大多数远距离通信系统的基础
远距离通信要发送连续的振荡信号,称为载波(carrier)。
调制与解调:
两种调制技术:
1调幅(amplitude modulation):使载波的信号强度随待发送信息而变化
2 调频(frequency modulation):使载波的中心频率随待发送信息而变化
调幅和调频每传送一个码位都需要至少一个载波周期
更为高效的调制:
移相调制(phase-shift modulation)技术通过突然改变载波的相位来编码数据。每一个变化称为一个相位移动(phase shift)。在一个相位移动之后,载波继续振荡,但它从载波周期的一个新位置开始
奈奎斯特定理指出,如果编码方式允许在单个载波周期内编码多位(bit)数据,则单位时间内允许发送的数据位(bit)将增加
在相位移动调制技术中,通常把相位偏移选择具有2的幂次方大小。若发送器用T个bit建立一个相位移动,则接收器能通过观察相位移动的程度抽取全部T个bit数据。那么在使用这种调相技术后,系统在一秒内能传输的最大位数(也就是比特率)就可以是波特率的若干倍
比特率=波特率*单个调制状态对应的二进制位数
在某些情况下,比特率也可能小于波特率
调制解调器解调
多路复用:
1 频分多路复用
两个或多个使用不同载波频率的信号,可以在同一介质上同时传输而互不干扰
频分多路复用(frequency division multiplexing,FDM)允许多对发送器和接收器在一个共享介质上同时通信。每对发送/接收器所使用的载波,都工作在唯一的、互不干扰的频率上
基带与带宽
人们利用频分多路复用建立了许多网络技术,它们允许在同一介质上同时进行相互独立的通信。使用频分多路复用(FDM)的主要动机在于对高吞吐率的需求
为了达到更高的吞吐率,底层的硬件使用电磁频谱中更大的一部分(即更高的带宽)。这样,宽带技术(broadband technology)这一术语用来描述这些技术
另一方面,任何只使用电磁频谱中很小的一部分,在介质上一次只发送一个信号的技术称为基带技术(baseband technology)
扩展频谱:FDM还有一个特殊应用,就是使用多个载波来提高可靠性。这一技术被称为扩展频谱(spread spectrum),并被用于多种目的
采用扩频技术的主要原因是为了在某些频率上偶尔会发生干扰的传输系统中提高可靠性
例如采用无线电波的网络
有些拨号调制解调器也使用扩频传输的形式来改善可靠性
2 波分多路复用
技术上,光的FDM称为波分多路复用(wave division multiplexing)
原理:利用波分复用设备将不同信道的信号调制成不同波长的光,并复用到光纤信道上。在接收方,采用波分设备(如棱镜)分离不同波长的光
用途:波分多路复用实质上是利用了光具有不同波长的特征。随着光纤技术的使用,基于光信号传输的复用技术得到越来越多的重视
3 时分多路复用
各个信源轮流使用同一个共享的通信介质
同步时分复用(STDM):信源以循环(round-robin)方式使用共享介质
统计时分复用:信源轮流发送数据,但如果某个信源没有数据需要发送,复用器就跳过这个信源所占用的那段时隙。大多数计算机网络都采用统计复用形式
4 码分多路复用
正交向量空间中的值可以互不干扰地复合和分离,因此可根据码型结构的不同来实现信号分割
所有用户使用同一频率,占用相同的带宽,各个用户可以同时发送或接收信号,用各自不同的码片序列区分,各个用户相互之间没有干扰
它不是一项新技术,作为一种多址方案它已经成功地应用于卫星通信和蜂窝电话
分组帧与差错纠正
分组交换:为使发送方和接收方能协调,并保证所有共享网络资源的计算机能公平、迅速地接入网络,大多数计算机网络都把数据分成叫做“分组”(packet)的小块,计算机通过共享资源轮流地发送分组
因为每个分组都很小,所以不会使任何计算机的等待接入时间太长
分组交换使用了统计时分复用技术,来自多个信源的通信竞争使用信道
因为使用了分组技术,所以计算机网络常常被称为分组网络(packet network),或分组交换网络(packet switching network)
物理帧:为了区分分组的一般概念与某个给定网络所采用的分组形式之间的不同,一般使用术语帧(frame)来指数据链路层(或网络接口层)中特定的分组格式
每种网络技术都会确切地定义网络所采用的帧的细节,例如其大小和格式
数据充填:为了允许帧包含任意数据,必须在传输之前修改数据,并在接收之后恢复数据。用来修改数据的技术叫做数据充填(data stuffing),因为它们插入了额外的位或字节
字节充填(byte stuffing)指使用面向字符型硬件的数据充填,如在拨号线上发送IP数据的点对点协议(PPP)采用字节充填
比特(位)充填(bit stuffing)指使用面向比特型硬件的数据充填,如帧中继技术采用比特充填
有面向字符的协议与面向比特的协议:HDLC填充:在发送方,任意时刻发送5个连续的1后,在发送下一个比特前插入一个0
而对于接收方,如果5个连续的1到达了,则:
如果下一个比特是0,则一定是填充的,将被丢掉
如果下一个比特是1,则继续看下一个比特:
如果是0(即最后的8比特是01111110),则它一定是帧结束标记
如果是1,则一定是传输错误,需要丢弃整个帧;并且等到下一个01111110出现
才能再次开始接收数据
检错与纠错:
检错:为了检测差错,网络系统通常要随数据一起发送一些附加位,接收端通过这些附加位可以对所接收的数据进行判断看其是否正确。如果存在错误,它不能纠正错误而是通过反馈信道传送一个应答帧,把这个错误的结果告诉给发送端,让发送端重新发送该信息,直至接收端收到正确的数据为止。
常用检错机制:目前比较常见的检错机制
奇偶校验码(parity check)
校验和(checksum)
循环冗余校验(CRC check)
第三章
局域网:从点到点到共享信道。
拓扑结构:星型,环型,总线型
介质访问控制办法:
1 CSMA/CD(带冲突检测的载波监听多址访问,802.3)
CSMA/CD是英文carrier sense multiple access with collision detection 的缩写,即“载波侦听多址访问/冲突检测”,或“带冲突检测的载波侦听多址访问”
算法规则:(本质上是改进了的1-坚持型的)
监听总线,等待空闲时发送数据
如果两台(或更多)计算机同时传输,冲突就会发生;当发生冲突时,每个计算机选择一个小于最大延迟x(x是每台计算机自己确定的值)的随机延迟;这样选择到最小延迟的计算机将首先发送帧
如果一台计算机遇到连续的冲突,那么在随后的每次冲突后,它都把x加倍
2 CSMA/CA
无线局域网使用一种改进的机制—避免冲突的载波侦听多址访问(Carrier Sense Multiple Access with Collision Avoidance,CSMA/CA)
源计算机在传输一个帧之前先发送很短的控制消息
目的计算机接收到控制消息后,发送另一个控制消息表明已经准备好接收数据
当源计算机接收到响应的控制消息后,它就可以开始发送帧
在CSMA/CA中,控制消息的传输可能会发生冲突,但能够很容易地处理。当这种冲突发生时,发送者可以随机等待一段时间,然后重发控制消息。因为控制消息比数据帧要短得多,所以发生第二次冲突的可能性也要比传统以太网要小很多
以太网:以太网:以太网是最早的局域网,也是目前最常见、最具有代表性的局域网
它的核心思想是使用共享的公共传输信道,来源于夏威夷大学的ALOHA无线通信网络
不监听,直接发送;若冲突,则在整帧发完后,再以概率p重发
最早的以太网是由美国施乐公司(Xerox)建立的,其灵感来自“电磁辐射是可以通过发光的以太来传播的”,这也是“以太网”的名字的由来
以太网逐步标准化后形成了802.3协议规范
以太网是一种基于总线的局域网,它使用改进了的1-坚持的CSMA/CD协议;我们通常说到以太网,指的就是那些采用CSMA/CD 协议的局域网
以太网的帧格式:
以太网的新老版本能够保持兼容的主要原因在于帧格式,它自从20世纪70年代DIX被创建后就一直保持不变(82版和79版在帧格式上无变化)
三部分:固定长度的头部、可变长度的载荷以及CRC校验码
帧类型可指明数据中所包含的报文类型,如是IP数据报(0800)还是ARP报文(0806)
网络接口卡:大多数计算机网络以固定的速率通过介质传输数据,这个速率通常比计算机处理位串的速率快。为了解决速度上的不匹配,连接在网络上的每台计算机都包含一种叫做网络接口卡(NIC)的特殊功能的硬件
网卡的功能像一种I/O设备:它为特定的网络技术而制造,并且不需要CPU就能处理帧的发送与接收过程
网卡和计算机之间的通信是通过计算机主板上的I/O总线,以并行传输方式进行的
逻辑拓扑与物理拓扑:双绞线以太网布线物理上形成星型拓扑,而集线器是星型的中心。尽管如此,它的功能像总线--所有计算机共享一个通信介质,计算机必须竞争介质的使用,并且任何时候至多只有一台计算机能传输数据
为了解决这个明显的矛盾及理解网络技术,我们需要区分物理拓扑与逻辑拓扑。从物理上讲,双绞线以太网使用星型拓扑。逻辑上讲,双绞线以太网的功能像总线。这样,双绞线以太网通常叫做星型总线(star-shaped bus),或被称为盒中总线(bus in a box)
局域网的距离控制:局域网的连接距离是设计局域网时考虑的一个基本因素。限制局域网连接距离的主要因素就是公平访问机制
两个最常用的访问机制是CSMA/CD和令牌传递,它们的响应时间都和网络的大小成正比。为了达到较小的网络延迟,局域网的连接距离就会受到限制
另一个限制因素是硬件发射固定能量的电磁波。不幸的是,由于电信号在导线中传输时逐渐变弱,信号不可能被传输到无限远
局域网硬件是为固定的最大电缆长度而设计的,当超过该距离后,局域网便不能正常运行中继器:限制局域网连接距离的一个因素是电子信号在传输时会衰减。为消除这个限制,一些局域网用中继器来连接两根电缆。中继器并不理解分组或信号编码,它只是放大接收到的信号,并将放大后的信号进行转发
网桥:网桥(bridge)能处理一个完整的帧(因此是数据链路层设备)
网桥以混杂模式(promiscuous mode)侦听每个网段上的信号,当它从一个网段接收到一个帧时,网桥会检查并确认该帧是否已完整地到达,然后根据需要就把该帧传输到其他网段。网桥能够隔离故障两个局域网网段通过网桥连接后,就象一个局域网一样。桥接局域网上任何一对计算机都能互相通信,计算机不知道是否有网桥把它们隔开
交换机:交换局域网的功能就象用网桥连接多个局域网网段。连到交换机的每台计算机就像连到一个专用的局域网网段。许多LAN技术都可以使用交换机
交换或桥接网络的主要优点在于它能提供最大的性能:交换机允许多对计算机间同时交换数据
虚拟交换机:通过加入虚拟化措施,可以对交换机进行扩展,扩展后的交换机称为虚拟局域网交换机(VLAN switch)
允许管理员进行配置,使一台交换机可以仿真多台独立的交换机
管理员划定交换机上的一组端口并将它们指派给VLAN 1,再把另一组端口指派给VLAN
2,
一旦配置完成,一台VLAN交换机看起来就像是多台交换机
比如,当VLAN 2的一台计算机广播一个分组时,只有在同一个VLAN上的计算机才能接收到该广播分组的副本
第四章
1 分组交换机
广域网中的基本构件是分组交换机(packet switch)。可以这么理解:广域网由一些分组交换机互连而构成,然后将计算机连接在交换机上
分组交换机:能把完整的分组从一个节点传送到另一个节点的设备
2 存储/转发
不像共享局域网在一个给定时间内只允许一对计算机交换帧,广域网允许许多计算机同时发送分组。广域分组交换系统的基本模式是存储/转发(store and forward)式交换
为完成存储/转发功能,分组交换机必须在存储器中对分组进行缓冲:当分组到达时,分组交换机的输入/输出硬件把一个分组副本放在存储器中并通知处理器,然后进行转发操作
处理器检查分组,决定应该送到哪个接口,并把分组输送到输出硬件
好处:使用存储/转发模式的系统能使分组以硬件所可容许的最快速度在网络中传送更重要的是,如果有许多分组都必须送到同一个输出设备,分组交换机能将分组一直存储在存储器中排队,等待该输出设备准备好发送。这项技术使分组交换机能对同时到达的短时突发分组进行缓冲在一般情况下,分组不会在存储器中停留时间过长,但如果有很多计算机要同时发送分组时,就会增加延迟。
3 路由算法
存储下一站信息的表通常称为路由表(routing table),转发一个分组到下一站的过程称为路由(routing)
使用两部分层次地址转发分组时,首先检查分组目的地址中的第一部分(对应于分组交换机的那部分)
如果它与本交换机相一致,就利用第二部分地址把分组发送到计算机。否则,利用该地址在路由表中选择下一站
为了使广域网能正确地运行,分组交换机都必须有一张路由表,并且都能转发分组在较小的网络中,路由表中重复的项不多。然而,表示大型广域网的图中,其路由表会有数百或更多重复的项
大多数广域网系统都允许路由表使用一个单项来代替那些具有相同下一站的项,称为默认路由(default route)或默认路由表项(default routing table entry)
一个路由表中只有一个默认项,并且比其他项的优先级低;如果一个给定的目的地址没有明确的项对应,则使用默认项
有两种方法:
静态路由:分组交换机启动时由程序计算和设置路由,此后路由不再改变
优点是简单、网络开销小
缺点是缺乏灵活性,不能随时应对网络变化
动态路由:分组交换机启动时由程序建立初始路由,当网络变化时随时更新
由于大型网络在设计上都留有冗余连接来应对偶发的硬件故障,所以大多数大型网络都采用动路由选择算法的设计目标:
最优化(Optimization)
简单性与低开销(Simplicity and low overhead)
强壮性和稳定性(Robustness and stability )
快速收敛(Rapid convergence )
灵活性(Flexibility)态路由
4 私有网络与公众网络
单个公司或个人拥有和使用的网络称为私有(private)的,而公共线路运营商拥有的网络称为公用(public)网络。局域网技术大多数用于私有网络,大单位也可拥有连接多个地点的计算机的私有广域网几乎所有公用网络都是广域网;对于网络来说,公用是指服务上的公用,而非所传输数据的公用。私有网络为使用该网络的人所拥有。公用网络就和电话系统一样,属服务提供者所拥有和操作。任何用户都可以使用公用网络与其他用户通信
5 VPN
虚拟私有网络(Virtual Private Network,VPN)结合了公用和私有网络的优点,它允许具有多个站点的公司拥有一个假想的完全私有的网络,而使用公用网络作为其站点之间交流的传输线路。为建立一个VPN,公司要为其每个站点购买一套特殊的硬件和软件系统,该系统安放在公司的私有(即内部)网络和公用网络之间。每个VPN系统必须配置好该公司的其他VPN系统的地址,使软件只在这些VPN系统之间交换分组。为保护隐私,VPN还在每个分组发送前进行加密
6 面向连接/无连接的服务
从层次上看,广域网中的最高层就是网络层,网络层为连接在网络上的主机提供各种服务。虽然不同网络中接口机制的细节各不相同,但接口的一般类型被称为接口模式(interface paradigm)或称为服务模式(service paradigm)
网络被划分为两大类:
面向连接型服务(connection-oriented service,COS),也称为虚电路服务
无连接型服务(connectionless service,CLS),也称为数据报服务
面向连接型(虚电路)服务模式
主要优点:记帐方便而且在连接中断时能立即告诉通信的计算机(例如当硬件不能正常工作时)
无连接型(数据报)服务模式
主要优点是初始开销小—无连接网络允许计算机直接发送数据,而不必等待连接
无连接系统中的故障可能不被(立即)发现—计算机在网络故障发生后仍继续发送分组
7 异步传送模式ATM
为了能使分组交换机高速工作又能达到低延迟、低抖动和回波抑制,ATM技术中将所有数据都划分成很小的、固定长度的分组,叫做信元(cell)。ATM采用面向连接型(虚电路)服务模式(connection-oriented service paradigm,COS)。这种模式要求应用进程首先要为通信建立虚拟信道(virtual channel,VC),通信完了要拆除它。ATM为每个VC分配一个24位标识符,前8位是虚通道标识符(virtual path identifier,VPI),后16位是虚信道标识符(virtual channel identifier,VCI)。ATM网络由一个或多个称为ATM交换机的硬件设备构成。每个交换机都要在它的转发中为一条VC设置一个表项。
第五章
1 网络协议
规定计算机信息交换中消息的格式和含义的协定称为网络协议(network protocol),或
计算机通信协议(computer communication protocol)
2 分层模型
帮助设计者控制协议软件复杂性的基本工具,就是分层模型
通过分层可以把复杂的通信问题划分成若干不同的部分,然后设计者可以每次集中解决一个部分。分层的科学原理为进行分层设计提供了基础。分层原理阐述:在目的端的第N层上,要把源端第N层上进行过的变换,进行逆变换
3 栈:分层软件
协议软件的组织遵循所设计的分层模型。每一层对应于一个软件模块,厂商将模块集总称为栈(stack)
理论上说,发送的数据在发送机上向下通过栈的每一层,在接收机上向上通过栈的每一层由于每个栈是独立开发的,一个特定栈的协议不能与另一个栈的协议交互
在过去的三十多年里,有不同的厂商开发了一些协议栈,如Novell公司的Netware、苹果公司的AppleTalk以及IBM公司的SNA等,但这些协议栈目前已基本为TCP/IP协议所代替
4 协议采用的通用技术
使用排序来处理乱序和重复分组
无连接网络不保证顺序;硬件设备操作失误可能导致重复的分组
使用确认和重发来处理丢失分组
分组丢失是一个网络的基本问题
使用唯一的会话标识符来防止重传
避免前次会话对后次会话的干扰
使用停-等式协议或滑动窗口机制来控制流量
使用降低速率来处理网络拥塞
5 停等协议
计算机并不都以相同的速度运行。当一台计算机通过网络发送数据的速度比目的计算机接收数据的速度快时,就出现了数据过载,从而导致数据丢失
解决数据过载问题的技术称为流量控制(flow control)机制
最简单的方式是停-等模式:
每发出一个分组便等待接收方的回答;当接收方准备好接收下一个分组时,发送一个控制报文,通常就是某一种形式的确认
这种简单的停-等协议避免了过载,却降低了网络带宽的利用率
6 滑动窗口
程序设置发送方和接收方使用固定的窗口尺寸(window size),这是在收到确认前可以发送的最大数据量
发送方在开始发送数据时,提取数据填入第一个窗口,并发送每个分组的副本。如果有可靠性要求,发送方应保留一份副本,以备万一需要时重发
接收方必须准备好缓冲区空间以接收整个窗口。当分组顺序到达时,接收方把分组传给应用程序,并返回一个确认给发送方
当确认到达后,发送方丢弃已被确认的副本,并发送下一个分组
可以通过调节窗口大小使计算机充分利用可用的硬件带宽,获得高吞吐率
7 网络拥塞
6台分组交换机。如果到达站点3的数据速率远远快于站点3所能通过连线发到站点4的数据速率,那么站点3就只能把数据放在发送队列中排队,这样队列不断增大,有效延迟增加,从而形成拥塞(congestion)
如果拥塞持续下去,分组交换机将发生内存溢出,开始丢弃分组并导致重发。如果这种情况
一直持续,整个网络将变得不可用,这种情况称为拥塞崩溃(congestion collapse)
协议应该监视网络,一旦发现拥塞就迅速地做出反应,避免拥塞崩溃
当拥塞出现时,让分组交换机通知发送方
分组交换机给每个由于拥塞而产生延迟的分组头部设置一个码位,接收该分组的计算机如果发现分组头部中置了该码位,就在确认报文中加入有关消息来通知源发者,或者
当出现拥塞时,让分组交换机发送一个特殊报文给分组的源发者
将分组丢失作为拥塞的估计。这是因为现代网络中,硬件工作良好,大多数的分组丢失是由于拥塞而不是硬件故障引起
对拥塞的适当响应,主要是降低分组传送速率
8 路由器
用于连接异构网络的基本硬件是路由器(router)
路由器是一台专门完成网络互联任务的专用计算机
路由器可以将多个使用不同技术(包括不同的介质、物理编址方案或帧格式)的网络互联起来
9 互联网体系结构
互联网由一组通过路由器连接起来的网络构成
虽然商用路由器可以连接多个网络,但人们很少使用单个路由器连接所有的网络,因为:路由器的CPU和内存要用来处理每个被传递的分组,而单个路由器的处理器不足以处理太多的网络之间的通信量
冗余度能改善互联网的可靠性。在某个网络或路由器发生故障时,其他路由器可沿另外的通路传输通信业务
在规划互联网方案的时候,允许使用单位按使用要求来选择
网络的数量和类型
用于互联的路由器数量
以及具体的互联拓扑结构
互联网拓扑结构的具体细节,常常依赖于物理网的带宽、预期的通信量、单位的可靠性要求,以及路由器硬件的费用和性能等
10 TCP/IP协议
TCP/IP协议是Internet的标准通信协议
制定Internet数据分组(packet)格式和规则(对应网络层)
确保数据能传送到目标系统上(对应传输层)
IP协议主要的任务是为数据传送提供正确的路径,以及提供相邻节点之间的数据传送
IP协议实现了主机之间相同格式数据的传输,但不能保证数据分组在传输中不会出现差错TCP协议功能包括分组重发技术、时序调整和拥塞控制机制等,以保证数据在Internet上的可靠传输
互联层的核心协议是IP,其他协议有ARP、ICMP、IGMP
其中ARP为地址解析协议,负责网络接口层地址的互联层地址解析,比如将互联层地址解析为硬件地址
ICMP为互联网控制报文协议,负责提供诊断功能,报告关于IP数据分组传送的错误或信息IGMP为Internet组管理协议,负责IP多点传送组的管理
传输层核心协议是传输控制协议TCP和用户数据报协议UDP
其中,TCP 提供一个一对一的、数据无差错的可靠性传输服务
UDP则提供一个一对一或一对多、无连接、不可靠的通信服务,主要用于不要求数据报顺序
10 ip编址方案
在TCP/IP协议栈中,编址由互联网协议(Internet Protocol,IP)规定
目前的IP标准规定每台主机分配一个32位二进制数,作为该主机的互联网协议地址(Internet Protocol address),常简写为IP地址或互联网地址
在互联网上发送的每个分组中,都含有这种32位的发送方(源)IP地址和接收方(目的)IP地址
为了在使用TCP/IP的互联网上发送信息,一台计算机必须知道接收信息的远程计算机的IP 地址
IP地址是一个32位的二进制数。每个地址属于五类地址之一,而地址的类,由地址的头4位决定。一个包含254到65534台主机的网络可分配给一个B类网络号;更小的网络可分配一个C类网络号,更大的网络被分配一个A类网络号A for0 Bfor 10 cfor110D for 1110 Efor 1111
12 特殊ip地址
本地地址(全0):当计算机启动时,可以使用TCP/IP中的一个协议来自动获得自己的IP地址;为此,IP保留了全0地址来表示本台计算机
网络地址(网络前缀+后缀为全0):表示网络本身,如128.211.0.0表示一个已分配给B类前缀为128.211的网络
直接广播(网络前缀+后缀全1):对指定网络中的所有站点进行直接广播,例如送信息到190.43.255.255,表示将信息送给网络号为190.43中的每一台主机
有限广播(全1):limited broadcast,在本地物理网内进行广播(路由器不转发)
回送地址:网络号127是用来做循环测试用的,不可拿来做其他用途。例如如果送信息给IP 地址127.0.0.1,则此信息将回传给自己
第一个数字W不可高于223,因为它们是给Multicast(多址通信即组播,D类,前缀1110)或保留给将来使用(E类,前缀1111)
13 子网和无类地址
有类编址方案因为因特网的成长而逐渐受到限制
分给的类小则地址不够用,类大则造成许多地址闲置无用
子网编址(subnet addressing)和无类编址(classless addressing)可以在某种程度上克服这种限制
它们不采用三个基本IP地址类,而是改为直接利用前缀和后缀在地址的任意码位上进行分界
例如,对于一个只有9台主机的网络,ISP可以分配28位长的前缀,其余4位作为主机后缀(可容纳14台主机),而不必分配给该网络一个C类地址
无类和子网编址方案要求随同地址一起还要存储一个32位的指定网络前缀和后缀的分界值,这个值称为地址掩码(address mask)或子网掩码(subnet mask)
用位值1来标记网络前缀,用位值0来标记主机后缀
使用掩码来保存分界值,可以把目的地址和地址掩码进行“逻辑与”操作,直接得到目的地址的网络前缀,提高地址计算效率
14 CIDR表示法
CIDR表示法是一种新的语法,它通过在一个地址的后面附加一个斜杠符和一个用十进制数表示的掩码大小值,来指定与此地址相关的掩码
如地址128.10.0.0由16位网络前缀和16位主机后缀组成,用CIDR表示法可以写成:
如果有两个客户都只有12台计算机,那么ISP可以采用CIDR方法将一个C类网络(比如192.211.15.0)划分为三个部分,其中两个,如192.211.15.16/28和192.211.15.32/28,分别分配给客户,而剩余部分留作备用;虽然客户都有同样28位的掩码,但它们前缀不同,所以不会产生混淆
15地址解析
将计算机的协议地址翻译成等效的硬件地址的过程,叫做地址解析(address resolution),即协议地址被解析(resolved)为正确的硬件地址
主机或路由器当需要向同一物理网络内的另一台计算机发送数据时,要进行地址解析
一台计算机没有必要,同时也不能解析远程网络上的计算机地址
ARP协议
TCP/IP协议组包含了一个标准的地址解析协议(Address Resolution Protocol,ARP)。ARP定义了计算机交换的ARP报文格式和处理ARP报文的规则
这一标准规定了一个ARP请求报文是全网广播的,但响应报文却是直接发送的
尽管ARP报文格式通用于任何协议和硬件地址,但在实际应用中,此协议主要还是用于将一个IP地址解析成一个以太网地址
当一台计算机给另一台计算机发一个ARP报文时,此报文被嵌入在一个硬件帧中进行传输,即把它当作数据来传输
技术上,把一个报文放在帧中传输叫封装(encapsulation)。ARP被直接封装于一个硬件帧中网络硬件不了解ARP报文格式,且不检测其中每个域中的内容
第一步,接收方从报文中取出发送方的地址绑定信息,检查cache中是否存在发送方的地址若无,则将发送方地址绑定信息加入自己的cache中,以便以后加以利用
若已有,则用从报文中取出的绑定信息替代已有的绑定信息
第二步,接收方检查报文中的“操作”域以确认报文类型
若是一个响应报文,接收方以前一定发送过一个请求并在等待所需要的绑定信息
若是一个请求报文,接收方比较“目标协议地址”域与自己的协议地址,如果一样,则要回发一个ARP响应
16动态主机配置协议DHCP
为了帮助一台新加入某网络的主机获得其IP地址
早期使用反向地址解析协议RARP,允许计算机从服务器获得IP地址;同时可以借助ICMP 协议发送“Address Mask Request”和“Router Discovery”报文,获得指定网络上使用的地址掩码和路由器地址
后来又有了自举协议(Bootstrap Protocol,BOOTP),允许主机通过一个请求获得多个协议参数
IETF扩展了BOOTP的功能,形成了DHCP
当主机启动时,它广播一个DHCP请求,服务器则发送一个DHCP应答。管理员一般将固定地址分配给服务器,而将动态地址分配给其他主机
按需分配的地址不是永久的,而是由DHCP产生一个有限的地址租用期。当租期满时,主机可以释放地址,也可以与DHCP服务器重新协商延长租期,但服务器拥有绝对的控制权
分组出现丢失或重复时
如果主机没有收到响应,必须重新发送它的请求报文;如果收到重复的响应,则忽略这个多余的副本
对服务器地址进行高速缓存
主机一旦使用DHCP Discover报文找到了一个DHCP服务器,就将服务器的地址存入缓存中
以备后用,从而提高租期续约过程的效率
避免因同时出现大量请求而发生阻塞
为防止网络中的大量主机同时发送请求涌入DHCP服务器而导致阻塞,DHCP协议要求每个主机在发送(或重发)请求之前要等待一个随机时间
17 Ipv6改革动机
IPv4定义的有限地址空间将被耗尽
许多企业不得不使用NAT将多个内部地址映射成一个公共IP地址,但使用NAT技术会造成私有地址网络的连接问题
妨碍互联网的进一步发展
需要地址配置自动化、简单化
越来越多的设备使用IP地址地址配置自动化
Internet主干网路由器有维护大型路由表的能力
层次路由机制平面路由机制
IP层安全需求
更好的实时QoS支持的需求
改革难点
由于对IP的依赖性以及IP带来的后续惰性,因而产生了一个重要的问题:
因为IP处于所有因特网通信的中心位置,所以改变IP就会改变整个因特网
下一代IP被称为IPv6
IPv6保留了IPv4很多非常成功的设计特性
无连接,每个数据报都含有目的地址,并可独立选择路径
头部含有最大跳数
此外还保留了IPv4可选项中提供的大多数通用性设施
但IPv6的变化非常大,它几乎修改了所有的细节
第六章
1 IP数据报
虚拟分组:传统的硬件帧格式不适合作为互联网上的分组格式
由于路由器可能连接异构的网络,不同类型网络的帧不同,它不能直接将网上送来的帧传给另一个网络
路由器也不能简单地重新格式化帧的头部,因为两个网络可能使用不兼容的地址格式
为了克服异构性,一个互联网必须定义一种与硬件无关的分组格式
结果就产生了一种能无损地在底层硬件中传输的通用的(universal)、虚拟的(virtual)分组IP数据报:TCP/IP协议使用IP数据报(IP datagram)这个名字来命名一个互联网分组
IP数据报与硬件帧有着同样的基本格式:IP数据报也是以一个头部开始,后跟数据区
数据报头部中源地址和目的地址都是IP地址
数据报的大小取决于发送数据的应用。大小可变的数据报使得IP可以适应各种应用的需要2 IP头部格式
3 IP封装、分片和重装的整个过程
由于在物理网络中,数据是以帧的形式传输的。因此数据报也必须封装成帧来传输。将整个数据报作为数据装入帧的数据区就称为封装。如下图所示
帧中的目的地址是数据报去往的下一站的地址;这个地址是通过将下一站的IP地址翻译成等效的物理地址而得到的
每一种物理网络都规定了一帧所能携带的最大数据量,这一限制称为最大传输单元(maximum transmission unit, MTU)。因此在互联网中,路由器从一个网络上接收到的帧并不意味着能在另一个网络中直接发送。为此,IP协议中采用一种对数据报进行分片的技术当路由器收到一个数据报,其大小超过所去网络的MTU时,路由器会将它分成若干较小的“片”(fragment),然后再分别发送这些数据片
每一片都使用IP数据报格式,但只携带了原数据报的一部分数据
在IP数据报的报头中,与一个数据报的分片和组装相关的域有标识域、标志域与片偏移域标识(identification)域
为一个数据报的所有片分配一个标识ID值
标志(flags)域
占3 bit。目前只有前两个比特有意义
标志字段中的最低位记为MF (More Fragment)。MF = 1,表示后面“还有分片”的数据报。MF = 0,表示这已是若干数据报片中的最后一片
标志字段中间的一位记为DF (Don’t Fragment),意思是“不能分片”。只有当DF = 0时才允许分片
片偏移(fragment offset)域,13个bit长
表示该分片在整个数据报中的相对位置(8B为一个单位)
在所有片的基础上重新产生原数据报的过程叫重装(reassembly)
数据报的分片是在传输路径中MTU不同的两个网络间的路由器上发生的,而片的重装在目的主机中进行:
这样做可以减少路由器中的状态信息数量
这样做允许动态改变路径
一个数据报的一部分片到达的同时,很可能仍有一些片被延迟或丢失。尽管这时数据报还不能被重组,接收方仍须保留所有已收到的片,以防未到的片可能只是被延迟
当数据报的某一片第一个到达时,接收方开始一个计时器。引入IP重组计数器的结果是全有/全无(all-or-nothing):要么所有的片都到达了并且IP重组数据报,要么IP丢弃了整个数据报
分片之后,路由器将每一片转发给它的目的地。如果某片遇到一个MTU值更小的网络时,分片方案规划得很周到,它使得片本身能够再被分片
IP对原来的片与再分的子片并不加以区分,接收方也并不知道收到的是一个第一次分片后形成的片,还是一个已经被多个路由器多次分片后形成的片
同等对待所有片的优点在于:接收方并不需要先重装子片后才能重装原数据报。这样一来就节省了CPU时间,减少了每一片的头部中所需的信息量
4 Ipv6数据报
IPv6数据报分为“不可分片部分”和“可分片部分”
“不可分片部分”指基本头部加上控制路由的头部
IPv6不将包含分片信息的域放在基本头部,而是放在一个单独的扩展头部中,该头部的存在
就表示该数据报是一个片(“不可分片部分”+“第N片头部”+“第N片内容”)
在IPv4中,由路由器负责执行分片任务。但在IPv6中,则由发送方主机负责分片,路由器不再参与。如果需要分片,发送方主机将收到中间路由器发送的ICMP差错报文。发送方会不断减小分片长度,一直到分片能最终送达目的端为止
主要原因是IPv6可能根据需要会对路由进行控制,使各片都按同一路径传输。
5 ICMP差错报告机制
尽管IP使用了“尽力而为”(best-effort)的传送语义,但IP还包含了差错检测和报告机制除了一个头部校验和可用于检测传送错误外,IP还实现了一个差错报告系统叫做互联网控制报文协议(Internet Control Message Protocol,ICMP)
ICMP包含信息报文以及差错报文。当一个数据报出现问题时,路由器将发送一个ICMP差错报文给源主机
ICMP利用8位长的“类型”域来识别每个报文
差错报文例子:
源抑制(Source Quench)。当一个路由器收到太多的数据报以至于用完了缓冲区,就必须丢弃到来的数据报。当丢弃一个数据报时,路由器就会向创建该数据报的主机发送一个源抑制报文。当一台主机收到源抑制报文时,就需要降低传送率
超时(Time Exceeded)。有两种情况会发送超时报文。当一个路由器将一个数据报的生存时间(Time To Live)域减到零时,路由器会丢弃这一数据报,并发送一个超时报文。另外,在一个数据报的所有片到达之前,重组计时器到点了,则主机也会发送一个超时报文
目的不可达(Destination Unreachable)。
无论何时,当一个路由器检测到数据报无法传递到它的最终目的地时,就向创建这一数据报的主机发送一个目的不可达报文
这种报文要告知是特定的目的主机不可达,还是目的主机所连的网络不可达。换句话说,这一差错报文能让我们区分是某个网络暂时不在互联网上(例如一个路由器出错),还是某一特定主机临时断线(例如主机关了)
重定向(Redirect)
当一台主机创建了一个数据报发往远程网络,主机先将这一数据报发给一个路由器,由路由器将数据报转发到它的目的地
如果路由器发现主机错误地将应发给另一路由器的数据报发给了自己,则使用一个重定向报文通知主机应改变它的路由
一个重定向报文能指出是一台特定主机还是一个特定网络发生了变化,后者更为常见
参数问题。指出数据报中的某一参数不正确
ICMP利用IP来传送每一个差错报文。ICMP报文整个被装入IP数据报的数据区中,而IP数据报又被封装进帧中进行传输
每一个ICMP报文的产生总是对应于一个数据报,而数据报在头部中都含有其源主机的IP 地址,路由器可取出作为ICMP报文的目的地址
如果携带ICMP差错报文的数据报又出了错,不再有差错报文被发送—以此避免互联网被携带差错报文的差错报文所拥塞
ping使用ICMP回应请求报文和回应答复报文来实现
当调用ping程序时,它发送一个包含ICMP回应请求的报文给目的地,然后等待一段很短的时间。如果没有收到应答,则重新传送请求。如果重传的请求仍没有收到应答(或收到一个ICMP目的不可达报文),ping声称该远程机器为不可达
远端主机上的ICMP软件负责答复该回应请求报文。按照协议,只要收到回应请求,ICMP 软件必须发送回应答复报文
Traceroute程序的操作过程(理想状况)
发送一份TTL字段为1的IP数据报给目的主机
处理这份数据报的第一个路由器将TTL值减1,丢弃该数据报,并发回一份ICMP超时报文这样就得到了该路径中的第一个路由器的地址。然后Traceroute程序发送一份TTL值为2的数据报,这样我们就可以得到第二个路由器的地址……
由于IP使用尽力传递,数据报还可能丢失、重复、或乱序传递,因而,路由跟踪程序必须准备处理重复响应和重发丢失的数据报
由于路由可能动态地发生变化,路由跟踪程序更适合于一个相对比较稳定的互联网
?尽管分片解决了异构网络问题,但却常常影响到性能
?从源端到目的地的路径上的最小的MTU叫通路MTU(path MTU)。只要数据报不大
于通路MTU,就可以直接被传送到目的地而不被分片
?如何确定通路MTU呢?
?源端主机上的IP软件发送一系列的探测报文,每一探测报文的数据报的头
部的DF标志位都被置为1而防止分片
?如果探测报文的数据报比路径上的某个网络的MTU大,连在此网上的路由
器会丢弃探测报文数据报,同时发回一个要求分片的ICMP报文给源主机
?源主机在收到这一差错报文后,就会发送另一个较小的探测报文;----如此这
般,直到某一探测报文成功
6 UDP协议
IP无法区分在同一台计算机中的多个应用程序
在数据报头部中源和目的地址域只是标识计算机主机;它没有包含更多码位来标识主机上的应用程序
能够允许将单个应用程序作为通信端点(endpoint)的协议,被称为端到端协议或者传输协议(end-to-end or transport protocol)
TCP/IP协议的设计者不是采取在IP基础上增加附加特性的方法来标识应用,而是设置一个单独的层次(传输层)来配置端到端协议
UDP(User Datagram Protocol)是一个简单的面向数据报的传输层协议,它允许应用程序发送和接收单个报文,每个报文用单独的IP数据报传输
端到端:它提供协议端口,使得应用进程能够向其他进程发送数据报,进行进程间的数据通信
UDP数据报是无连接、不可靠的:UDP不提供确认、消息反馈控制,这一点与IP数据报相同。它的可靠性需要由应用程序本身提供
面向报文:使用UDP的应用进程所发送和接收的数据是单个报文
8 TCP协议