Windows网络程序设计(夏靖波) 第1章

上传人:E**** 文档编号:89350569 上传时间:2019-05-23 格式:PPT 页数:109 大小:829.50KB
返回 下载 相关 举报
Windows网络程序设计(夏靖波) 第1章_第1页
第1页 / 共109页
Windows网络程序设计(夏靖波) 第1章_第2页
第2页 / 共109页
Windows网络程序设计(夏靖波) 第1章_第3页
第3页 / 共109页
Windows网络程序设计(夏靖波) 第1章_第4页
第4页 / 共109页
Windows网络程序设计(夏靖波) 第1章_第5页
第5页 / 共109页
点击查看更多>>
资源描述

《Windows网络程序设计(夏靖波) 第1章》由会员分享,可在线阅读,更多相关《Windows网络程序设计(夏靖波) 第1章(109页珍藏版)》请在金锄头文库上搜索。

1、第1章 网 络 基 础,1.1 TCP/IP简介 1.2 网络编程应考虑的问题 习题与思考题,1.1 TCP/IP简介,1.1.1 OSI模型与TCP/IP结构 OSI/RM(Open System Interconnection/Reference Model,开放系统互连参考模型)将计算机网络通信定义为一个七层框架模型,如图1.1所示。,图1.1 OSI模型与通信流程,表1.1 OSI模型中各个层的功能,当然,OSI模型只是一个框架,它的每一层并不执行某种功能,功能的具体实现还需通信协议,主要通过软件来进行。当数据在层间向下传播时(源主机部分),每一层都会为传输中的数据增加一个包头(hea

2、der),用于标识包的来源与目的。到了目标主机时,每一层都从数据中读取相应包头,执行请求的任务,并负责向上传输数据包。每一种具体的协议一般都定义了OSI模型中的各个层次具体实现的技术要求。,图1.2 TCP/IP族的体系结构,每一层负责的功能如下: 链路层:有时被称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。 网络层:有时也被称为互联网层,负责分组在网络中的活动,包括IP(网际协议)、ICMP(Internet控制报文协议)以及IGMP(Internet组管理协议)。, 传输层:该层主要为两台主机

3、上的应用程序提供端到端的数据通信,它分为两个不同的协议TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供端到端的质量保证的数据传输,该层负责数据的分组、质量控制和超时重发等,对于应用层来说,就可以忽略这些工作。UDP则只负责简单地把数据报从一端发送到另一端,至于数据是否到达或按时到达、数据是否损坏都必须由应用层来做。这两种协议各有用途,前者可用于面向连接的应用,而后者则在及时服务中有着重要的用途,如网络多媒体通信等。 应用层:该层负责处理实际的应用程序细节,包括Telnet、HTTP、SMTP、FTP、DNS和SNMP等协议和应用。,图1.3 通过TCP/IP和路由器连接的两台主机,

4、在图1.3所示的系统中,两台主机通过路由器互相连接。路由器可以把以太网、令牌点对点链接和FDDI(光纤分布式数据接口)等不同的网络连接在一起。协议中的各层对上一层是透明的,也就是说,应用层只负责应用程序之间的通信规则,不必了解数据如何在网络中传输,也不必了解怎样接入网络。而链路层只需要负责传输,而不需要知道正在传送的是什么数据。,1.1.2 TCP/IP基本概念 作为一个整体的结构体系,TCP/IP必然要涉及到一系列基本但非常重要的概念,本节主要简要介绍IP地址、地址解析及端口号等基本概念。 1. IP地址与子网掩码 网络互联的目的是提供一个无缝的通信系统。为此,必须用互联网协议屏蔽物理网络的

5、具体细节,并提供一个虚拟网络的功能。在TCP/IP栈中,编址由IP协议规定,IP标准分配给每台主机一个32位的二进制数作为该主机的IP地址。在最新出台的IPv6中IP地址升至128位,这样IP资源就变得更加丰富了。,每个IP地址被分割成前缀和后缀两部分。前缀用于确定计算机从属的物理网络,后缀则用于确定网络上一台单独的计算机。互联网中每一个物理网络都有一个唯一的值作为网络号(Network Number)。IP地址的层次性保证了以下两个重要性质: 每台计算机分配一个唯一的地址。 网络号的分配全球统一,但后缀可本地分配,无须全球统一。,IP地址共分五类:A类、B类、C类、D类和E类。其中A类、B类

6、和C类为基本类;D类用于多播传送;E类属于保留类,现在不用。它们的格式如下(其中*代表网络号位数):,IP地址一般采用点分十进制的表示方法,例如: 10000001 00110100 00000110 00000000129.52.6.0,表1.2 各类IP地址的范围,此外,需要特别注意以下几个特殊的IP地址: 网络地址:IP中主机地址为0的地址表示网络地址,如128.211.0.0。 广播地址:网络号后跟一个所有位全是1的后缀,就是直接广播地址。 回送地址:127.0.0.1用于测试。,除了给每台主机分配一个IP地址外,IP协议规定也应给路由器分配一个IP地址。事实上,每个路由器被分配了两个

7、或更多的IP地址。一个路由器连接到多个物理网络,每一个IP地址包含一个特定物理网络的网络号。一个IP地址并不标识一台特定的计算机,而是标识一台计算机和一个网络间的连接。,现在所有的主机都要求支持子网编址(RFC950,J.Mogul and J.Postel,1985),该功能要求不仅把IP地址看成由单纯的一个网络号和一个主机号组成,而且要把主机号再分成一个子网号和一个主机号。这样做的原因是因为A类和B类地址为主机号分配了太多的空间,可分别容纳的主机数为2242和2162。但是,事实上在一个网络中并不会有这么多的主机,因此在InterNIC获得某个IP网络号后,就由系统管理员来进行分配,由他来

