网络通信程序开发_第1页
网络通信程序开发_第2页
网络通信程序开发_第3页
网络通信程序开发_第4页
网络通信程序开发_第5页
已阅读5页,还剩73页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络基础计算机网络技术是计算机科学中蓬勃发展的技术之一,是计算机应用的一个重要领域,同时也是涉及计算机硬件、软件、通信技术和信息处理技术的一门新兴的综合性学科。它已广泛应用于学校、办公自动化、信息管理、工业自动化等领域中,并引起了各国政府的高度重视,特别是Internet的逐步普及,已经极大地影响和改变了人们的生活。计算机网络已成为衡量一个国家的科技发展水平、信息化程度以及综合国力的重要标志。计算机网络的发展历史计算机网络的发展象计算机发展一样,虽然历史不长,但速度很快。它是从简单的为解决远程运算、远程信息处理而形成的专用联机系统开始的。随着计算机技术和通信技术的发展,又在联机系统广泛使用的基础上,发展到了把多台中心计算机连接起来,组成以共享资源为目的的计算机网络。这样就进一步扩大了计算机的应用范围,促进了包括计算机技术、通信技术在内的多个领域的飞速发展。计算机网络的发展经历了以下几个阶段:具有通信功能的单机系统(面向终端)具有通信功能的多机系统(面向终端)计算机通信网络计算机网络计算机网络的定义、功能计算机网络的定义凡将地理位置不同,并具有独立功能的多个计算机系统,通过通信设备和线路将其连接起来,由功能完善的网络软件(网络协议、信息交换方式、控制程序和网络操作系统)实现网络资源共享的系统称为计算机网络。*计算机网络的定义包含如下几个内容:独立功能的计算机系统,通信线路连接,共享资源。计算机网络的功能数据通信:数据通信即数据传送,是计算机网络的最基本功能之一,用以实现计算机与终端或计算机之间传送各种信息。利用这一功能,地理位置分散的计算机可通过计算机网络连接起来,以实现数据信息的快速传输和集中处理。资源共享:充分利用计算机系统资源是组建计算机网络的主要目标之一。计算机资源包括软件、硬件和数据。初级的是资源共享硬件设备,而现在资源共享主要是共享数据库和软件。提高计算机的可靠性:在单机使用的情况下,如没有备用机,则计算机或某一部件发生故障便引起停机。如有备用机,则费用会大为增设。当计算机连成网络之后,网络中各台计算机可以通过网络彼此互为后备机。能均衡负载,互相协作:当某个计算中心的计算任务很重时,可通过网络将某些任务传送给空闲的计算机去处理。从而提高了计算机的工作效率,也提高了每一台计算机的可用性。能进行分布处理:对于综合性的大型问题可以采用合适的算法,将任务分散到不同的计算机上进行分布处理。各计算机连成网络也有利于共同协作进行重大科研的开发研究。能实现优质的通信:进行各种信息交流,使通信向更高水平发展。提高了性能价格比:计算机组组成网络,其性能价格比有明显的提高,虽然增加了通信费用,然而维护使用费用却明显下降。此外系统扩充容易,运行灵活方便,提高了运行性能,这些是一般计算机系统无法相比的。计算机网络的类型计算机网络是由数据通信和数据处理相互结合的系统。计算机网络可按不同的方法分类,为了使读者对计算机网络有一个清楚的认识,下面将从几个不同角度对计算机网络的类型作一简单介绍。远程网和局部网专用网和公用网对等网和基于服务器文件共享和客户/服务器:客户机/服务器系统工作过程是:一个请求程序(Client)首先通过网络协议(如TCP/IP及IPX/SPX等)与接收程序(Server)进行连接,由客户端发出请求给服务器,服务器则进行相应的处理,然后将结果送回客户端。客户机/服务器已广泛应用于网络应用中,最典型的应用是在Internet上。基本模式是Web服务器和浏览器的组合。计算机网络的组成计算机网络一般由数据传输线路、调制解调器、通信处理机、主计算机系统、集中器、各终端设备,数据交换的接口设备以及网络软件所组成。对于组成计算机网络的硬件,由以下几部分组成。计算机网络的组成主机:集中器通信处理机调制解调器终端通信线路计算机网络拓扑结构 星形、树形、总线结构、环形、不规则形和全部互连。通信子网的通信方式:通常分成点到点通信方式和广播通信方式两大类。点到点通信方式所有信息传输都是在两个相邻有通信介质直接连接的IMP(InterfaceMessageProcessor接口信息处理机)之间进行。如两个要求通信的IMP没有直接通路时,需要经由其它IMP。发送IMP将信息传给相邻的IMP,相邻IMP将信息全部接收下来后,再传给下一个IMP,一直到目的IMP。这种传输过程称存储转发,两个直邻IMP间进行点到点的通信。适合于这种通信方式了子网拓扑结构示于图1.4。这种通信方式的优点是通信线路的利用率较高,在源与目的端多个IMP间的线路段是分时使用的。这对用户在同一时间内只使用一段线路,其它线路段仍可为别的用户服务。这种点到点通信方式适合星形、树形、环形、总线、不规则形广播式通信方式所谓广播式通信,网络中一个结点发送的信息,其它各结点都能收到,例如,电视广播是一种典型的广播式通信。但是,计算机网络的广播式通信还有其特点。网中的结点都能发送和接收信息,网络中所有结点都使用同一个通信信道发送信息,信息在信道上传输是双向的。为了避免信息在信道上发生冲突,而导致通信失败,在同一时间内只允许一个结点往共用信道上发送信息。这就需要有相应措施来解决多个结点争胜信道的问题。另外,点到点通信时通信双方的关系比较明确。在广播式通信中收发关系是在通信时确定的,在信息分组中必须有信息源结点地址和目的结点地址。接收时根据目的地址,并从源地址得知信息的发送结点。广播式通信方式大多用于局域网。广播式通信子网的物理拓扑结构主要有总线结构、环形、星形、卫星或无线电计算机网络的体系结构与OSI参考模型问题的提出所谓计算机网络体系结构,即是指整个网络系统中的逻辑构造和功能分配。便利整个系统中的双方相同层次的实体称对等实体。用“(N)—实体”表示为N层的实体。服务访问点(SAPServiceAccessPoint)是下层实体为上层实体提供服务的接口。例如,(N)—实体通过该层的SAP向(N+1)—实体提供服务,该接口简称为(N)—SAP。一个(N)—实体可服务于一个或多个(N)—SAP,一个(N+1)—实体可使用一个或多个(N)—SAP来得服务。编址 在OSI模型中低层和高层的编址规则是不同的。数据链路层地址对网络和每一个结点都有一个唯一的地址,有时也称物理地址,即一个物理设备的具体地址。例如,大部份局域网的链路层地址驻留在网络适配器(网卡)上,其48位长的地址由定义协议标准的组织来分配,使每一个网络适配器都有一个唯一的地址。网络层地址为每个端系统提供确定的无二义的地址,称NSAP。OSI模型中数据传输下图给出了在OSI模型中数据传输的示意图。发送端用户将数据传送给接收端用户。发送端用户把数据(data)交给应用层,应用层实体在用户数据前面加上应用层头部(AH),即成了应用层协议数据单元(A—PDU),再传给表示层。表示层将A—PDU附加上表示层的头部PH,组成P—PDU。这一过程重复进行一直传送到物理层。物理层将L—PDU通过通信介质传送到接收方。在接收方,信息逐层向上传递。每经过一层将本层的头部(PCI)处理完后删去,并送给上一层实体,最后数据到达接收端用户。数据AH数据PHA-PDUSHP-PDUTHS-PDUNHT-PDUDLHN-PDUDLTDL-PDU图1.16用户数据在OSI模型中的传输过程PDU是对每一层包含该层协议和服务数据的数据单元的统称。在实际中,不同层次的PDU都赋予不同的名称。例如,在物理层称位(bit),在数据链路层称帧(frame),在网络层称分组或包(packet),在传输层及以上层次称报文(message)。有时把协议称为协议栈。通过传输数据的封装过程也可以更好地理解协议栈的含义:发送数据时由高层向低层传递数据,一层一层地加入协议头,先加入高层协议头,后加入低层协议头,高层协议头在里,低层协议头在外。接收数据时由低层向高层传递数据,一层一层地去掉协议头,低层协议头在外,高层协议头在里,先去掉低层协议头,后去掉高层协议头。先加入的高层协议头后去掉,后加入的低层协议头先去----符合栈的先进后出,后进先出原则。在端用户间传输数据的过程中可看出,数据在层间传输过程中,下层实体不改变上层PDU的结构和内容,只在前面增加本层的协议信息。但在三个层次中有例外,表示层实体可以对应用层PDU根据需要进行代码转换;数据链路层实体除在网络层PDU前加头部外,还在PDU后面加尾部和一个帧的首尾标志,因为数据链路层实体是从物理层接收位信息,必须在这些位信息中判断接收一个完整的帧,用首尾标志来定界帧的开始和结束,在尾部增加检错码,来检查帧的正确性;而物理层实体不再增加任何信息,只是将数据链路层的帧按位串在传输介质上发送出去。

