网络编程简介

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第15章网络编程简介这里所说的网络主要是指因特网(Internet)。本章先介绍网络与编程的一些基本概念,然后重点讲解Socket的MFC与C#编程和ASP.NET的Web编程。15.1网络与编程本节先介绍网络发展的简史,再给出两种主流的分层网络模型,然后讨论与网络编程有关的接口和技术等基本内容。15.1.1因特网与万维网因特网(Internet,网际网/互联网)的前身是1969年底启用的ARPANet(AdvancedResearchProjectsAgencyNetwork,[美国国防部]高级研究计划署网络,阿帕网),由BobTaylor和LarryRoberts等人主持研制。1973年底,RobertE.Kahn和VintonCerf提出了基于包交换的两个网络协议IP(InternetProtocol,网际协议)和TCP(TransmissionControlProtocol,传输控制协议),1983年元旦ARPANet启用TCP/IP协议集。1986年,ARPANet的主干网被NSFNet(NationalScienceFoundationNetwork,[美国]国家科学基金会网络)接替,并改名为Internet(因特网),1991年起对社会开放。1990年10月在CERN(ConseilEuropeenpourlaRechercheNucleaire,欧洲粒子物理研究所)工作的TimBerners-Lee提出了因特网应用层的两个协议:用于描述网页的HTML(HyperTextMarkupLanguage,超文本标记语言)和用于传输网页文档和各种资源数据的HTTP(HypertextTransferProtocol,超文本传输协议),创立了万维网(WorldWideWeb,,环球网),一般简称为Web(蜘蛛网),Web网很快成为因特网的主体。1993年初,美国Illinois(伊利诺)大学的硕士研究生MarcAnderressen与EricBina合作在位于该校内的NCSA(NationalCenterforSupercomputingApplications美国超级计算应用中心)开发出支持内嵌图像的网页浏览器马赛克(Mosaic),1994年10月Anderressen等人创办的网景公司Netscape推出了Navigator浏览器,得到广泛使用,大大推动了互联网的普及。1995年微软公司从伊利诺大学购得马赛克技术,并在此基础上开发出IE(InternetExplorer,因特网探索者)浏览器,随Windows95免费推出。1994年10月Berners-Lee创立了万维网联盟(WorldWideWebConsortium,W3C),负责万维网的管理和技术标准的制定。1998年2月W3C推出了划时代的XML(eXtensibleMarkupLanguage,可扩展标记语言),2000年1月又推出了用来替代HTML的XHTML(ExtensibleHTML,扩展的HTML)。传统的万维网Web正在向新的万维网OneWeb过渡,参见图15-1。2图15-1Web体系结构的发展其中:URL(UniformResourceLocator,统一资源定位符)——在因特网的Web服务程序上用于指定信息位置的表示方法,如。URI(UniformResourceIdentifier,统一资源标识符)——=URL+URN。URN(UniformResourceName,统一资源命名)——使用urn方案的URI,不一定意味着有确定的资源可用。如urn:isbn:0451450523。IRI(InternationalizedResourceIdentifiers,国际化资源标识符)——URI的国际化,支持Unicode。15.1.2IP网络的分层与协议这里的IP网络是指基于因特网协议套件(TCP/IP协议栈)的网络,包括:因特网(Internet)、城域网(MetropolitanAreaNetwork,MAN)和内部网(Intranet)等。为了便于分析和管理,一般将通信网络抽象为若干层。主要有ISO(和IEC共同)制定的7层参考模型(ReferenceModel)ISO/OSI(国际标准,失败,主要用于理论研究)和因特网5层参考模型TCP/IP协议栈(实事标准,成功,应用十分广泛)。参见表13-1和图15-2&3。表13-1ISO/OSI7层参考模型OSI模型数据单元层功能主机层数据7.应用对应用的网络过程6.表示数据表示与加密5.会话主机间通信段4.传输端到端连接与可靠性(TCP)介质层包/数据报3.网络路径确定与逻辑寻址(IP)帧2.数据链接物理寻址(MAC&LLC)位1.物理介质,信号与二进制传送3其中:ISO(InternationalOrganizationforStandardization,国际标准化组织)——由153个国家的国家标准学会联合组成的一个非政府国际组织,总部(中央秘书处)设在瑞士的日内瓦,负责制定适应商业和广泛社会需要的各种国际标准,网址为。IEC(InternationalElectrotechnicalCommission,国际电工技术委员会)——一个成立于1906年6月的国际标准化权威组织,属于联合国的甲级咨询机构,负责制定关于电工电子各方面的标准,有42个会员国,总部也设在瑞士的日内瓦,网址为。OSI(OpenSystemsInterconnection,开放系统互连)——一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。对应的国际标准为:ISO7498:1984、ISO/IEC7498-1~4:1994、1989、1989、1997)。MAC(MediaAccessControl,介质访问控制)——数据链路层的子层,提供寻址和信道访问的控制机制,位于物理层和逻辑链路层之间。LLC(LogicalLinkControl,逻辑链路控制)——数据链路层的上部子层,在MAC层上传输的多路复用和分离协议,提供流量和差错控制。ISO/OSI7层参考模型因特网5层参考模型(及协议)应用层(Application)应用层(HTTP/HTML、FTP、SMTP/POP3/IMAP、……)表示层(Presentation)会话层(Session)传输层(Transport)传输层(TCP/UDP)网络层(Network)互连网层(IP/ICMP/IGMP)数据链路层(Data-link)网络接口层(ARP/RARP)物理层(Physical)物理层图15-2OSI与因特网参考模型的层次对应关系其中:ARP(AddressResolutionProtocol,地址解析协议)——计算机用来匹配IP地址到硬件地址的协议。计算机调用ARP广播一个请求,目标计算机应答该请求。RARP(ReverseAddressResolutionProtocol,逆向地址解析协议)——计算机系统在自举时获取IP地址的协议。IP(InternetProtocol,网际协议)——定义互联网上包的格式与路由包到其目的地之机制。ICMP(InternetControlMessageProtocol,互连网控制消息协议)——提供网络层的控制手段和差错报告。IGMP(InternetGroupManagementProtocol,互连网组管理协议)——用来管理组播的,它是参加组播的主机与路由器之间交换组员信息的协议。不过,组播目前存在多个组的地址冲突问题,而且,现有的路由器一般不支持组播。TCP(TransmissionControlProtocol,传输控制协议)——为应用程序提供访问面向连接的通信服务,可靠、控制流量。特点:面向连接、累计确认与超时重传(保证数据传输的可靠性)、拥塞控制(基于滑动窗口协议)、报头变长(≥24B)。UDP(UserDatagramProtocol,用户数据报协议)——为用户提供无连接的服务,高效但不可靠,主要用于传输多媒体数据。特点:无连接、无差错控制(不重传)、报头中的校验和可选(可不计算和存储)、报头定长(8B)。FTP(FileTransferProtocol,文件传输协议)——因特网上管理文件传输的通讯协议,用于从一台计算机到另一台计算机传送完整的文件。SMTP(SimpleMessageTransferProtocol,简单邮件传输协议)——用于电子邮件的传输。POP3((PostOfficeProtocol,邮局协议第三版)——提供用户计算机对(本地邮件服务器中的)电子邮4箱进行远程存取的脱机协议。IMAP(InternetMessageAccessProtocol,因特网消息访问协议)——提供用户计算机对(本地邮件服务器中的)电子邮箱进行远程操作的联机协议。图15-3IP网络模型15.1.3因特网编程通用的因特网编程,一般采用传统的套接字(Sockets)网络API,在Windows平台中对应的是Winsock。微软还自己开发了用于因特网应用层的编程接口WinInet。1.Sockets和Winsock因特网(Internet)最初是基于Unix的,而Sockets(套接字/插座)是Unix第一个支持TCP/IP协议栈的网络API,最早于1982年8月随4.2BSD版Unix推出,常被称为Berkeleysockets(伯克利套接字)。Unix的BSD(BerkeleySoftwareDistribution,[美国加州大学]伯克利分校软件分发)版,是由Sun公司的创始人之一兼首席技术官BillJoy(比尔·乔伊)于1977年在伯克利分校读研期间自己开发的。Sockets也是由他编写的。Winsock(WindowsSocketsAPI)是从Sockets移植过来的TCP/IP编程的低级WindowsAPI,由JSB公司的MartinHall、Sun公司的MarkTowfiq和GeoffArnold、微软公司的HenrySanders和JAllard等人共同开发。Winsock的版本有:1.0(1992年6月,微软不支持)1.1(1993年1月,微软在WindowsforWorkgroups3.1的扩展包中支持,该扩展包也是Windows95和WindowsNT3.x的组成部分)2(1994年,未公开发布)图15-4BillJoy52.1.0(1996年1月,首个公开发布的Winsock2规范,微软在Windows95的扩展包中支持,该扩展包也是Windows98和WindowsNT4.0及后续Windows版本的组成部分)2.2.0(1996年5月,去掉了对16位Windows应用程序的支持)2.2.1(1997年5月)2.2.2(1997年8月)在Windows中,除了可以直接用WinsockAPI进行C/C++编程外,还可以用Winsock的MFC和.NETBCL封装进行面向对象和组件的编程。MFC封装的Winsock类有:基本的异步套接字类CAsyncSocket和简单的套接字类CSocket。为了使用Winsock编程,程序员得详细了解因特网应用层的具体协议内容。2.WinInet使用Winsock编程,程序员必须与基本的网络通信打交道,还必须详细了解因特网应用层协议的具体内容,包括对话模式、命令的组成和格式、命令发送的顺序等等。为了方便因特网应用程序的编写,微软在Winsock之外,还自己开发了用于因特网应用层编程的接口WinInet(Win32InternetExtensions,32位Windows的因特网扩展)。WinInet的优点:支持高速缓存——似IE,将HTML和其他因特网文件放入本地磁盘的特定目录,下次可直接加载该文件,而不是

1 / 50
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功