8、决定是否建立子网,以及分配多少位给子网号和主机号。例如,这里有一个B类网络地址(140.252.0.0),在剩下的16位中,8位用于子网号,8位用于主机号,其格式如图1.4所示。这样就允许有254个子网,每个子网可以有254台主机。,图1.4 B类地址的子网编址举例,除了地址以外,主机还需要知道有多少位用于子网号及多少位用于主机号。这是在引导过程中通过子网掩码来确定的。这个掩码是一个32位的值,其中值为1的位留给网络号和子网号,为0的位留给主机号。在上面的例子中,子网掩码就是255.255.255.0。,2. 地址解析 地址解析(Address Resolution)就是将计算机中的协议地址翻

9、译成物理地址(或称MAC地址,即媒体映射地址)。地址解析只能在本地网内进行。 地址解析技术可分为如下三种: (1) 表查询(Table-Lookup)。该方法适用于广域网(WAN),通过建立映射数组(协议地址物理地址)的方法解决。用户可通过查询找到物理地址。,(2) 相近形式计算(Close Form-Computation)。该方法适用于可以自行配置的网络,IP地址和物理地址相互对应,例如: 220.123.5.1 XXXl 220.123.5.2 XXX2 可通过这种算法得到物理地址:物理地址协议地址&0xFF。 (3) 信息交换(Message-Exchange)。该方式适用于LAN,是

10、基于分布式的处理方式,即主机发送一个解析请求,以广播的形式发出,并等待网络内各个主机的响应。,3. 域名系统 一个系统的全域名由主机名、域名和扩展名三部分组成,各部分间使用“”分隔,例如。在TCP/IP应用中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息,可以通过在程序中调用标准库函数来编程实现域名与IP地址之间的相互转换。通过从域名地址到IP地址的映射,使得在日常的网络应用中可以使用域名这种便于记忆的网络地址表示形式。 所有的网络应用程序理论上都应该具有内嵌的域名解析机制。,4. 数据包的封装和分用 当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个

11、通过每一层,直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如图1.5所示。TCP传给IP的数据单元称作TCP报文段或简称TCP段。IP传给网络接口层的数据单元称作IP数据报(IP Datagram)。通过以太网传输的比特流称作帧(Frame)。图1.5中帧头和帧尾下面所标注的数字是典型以太网帧首部的字节长度。以太网数据帧的长度必须在461518字节之间。,图1.5 数据包的封装过程示意图,由于IP数据报通常是分组传输的,因此更准确地说,图1.5中IP和网络接口层之间传送的数据单元应该是分组(Packet)。分组既可以是一个完整的IP数据

12、报,也可以是IP数据报的一个片(Fragment)。关于分组的细节算法不在本书的讨论范围之内。 UDP数据与TCP数据基本一致。唯一不同的是,UDP传给IP的信息单元称作UDP数据报(UDP Datagram),而且UDP的首部长为8字节。由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8 bit的数据,称作协议域。1表示ICMP,2表示IGMP,6表示TCP,17表示UDP。,同样,许多应用程序都可以使用TCP或UDP来传送数据。传输层协议在生成报文首部时要存入一个应用程序的标识符。T

13、CP和UDP都用一个16位的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。 网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16 bit的帧类型域。,当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing),图1.6显示了该过程。 图1.6中把ARP和RARP放在IP层是因为它们都有以太网头部和

14、尾部,而在前面的论述中把它们作为链路层的协议,这并不矛盾,因为TCP/IP栈的层次划分本来就不是非常清晰。,图1.6 数据分用过程,5. 端口号 TCP和UDP采用端口号来识别应用程序。例如,服务器提供的服务一般都是通过通用端口号来识别的,对于TCP/IP实现来说,FTP服务器的TCP端口号都是21,Telnet服务器的TCP端口号都是23,TFTP(简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都使用通用端口号11023。这些通用端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。,

15、客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂),这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机是开着的,其服务就运行。 大多数TCP/IP实现给临时端口分配10245000之间的端口号。大于5000的端口号是为其他服务(Internet上并不常用的服务)预留的。,1.1.3 常用协议 下面对一些常用协议进行简要的介绍。 1. 以太网数据链路层帧结构 IEEE 802.3定义了一种具有七个字段的帧(MAC):前导符、起始帧分界符、目标地址、源地址、PDU的长度/类型、数据以及CRC。以太网不提供任

16、何对收到的帧进行确认的机制,确认在高层完成,这表明它是一种不可靠的介质。CSMA/CD中MAC帧的格式如图1.7所示。,图1.7 IEEE 802.3 MAC帧结构, 前导符(Preamble):该字段长7个字节(56位),其中1和0交替出现,警告接收系统即将有数据帧到来,同时同步系统时序。 起始帧分界符(SFD):该字段长1字节,为10101011,标志帧的开始。SFD通知接收方后面所有的内容都是数据。 目标地址(Destination Address):该字段长6个字节,包含了数据帧的目的物理地址。一个系统的物理地址是一个在它的网络接口卡(NIC)上编码的比特模式。每一个NIC由一个独一无二的地址将它和其他所有的NIC区别开来。, 源地址(Source Address):该字段同样长6个字节,包含转发数据帧的最后一个设备的物理地址。该设备可以是发送站点,也可以是接收和转发数据包的最近路由器。 PDU的长度/类型(Length/Type):该字段的两个字节指出PDU的长度或封装的数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号