TCP/IP基础TCP/IP协议及在网络中的地位网络设计者在解决网络体系结构时经常使用ISO/OSI(国际标准化组织/开放系统互连)七层模型,该模型每一层代表一定层次的网络功能。最下面是物理层,它代表着进行数据转输的物理介质,换句话说,即网络电缆。其上是数据链路层,它通过网络接口卡提供服务。最上层是应用层,这里运行着使用网络服务的应用程序。TCP/IP的发展过程及组织ISOC(InternetSociety)应用软件IABIETFIANAIRTFTCP/IP协议最早是为广域网设计的一个协议集,目的是为了使不同不同体系结构、不同硬件结构的计算机能够互相通信。,当UNIX操作系统集成TCP/IP协议后,该协议随UNIX的流行而迅速发展成为广域网的标准协议,现在广域网特别是Internet网广泛使用该协议。TCP/IP是同ISO/OSI模型等价的。当一个数据单元从网络应用程序下流到网络接口卡,它通过了一列的TCP/IP模块。这其中的每一步,数据单元都会同网络另一端对等TCP/IP模块所需的信息一起打成包。这样当数据最终传到网卡时,它成了一个标准的以太帧(假设物理网络是以太网)。而接收端的TCP/IP软件通过剥去以太网帧并将数据向上传输过TCP/IP栈来为处于接收状态的应用程序重新恢复原始数据(一种最好的了解TCP/IP工作实质的方法,是使用探测程序来观察网络中的到处流动的帧中被不同TCP/IP模块所加上的信息)。这就是TCP/IP所做的:将许多小网联成一个大网。并在这个大网也就是Internet上提供应用程序所需要的相互通信的服务。TCP/IP协议在使用和发展过程中,逐渐形成了一个标准的网络协议集,协议集除了TCP/IP核心协议之外,还包括了一些应用层的协议,如HTTP,FTP,TELNET等,这些应用层的协议都是建立在TCP/IP核心协议基础上,利用不同的端口而实现的。TCP/IP是一族用来把不同的物理网络联在一起构成网际网的协议。TCP/IP联接独立的网络形成一个虚拟的网,在网内用来确认各种独立的不是物理网络地址,而是IP地址。TCP/IP使用多层体系结构,该结构清晰定义了每个协议的责任。TCP和UDP向网络应用程序提供了高层的数据传输服务,并都需要IP来传输数据包。IP有责任为数据包到达目的地选择合适的路由。Internet依赖TCP/IP协议组(IP,TCP,UDP,ICMP等)。在Internet主机上,两个运行着的应用程序之间传送要通过主机的TCP/IP堆栈上下移动。在发送端TCP/IP模块加在数据上的信息将在接收端对应的TCP/IP模块上滤掉,并将最终恢复原始数据。TCP/IP的重要性可以连接不同系统开放系统,可通过Requestforcomments开发自己的TCP/IP解法与Internet连接提供强有力的WAN连接,可路由,为广域网设计的TCP/IP与OSI参考模型的对应关系OSI模型最初是用来作为开发网络通信协议族的一个工业参考标准。通过严格遵守OSI模型,不同的网络技术之间可以轻易地实现互操作。OSI模型是一种通用的、标准的、垂直分层模型,每层至少与一个协议相联系,各层协议像栈一样堆在一起,协议栈来自垂直分层和栈式协议这些网络概念。没有一个流行的网络协议完全遵守OSI模型。TCP/IP也不例外,TCP/IP协议族有自己的模型,被称为TCP/IP协议栈,又称DOD模型(Departmentofdefense) OSI参考模型 TCP/IP模型应用层ApplicationLayer应用层ApplicationLayer表示层PresentLayer会话层SemissionLayer传输层TransportLayer传输层TransportLayer网络层InternetLayer网络层InternetLayer数据链路层DataLinkLayer网络访问层NetworkAccessLayer物理层PhysicalLayer网络接口层:在模型的最底层是网络接口层。本层负责将帧放入线路或从线路中取下帧。Internet层:Internet协议将数据包封装成Internet数据包并运行必要的路由算法。传输层:传输协议在计算机之间提供通信会话。数据投递要求的方法决定了传输协议。应用层:在模型的顶部是应用层。本层是应用程序进入网络的通道。在应用层有许多TCP/IP工具和服务,如:FTP、Telnet等等。该层为网络用户提供了许多实用应用程。OSI模型包含许多被分割成层的组件。在网络数据通信的过程中,每一层完成一个特定的任务。当传输数据的时候,每一层接收到上面层格式化后的数据,对数据进行操作,然后把它传给下面的层。当接收数据的时候,每一层接收到下面层传过来的数据,对数据进行解包,然后把它传给上一层。OSI模型的一个关键概念是虚电路。就模型的层次而言,每一层都有一虚电路直接连接目的主机上的对应层。就每一层而言,它的数据在目的层被解包的方式和被打包的方式是完全一样的。每一层都利用其上层和下层的服务来维持它和远地主机上对应层的虚电路。TCP/IP协议栈模型应用程序应用程序应用层应用程序应用程序表示层硬件接口会话层硬件接口传输层 TCP UDP网络层 ICMP IP IGMPRARPARP链路层RARPARP物理层

