描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302500278丛书名: 普通高等学校网络工程专业规划教材
本书深入浅出地介绍了计算机网络的基本理论与工作原理、计算机数据通信的基础知识、计算机网络体系结构、物理层、数据链路层、网络层、传输层、应用层、计算机网络安全和无线网络技术等。本书配套了《计算机网络技术习题与实验指导》,通过加强实践环节,能使读者对计算机网络技术的理解进一步深化。
本书既可作为高等学校计算机类和信息技术类专业的教材,也可作为相关技术人员的参考资料。
1.1计算机网络的基本概念1
1.2因特网2
1.2.1互联网与因特网2
1.2.2互联网构成3
1.2.3因特网的发展5
1.2.4因特网的组成8
1.2.5按作用范围划分因特网12
1.3计算机网络的性能指标13
1.3.1速率13
1.3.2带宽14
1.3.3吞吐量14
1.3.4时延15
1.3.5时延带宽积15
1.3.6往返时延16
1.3.7利用率16
1.4计算机网络体系结构16
1.4.1协议与层次16
1.4.2计算机网络体系结构的发展17
1.5小结22
第2章物理层23
2.1物理层概述23
2.1.1物理层功能23
2.1.2物理层功能详解24
2.2数据通信基础252.2.1基本概念25
2.2.2数据通信系统的基本模型26
2.2.3数字信号与编码技术27
2.2.4模拟信号与调制解调技术31
2.3第0层的传输介质33
2.3.1导引型传输媒体33
2.3.2非导引型传输媒体36
2.4信道的极限容量40
2.5信道多路复用技术42
2.5.1频分多路复用43
2.5.2时分多路复用43
2.5.3波分多路复用45
2.5.4码分多路复用45
2.6小结49
第3章数据链路层50
3.1基本概念51
3.1.1链路与数据链路51
3.1.2信道与链路的区别52
3.2数据链路层使用的信道分类52
3.3点对点信道的数据链路层三个基本问题52
3.3.1封装成帧53
3.3.2透明传输54
3.3.3差错检测55
3.4点对点协议59
3.4.1点对点协议的介绍59
3.4.2点对点协议的三个组件及帧的格式60
3.4.3点对点协议在不同链路中对透明传输的不同处理61
3.4.4点对点协议的工作过程62
3.5使用广播信道的局域网技术643.5.1局域网物理层拓扑结构65
3.5.2局域网标准——以太网实例65
3.5.3局域网的连接设备66
3.5.4广播信道的共享技术67
3.5.5CSMA/CD协议67
3.5.6以太网的MAC层72
3.6扩展以太网74
3.6.1以太网的扩展历史74
3.6.2网桥、透明网桥到交换机的存储转发技术75
3.6.3虚拟局域网78
3.7小结79
第4章网络层80
4.1网络层向上提供的虚电路服务和数据报服务80
4.2网际协议81
4.2.1虚拟互连网82
4.2.2IP地址与硬件地址83
4.2.3最基本的IP编址方法——分类的IP地址83
4.2.4地址解析协议85
4.2.5IP数据报的格式87
4.2.6网络层转发数据报流程90
4.3划分子网和无类地址91
4.3.1划分子网91
4.3.2无分类编址94
4.4IP版本6——IPv696
4.4.1IPv4逐渐过渡到IPv696
4.4.2IPv6地址96
4.5差错报告——网际控制报文协议98
4.6虚拟专用网和隧道99
4.7Internet的路由选择协议1014.7.1路由信息协议102
4.7.2开放最短路径优先105
4.7.3边界网关协议108
4.8IP多播111
4.8.1多播地址111
4.8.2网际组管理协议112
4.8.3多播路由112
4.9小结113
第5章传输层115
5.1传输层的功能115
5.2用户数据报协议116
5.2.1简单多路分解116
5.2.2端口与套接字116
5.2.3UDP的格式118
5.2.4UDP的差错校验118
5.3传输控制协议120
5.3.1报文段格式121
5.3.2TCP的连接建立与释放122
5.3.3可靠字符流传输124
5.3.4滑动窗口协议127
5.3.5TCP超时重传机制——Karn算法129
5.3.6TCP的流量控制130
5.3.7TCP的拥塞控制134
5.3.8拥塞避免机制——随机早期检测140
5.4小结141
第6章应用层143
6.1域名系统144
6.1.1域名系统概述1446.1.2域名的分层结构144
6.1.3域名服务器146
6.1.4域名解析 147
6.2文件传输协议148
6.3远程终端协议149
6.4万维网与超文本传输协议150
6.5电子邮件152
6.5.1电子邮件系统的工作方式153
6.5.2简单邮件传输协议153
6.5.3邮局协议版本3和邮件访问协议155
6.5.4基于万维网的电子邮件157
6.5.5多用途因特网邮件扩展157
6.6简单网络管理协议159
6.7动态主机配置协议160
6.8小结162
第7章计算机网络安全164
7.1计算机网络安全问题概述165
7.1.1计算机网络安全的内容165
7.1.2计算机网络面临的安全问题165
7.2计算机网络安全机制166
7.2.1密码体制166
7.2.2对称密钥密码167
7.2.3公钥密码167
7.2.4数字签名168
7.2.5密钥分配169
7.3因特网安全协议172
7.3.1网络层安全协议172
7.3.2传输层安全协议172
7.3.3应用层安全协议1737.4系统安全173
7.4.1防火墙174
7.4.2入侵检测174
7.5小结175
第8章无线网络176
8.1无线网络基本概念176
8.2CSMA/CA协议179
8.3无线个人区域网180
8.3.1WPAN与PAN、WLAN的区别181
8.3.2蓝牙181
8.4蜂窝移动通信网络183
8.4.1蜂窝移动通信系统的历史184
8.4.2移动IP技术185
8.5小结188
参考文献189
计算机网络是计算机技术和通信技术密切结合形成的一个新技术领域,是当今计算机界公认的主流技术之一,也是迅速发展并在信息社会中得到广泛应用的一门综合性学科。
现代社会中数据通信无所不在。信息社会以计算机网络为基础,计算机网络技术已成为学习计算机和网络技术以及从事相关研究和应用人员必须掌握的重要知识。
本教程大胆创新,把复杂、抽象的计算机网络的主要理论进行了简单化、形象化、口语化。全书以漫画的形式展示内容,适合现代人的阅读习惯,能使读者快速理解和进入“网络时代”。
通过本课程的学习,能使读者掌握计算机网络的基本理论、概念与基本原理,掌握计算机数据通信的基础知识、计算机网络体系结构及物理层、数据链路层、网络层、传输层、应用层的主要网络协议与典型技术,掌握计算机网络安全、无线网络技术的主要内容。
本教程在多年教、产、学、研实践以及教学改革的基础上,根据高等教育的教学特点编写而成,编者都是多年从事计算机网络教学的一线教师,在编写过程中贡献了他们的智慧和成果。本书由周奇、苏绚、何政伟任主编,郑彤云、李嘉鸿、张纯任副主编,参加编写工作的还有张晓红和邱新老师。
在本书的编写过程中,得到了中山大学、成都理工大学、华南师范大学、广东开放大学和汕头广播电视大学相关教师和学生的大力支持和帮助,并参考了相关资料,在此表示衷心的感谢。
由于编者水平有限,书中难免存在不足之处,恳请广大读者批评指正。
编者〖3〗
温馨提示: 本章重点
传输层功能
UDP
TCP
从物理层到网络层,实现的是将多台计算机连接在一起的各种技术,从简单的以太网和无线网到覆盖全球的互联网。网络互联后,传输层要考虑的是实现通信主机的应用程序产生的进程与进程的通信信道。学习网络互连的时候,一直使用的语言都是“两台主机之间互相通信”,这其实是一种比较笼统的说法。实际上,相互通信的是主机里的两个应用程序,更确切地说,是两个应用程序产生的进程在相互通信。从传输层的角度来看,通信的端点就是主机中的进程,传输层的通信也称为端到端通信,同时传输层协议有时也称为端到端协议。
5.1传输层的功能
通过前面章节的学习了解了下三层的互联网络提供的是一个不可靠、尽力而为的服务。所以IP层上交给传输层的报文可能会存在无序、缺失、重复等问题。因此,下层的互联网络希望传输层能够实现可靠的传输服务。同时,上层的应用层希望传输层能向上层提供一些主要功能,比如: 支持每台主机上的多个应用程序、流量控制、拥塞控制等。
传输层的主要功能如下。
(1) 实现简单多路分解。
(2) 提供可靠的、有序的字节流传输。
(3) 允许接收方对发送方进行流量控制。
(4) 进行拥塞控制。
传输层的关键功能是设计出各种算法,不同的传输层协议应用这些算法的不同组合。
第5章传输层计算机网络技术〖3〗5.2用户数据报协议
根据应用程序的不同需求,传输层需要有两种不同的传输协议,即面向连接的传输控制协议(Transmission Control Protocol, TCP)和无连接的用户数据报协议(User Datagram Protocol, UDP)。它是非常简单的传输层协议。发送数据之前不需要建立连接,同时也不提供可靠传输,仅提供尽力而为的服务。UDP主要提供多路分解和差错检测两个功能。
5.2.1简单多路分解
比如在上网浏览网页的同时挂着QQ,还发送电子邮件,这时就有三个网络上的进程与发送方主机上的三个进程进行通信,那么系统是怎么样正确地把接收到的数据定位到指定的进程中呢?
发送方传输层会把不同应用程序进程复用在一个传输层报文段或数据报中。数据报发送到接收方后,接收方的传输层再将传输层报文段或数据报分用给服务器的不同进程。
任何主机上都可能运行多个进程,所以每个传输层协议都需要多路分解功能,使每台主机上的多个进程能够共享网络。
5.2.2端口与套接字
在传输层中,使用称为端口(port)的抽象定位器使进程之间能够间接相互识别。引入端口的主要原因是操作系统给每个进程指派的进程标识符并非全网统一,不同操作系统的进程标识符的格式也各不相同。同时,一台机器上运行的特定进程,如果把它指明为网上通信的最后终点是不可行的,因为进程的创建与撤销都是动态的。通信一方几乎无法识别对方机器上具体实现这个功能的是目的主机上的哪个进程。
因此,使用端口号的好处在于: 虽然网络通信的终点是应用进程,但是只要把要传送的报文交给目的主机的某一合适的目的端口,最后交付目的进程的工作就可以交给传输层协议完成了。
两台计算机中的进程要互相通信,首先必须知道对方的IP地址,这是为了找到对方的计算机;其次,还要知道对方的端口号,这是为了找到对方计算机的应用程序。根据RFC的定义: 端口号拼接到IP地址即构成了套接字(socket)。RFC是一系列以编号排定的文件,包括互联网相关信息以及UNIX和互联网社区的文件。套接字=(IP地址:端口号)比如: IP地址192.3.21.34,端口号是80,套接字是(192.3.21.34: 80)。换句话说,两个进程要互相通信,必须知道对方的套接字。
传输层的端口号用16位二进制数标识。16位的端口号可以允许65535个不同的端口号。端口号在整个因特网都是统一的,所以这个数目足够使用。
传输层的端口号分为以下两大类。
(1) 服务器端的端口号。
服务器端的端口号又分为以下两类。
① 系统端口号(或称为熟知端口号)为0~1023。这些端口号的数值可以通过网址www.iana.org查到。IANA把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有的用户都知道。当一些新的应用程序出现后,IANA必须为它指派一个系统端口,否则因特网上的其他应用进程无法和它进行通信。
下面是一些常用的系统端口号。应用程序FTPTELNETSMTPDNSTFTPHTTPSNMPSNMP
(trap)系统
端口号212325536980161162② 登记端口号为1024~49151。这类端口号是供没有系统端口号的应用程序使用的。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。
(2) 客户端的端口号。
客户端的端口号为49152~65535。由于这类端口号仅在客户进程运行时才动态选择,因此又称为短暂端口号。这类端口号供客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道客户进程所使用的端口号,从而可以把数据发送给客户进程。通信结束后,刚才使用过的客户端口号就不再存在了,从而可以供其他客户进程使用。
5.2.3UDP的格式
UDP使用的传输单位是用户数据报。UDP面向的是上层应用层传送来的报文: 发送方的UDP把应用程序交下来的报文添加了首部后就向下交付给IP层。UDP对应用层交下来的报文加上一个UDP首部原样发送,不合并也不拆分。这就要求上层的应用层对报文的长度有所限制。若报文太长,则UDP把报文交给IP层后,IP层在传送时要进行分片;若报文太短,则UDP把它交给IP层后,IP层需要填充IP数据报首部,让它达到符合要求的长度。无论哪种情况,都降低了IP层的效率。
用户数据报UDP同样由两部分构成: 数据字段和首部字段。UDP首部格式如下。
(1) 源端口。 源端口号,2字节。接收方回信时可用,如果无须对方回信,则可设置为全0。
(2) 目的端口。目的端口号,2字节。目的端口号是报文发送的终点套接字中的一部分。
(3) 长度。UDP数据报的长度,2字节。当整个报文只有首部时,长度达到最小值8字节。
(4) 检验和。2字节。检测UDP用户数据报在传输中是否有错,若有错则丢弃。
(5) 伪首部。12字节。伪首部用于首部的差错检验。它并不是UDP用户数据报真正的首部,只是在计算检验和时临时添加在UDP用户数据报的前面。
当网络层把UDP数据报传送到传输层时,根据首部中的目的端口,在传输层把UDP数据报通过相应的端口上交给相应的应用程序。
若接收方UDP发现数据报中的端口号不存在对应的应用进程,则丢弃该数据报,并由ICMP发送“端口不可达”差错报文给发送方。
5.2.4UDP的差错校验
伪首部是为了实现UDP差错校验而设计的。在计算检验和时,伪首部临时添加在UDP用户数据报的前面,检验和就是按照这个临时的UDP用户数据报计算的。检验和的思想非常简单,将传输的UDP数据报的首部和数据一起进行反码求和。所谓反码求和,就是先进行二进制求和,然后对和取反;接收方对收到的数据执行同样的计算,然后把得到的结果与收到的校验和进行比较。如果传输的数据本身包括的校验码出错,那么结果将不相同,接收方就知道发生了错误。UDP数据报检验和的计算方法与IP数据报首部检验和方法相似,但IP数据报只检验IP数据报的首部,而UDP检验和把首部和数据一起检验。
具体的发送方和接收方的算法描述如下。
发送方在发送数据时,先计算检验和,步骤如下。
(1) 把检验和字段置为0。
(2) 把首部和数据部分看成以16位二进制数为单位的数字组成。若数据报的数据部分不是偶数个字节,则要填入一个全0字节。然后依次进行二进制反码求和。
(3) 把得到的结果存入校验和字段中。
接收方在接收数据时,步骤如下。
(1) 把接收到的UDP用户数据报连同伪首部一起依次进行二进制反码求和。
(2) 无差错时,其结果应该全为1。
(3) 若不全为1,则表示有差错,丢弃该数据报。
检验和计算方法如下。
5.3传输控制协议
传输控制协议(Transmission Control Protocol, TCP)是面向连接的、可靠的、基于字节流的传输层通信协议。TCP所在的传输层位于IP所在的网络层之上。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。因此这一功能由传输层的TCP提供。
5.3.1报文段格式
TCP与UDP不同,TCP的基本传输单位是报文。因此TCP面向的是上层应用层传送来的无结构的字符流。发送方向一个TCP连接写入字节,接收方从这个TCP连接读出字节。源主机上的TCP收集发送进程要交付的字节存入缓冲区中,积累到足够的数量后将其一起放入一个大小适宜的报文段,再发送给目的主机上的对等实体。目的主机上的TCP把这个报文段的内容存入接收缓冲区,接收进程在空闲时从这个缓冲区读出字节。
TCP连接是一种抽象的逻辑虚连接。所谓的TCP连接实际上就是发送端到接收端的端点到端点的连接。端点实际上指两端的套接字。TCP连接::={socket1,socket2}={(IP: port1),(IP: port2)}面向字节流的TCP连接管道式示意图如下。
TCP报文段由一段字节流加上TCP首部构成。TCP首部格式如下。
(1) 源端口和目的端口。各2字节。TCP分用功能是通过端口实现的。
(2) 序号。4字节。TCP连接中传送的字节流中的每一个字节都按顺序编号。编号为0~232。
(3) 确认号。4字节。TCP传输是可靠传输,接收方收到报文段后要返回发送方的确认号。
(4) 首部长度。4字节。TCP报文的首部长度。
(5) 标志。标志字段用来在TCP对等实体间传递控制信息。标志位有SYN、FIN、RESET、PUSH、URG和ACK。SYN和FIN标志分别在建立和终止TCP连接时使用。RESET标志说明接收方已经出现混乱,比如收到了不希望收到的报文段,所以它想要终止连接。PUSH标志说明发送方调用了push操作,这向TCP的接收方表明它应该把这个事实通知给接收进程。URG标志意味着本报文段包含紧急数据。当URG标志被置位时,紧急数据指针字段指明本报文段的非紧急数据从什么地方开始。紧急数据包含在报文段的前部。ACK标志在每次确认号字段有效时设置,提醒接收方对确认号字段加以注意。
(6) 接收窗口。2字节。窗口指发送本报文段的一方的接收窗口。窗口值告诉对方,从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。窗口字段明确指出了现在允许对方发送的数据量。
(7) 检验和。2字节。检验和字段检验的范围包括首部和数据两部分。
(8) 紧急数据指针。2字节。它和URG配套使用才有意义。
(9) 选项。长度可变,最长可达40字节。当没有使用“选项”时,TCP的首部长度是20字节。
5.3.2TCP的连接建立与释放
TCP是面向连接的协议。每一次使用TCP传送报文,都必须经过三个阶段: 连接建立、数据传送和连接释放。
1. TCP的连接建立——三次握手
一开始客户端A和服务器端B的TCP进程都处于CLOSED关闭状态。A主动打开连接,改变TCP的初始关闭状态。B被动打开连接,也改变了TCP的初始关闭状态。
B建立传输控制块TCB,转成LISTEN监听状态,准备接收A的连接。A建立传输控制块TCB,向B发出连接请求报文段,发起第一次握手。握手是为了传递信息,第一次握手A要与B同步,因此连接请求报文段中带上了标志同步位并设为1,SYN=1;选择一个初始序号x,seq=x,并告诉B,实现同步。完成之后,A进入SYNSENT同步已发送状态。
B收到了连接请求报文段后,如果同意连接,就向A发送确认报文段,为第二次握手。确认报文段中,同样将同步位设为1,SYN=1;同时发送确认号ack=x 1,为了让确认号ack有效,还要把标志位中的ACK标志设为1,ACK=1;而且,B也为自己选择了一个初始序号seq=y,完成了SYNRCVD同步收到状态的转变。
A收到B的确认后,还要再次同B给出确认,为第三次握手。之所以需要第三次握手是因为有可能在第一次握手中A发送的请求报文段出现滞留,超时的时候A会重发请求报文段;B以为重发的请求报文段为新的连接请求,并建立了一条多余的新的TCP连接。为了防止这种情况发生,TCP连接建立需要三次握手。在第三次握手中,A发送的确认报文段里ACK=1,确认号ack=y 1,序号seq=x 1。完成后,A进入ESTAB LISHED已建立连接状态,B接收到确认报文段后,也进入ESTAB LISHED已建立连接状态,TCP连接建立。
TCP标准规定: SYN=1的报文段不能携带数据,但要消耗一个序号,因此第一次握手中A序号为x,而B给予的确认号则为x 1,消耗了一个序号;同时,TCP标准还规定,ACK的报文段可以携带数据,但如果不携带数据则不消耗序号。所以在第三次握手中,报文段并不携带数据,A的序号仍为x 1。
2. TCP数据传送
3. TCP的连接释放——四次握手
当数据传输结束之后,通信双方都要释放连接。客户端A和服务器端B仍处在ESTAB LISHED已建立状态。
A的应用程序首先向其TCP发出连接释放报文段,同时停止发送数据,主动关闭TCP连接。此为释放过程的第一次握手。连接释放报文段首部的标志为FIN,被设置为1;序号是最后一个字节的序号加1,设为u。完成之后,A转换成FINWAIT1终止等待1状态。
B收到连接释放报文段后,发出确认报文段。这是释放过程的第二次握手。报文段序号为B端序号v,v是最后一个字节序号加1。确认报文段设置ACK=1,seq=v,ack=u 1。接着B进入CLOSEWAIT 关闭等待状态。服务器端B的TCP通知高层应用进程。至此,从A到B的连接被释放了。这表示从A到B的方向无法再传递数据了,但是从B到A的方向则仍然处于连接状态,仍可传送数据。
A收到B的确认后,转换成FINWAIT2终止等待2状态。等待B发出的连接释放报文段。
B完成数据发送后,同样,B端应用进程通知其TCP释放连接。B发出连接释放报文段,设置ACK=1,因为A没有再发送数据,因此再次发送和之前相同的确认号ack=u 1。但B有可能还发送了一些数据,因此假设B的序号为w,seq=w。这是连接释放的第三次握手,B进入LASTACK最后确认状态,等待A的确认。
A收到B的连接释放报文段后,再次给B确认报文段。参数设置为ACK=1,seq=u 1,ack=w 1,接着进入TIMEWAIT时间等待状态。
为什么A收到确认还需要等待呢?这是为了防止B未能收到A的最后确认报文段,A重发确认之后需要等待一段时间让B收到确认,A、B都进入CLOSED关闭状态。到此,TCP连接释放完成。
5.3.3可靠字符流传输
由于传输层以下的各层提供了不可靠、尽力而为的服务,因此传输层务必提供有序、可靠的报文传输。它通常使用两种基本机制: 确认(acknowledgement)和超时(timeout)的组合实现可靠传输。确认(简称ACK)是协议发给其对等实体的一个小的信息,告知它已经收到之前的报文。如果发送方在相当长的一段时间T后未收到确认,那么它重传原来的报文,这个动作称为超时。
使用确认和超时实现可靠传输的策略称为自动请求重发(Automatic Repeat Request,ARQ)。最简单的ARQ方案是停止等待协议。
评论
还没有评论。