![网络对象调用与传输[1]_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/53f656c5-f8b8-40e3-ae88-8ddf9a6a9046/53f656c5-f8b8-40e3-ae88-8ddf9a6a90461.gif)
![网络对象调用与传输[1]_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/53f656c5-f8b8-40e3-ae88-8ddf9a6a9046/53f656c5-f8b8-40e3-ae88-8ddf9a6a90462.gif)
![网络对象调用与传输[1]_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/53f656c5-f8b8-40e3-ae88-8ddf9a6a9046/53f656c5-f8b8-40e3-ae88-8ddf9a6a90463.gif)
![网络对象调用与传输[1]_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/53f656c5-f8b8-40e3-ae88-8ddf9a6a9046/53f656c5-f8b8-40e3-ae88-8ddf9a6a90464.gif)
![网络对象调用与传输[1]_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/53f656c5-f8b8-40e3-ae88-8ddf9a6a9046/53f656c5-f8b8-40e3-ae88-8ddf9a6a90465.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦计算机网络与通信计算机网络与通信明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦课程内容课程内容1、计算机网络组成2、OSI参考模型3、 TCP/IP模型、TCP/IP协议与UDP/IP协议4、网络程序寻址方式 5、SOCKET程序设计明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦1计算机网络组成计算机网络组成计算机网络是由不同通信媒体和中继设备连接的、物理上独立的多台计算机组成的、将需传输的数据分成不同长度的分组进行传输和处理的系统 多台自主计算机的互联系统 必须指定网络中哪一台计算
2、机来完成什么样的操作,即客户/服务器的工作方式明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦计算机网络图示计算机网络图示R1RkRjRiR2H1H2H3HnHm明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦计算机网络的组成计算机网络计算机网络硬件硬件软件:网络协议软件:网络协议计算机计算机通信媒体通信媒体中继设备中继设备明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦通信媒体通信媒体v传输信息的通道,如双绞线、光纤等v传输媒体上要解决的问题: 比特串如何在媒体上传输 如何在一条媒体上传输多路信号 如何确定信道的传输能力明程序设计之
3、精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦常用的术语常用的术语v信道:信息的通道。通常一条物理媒体上可以有多个信道v数据:所要传输的信息,有数字数据和模拟数据v信号:数据的载体,通常用数字信号或模拟信号v数字传输和模拟传输v带宽:有效的频率范围,即构成信号的最高频和最低频之差v数据传输率:每秒能传输多少bitv单工、半双工和全双工传输明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦中继设备中继设备v帮计算机转发数据的设备,如路由器和交换机明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦路由器路由器v 路由器:连接因特网中各局域网、广域网的设
4、备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号的设备。 路由器英文名Router,路由器是互联网络的枢纽、“交通警察”。v 基本概念所谓路由所谓路由就是指通过相互连接的网络把信息从源地点移动到目标地点的活动。一般来说,在路由过程中,信息至少会经过一个或多个中间节点。通常,人们会把路由和交换进行对比,这主要是因为在普通用户看来两者所实现的功能是完全一样的。其实,路由和交换之间的主要区别就是交换发生在OSI参考模型的第二层(数据链路层),而路由发生在第三层,即网络层。这一区别决定了路由和交换在移动信息的过程中需要使用不同的控制信息,所以两者实现各自功能的方式是不同的。 明
5、程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦网络分类网络分类v按拓扑结构分v按技术分v按规模分v按传输介质分v按使用范围分明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦按拓扑结构分按拓扑结构分v总线v环形v网状v星形明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦按技术分按技术分v广播式网络v点到点网络明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦按规模分按规模分v局域网LANv城域网MANv广域网WANv互联网Internet明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦局域网局域网
6、LAN (Local Area Network )v地域:覆盖范围较小 v传输技术: 总线型总线型 IEEE 802.3(以太网)(以太网)CSMA/CD 10M总线型总线型 IEEE 802.4(令牌总线)(令牌总线)10M环环 型型 IEEE 802.5(IBM令牌环)令牌环)4M 16M明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦一个典型的企业网络硬件平台一个典型的企业网络硬件平台互联网互联网路由器路由器主交换机主交换机防火墙防火墙部门交换机部门交换机路由器路由器网管工作站网管工作站服务器服务器明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦城
7、域网城域网 MAN (Metropolitan Area Network)大型的LAN私有网络私有网络 一个连锁超市,有十几一个连锁超市,有十几个或几十个分布在市内个或几十个分布在市内公用网络公用网络 哈尔滨哈尔滨XXX网网 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦广域网广域网 WAN (Wide Area Network)跨越地域较大的网络v主机(主机(host) 端点系统(端点系统(end system)v通信子网(通信子网(communication subnet) 简简称子网称子网v资源子网(资源子网( resource subnet)明程序设计之精妙,晓道
8、法自然之大伦明程序设计之精妙,晓道法自然之大伦通信子网通信子网v通信子网负责计算机之间的数据通信,由通信子网负责计算机之间的数据通信,由传输线和交换单元组成传输线和交换单元组成传输线交换单元通常分组交换节点为路由器(router)明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦资源子网资源子网v由通信子网互连在一起的计算机构成v资源子网中的计算机负责运行对信息进行处理的应用程序,他们是网络中信息流动的源与宿,向用户提供可供共享的硬件、软件和信息资源明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦R1RkRjRiR2H1H2H3HnHm通信子网通信子网资源
9、子网资源子网明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦互联网互联网v通常由路由器联接的LAN或WAN组成v通信子网通常由路由器组成v路由器之间用点到点方式连接v路由器的传输机理为分组交换明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦互联网络硬件平台互联网络硬件平台互联网互联网局域网局域网广域网广域网局域网局域网路由器路由器明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦按传输介质分按传输介质分v有线网v无线网明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦按使用范围分按使用范围分v专用网v公共网明程序设计之
10、精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦什么是协议v1.1定义定义计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则。 v 1.2 网络协议网络协议计算机通信网是由许多具有信息交换和处理能力的节点互连而成的. 要使整个网络有条不紊地工作, 就要求每个节点必须遵守一些事先约定好的有关数据格式及时序等的规则。 这些为实现网络数据交换而建立的规则、约定或标准就称为网络协议。网络编程中有两个主要的问题,一个是如何准确地定位网络上一台或多台计算机,另一个就是找到主机后如何可靠高效地进行数据传输。回答这两个问题的答案就是网络协议,不同的计算机之间必须使用相同的网络协议才能进行
11、数据的交换。网络协议也有很多种,具体选择那一种协议则要视情况而定。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦计算机网络参考模型计算机网络参考模型vISO/OSI参考模型vTCP/IP参考模型明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2、 OSI参考模型v A、OSI RM:开放系统互连参考模型(Open System Interconnection Reference Model)B、OSI RM 定义了网络中设备所遵守的层次结构。C、分层结构的优点: - 简化网络的操作 - 提供不同类型设备间兼容性和标准性 - 结构上可以分隔 - 易于网络
12、实现和维护明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.1 ISO/OSI参考模型参考模型应用应用主机主机A层层7654321应用协议应用协议表示协议表示协议会话协议会话协议传输协议传输协议表示表示网络网络传输传输物理物理数据链路数据链路会话会话交换单交换单元名称元名称APDUPPDUSPDUTPDU分组分组帧帧比特比特应用应用表示表示网络网络传输传输物理物理数据链路数据链路会话会话主机主机B网络网络物理物理物理物理网络网络数据链路数据链路数据链路数据链路路由器路由器路由器路由器通信子网协议通信子网协议物理层主机物理层主机-路由器协议路由器协议数据链路层主机数据链路层
13、主机-路由器协议路由器协议网络层主机网络层主机-路由器协议路由器协议通信子网边界通信子网边界明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.1 OSI七层模型简述数据流层数据流层传输层传输层数据链路层数据链路层网络层网络层物理层物理层应用层应用层 (高高) 会话层会话层表示层表示层应用层应用层明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.1 OSI七层模型简述应用层应用层表示层表示层会话层会话层 传输层传输层网络层网络层 数据链路层数据链路层 物理层物理层 1234567提供应用程序间通信提供应用程序间通信处理数据格式、数据加密等处理数据格式、
14、数据加密等建立、维护和管理会话建立、维护和管理会话建立主机端到端连接建立主机端到端连接寻址和路由选择寻址和路由选择提供介质访问、链路管理等提供介质访问、链路管理等比特流传输比特流传输OSI标准标准 (七层七层)明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.2 每个层的作用v与传输媒体的接口,完成传输媒体上的信号与二进制数据间的转换物理接口上发送或接收的是一串以某种规则表示物理接口上发送或接收的是一串以某种规则表示的二进制的数据的二进制的数据物理层定义的是接口的机械特性、电气特性、功物理层定义的是接口的机械特性、电气特性、功能和过程特性等能和过程特性等例如:插头、插座的
15、几何尺寸,每根引脚的功能例如:插头、插座的几何尺寸,每根引脚的功能定义,逻辑定义,逻辑0和和1的电平定义,信号宽带定义的电平定义,信号宽带定义 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦数据链路层(数据链路层(data link layer)v提供点到点的可靠传输,通常需把数据分成帧,并且保证帧的正确发送和接收 识别帧的标志 帧的发送和接收,需校验、确认 发送方在超时或收到否定性确认后,要重发 重复帧要丢弃 v在共享网络中,需解决信道共享问题等明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦网络层(网络层(network layer)v提供主机到主
16、机的通路,其间可能存在多条通路,网络层将实现的功能包括: 选择路由 拥塞控制 协议的转换 分段和重组 对用户的分组、字符等计数 等等明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦传输层传输层(transport layer)v提供端到端的通路,应用到应用的通路 传输层将把高层要求传输的数据分成若干个报文 报文与帧不一样,帧只有帧标志(起始标志、结束标志),而报文有信源和信宿的地址及端口、报文的顺序号、确认号等等 低三层的通信对象通常是路由器,传输层是端到端的,必须考虑该报文怎样才能从源端正确地传输到目的端,而源端和目的端通常是主机明程序设计之精妙,晓道法自然之大伦明程序设
17、计之精妙,晓道法自然之大伦会话层会话层(session layer)v建立有关会话的机制,或双向对话,或双向对话时要有切换等如:说的一方应说一段就听一下对方的反应,因为,可能线如:说的一方应说一段就听一下对方的反应,因为,可能线路已断路已断明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦表示层表示层(presentation layer)v表示层关心的是语法和语义 v对相关的数据的描述采用抽象的定义,如浮点数都用科学表示法 相关数据的表示法转换 抽象数据结构的转换明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦应用层应用层(application lay
18、er)v包括所有应用方面的协议 如:全屏幕功能,不同的终端其控制字符不尽相同,应作相应的转换,通常定义一个网络虚拟终端 v不同系统之间的文件传输的方式不同,但表示的形式必须一致 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.2 每个层的作用保证不同应用程序间的数保证不同应用程序间的数据独立据独立用户接口用户接口数据表示数据表示加密等特殊处理过程加密等特殊处理过程TelnetHTTPASCIIEBCDICJPEGOperating System/Application Access Scheduling会话层会话层表示层表示层应用层应用层例子例子明程序设计之精妙,晓道法
19、自然之大伦明程序设计之精妙,晓道法自然之大伦2.2 每个层的作用每个层的作用TCPUDPSPX802.3 / 802.2HDLCEIA/TIA-232V.35IPIPX传输层传输层 数据链路层数据链路层物理层物理层 可靠或不可靠的数据传输可靠或不可靠的数据传输 数据重传前的错误纠正数据重传前的错误纠正 将比特组合成字节进而组合成帧将比特组合成字节进而组合成帧 用用MAC地址访问介质地址访问介质 错误发现但不能纠正错误发现但不能纠正 设备间接收或发送比特流设备间接收或发送比特流 说明电压、线速和线缆等说明电压、线速和线缆等网络层网络层提供路由器用来决定路径的逻辑寻址提供路由器用来决定路径的逻辑寻
20、址明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.3封装数据的过程封装数据的过程传输层传输层 数据链路层数据链路层物理层物理层 网络层网络层 上层数据上层数据上层数据上层数据TCP 头头数据数据IP 头头数据数据LLC 头头0101110101001000010数据数据MAC 头头表示层表示层应用层应用层会话层会话层段段包包比特比特帧帧PDUFCSFCS明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦2.42.4解封装数据的过程解封装数据的过程上层数据上层数据LLC 头头 + IP + TCP + 上层数据上层数据MAC 头头IP + TCP +上层
21、数据上层数据LLC 头头TCP+上层数据上层数据IP 头头上层数据上层数据TCP 头头0101110101001000010传输层传输层 数据链路层数据链路层物理层物理层 网络层网络层 表示层表示层应用层应用层会话层会话层明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦OSI模型的数据传输模型的数据传输应用协议表示协议会话协议传输协议网络协议发送进程发送进程实际数据传输路径实际数据传输路径应用层表示层会话层传输层网络层数据链路层物理层接收进程接收进程NH数据PH数据SH数据TH数据AH 数据bitsDH数据DT应用层表示层会话层传输层网络层数据链路层物理层明程序设计之精妙,
22、晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦举例:某人给他的朋友写一封信举例:某人给他的朋友写一封信邮邮政政袋袋箱箱 信信信信封封邮邮政政信信袋袋应用层应用层网络层网络层数据链路层数据链路层物理层物理层传输层传输层明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦3. TCP/IP模型模型v 定义:定义: 全名传输控制协议/网际协议,Transmission Control Protocol/Internet Protocol。它是一种面向连接的、保证可靠传输协议。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦3.1 TCP/IP模型模型应用层应用
23、层 (7)(7)表示层表示层 (6)会话层会话层 (5)传输层传输层 (4)网络层网络层 (3)链路层链路层 (2)物理层物理层 (1)OSI标准标准标准标准应用层传输层网际层网络接口层比特比特帧帧数据包数据包 数据段数据段 TCP/IP模型模型但由于但由于OSI协议过于学术化,其内容存在着过度设计,很难投入商业运作,因此协议过于学术化,其内容存在着过度设计,很难投入商业运作,因此TCP/IP协议常被称为事实上的国际标准。协议常被称为事实上的国际标准。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦3.2 OSI各层所使用的协议各层所使用的协议层描 述协 议应用层应用层定义
24、了TCP/IP应用协议及主机程序与要使用网络的传输层服务之间的接口HTTP、Telnet、FTP、TFTP、SNMP、DNS、SMTP、X-Windows以及其他应用协议传输层传输层提供主机之间的通信会话管理。定义了传输数据时的服务级别和连接状态TCP、UDP、RTPInternet层层将数据装入IP数据报,包括用于在主机间及经过网络转发数据报时所用的源和目标的地址信息。实现IP数据报的路由IP、ICMP、ARP、RARP网络接口层网络接口层详细指定如何通过网络实际发送数据,包括直接与网络媒体(如同轴电缆、光纤或双绞铜线)接触的硬件设备如何将比特流转换成电信号以太网、令牌环、FDDI、X.25
25、、帧中继、RS-232、v.35明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦3.3. UDPvUDP是User Datagram Protocol 的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包含完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间及内容的正确性都是不能被保证的。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦3.4 TCP与与UDP比较比较v面向连接的TCP就像打电话,一方先拨打另一方电话,等到对方接起电话时就开始了一个会话,任何一方挂断就意味着会话的结束。这种通信是安全的
26、,对方一接通,通信肯定就开始了;v无连接的UDP则像发手机短信,只管发,发完就没事了,对方收到短信,可能会给回复,也可能不回复,这种通信是不安全的,但方便快捷,不需要系统来维持连接。但是,使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64kb之内。而TCP没有这方面的限制,一旦连接起来,双方的Socket就可以按统一的格式传输大量的数据。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦4.4.网络程序寻址方式网络程序寻址方式 编写网络程序,必须有一种机制来标识通信的双方。下面我们来讨论 Internet中种层的寻址方式,以及相关的寻址协议。v 4.1 4.
27、1 地址地址 网络通信的最边缘便是了,我们先来看在中如何寻址的。 . .子层和地址子层和地址 主要使用广播通信。在其内部,许多主机连在相同的通信通道上,通信时的关键问题是当竞争存在时如何决定谁使用通道。解决问题的协议属于链路层的子层,称为子层。子层在中特别重要,因为广播通信是由它控制的。 网络中的节点都有链路层地址。事实上,并不是节点有链路层地址,而是节点上的适配器有。链路层地址通常叫做地址、物理地址或都地址。地 址的长度为字节,共有的次方种可能取值。这个字节地址通常以进制表示,每个字节都用一对进制数表示,如: E6-E9-00-17-BB-4B。 适配器在生产时就被永久性地安排
28、了一个地址,它记录在适配器的中,是不可改变的。另外,地址空间是赋管理的,它保证所有适配器的地址都不相同。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦v . .局域网通信局域网通信 当适配器想要发送一个帧到其它适配器时,发送适配器将目的的适配器的地址插入到封包中,然后以广播的方式将此封包发送到中的每一台主机上(除 了自己)。每个接收到封包的适配器都会检查包中的目的地址是不是和自己的相同,如果相同就萃取出包含的数据报,并将其传递到协议堆栈的上层(网络 层),如果不同就直接丢弃。这样一来,只有目的节点的适配器才对收到的帧进行处理。 有时候发送适配器想要中的所有其
29、它适配器接收并处理它发送的帧。这种情况下,发送适配器在目的地址域插入的广播地址即可。对使用字节地址的来说,广播地址是位全设为的地址,即。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦v4.1.3.广域网通信 MAC 地址应用在LAN中,一旦封包从LAN的网关进入Internet,链路层地址就不再有用了,这个时候,各路由器是依靠下面所讲的网络层的IP地址来寻找目标主机或目标主机所在的LAN的。 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦v 4.2 IP地址地址 IP地址就是给每个连接在Internet上的主机分配的一个32bit地址。互联网上的IP
30、地址统一由一个叫“IANA”(Internet Assigned Numbers Authority,互联网网络号分配机构)的组织来管理。v 4.2.1 IP是怎样实现网络互连的是怎样实现网络互连的 ?各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP数据报”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。明程序设计之精妙,晓道法自然之大伦明程序设计之
31、精妙,晓道法自然之大伦4.3 4.3 端口端口v 按照OSI七层模型的描述,传输层提供进程(应用程序)通信的能力。为 了标识通信实体中进行通信的进程(应用程序),TCP/IP协议提出了协议端口(protocol port,简称端口)的概念。v 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。v 端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互
32、独立。v 端口使用一个16位的数字来表示,它的范围是065535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦AB网络网络180协议协议协议协议端端口口号号端端口口号号明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5. SOCKET5. SOCKET程序设计程序设计原始套接字网络的五种模型http协议ftp协议局域网迅雷明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.1 5.1 套接字套接字(socket)(soc
33、ket)的引入的引入v 通过TCP/IP协议传输,得到的是一个顺序无差错的数据流。v 如何向网络上发送一个字节 网络非常复杂:网络设备不同、操作系统不同、网络协议不同。 问题的解决:Socket的出现,作为软件的开发者就不需要考虑以上的问题了。就像我们不需要考虑向硬盘的某一个扇区写一个字节一样,有了文件系统,我们只管调用API操作文件就行了。对于网络传输,操作系统与应用程序的接口就是套接字(Socket插座,翻译成“套接字”)。v 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向的链路的一端成为一个Socket。Socket通常用来实现客户方和服务方的连接。一个Socket由一个
34、IP地址和一个端口号(如::8080)唯一确定。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦v 为了能够方便的开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用socket(套接字)。socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。v 随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及。后来,套接字又被引进了Windows等操作系统,成为开发网络应用程序的非常有效快捷的工具。v 套接字存在于通信区域中。通信区域也叫地址族,它是一个抽象的概念,主要用于将通过套接字通
35、信的进程的共有特性综合在一起。套接字通常只与同一区域的套接字交换数据(也有可能跨区域通信,但这只在执行了某种转换进程后才能实现)。Windows Sockets只支持一个通信区域:网际域( AF_INET),这个域被使用网际协议簇通信的进程使用。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.1 Windows Sockets的实现的实现vWindows Sockets是Microsoft Windows的网络程序设计接口,它是从Berkeley Sockets扩展而来的,以动态链接库的形式提供给我们使用。Windows Sockets在继承了Berkeley Sock
36、ets主要特征的基础上,又对它进行了重要扩充。这些扩充主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。vWindows Sockets 1.1和Berkeley Sockets都是基于TCP/IP协议的;Windows Sockets 2从Windows Sockets 1.1发展而来,与协议无关并向下兼容,可以使用任何底层传输协议提供的通信能力,来为上层应用程序完成网络数据通讯,而不关心底层网络链路的通讯情况,真正实现了底层网络通讯对应用程序的透明。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.2 Socket的分类的分类So
37、cket根据通信的性质可以分为3类原始套接字SOCK_RAW流式套接字SOCKET_STREAM数据报套接字SOCK_DGRAM明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.2.1 5.2.1 流式套接字流式套接字v提供一种双向有序的、无重复的数据传输服务,实现了数据无差错、无重复的发送。流Socket是面向连接的,通信双方在进行数据交换前必须先建立连接,这样可以保证双方是活动的,而且彼此响应。在TCP/IP协议簇中,使用TCP来实现Socket通信,当网络需要大批量的传输数据时,或者要求数据按照发送的顺序无重复的到达目的地时,使用流Socket进行通信最方便。明程序
38、设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.2.2 5.2.2 数据报数据报SocketSocketv提供一种不可靠的双向数据传输服务,不保证数据的有序性和不重复性。数据在传输过程中可能被丢失,也可能重复,被接收的数据顺序可能和发出的顺序不同。同时,数据报Socket的传输是面向无连接的,不保证接收端是否正在接收或者监听该传输,这种方式和邮局送信的方式类似,寄信者只负责将信投入信箱,他并不能获知该信是否能正常传递至正确的接收者,而接收者确定对该信息的接收时间。在TCP/IP协议簇中,使用UDP协议来实现数据报Socket,数据报Socket一般在负载较轻的网络上使用,虽然
39、存在着不可靠性,但由于数据报Socket在传输时保留了记录边界,因此可以保证通信的质量,且可以获得较高的通信效率。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.2.3 5.2.3 原始原始SocketSocketv允许直接访问较低层次的协议(如IP、ICMP),常常用于检验新的协议的实现,也可以用于测试新的配置或网络设备。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.3 通过通过SOCKET实现连接实现连接v通过TCP协议传输,得到的是一个顺序无差错的数据流。发送方和接收方的成对的两个Socket之间必须建立连接,以便在TCP协议的基础上进行
40、通信,当一个Socket(通常都是Server Socket)等待建立连接时,另一个Socket可以要求进行连接,一旦这两个Socket连接起来,他们就可以进行双向数据传输,双方都可以进行发送和接收操作。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.4 Winsock5.4 Winsock与与Winsock APIWinsock APIv Socket 也有很多品牌,Winsock是Socket在Windows操作系统上的版本。90年代初,由Microsoft联合其他几家公司共同制定了一套Windows下的网络编程接口,Windows Socket规范,简称为Wins
41、ock,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下网络编程接口。该编程规范从Berkeley Sockets扩展而来,在继承Berkeley Sockets的基础上,又进行了新的扩充,主要是提供了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。v 从另一个角度讲,这些函数又可分为两类:一类是阻塞函数;另一类是非阻塞函数。所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会阻塞本线程消息的发送。而非阻塞函数是指函数的调用不必等到操作结束之后才能返回。那么,我们的程序该如何得知该操作的后续进度呢?他何时才会结束?
42、答案是这类非阻塞函数常常会返回一个事件的句柄,我们的程序一旦拿到了这个句柄,就可以进行控制了。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.6 5.6 用用SocketSocket实现实现C/SC/S模式模式v在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户机/服务器模式(client/server),即客户向服务器提出请求,服务器接收到请求后,提供相应的服务。v客户机/服务器模式的建立基于以下两点:首先,建立网络的起因是网络中软硬件资源、运算能力和信息不均等,需要共享,从而造就拥有众多资源的主机提供服务,资源较少的客户请求服务这一非对等作用。其次,
43、网间进程通信完全是异步的,相互通信的进程间既不存在父子关系,又不共享内存缓冲区,因此需要一种机制为希望通信的进程间建立联系,为二者的数据交换提供同步,这就是基于客户机/服务器模式的TCP/IP。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.7 5.7 网络字节顺序网络字节顺序v不同的计算机存放多字节值的顺序不同,有的机器在起始地址存放低位字节(低位先存),有的机器在起始地址存放高位字节(高位先存)。基于Intel的CPU,即我们常用的PC机采用的是低位先存。为保证数据的正确性,在网络协议中需要指定网络字节顺序。TCP/IP协议使用16位整数和32位整数的高位先存格式。
44、明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦socket()建立服务端socketbind()绑定socketlisten()开始监听accept()接受连接recv()/send()返回,等待另一客户请求。closesocket()关闭socketsocket()建立客户端socketconnect()连接服务器recv()/send()closesocket()关闭socket明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.8 UDP流程流程v 对于无连接的UDP服务,服务器通常是面向事务处理的,服务器和客户端在传输数据之前不需要进行连接的申
45、请和建立,数据传输结束后,直接关闭Socket即完成该类服务器/客户端系统调用流程:socket()建立服务端socketbind()绑定socketrecvfrom()/sendto()closesocket()关闭socketsocket()建立客户端socketrecvfrom()/sendto()closesocket()关闭socket明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦相关函数说明相关函数说明int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );vwVersionRequested
46、参数用于指定准备加载的Winsock库的版本。高位字节指定所需要的Winsock库的副版本,而低位字节则是主版本。可用MAKEWORD(x,y)(其中,x是高位字节,y是低位字节)方便地获得wVersionRequested的正确值。 vlpWSAData参数是指向WSADATA结构的指针,WSAStartup用其加载的库版本有关的信息填在这个结构中。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦WSADataWSADATA结构定义如下:typedef struct WSAData WORD wVersion; WORD wHighVersion; char szDesc
47、riptionWSADESCRIPTION_LEN+1; char szSystemStatusWSASYS_STATUS_LEN+1; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; WSADATA, *LPWSADATA; WSAStartup把第一个字段wVersion设成打算使用的Winsock版本。wHighVersion 参数容纳的是现有的Winsock库的最高版本。记住,这两个字段中,高位字节代表的是Winsock副版本,而低位字节代表的则是Winsock主版本。szDe
48、scription和szSystemStatus这两个字段由特定的Winsock实施方案设定,事实上没有用。不要使用下面这两个字段:iMaxSockets和iMaxUdpDg,它们是假定同时最多可打开多少套接字和数据报的最大长度。然而,要知道数据报的最大长度应该通过WSAEnumProtocols来查询协议信息。同时最多可打开套接字的数目不是固定的,很大程度上和可用物理内存的多少有关。最后,lpVendorInfo字段是为Winsock实施方案有关的指定厂商信息预留的。任何一个Win32平台上都没有使用这个字段。 如果WinSock.dll或底层网络子系统没有被正确初始化或没有被找到,WSAS
49、tartup将返回WSASYSNOTREADY。此外这个函数允许你的应用程序协商使用某种版本的WinSock规范,如果请求的版本等于或高于DLL所支持的最低版本,WSAData的wVersion成员中将包含你的应用程序应该使用的版本,它是DLL所支持的最高版本与请求版本中较小的那个。反之,如果请求的版本低于DLL所支持的最低版本,WSAStartup将返回WSAVERNOTSUPPORTED。 对于每一个WSAStartup的成功调用(成功加载WinSock DLL后),在最后都对应一个WSACleanUp调用,以便释放为该应用程序分配的资源。 明程序设计之精妙,晓道法自然之大伦明程序设计之精
50、妙,晓道法自然之大伦相关函数说明相关函数说明SOCKET socket( int af, int type, int protocol );v 该函数接收三个参数。第一个参数af指定地址族,对于TCP/IP协议的套接字,它只能是AF_INET(也可写成PF_INET)。第二个参数指定Socket类型,对于1.1版本的Socket,它只支持两种类型的套接字,SOCK_STREAM指定产生流式套接字,SOCK_DGRAM产生数据报套接字。第三个参数是与特定的地址家族相关的协议,如果指定为0,那么它就会根据地址格式和套接字类别,自动为你选择一个合适的协议。这是推荐使用的一种选择协议的方法。v 如果这
51、个函数调用成功,它将返回一个新的SOCKET数据类型的套接字描述符。如果调用失败,这个函数就会返回一个INVALID_SOCKET,错误信息可以通过WSAGetLastError函数返回。 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦相关函数说明相关函数说明int bind( SOCKET s, const struct sockaddr FAR *name, int namelen );v 这个函数接收三个参数。第一个参数s指定要绑定的套接字,第二个参数指定了该套接字的本地地址信息,是指向sockaddr结构的指针变量,由于该地址结构是为所有的地址家族准备的,这个结构
52、可能(通常会)随所使用的网络协议不同而不同,所以,要用第三个参数指定该地址结构的长度。 sockaddr结构定义如下: struct sockaddr u_short sa_family; char sa_data14; ; v sockaddr的第一个字段sa_family指定该地址家族,在这里必须设为AF_INET。sa_data仅仅是表示要求一块内存分配区,起到占位的作用,该区域中指定与协议相关的具体地址信息。由于实际要求的只是内存区,所以对于不同的协议家族,用不同的结构来替换sockaddr。除了sa_family外,sockaddr是按网络字节顺序表示的。在TCP/IP中,我们可以用
53、sockaddr_in结构替换sockaddr,以方便我们填写地址信息。 明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦sockaddr_insockaddr_in的定义如下: struct sockaddr_in short sin_family; unsigned short sin_port; struct in_addr sin_addr; char sin_zero8; ; 其中,sin_family表示地址族,对于IP地址,sin_family成员将一直是AF_INET。成员sin_port指定的是将要分配给套接字的端口。成员sin_addr给出的是套接字的主
54、机IP地址。而成员sin_zero只是一个填充数,以使sockaddr_in结构和sockaddr结构的长度一样。如果这个函数调用成功,它将返回0。如果调用失败,这个函数就会返回一个SOCKET_ERROR,错误信息可以通过WSAGetLastError函数返回。 将IP地址指定为INADDR_ANY,允许套接字向任何分配给本地机器的IP地址发送或接收数据。多数情况下,每个机器只有一个IP地址,但有的机器可能会有多个网卡,每个网卡都可以有自己的IP地址,用INADDR_ANY可以简化应用程序的编写。将地址指定为INADDR_ANY,允许一个独立应用接受发自多个接口的回应。如果我们只想让套接字使
55、用多个IP中的一个地址,就必须指定实际地址,要做到这一点,可以用inet_addr()函数,这个函数需要一个字符串作为其参数,该字符串指定了以点分十进制格式表示的IP地址(如6)。而且inet_addr()函数会返回一个适合分配给S_addr的u_long类型的数值。inet_ntoa()函数会完成相反的转换,它接受一个in_addr结构体类型的参数并返回一个以点分十进制格式表示的IP地址字符串。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦5.8 5.8 使用使用CSocketCSocket连接连接WebWeb站点站点v 当查看网页时,IE浏览器与
56、Web站点之间的通信采用HTTP协议,HTTP(Hyper Text Transfer Protocol)是超文本传超文本传输协议输协议,他用于传送WWW方式的的数据。v WWW是环球信息网(World Wide Web )的缩写,也可以简称为Web,中文名字为“万维网”. 它是一个资料空间。在这个空间中:由一个全域“统一资源标识符”(URL)标识。这些资源通过超文本传输协议传送给使用者.v HTTP协议采用请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本,以及包含请求的修饰符、客户信息和内容类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包含
57、消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦传输过程传输过程1.1.连接连接v 首先httphttp是一个应用层的协议,在这个层的协议,只是一种通讯规范,也就是因为双方要进行通讯,大家要事先约定一个规范。v 1.1.连接连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把http:/ DNSDNS协议:协议:它DNS 是域名系统 (Domain Name System) 的缩写,它是由解析器和域名服务器组
58、 成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址 不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。 v DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。现在已经拥有了目标ip和端口号
59、,这样我们就可以打开socket连接了。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦传输过程传输过程2.请求请求v连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。明程序设计之精妙,晓道法自然之大伦明程序设计之精妙,晓道法自然之大伦请求的函数请求的函数vBOOL AFXAPI BOOL AFXAPI AfxParseURLAfxParseURL(LPCTSTR pstrURL,DWORD& dwServiceType,CString& strServer,CString& strObject,INTERNE
60、T_PORT& nPort);返回值:返回值:如果成功地解析了URL,则返回非零值。如果URL为空或它不包含已知的Internet服务类型,则为0。参数:参数: vpstrURLpstrURL 指向包含了要解析的URL的字符串的指针。 dwServiceTypedwServiceType 指明了Internet服务的类型。可能的取值如下: v AFX_INET_SERVICE_FTP AFX_INET_SERVICE_HTTP strServerURLstrServerURL 中服务类型后的第一个部分。 strObjectURLstrObjectURL 涉及的对象(可能为空)。 nPortnP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度夜店酒吧员工安全协议与安全教育培训费用合同
- 2025年度电动车买卖协议模版
- 二零二五年度知识产权法律风险管理顾问合同
- 二零二五年度武汉房屋租赁合同物业管理约定
- 二零二五年度摩托车第三者责任保险合同
- 2025年包头a2货运资格证模拟考试
- 2025年海口货运从业资格证实操考试题
- 企业环境影响评估合同
- 建筑渣土外运合同
- 校长论坛发言稿
- 小学校园欺凌行为调查问卷(学生卷)
- 中医养生保健素养知识讲座
- 采耳员工合同
- 汽车修理有限公司章程
- (多场景条款)过桥垫资借款合同
- JBT 7901-2023 金属材料实验室均匀腐蚀全浸试验方法 (正式版)
- 小学科学人教鄂教版四年级下册全册教案2023春
- 非遗文化介绍课件:扎染
- 营销培训:揭秘销售成功密码
- 基于STM32Cube的嵌入式系统应用 教案
- 动画分镜头脚本设计课件
评论
0/150
提交评论