TCP/IP框架与数据流应用层应用程序应用程序表示层应用程序应用程序会话层传输层 UDP TCP TCP UDP网络层 IP IP硬件接口硬件接口链路层硬件接口硬件接口物理层传输线 TCP/IP协议族及内部依赖关系TCP/IP协议族英文全称:TransmissionControlProtocol/InternetProtocol中文全称:传输控制协议/互联网协议TCP/IP实际上是一族协议,不是单一的协议。TCP/IP通过Internet传输信息。以太网卡表示链路层,链路层(网卡)不同,不影响TCP/IP应用程序简单说明:硬件协议层(面向硬件)不同介质:以太网、令牌网等;高速、低速按硬件要求对网络设备进行控制。IP层(网络层)“点到点”的“数据报”传输机制,不保证传输的可靠性。将各种“硬件协议”统一成IP数据报和IP地址形式。屏蔽硬件差异:物理帧、网络地址。简洁清晰;效率高,对数据进行“尽力传递”。一般是不允许应用程序直接访问IP层。TCP/UDP层(传输层)提供“端到端”的数据传输机制。格式化信息流。提供网络进程通信能力。提供高效的UPD和可靠的TCP。BSDUNIX的socket接口。应用程序层分为3种:依赖于无连接的UDP;依赖于有连接的TCP;或两者均可。各个协议说明: 链路层有两个地址协议:地址解析协议(ARP)和反向地址解析协议(RARP)物理地址6个字节,IP地址4个字节。以太帧物理地址6个字节,TCP/IP协议使用IP地址,地址解析协议和反向地址解析协议解决了地址转换问题。网卡的物理地址实际上是在链路层上。

ARP(AddressResolutionProtocol):地址解析协议(IP->物理地址)

RARP(ReverseAddressResolutionProtocol):反向地址解析协议(物理地址->IP)如果一台IP机器不带磁盘,启动时无法知道其IP地址。只知道自己的MAC地址。RARP协议可以。它发出一个分组,其中包括其MAC地址,要求回答这一MAC地址的IP地址。一个称为RARP服务器的特定机器作出响应并回答。至此,这一身份危机就获得解决。像一位优秀的分析家一样RARP使用已知信息,即机器的MAC地址,求得其IP地址完成机器ID的确定。IP层协议:

ICMP(InternetControlMessageProtocol):Internet控制信息协议

IGMP(InternetGroupManagementProtocol):Internet组管理协议TCP/UDP层协议:

UDP(UserDatagramProtocol):用户数据报协议

TCP(TransmissionControlProtocol):传输控制协议应用层协议:

SMTP(SimpleMailTransmissionProtocol):简单邮件传送协议

FTP(FileTransmissionProtocol):文件传输协议

HTTP(HyperTextTransmissionProtocol):超文本传输协议Telnet:Telnet是协议中的变色龙,它的特殊性在于终端仿真。它允许远程客户机(称为TelnetClient)上的用户访问另外机器(称为TelnetServer)的资源。Telnet完成这一任务的方法是下拉(pulling)一台较快的Telnet服务器,将客户机修饰成一台终端,直接附加到远程网络。这个设计实际上是软件映像,可以与某远程主机互相交往的虚拟终端。这些仿真的终端工作在文件方式。可以执行显示菜单这样的步骤,这可使用户有机会选择菜单,在一个下拉的服务器上访问应用程序。用户运行Telnet客户机软件开始Telnet会话,然后登录到Telnet服务器。Telnet的能力限于运行应用程序或窥视一下服务器上的内容。它仅仅是一个“观察“的协议。它不能用于文件共享,如下载资料。要想真正搞到资料必须运用FTP协议。其它有关概念:

SNMP(SimpleNetworkManagementProtocol):简单网络管理协议

NDIS(NetworkDeviceInterfaceSpecification):网络驱动接口规范

NFS(NetworkFileSystem):网络文件系统互联网协议(IP协议):无连接,不可靠的数据传输协议,既不保证数据正确传输,也不会在传输错误时给主机发通知。一旦出现错误,会给主机发一个ICMP报文报告错误信息,ICMP报文也使用IP传输,所以不能保证错误信息正确传输。不可靠协议不保证正确传输和出错后报告错误信息,定义不可靠协议可以简化协议的设计和执行,将保证可靠性的工作留给高层去完成。分割:传输的数据一旦大于网络的MTU(最大传输单元),就必须对数据进行分割。即将数据分割成多个可以直接在网络上传输的较小的数据包。这样可以提高网络的效率和性能。IP发送的中含有分割信息(分段偏移),接收端将根据分割信息将信息重组,即使接收顺序与发送顺序不一致也不会出错。重组和分割在网络层与链路层间实现,IP路由:当不在一个子网内的两个主机相互通信时,要保证数据正确传输到目的主机,网络中每一个接收到信息的节点,将根据目的IP地址将数据转发出去。路由器可以在以太网和令派环等网络技术不同的网络间传输数据传输层协议:传输层在应用程序间传送数据包,通信程序必须了解端口号。客户程序必须知道服务程序的端口号,这样才能向服务器程序发送请求数据包,同时将客户程序自己的端口号也发送给服务器程序,服务器程序处理请求数据包,并根据客户程序的端口号,向客户程序发送响应数据包。传输层不需要IP地址,而是由网络层完成这个任务,既在IP头中加入源IP地址和目的IP地址等信息,IP在主机间传输数据。传输协议在应用程序间传输数据。网络通信程序的最终实现是在客户应用程序和服务器应用程序之间传输信息,而通过Internet通信,就必须与TCP/IP的传输层交换数据,传输层有两个协议:传输控制协议(TCP)和用户数据报协议(UDP)。传输层端口:同一台主机上有多个通信程序运行,它们通信时都使用相同的IP地址,如何区分它们,即当主机收到数据时,把数据交给哪个通信程序处理,必须有一个标识,这就引入端口的概念。端口是节点的功能单元,数据可以通过这个单元进入或离开数据网。它标识一个通信功能的一个具体实现,完成具体的一个通信功能。端口用16位二进制数表示,也称为端口号。一个通信程序可能完成多个通信功能,就有可能使用多个端口。Internet上广泛使用的服务如Ftp,Telnet,Mail等都分配了固定的端口号。如下表:协议(服务)端口回送协议7文件传输协议21Telnet协议23SMTP协议25平凡文件传输协议TFTP69Finger协议79超文本传输协议HTTP80POP3协议110*在winsock.h.中有端口定义。用户数据报协议UDP:UDP协议建立在IP协议之上,与IP协议一样提供无连接数据报传输。但增加提供了协议端口,以保证进程通信。UDP不建立连接,是不可靠传输协议,不能保证数据被正确传输,出错也不发通知信息,需要其上的应用程序进行可靠性处理。UDP主要是面向于仅需要少量报文交换的场合,不需要为此建立和撤消连接,其开销要比面向连接的传输小。UDP只是把数据简单地放在端口进行传输,重点在端口。传输控制协议TCP:TCP协议的主要特点是可靠性高,它提供面向连接的流传输。在实际数据传输前,要在信源端和信宿端建立一条连接,若此连接建立不成功,则TCP信源端不会像UDP那样贸然地向信宿端发送数据。面向连接的每一个报文都需要接收端确认。TCP重点在连接,而不在端口。一个端口可以打开多个连接。确认与超时重传。拥塞控制(可变窗口)。PUSH操作。应用层协议1.引导协议:BOOTPBOOTP能为无盘节点获取其启动所需的所有信息,其功能比RARP强大。另外与RARP相比:BOOTP基于是UDP实现的,移置性好;BOOTP协议的信息交换量大,可充分利用硬件能力。无盘节点加电后,ROM中的启动程序开始运行,利用其中的UDP/IP模块(属于基本输入/输出系统的一部分),以UDP数据报的形式发送BOOTP请求;服务器收到BOOTP请求后,利用UDP发回响应,内含无盘节点所需的启动信息。经过这样一来一回的报文交换,BOOTP协议便完成了全部工作。无论客户机发送BOOTP请求,还是服务器发回BOOTP响应,都需要采用有限广播的形式。由此也可看出特殊IP地址的作用。通过BOOTP仅能够获得启动文件名等启动信息,并不能直接用于客户机的启动。还需要进一步地应用别的协议(如:TFTP)来获取启动用的内存映象,并运行之。2.远程登录(TELNET,rlogin)本地用户在本地终端上对远地系统进行远程登录。实际上是一个TCP连接。将本地终端上的键盘输入逐键传到远地机。将远地机输出送回到本地终端。3. 文件传输协议(FTP)客户端用户调用ftp命令后,便与服务器建立连接,这个连接叫作控制连接,用于双方传输控制信息,而非数据。一旦建立控制连接,双方进入交互式会话状态。然后,客户端每调用一个FTP命令,客户与服务器之间在建立一个数据连接,双方可以传输数据(比如文件拷贝等)。该命令执行完后,在回到交互会话状态,可继续执行别的FTP命令。最后,用户键入close和quit命令,退出FTP会话。FTP的命令多达60个,很接近DOS的命令风格。FTP命令有以下特点:交互式用户界面。文件格式说明。BINARY、ASCII、EBCDIC等等。权限控制。在请求文件传输之前,FTP要求客户必须首先向服务器提交注册名和口令,服务器将拒绝非法客户的访问。但也提供了匿名FTP(anonymousFTP)。4.单纯文件传输协议(TFTP)建立在UDP数据报基础上的TFTP短小实用,仅提供单纯的文件传输,没有权限控制,也不支持客户与服务器之间的复杂交互过程。请求报文(读/写)指明对象文件的文件名。数据报文以块(512字节/块)为单位传送数据。差错报文用于报告错误。确认报文用于确认数据报文,其中指出正确收到的数据块号。TFTP提供对称性重传,客户和服务器都运行超时重传机制。服务器超时后重传一数据块,客户超时后,重传一确认。对称性重传可提高TFTP的健壮性。5. 其它TCP/IP协议网络文件系统NFS远程过程调用RPCIP地址TCP/IP不同的层也使用不同的名字:应用层ApplicationLayer主机名或NetBIOS名、IP地址传输层TransportLayer端口网络层InternetLayerIP地址网络接口层NetworkInterfaceLayerMAC地址这些名称中除了MAC地址是硬地址不可变之外(特殊的极意外的情况下也会有MAC地址重复的时候),其它名称都是逻辑标识、是可变的。在这里我们先讨论一下IP地址。TCP/IP(TransmiteControlProtocol传输控制协议/InternetProtocol网际协议)已成为计算机网络的一套工业标准协议。Internet网之所以能将广阔范围内各种各样网络系统的计算机互联起来,主要是因为应用了“统一天下”的TCP/IP协议。IP地址即Internet地址,网卡拥有地址,而不是主机拥有地址,以太网络技术要求每个网卡拥有一个以太地址,互联网要求每个网卡至少拥有一个IP地址。在应用TCP/IP协议的网络环境中,为了唯一地确定一台主机,必须为TCP/IP协议指定三个参数,即IP地址、子网掩码和网关地址。IP地址IP地址实际上是采用IP网间网层通过上层软件完成“统一”网络物理地址的方法,这种方法使用统一的地址格式,在统一管理下分配给主机。IP地址格式:Internet网上不同的主机有不同的IP地址。每个主机的IP地址都是由32比特,即4个字节组成的。为了便于用户阅读和理解,通常采用“点分十进制表示方法”表示,每个字节为一部分,中间用点号分隔开来。如就是沈阳广播电视大学网络中心WEB服务器的IP地址。每个IP地址又可分为两部分。网络号表示网络规模的大小,主机号表示网络中主机的地址编号。在Ipv4中,IP地址由四个八位域(叫作octets)组成。Octets被点号分开代表在0到达55范围内的十进制数字。用二进制格式时共有32位组成,为了方便记忆,用点号每八位一分割,称为点分十进制。如:dotteddecimalnotation:00二进制格式:11001100.10000001.00001000.11101100从理论上计算全部32位都用上可以允许有232超过四十亿的地址!这几乎可以为地球三分之二的人提供一个地址。但事实上,随着Internet的发展,可用的IP地址已经快要用完了。在将来的Ipv6中,IP地址由十六个八位域组成,共128位二进制形式的IP地址组成,还是用点号每八位一分割,在现在看来是足够了,但不知道还会有什么意想不到的事情令IP地址又不够用了。二进制转换为十进制2726252423222120765432101286432168421例:11001010.01100000.01001101.00100000202.96.77.32十进制表示为2因为TCP/IP网络是为大规模的互连网络设计的,所以我们不能用全部的32位来表示网络上主机的地址。如果这样做了,我们将得到一个拥有数以亿计网络设备的巨大网络,这个网络不需要包路由设备和子网。这完全失去了包交换互连网的优点。所以,我们需要使用IP地址的一部分来标识网络,剩下的部分标识其中的网络设备。IP地址中用来标识设备所在网络的部分叫做网络ID,标识网络设备的部分叫做主机ID。这些ID包含在同一个IP地址之中。IP地址可以分成两部分:网络ID和主机ID,网络ID用于标志一个子网,以判断通信的两台主机是否在一个子网上,即是否两台主机可以直接通信;主机ID用于标志一台主机。标准中把IP地址分为5类:按照网络规模的大小,IP地址可以分为A、B、C、D、E五类,以容纳不同大小的网络。其中A、B、C类是三种主要的类型地址,D类专供多目传送用的多目地址,E类用于扩展备用地址。地址类定义了哪些位于用于网络ID,哪些位用于主机ID,它同时也定义了可能的网络数目及每个网络中的主机数。A、B、C三类IP地址有效范围如下表:地址类别高位网络ID所用字节数主机ID所用字节数A类地址0xxxxxxx13B类地址10xxxxxx22C类地址110xxxxx31D类地址1110xxxx(用于多路广播)E类地址11110xxx(用于将来扩展)0123478162431A类:0NetIDHostIDB类:10NetIDHostIDC类:110NetIDHostIDD类:1110多目地址(multicastaddress)E类:11110留待后用1.A类1.x.x.x--126.x.x.x0bbbbbbbNetworkIDHostIDA类地址用于主机数目非常多的网络。A类地址的最高位为0,接下来的7位完成网络ID,剩余的24位二进制位代表主机ID。A类地址允许126个网络,每个网络大约一千七百万台主机;第一个八位体是1~126。127是一个特殊的网络ID,是用来检查,TCP/IP协议工作状态。2.B类128.x.x.x—191.x.x.x10bbbbbbNetworkIDHostIDB类地址用于中型到大型的网络。B类地址的最高位为10,与接下来的14位完成网络ID,剩余的16位二进制位代表主机ID。B类地址允许16384个网络,每个网络大约65000台主机;第一个八位体是128~191。3.C类192.x.x.x—223.x.x.x110bbbbbNetworkIDHostIDC类地址用于小型本地网络。C类地址的最高位为110,与接下来的21位完成网络ID,剩余的8位二进制位代表主机ID。C类地址允许大约二百万个网络,每个网络有254台主机;第一个八位体是192~223。4.D类1110bbbbD类地址用于多重广播组。一个多重广播组可能包括1台或更多主机,或根本没有。D类地址的最高位为1110;第一个八位体是224~239。剩余的位设计客户机参加的特定组。在多重广播操作中没有网络ID或主机ID,数据包将传送到网络中选定的主机子集中。只有注册了多重广播地址的主机才能接收到数据包。Microsoft支持D类地址,用于应用程序将多重广播数据发送到网络间的主机上,包括WINS和MicrosoftNetShow。E类11110bbbE类是一个通常不用的实验性地址:它保留作为以后使用。E类地址的最高四位通常为11110;第一个八位体是240~247。248~254无规定6.主机ID与网络ID的规则:不能为全“0“或全“1“NID不能为“127“

唯一性特殊的IP地址广播(直接广播)地址:主机号各位全为“1”的IP地址用于广播之用。所谓广播是指同时向网上的所有主机发送报文。TCP/IP协议规定,主机号部分各位全为1的IP地址用于广播。所谓广播地址指同时向网上所有的主机发送报文,也就是说,不管物理网络特性如何,Internet网支持广播传输。如55就是B类地址中的一个广播地址,你将信息送到此地址,就是将信息送给网络号为136.78的所有主机。有限广播地址:32比特全为“1”的IP地址用于本网广播。有时需要在本网内广播,但又不知道本网的网络号时,TCP/IP协议规定32比特全为1的IP地址用于本网广播,即55。“0”地址:全位位“0”的网络号被解释成“本”网络。TCP/IP协议规定,各位全为0的网络号被解释成“本网络”。若主机试图在本网内通信,但又不知道本网的网络号,那么,可以利用“0”地址。回送地址:A类地址的127是一个保留地址,用于网络软件测试以及本地进程间通信,叫作回送地址。含网络号127的分组不能出现在任何网络上。A类网络地址的第一段十进制数值为127是一个保留地址,如用于网络软件测试以及本地机进程间通信。未知主机(只作源地址) 任何主机(只作目的地址)有限广播A.255.255.255 A类地址的直接广播(directedbroadcast)B.B.255.255 B类地址的直接广播(directedbroadcast)C.C.C.255 C类地址的直接广播(directedbroadcast) C类网络193.1.1中的任何主机的直接广播 C类网络193.1.1中编号为3的主机 C类网络号为193.1.1的网络ID “本网络”中编号为3的主机(只作源地址)网络ID主机ID代表意义全0全0无效.未知主机非全0全0具体的网络全0非全0.全1本地网的具体主机全1非全0.全1无效非全0.非全1全1直接广播全1全1有限广播子网与子网掩码网段是一个物理概念,是指在物理上独立的一段网络。子网是一个逻辑概念,子网中的各主机的NetID是相同的。子网与网段之间,可以是多对多的关系。划分子网(subnetworking)有如下好处:混合使用多种技术,如以太网和令牌网克服已有技术的缺陷,如超过每段中最大主机数目通过对交通重定向和减少广播来减少网络阻塞产生IP地址复用技术的动因并不是IP地址的长度不够,而是为了避免主机号部分的浪费,将IP地址的主机号部分进一步划分为子网号和主机号两部分。为了快速确定IP地址的哪部分代表网络号,哪部分代表主机号,以及判断两个IP地址是否属于同一网络,就产生了子网掩码的概念。又叫子网寻径,是使用最广泛的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。子网掩码给出了整个IP地址的位模式,其中的1代表网络部分,0代表IP主机号部分,应用中也采用点式十进制表示。用它来帮助确定IP地址网络号在哪结束,主机号在哪开始。A、B、C三类网络的标准缺省掩码如下:类别 子网掩码二进制模式 子网掩码点分十进制A类 11111111.00000000.00000000.00000000 B类 11111111.11111111.00000000.00000000 C类 11111111.11111111.11111111.00000000 *高位全为1,低位全为0。网间网部分(网络号)本地部分(主机号)网间网部分物理网络主机如何划分IP地址的本地部分:IP协议规定不同的网点可以采用不用的子网地址模式,它是一个32比特的位模式,叫子网掩码。规定:若子网掩码中的某些位为1,则IP地址中对应位是网络地址中的一位;若子网掩码中的某位置0,则IP地址中对应位是主机地址中的一位。网络ID号主要用于判断两个主机是否在一个子网上,网络ID号相同的两个主机是在一个子网上,可以直接通信。网络ID号与主机ID号计算方法如下:网络ID号=IP地址&&子网掩码主机ID号=IP地址&&子网掩码的反码也可以用非标准子网掩码来划分子网,参见后面的例子。非标准子网掩码常用值速查表:二进制 十进制 简便算法 00000000 0 256-256 10000000 128 256-128 11000000 192 256-64 11100000 224 256-32 11110000 240 256-16 11111000 248 256-8 11111100 252 256-4 11111110 254 256-2 11111111 255 256-1IP地址和子网掩码的使用一般直观地采用“点分十进制表示”,如:回送地址→;子网模→。还有一种不常用的三维组表示法:{<NetID>,<SubnetID>,<HostID>},如:IP地址(或子网模)→{128.10,-1,0}。如果在Internet网上进行通信的两台主机的IP地址分别为0和2,那么子网掩码分别对两个IP地址进行与(and)运算后,得出网络号和主机号,并且结果一致,可以判断这两个IP地址属于同一个网络。为了在网络分段情况下有效地利用IP地址,可以攫取主机号的高位部分作为子网号,从通常的八位界限中扩展子网掩码,用来创建某类地址的更多子网。但创建更多的子网时,在每个子网上的可用主机地址数目会减少。要确定更多子网的子网掩码,首先应确定传输IP信息流的网段的数目,然后再确定能够容纳网段数的最低子网掩码数目,记住千万不要使用包含全0或全1的网络地址。网关若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP地址,这个IP地址称为网关地址。5.IP地址和子网掩码举例C类地址-255共256个地址如子网掩码为,所有地址都在一个子网上,可用254个地址。如子网掩码为24,则地址分布在8个子网上。每个子网有32个地址,其中30个可用。 总的地址范围 可用地址范围 0段 -31 -301段 2-63 3-622段 4-95 5-943段 6-127 7-1264段 28-159 29-1585段 60-191 61-1906段 92-223 93-2217段 24-255 25-254各子网的子网掩码可以不同,如2,3段可以合并为一个段,将此段的子网掩码设为92;也可以将4,5,6,7段可以合并为一个段,将此段的子网掩码设为28;但必须保证各子网的IP地址不重复。在同一个子网上的各个主机之间可以直接通信,不在同一个子网上的主机之间不可以直接通信,即使都连在一个集线器上也不可以直接通信,必须通过路由器才能互相通信。1段 3 5 2段4 2 60路由器设两个IP地址,与1段相连的端,设一个1段IP地址,如3;与2段相连的端,设一个2段IP地址,如5;这时1段主机的网关IP地址设为3;2段主机的网关IP地址设为5,这样1段主机就可以和2段主机通信了。TCP/IP协议的格式IP数据报格式048162031版本头标长服务类型报文总长标识标志片偏移生存时间协议头标校验和信源IP地址信宿IP地址IP选项数据区填充域数据区说明:版本:长度为4比特。不同IP协议版本,其数据报格式有所差别。IP软件首先检查版本号,以确保版本正确。IP软件拒绝处理协议版本不同的数据报。头标长:4比特长。指出以32比特字长计的报头长度。≥5。长度不足部分由填充域添“0”凑齐。(即实际字节数为头标长*5)服务类型:长度为1字节。分为两部分:优先权(012)和传输类型(345)。优先权:从0到7,“0”表示一般优先权,“7”表示网络控制优先权。大多数网络软件对此不予理睬。传输类型:从低位到高位依次排列:“D”代表低延迟;“T”代表高吞吐率;“R”代表高可靠性。上述3位请求,仅供IP软件参考,不具有强制性,甚至可以完全忽略这些请求。报文总长:以字节为单位指示整个IP数据报的长度,包括头标长和数据区长。宽度为16比特,所以IP数据报最长可达65535字节。标识、标志、片偏移:用于数据报封装时的分片和片的重组。“标识”域由信源机付与,分片时要不加修改地复制;“标志”域只有低两位有效,分别表示:片未完、不分片;“片偏移”域以8字节为单位指出本片数据在初始数据报数据区中的偏移量。生存时间:用于避免随机寻径时,无休止的IP报文流动。以秒为单位,一旦时间小于0,就从网中删除,并向信源机发回出错信息(见ICMP)。协议:创建该数据报数据区数据的高级协议类型,如:TCP、UDP。头标校验和:对头标的其它部分按16为求异或,结果取反。信源IP地址、信宿IP地址:在传输过程中保持不变(分片、重组时)。格式见IP地址说明部分。IP选项数据区:主要用于控制和测试用。作为IP协议的组成部分,该域是任选的。各选项由3部分构成:选项码、长度和选项数据,其中前两部分各占1各字节。数据区:IP协议不保证该域数据传输的可靠性。传输层协议:TCP和UDP传输层端口TCP/UDP提出协议端口的概念,用于标识通信的进程。每个端口拥有一个叫端口号(portnumber)整数标识符,用于区分不同端口。由于TCP和UDP是两个完全独立的软件模块,因此各自的端口号也相互独立。二者均允许16比特的端口值。TCP/IP将端口分为2部分:保留端口、自由端口。保留端口用于系统的公用服务进程,TCP和UDP均规定小于256的端口号才能作为保留端口。例如:协议端口号网络关键字UNIX关键字说明UDP42NAMESERVERname主机名字服务器53DOMAINnameserver域名服务器67BOOTPSbootps启动协议服务器69TFTPtftp简单文件传输111SUNRPCsunrpc微系统公司RPCTCP20FTP-DATAftp-data文件传输服务器(数据连接)21FTPftp文件传输服务器(控制连接)23TELNETTelnet远程终端服务器42NAMESERVERname主机名字服务器53DOMAINnameserver域名服务器用户数据报协议UDP报文格式UDP的报头格式如下:08162431UDP信源端口UDP信宿端口UDP报文总长UDP校验和数据区说明:报头字段名位数说明源端口号目的端口号消息长度校验和数据区16161616XX发送端的UDP端口,当不需要返回数据时,该域置0接收端的UDP端口UDP报文的长度(以字节计,≥8)用于验证报头是否损坏发送的数据说明UDP信源端口:发送端UDP端口,当不需要返回数据时,该域置0。UDP信宿端口:接收端UDP端口。UDP报文总长:以字节计的整个报文长度,≥8。UDP校验和:可选域。置0时表明未选。数据区:长度不定。传输控制协议TCP报文格式048162431 TCP源端口TCP目的端口32位序列号32位确认号数据偏移4位保留6位URGACKPSHRSTSYNFIN16位窗口大小16位TCP校验和16位紧急指针选项(如果有)填充项数据区TCP的报头格式说明如下:报头字段名位数说明源端口号目的端口号序号(SEQ)确认号(ACK)数据偏移控制字段URGACKPSHRSTSYNFIN窗口大小校验和紧急指针选项填充1616323246111111161616可变可变本地通信端口,支持TCP的多路复用机制远地通信端口,支持TCP的多路复用机制数据段第一个数据字节的序号SYN段的SYN序号表示本地希望接收的下一个数据字节的序号指出该段中数据的超始位置(以32位为单位)URG,ACK,PSH,RST,SYN,FIN紧急指针字段有效标志,即该段中携带紧急数据确认号字段有效标志PUSH操作的标志要求异常终止通信连接的标志建立同步连接的标志本地数据发送已结束,终止连接的标志本地接收窗口尺寸,即本地接收缓冲区大小包括TCP报头和数据在内的校验和从段序号开始的正向位移,指向紧急数据的最后一个字节提供任选的服务保证TCP报头以32位为边界对齐其中两个端口域、校验和域、数据区等跟UDP报文相同。TCP段其余各域的含义说明如下:序号:指出段中数据在发送端数据流中的位置。确认号:指出本机希望下一个接收的字节的序号。HLEN(头标长度):以32比特为单位的段头标长度。该域是针对变长的“选项”域设计的。控制字段码位:指出段的目的与内容。窗口:用于通告接收端接收缓冲区的大小。* 以太帧在数据链路层的格式目的地址 源地址 帧类型 帧数据 48b 48b 16b 368-12000b * 以太帧在物理层的格式:即在传输介质上的形式前导 目的地址 源地址 帧类型 帧数据 校验码64b 48b 48b 16b 368-12000b 32b数据封装及协议格式示例数据封装:应用程序在发送数据时,将数据按协议层次逐层打包,然后将数据发送到传输介质上。接收方在接收数据时,将数据按协议层次逐层解释,最后将数据传给应用程序。应用报文->TCP段或UDP数据报->IP包通过传输数据的封装也可以更好地理解协议栈的含义:发送数据时由高层向低层传递数据,一层一层地加入协议头,先加入高层协议头,后加入低层协议头,高层协议头在里,低层协议头在外。接收数据时由低层向高层传递数据,一层一层地去掉协议头,低层协议头在外,高层协议头在里,先去掉低层协议头,后去掉高层协议头。先加入的高层协议头后去掉,后加入的低层协议头先去----符合栈的先进后出,后进先出原则。TCP数据的封装:用户数据应用头用户数据TCP头应用头用户数据IP头TCP头应用头用户数据以太帧头IP头TCP头应用头用户数据以太帧尾UDP数据的封装:用户数据应用头用户数据UDP头应用头用户数据IP头UDP头应用头用户数据以太帧头IP头UDP头应用头用户数据以太帧尾UDP格式示例(含IP)FRAME:BaseframepropertiesETHERNET:ETYPE=0x0800:Protocol=IP:DODInternetProtocolETHERNET:Destinationaddress:0080C847DF38ETHERNET:.......0=IndividualaddressETHERNET:......0.=UniversallyadministeredaddressETHERNET:Sourceaddress:00107B3A4401ETHERNET:.......0=NoroutinginformationpresentETHERNET:......0.=UniversallyadministeredaddressETHERNET:FrameLength:90(0x005A)ETHERNET:EthernetType:0x0800(IP:DODInternetProtocol)ETHERNET:EthernetData:Numberofdatabytesremaining=76(0x004C)IP:ID=0xE798;Proto=UDP;Len:76IP:Version=4(0x4)IP:HeaderLength=20(0x14)IP:ServiceType=0(0x0)IP:Precedence=RoutineIP:...0....=NormalDelayIP:....0...=NormalThroughputIP:.....0..=NormalReliabilityIP:TotalLength=76(0x4C)IP:Identification=59288(0xE798)IP:FlagsSummary=2(0x2)IP:.......0=LastfragmentindatagramIP:......1.=CannotfragmentdatagramIP:FragmentOffset=0(0x0)bytesIP:TimetoLive=244(0xF4)IP:Protocol=UDP-UserDatagramIP:Checksum=0xA4F0IP:SourceAddress=3IP:DestinationAddress=IP:Data:Numberofdatabytesremaining=56(0x0038)UDP:SrcPort:Unknown,(7699);DstUDP:SourceUDP:DestinationUDP:Totallength=56(0x38)bytesUDP:UDPChecksum=0xE649UDP:Data:Numberofdatabytesremaining=48(0x0030)00000:0080C847DF3800107B3A440108004500...G.8..{:D...E.00010:004CE7984000F411A4F0CA661849CA60.L..@......f.I.`00020:4D071E131E130038E649000000010082M......8.I......00030:C0F90000000000000000000000000000................00040:09C50000020000000004000015AF0000................00030:C0F90000000000000000000000000000................00040:09C50000020000000004000015AF0000................00050:00010000000000000001..........说明:00-0D 以太帧(14B)00-05 0080C847DF38 目标机MAC地址(6B)06-0B 00107B3A4401 源机MAC地址(6B)0C-0D 0800 类型(2B) 0E-21 IP头格式(20B)0E 45 高4位:版本4;低4位:5,IP头长4*5=20B0F 00 服务类型0028 IP总长0028H=40B12-13 9225 标识9225H=3741314 40 高4位4,标志14-15 4000 14B低4位和15B:偏移016 80 生存期17 06 协议UDP18-19 A4F0 IP头校验和A4F01A-1D CA661849 信源IP地址(3)1E-21 CA604D07 信宿IP地址() *IP头到此结束22-29 UDP头格式(8B)1E13 信源端口 *UDP从此开始24-25 1E13 信宿端口26-27 0038 UDP消息的长度(38H=56B)28-29 E649 UDP校验和2A- UDP数据TCP格式示例(含IP)FRAME:BaseframepropertiesETHERNET:ETYPE=0x0800:Protocol=IP:DODInternetProtocolETHERNET:Destinationaddress:009027869819ETHERNET:.......0=IndividualaddressETHERNET:......0.=UniversallyadministeredaddressETHERNET:Sourceaddress:0080C8483249ETHERNET:.......0=NoroutinginformationpresentETHERNET:......0.=UniversallyadministeredaddressETHERNET:FrameLength:54(0x0036)ETHERNET:EthernetType:0x0800(IP:DODInternetProtocol)ETHERNET:EthernetData:Numberofdatabytesremaining=40(0x0028)IP:ID=0x9225;Proto=TCP;Len:40IP:Version=4(0x4)IP:HeaderLength=20(0x14)IP:ServiceType=0(0x0)IP:Precedence=RoutineIP:...0....=NormalDelayIP:....0...=NormalThroughputIP:.....0..=NormalReliabilityIP:TotalLength=40(0x28)IP:Identification=37413(0x9225)IP:FlagsSummary=2(0x2)IP:.......0=LastfragmentindatagramIP:......1.=CannotfragmentdatagramIP:FragmentOffset=0(0x0)bytesIP:TimetoLive=128(0x80)IP:Protocol=TCP-TransmissionControlIP:Checksum=0x38F5IP:SourceAddress=40IP:DestinationAddress=IP:Data:Numberofdatabytesremaining=20(0x0014)TCP:.A....,len:0,seq:138137-138137,ack:1323022643,win:8760,src:1026dst:139(NBTSession)TCP:SourceTCP:DestinationTCP:SequenceNumber=138137(0x21B99)TCP:AcknowledgementNumber=1323022643(0x4EDBB933)TCP:DataOffset=20(0x14)TCP:Reserved=0(0x0000)TCP:Flags=0x10:.A....TCP:..0.....=NourgentdataTCP:...1....=AcknowledgementfieldsignificantTCP:....0...=NoPushfunctionTCP:.....0..=NoResetTCP:......0.=NoSynchronizeTCP:.......0=NoFinTCP:Window=8760(0x2238)TCP:Checksum=0x35B0TCP:UrgentPointer=0(0x0)00000:0090278698190080C848324908004500..'......H2I..E.00010:002892254000800638F5CA604DF0CA60.(.%@...8..`M..`00020:4D040402008B00021B994EDBB9335010M.........N..3P.00030:223835B00000"85...说明:00-0D 以太帧(14B)00-05 009027869819 目标机MAC地址(6B)06-0B 0080C8483249 源机MAC地址(6B)0C-0D 0800 类型(2B) 0E-21 IP头格式(20B)0E 45 高4位:版本4;低4位:5,IP头长4*5=20B0F 00 服务类型0028 IP总长0028H=40B12-13 9225 标识9225H=3741314 40 高4位4,标志14-15 4000 14低4位和15:偏移016 80 生存期17 06 协议TCP18-19 38F5 IP头校验和1A-1D CA604DF0 信源IP地址(40)1E-21 CA604D04 信宿IP地址() *IP头到此结束22-35 TCP头格式(20B)0402 信源端口 *TCP从此开始24-25 008B 信宿端口26-29 00021B99 TCP序列号00021B99H=1381372A-2D 4EDBB933 TCP应答 50 高4位(5)TCP头长,4*5=20;低4位保留2F 10 高2位保留,低6位标志(ACK=1)30-31 2238 窗口大小(2238H=8760)32-33 35B0 TCP校验和(35B0H)34-35 0000 16位紧急指针(0000H)数据(略)

WinSock基础什么是套接字套接字(socket)是一种网络编程接口,它是对通信端点的一种抽象,提供了一种发送和接收数据的机制。套接字是通讯的基础,一个套接字是通讯的一端。在这一端上你可以找到与其对应的一个名字。一个正在被使用的套接字都有它的类型和与其相关的进程。套接字存在于通讯域中。通讯域是为了处理一般的线程通过套接字通讯而引进的一种抽象概念。套接字通常和同一个域中的套接字交换数据(数据交换也可能穿越域的界限,但这时一定要执行某种解释程序)。Bekerly套接字规范Socket(套接字)最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口,这个规范是针对UNIX操作系统下TCP/IP协议实现的,为UNIX操作系统下不同的计算机之间使用TCP/IP协议进行网络通信编程提供了一个API。随着UNIX操作系统的流行而逐步成为最普遍使用的网络通信接口。由于Berkeley大学最先在Sockets接口开发中工作,因此,这个套接字规范一般称为BerkeleySockets规范。WinSock介绍:后来,SunMicrosystem,JSBCorporation,FTPsoftware,Microdyne和Microsoft等几家公司共同制定了一套标准,即WindowsSockets规范,简称WinSock。WindowsSockets规范本意在于提供给应用程序开发者一套简单的API,并让各家网络软件供应商共同遵守。此外,在一个特定版本Windows的基础上,WindowsSockets也定义了一个二进制接口(ABI),以此来保证应用WindowsSocketsAPI的应用程序能够在任何网络软件供应商的符合WindowsSockets协议的实现上工作。因此这份规范定义了应用程序开发者能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。WindowsSockets规范支持单一的通讯域,即Internet域。各种进程使用这个域互相之间用Internet协议族来进行通讯(WindowsSockets1.1以上的版本支持其他的域,例如WindowsSockets2)。WindowsSockets规范定义了应用程序开发人员能够使用,并且网络软件供应商能够实现的一套库函数调用和相关语义。遵守这套WindowsSockets规范的网络软件,我们称为WindowsSockets兼容的网络软件。一个软件供应商必须百分之百地实现WindowsSockets规范才能做到与WindowsSockets兼容。任何能够与WindowsSockets兼容实现协同工作的应用程序就被认为是具有WindowsSockets接口。我们称这种应用程序为WindowsSockets应用程序。此外该规范还定义了如何使用API与Internet协议族(TCP/IP)的连接,尤其要指出的是所有的WindowsSockets都实现了对流Socket(TCP)和数据报Socket(UDP)的支持。流Socket提供了双向的、有序的、无重复且可靠的数据流服务。数据报Socket提供了双向的、无序的、不可靠的服务。Socket实际上代表的是网络通信的一个端点,利用它,用户所开发的Socket应用程序就可以与网络中其它的Socket应用程序进行通信,也就实现了网络中端到端的通信。WindowsSocketsAPI是MicrosoftWindows为网络通信程序设计接口,它在继承了前面介绍的BerkeleySockets主要特征的基础上,对其进行了重要扩充。这些扩充主要体现在它提供了一些异步函数,并增加了符合Windows消息驱动机制的网络事件异步选择方式,这些扩充有利于程序员开发符合Windows工作模式的软件,WinSock使得在Windows环境下开发高性能网络通信程序成为可能。应用程序调用WindowsSockets的API实现相互之间的通讯。WindowsSockets又利用下层的网络通讯协议功能和操作系统调用实现实际的通讯工作。由于套接字广泛应用于网络编程,因此一个公众可以接受的套接字规范就十分必要了。套接字规范其实就是一套网络编程接口,它包含了一系列的与套接字使用有关的库函数,是一个面向网络通信编程的API。套接字可以根据通讯性质分类;这种性质对于用户是可见的。应用程序一般仅在同一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论