Download presentation
Presentation is loading. Please wait.
1
Computer Networks 第六章 应用层 Teacher: Dr. 周 鹏
2
学习目的与要求 掌握:域名系统的基本工作原理。 了解:文件传输FTP的基本工作原理。 掌握:WWW服务的基本工作原理。
掌握:电子邮件的基本工作原理。 掌握:DHCP 的基本工作原理。 了解:SNMP的基本工作原理。
3
本章内容 6.1 域名系统 DNS 6.2 文件传送协议 6.3 远程终端协议 TELNET 6.4 万维网 WWW
6.2 文件传送协议 6.3 远程终端协议 TELNET 6.4 万维网 WWW 6.5 电子邮件 6.6 动态主机配置协议 DHCP 6.7 简单网络管理协议 SNMP 6.8 应用进程跨越网络的通信
4
6.5 电子邮件 Electronic Mail (E-mail) 是因特网上最典型的服务之一 功能:实现用户之间非实时通信
6.5 电子邮件 Electronic Mail ( ) 是因特网上最典型的服务之一 功能:实现用户之间非实时通信 需要解决的问题:寻址和路由 实质:在一台提供了邮件服务的主机上为申请人提供一个帐户。 地址表示格式: 地址不区分大小写
5
电子邮件系统的组成 用户代理(User Agent) 邮件服务器(E-mail Server) 电子邮件协议 发送/转发邮件: 读取邮件:
功能:编辑、发送、接收、阅读和管理电子邮件。 常见的用户代理有: Outlook、Foxmail等。 邮件服务器( Server) 功能:类似“邮局”,接收和转发电子邮件,向发信人报告邮件发送状态 按照客户服务器方式工作 既是客户,又是服务器 电子邮件协议 发送/转发邮件: SMTP(Simple Mail Transfer Protocol)[RFC 821、822] MIME(Multipurpose Internet Mail Extension)[RFC 1521] 读取邮件: POP3(Post Office Protocol)[RFC 1939] IMAP4(Internet Message Access Protocol)[RFC 2060]
6
电子邮件的发送和接收过程 点击观看 发送端的SMTP客户进程使用SMTP协议把邮件队列中的邮件发送给接收端的SMTP服务进程。
发送完后,关闭TCP连接。 发送端邮件服务器收到邮件后,将邮件放入邮件缓存队列,等待发送。 发送端邮件服务器中的SMTP客户进程发现邮件队列中有待发送的邮件,就与接收端邮件服务器建立TCP连接。 点击观看 收件人收信时,运行用户代理,用户代理使用POP3协议将用户邮箱中的邮件下载到本地计算机。 用户代理利用SMTP协议将邮件传送给发件人的邮件服务器。 接收端邮件服务器将收到的邮件放入收件人的邮箱中。 发信人运行用户代理编辑邮件。 发件人的邮件服务器 收件人的邮件服务器 TCP连接 TCP连接 TCP连接 TCP连接
7
简单邮件传输协议SMTP 因特网上最通用的电子邮件传输协议。(简单、容易实现) 定义了邮件格式及如何通过TCP连接传输邮件。
RFC821:描述了邮件服务器之间如何转发邮件; RFC822:定义邮件信息的格式。 规定邮件的全部内容(包括附件)—无论是什么类型的数据—都必须转换成7位ASCII码进行传输。
8
SMTP通信 采用客户/服务器方式工作 连接发起方称为客户,接收方称为服务器。 SMTP定义了几个非常简单的命令用来进行邮件的发送:
HELO MAIL FROM RCPT TO DATA QUIT
9
SMTP的特点 电子邮件无论内容多少(包括附件),均使用一个报文(Message)发送。 所有的邮件内容,必须使用ASCII代码传送。
所有的二进制文件内容必须使用MIME格式转换成ASCII代码(膨化处理)。
10
邮件读取协议 常用的有:POP3和IMAP POP3(邮局协议) 基于TCP协议 客户/服务器方式 功能:
客户端程序(Outlook Express、Foxmail等) 服务器程序(Exchange等) 客户与服务器建立TCP连接后才能读取邮件 功能: 为用户提供邮箱 保存收到的邮件 把邮件传输给用户(邮件在客户端脱机处理) 邮件传输给用户后,POP服务器一般不再保留
11
IMAP(因特网报文存取协议) 典型例子:Web Mail?…… 基于TCP协议(同POP3) 客户/服务器方式(同POP3) 功能
为用户提供邮箱 保存收到的邮件 用户可直接操纵IMAP服务器上自己的邮件文件夹 新建分类文件夹,移动邮件,删除邮件,查找邮件等 仅需要打开邮件时,邮件才传输到客户端 邮件将一直保存在IMAP服务器上,除非用户明确地发出删除命令 典型例子:Web Mail?……
12
特别注意! 基于万维网的电子邮件—Web Mail
电子邮件从 A 发送到网易邮件服务器是使用 HTTP 协议。 两个邮件服务器之间的传送使用 SMTP。 邮件从新浪邮件服务器传送到 B 是使用 HTTP 协议。 HTTP A B SMTP 网易邮件服务器 mail.163.com 新浪邮件服务器 mail.sina.com.cn
13
Foxmail的简介 Foxmail的使用 是一个中文版电子邮件客户端软件。 主要优点: 速度快 (收发邮件时不用下载网站页面内容)。
可对旧邮件进行离线阅读和管理(客户端软收到的和曾经发送过的邮件都保存在自己的电脑中)。 强大的邮件编辑功能(信笺、签名、图表、背景音乐等)。 强大的邮件管理功能(查询、标记、排序、导入、导出等)
14
Foxmail的使用 Foxmail的设置 1)在Foxmail安装完毕后,系统会自动启动向导程序
15
Foxmail的使用 Foxmail的设置 2)单击“下一步”按钮,进入建立新的用户帐户“设置”窗口,输入用户名和邮箱路径。
16
Foxmail的使用 3) 接着单击“下一步”按钮,进入“邮件身份标记”窗口 ,输入“发送者姓名”与“邮件地址”信息
17
Foxmail的使用 4)单击“下一步”按钮,设置服务器选项
18
Foxmail的使用 5)单击“下一步”按钮,屏幕将显示“帐户建立完成”窗口
19
Foxmail的使用 Foxmail的主窗口
20
Foxmail的使用 接收电子邮件 1)选中某个帐户。 2)然后单击左上角工具栏的"收取"按钮。
21
Foxmail的使用 阅读电子邮件 预览邮件
22
Foxmail的使用 帐户属性设置 “邮件服务器”选项
23
Foxmail的使用 帐户属性设置 “接收邮件”选项
24
Foxmail的使用 帐户属性设置 “其他POP3”选项
25
Foxmail的使用 帐户属性设置 “标签”选项
26
Foxmail的使用 Foxmail的高级使用 保存邮件
27
Foxmail的使用 Foxmail的高级使用 导出、导入邮件
28
Foxmail的使用 Foxmail的高级使用 查找邮件
29
Foxmail的使用 Foxmail的高级使用 标记邮件
30
Foxmail的使用 Foxmail的高级使用 邮件排序
31
6.6 DHCP 简 介 什么是DHCP DHCP的作用 DHCP是如何工作的 此页列出学习本课程需要达到的目标。
此页胶片仅在授课时使用,胶片+注释中有单独的文字说明课程目标,不需要再使用该页胶片。 31
32
IP地址的设定方式 手动设定IP 地址 自动设定IP地址 每台计算机的IP 地址必须手动输入(静态地址) (非专业人士难以胜任)
此外,计算机如果变动位置会增加管理员负担 (如移动办公或计算机大批迁移) 每台计算机的IP 地址由服务器自动分配(动态地址) 服务器能够确保计算机始终使用正确的IP 地址 正确的IP 地址能够保证计算机进行网络通信 位置变动后计算机的IP地址会自动更新
33
DHCP 简述 中文意思:动态主机配置协议 DHCP: 是一个网络协议。 作用:为计算机自动设定IP地址!
Dynamic Host Configuration Protocol 作用:为计算机自动设定IP地址! 33
34
DHCP工作过程—网络环境 网络 路由器 驻马店网通网络 DHCP 服务器2 DHCP 服务器1 34
35
DHCP工作过程 1 1 开机启动 驻马店网通网络 A 自动发送广播消息 我要上网,请给我一个IP地址! 网通DHCP 服务器2
35
36
我的地址库中还有多余的IP地址可以分配给A吗?
DHCP工作过程 2 DHCP 服务器2 给A的IP地址+租期 回应 A 如果有!则回应 2 我的地址库中还有多余的IP地址可以分配给A吗? 我们把DHCP客户机比做餐馆里的客人,DHCP服务器比做服务员(一个餐馆里也可以有多个服务员),IP地址比做客户需要的食物。 那么可以这样描述整个过程: 客人走进餐馆,问:“有没有服务员啊?”(DHCP_discover),多个服务员同时回答:“有,我这有鸡翅”“有,我这有汉堡”(DHCP_offer)。客人说:“好吧,我要一份汉堡”(DHCP_request,这个客人比较死板,总是选择第一次听到的食物),端着汉堡的服务员回应了一声:“来啦”(DHCP_ack),并把食物端到客人面前,供其享用(将网卡和IP地址绑定)。 客人下次来的时候,就直接找上次那个服务员点自己喜欢的汉堡了(DHCP_request),如果还有汉堡,服务员会再次确认并上菜(DHCP_ack),而如果已经卖完了,服务员则会告诉客人:“不好意思,已经卖完了”(DHCP_nack)。当然,服务员隔一段时间会来收拾一次桌子,除非客人特别说明这菜还要继续吃的,服务员会将剩菜端走。 IP地址+租期 —准备分给A的 DHCP 服务器1 36
37
DHCP工作过程3 我打算用你提供的IP地址 A 3 DHCP 服务器2 选择? 回应 DHCP 服务器1 37
38
DHCP工作过程4 正式获得IP地址,可以上网冲浪啦:) A 确认 OK,你的IP地址现在生效! 4 DHCP 服务器1 38
39
如何获得DHCP的服务 服务器: 固定IP地址 安装DHCP服务 配置一个IP地址段 DHCP 服务器 用户计算机 启用:DHCP服务 39
40
如何获得DHCP的服务—客户端 40
41
如何获得DHCP的服务—客户端 41
42
如何获得DHCP的服务—客户端 42
43
租用期(lease period) 租用期:DHCP服务器选择未被分配的IP地址给计算机,并告诉计算机这个IP地址属于你多长时间,这叫租用期(期满前必须续租)。 设立租用期的原因: IP地址紧张,回收IP地址便于二次分配。 若在租期到期之前计算机不再申请续租,则DHCP服务器就能将这个IP地址重新分配给其他计算机。(因此已经获得IP地址的客户机必须定期向DHCP服务器发出续租申请)。 计算机若关机,或在租约到期后不能续租,则此IP地址即被收回,可分配给其他计算机使用。
44
1/2 租期 租期更新过程—情况1 发出续租请求 同意,重新开始 一个新的租约 DHCP Server1
45
1/2 租期 租期更新过程—情况2 发出续租请求 不同意!! DHCP Server1
46
我的IP地址没有啦,呜呜,谁能给我一个新的
租期更新过程—情况2 1 我的IP地址没有啦,呜呜,谁能给我一个新的 立即停用现在的IP地址 DHCP Server3 2 Broadcast DHCP Server2 DHCP Server1
47
1/2 租期 1/8 租期 租期更新过程—情况3 继续使用当前IP地址 发出续租请求 继续发出续租请求 无回应! DHCP Server1
48
任意时间 租期更新过程—情况4 发出release命令 立刻终止租期,主动释放当前所占用的IP地址 DHCP Server1
49
DHCP释疑1 DHCP服务器到期后为什么要收回IP地址: 1.客户计算机关机了,不再需要IP地址。
默认不释放。但可以通过设置为释放。 开机或重新登录后请求IP的情况: 若没有自动释放IP,且租约未到期,则客户机只需向先前的那个DHCP服务器发送DHCPRequest单播消息,若无意外,可获得原IP继续使用,并更新租约。
50
DHCP释疑2 什么情况下客户机续租的请求会被DHCP服务器拒绝: 服务器更改配置,原配置变为不可用。
1.无反应。(可能断网,或通信受阻) 2.拒绝。(服务器更改配置,原配置变为不可用。)
51
小结与思考 DHCP 概念 作用 思考:如果所有上网机器的IP地址分配都采用DHCP方式,有没有副作用? 51
52
6.7 简单网络管理协议 SNMP 为什么网络需要管理? 一个大家庭 — 需要管理家庭中的各项事务(管家)
一个大网络 — 需要管理网络中的各种软硬件设备(网管) 目标:检测网络的运行状况,保证网络安全、可靠、高效地运行
53
早期的处理方法 手工定位,手工解决。 适合于网络设备少,网络规模小的情况。
当网络运行不正常时,管理员通过使用工具软件ping对可能有问题的网络设备发ICMP报文,根据返回的报文时戳,一般可以确定问题的性质和方位。 适合于网络设备少,网络规模小的情况。
54
面临的挑战 网络复杂程度已超出了人们手工的控制范围: 规模不断扩大:节点数从几十到成千上万 复杂性不断增加:设备类型增多、功能增强
异构性:不同的操作系统、通信协议。
55
解决的办法 采用先进的体系结构,智能化的管理系统 完善的协议 自动化的管理软件 专用管理机
56
网络管理功能 故障管理 配置管理 计费管理 性能管理 安全管理
57
故障管理 包括故障检测、故障定位和故障改正。 1.发现问题 2.分离问题 3.修复问题
58
配置管理 网络管理中的重要功能。 对于网络的管理是建立在配置权的基础上。 例如更改所有HUB的升级版本等。
59
计费管理 一般由专用的软件实现。 可实现灵活的计费方式 完善的账单和报表功能
60
性能管理 包括网络性能和系统性能。 包括整体的吞吐量、利用率、错误率 或响应时间等。
61
安全管理 网络管理的热门话题。 包括管理用户登录 在特定的路由器或网桥上进行各种操作 检测、警报和提示功能等
62
网络资源管理 域名注册 网络地址分配 代理服务器
63
SNMP 优点: 什么是SNMP? SNMP 已成为网络管理领域中事实上的工业标准。 1 大量企业网支持和应用
(Simple Network Management Protocol )是一种网络管理协议,借助该协议,用户可以通过对终端设备的定时询问和参数设置来管理远程计算机网络以及监控网络情况。 SNMP 已成为网络管理领域中事实上的工业标准。 优点: 1 大量企业网支持和应用 2 网管平台基于SNMP体系结构 3 支持不同设备的互连 4 实现简单、较易标准化
64
SNMP的发展 20世纪70年代,设计了ICMP协议 1987年,开发了临时性的SGMP(简单网关监控协议)
1990年,开发了SNMP v1 CMIS/CMIP(Common Management Information Service/Protocol) 1996年推出SNMP v2,添加了一些扩展功能 1999年推出SNMP v3,实现了用户期待的安全性
65
在管理好通信网络的基础上,管理好数据库、操作系统、应用程序等。
SNMP网络管理的特点 1 采用C/S网络体系结构, 2 网络互联设备和网络应用程序集成, 3 多种网络管理协议的集成。 在管理好通信网络的基础上,管理好数据库、操作系统、应用程序等。 解决由于使用不同厂家产品出现的问题。
66
SNMP架构 设置网管工作站,运行专门的网管软件,作为网络管理员的用户接口 在被管的设备上运行网管代理进程 可网管的设备实际都运行这类进程
67
SNMP网络管理的一般模型 被管设备 被管设备 因特网 被管设备 被管设备 A A A A 网管协议 被管设备 M 网络 管理员 管理站 A
68
被管对象 网络的每一个被管设备中可能有多个被管对象。 被管设备有时可称为网络元素或网元。 在被管设备中也会有一些不能被管的对象。
69
管理进程和代理进程利用 SNMP 报文进行通信,而 SNMP 报文又使用 UDP 来传送。
70
SNMP 的网络管理 的组成 SNMP 协议 管理信息结构 SMI
(Structure of Management Information) 管理信息库 MIB (Management Information Base)。
71
SNMP协议 SNMP 定义了管理站和代理之间所交换的分组格式。所交换的分组包含各代理中的对象(变量)名及其状态(值)。
72
MIB和SMI 什么是MIB 什么是SMI MIB是被管理对象的集合,集合中的元素可以是硬件配置参数、状态数据、性能统计等;
MIB必须有一定的组织结构,即管理信息结构(SMI),SMI用分层的树形结构组织,从树根开始,按照分支来分类组织被管理对象
73
SMI的具体功能 (2) 用来存储被管对象的数据类型有哪些种; (3) 在网络上传送的管理数据应如何编码。 (1) 被管对象应怎样命名;
74
SNMP 的操作 SNMP的操作只有两种基本的管理功能,即 “读”操作,用 get 报文来检测各被管对象的状况;
“写”操作,用 set 报文来改变各被管对象的状况。
75
补充:其他设备的管理 通过PROXY进行管理
Hub、廉价交换机或老式以太网中交换机的计算能力弱,内存小,无法安装TCP/IP协议与网管代理,将其安装在proxy(代理服务器上)。
76
著名网络管理系统 公认的通用网络管理系统 HP OpenView IBM NetView Sun NetManager
79
网络故障分析和监视工具 Fluke OptiView协议分析专家 实用的网络管理工具包SolarWinds2002 网络流量监控软件MRTG
sniffer
83
网管系统模块组成 补充:网管系统的结构和特色 基本模块 扩展模块 拓扑管理模块 地址簿管理模块 设备管理模块 数据流分析模块 预警及告警模块
历史记录及分析模块 Syslog数据采集及统计模块 Ip accounting 数据分析模块 常用工具模块 系统管理模块 扩展模块 地址簿管理模块 数据流分析模块 高级服务器管理模块 PC桌面管理模块 资产管理和监控模块
84
补充:网管典型案例 案例一:广交会采用网管系统为广交会顺利举行提供保障
广交会展览中心是一个大型展览机构,内有16000个布线点,每次广交会时有超过13000台电脑接入,都采用DHCP分配地址,由于病毒及黑客软件的使用,使得互联网出口遭到堵塞,前几次广交会的网上交易无法正常运行,影响了广交会的声誉,广交会为此曾花费2000多万购买了大量的线速交换机,依然无法解决问题。
85
解决办法: 广交会的网络管理采用了网管系统后,上述问题得到了解决。网管系统的数据流分析系统值守在网络中,主动发现那些在网络中扫描和有流量异常的IP地址,然后在通过网管系统的地址簿功能,查找到这些PC机所连接的交换机端口,最后在告警系统向这些PC发出警告的同时,网管系统主动将这些交换机端口关闭,同时向网络管理人员报警,这样管理人员就可以进行进一步的处理。 通过将问题主机隔离的方式保证了整个网络的正常运行。
86
典型案例 案例二:华东电力国电二级网络采用网管系统避免冲击波病毒的传播 案例说明:
2003年8月,华东电力网络中的一台Foundry交换机出现了过载的现象,在拓扑图上显示红色,用户通过查看设备的流量分布,发现来自某个物理端口的广播包数量异常,用户采用了网管系统的数据功能发现存在某个地址的大量139端口的扫描,当时用户及时关闭了该物理端口。事后通过防病毒厂商了解到该计算机中了冲击波病毒,当时还没有公布。由于及时采取了隔离措施,避免了整个网络上病毒的相互传染。 案例说明: 病毒对我们的网络设备和流量总是产生一些明显的影响,如果能够及时观察到这种影响,就能够做到事前预防。网管系统正是通过在拓扑图上以颜色的方式来反映网络运行状态从而达到确保应用正常运行的目的。
87
典型案例 案例三:外高桥保税区港口采用网管系统解决了网络结构不合理的问题
外高桥保税区港口的网络原来是一个以思科4006为核心的百兆网络,随着业务的增长,发现网络速度明显降低,后改造为以6509为核心,4006为备用的千兆主干百兆冗余的网络架构,发现网络速度没有明显提高,查对了网络设计和配置,没有发现问题。 采用了网管系统后,发现主要报关服务器的流量连接到4006的有50多兆,而连接到6509的只有几K,当时用户认为是网管系统反映的有问题,事后通过查找原因发现,海关的报关应用系统设置时,配有缺省的网关,指向原来的4006,由于报关应用系统是专门的公司来配置的,所以一直未能发现问题,改过来后,问题得到了解决。
88
典型案例 案例四:四川省电力公司采用网管系统的远程服务实现对下属网络的配置管理
四川省电力公司于2004年采用了网管系统,但是下属一些偏远地区的采用的是Cabletron的网络设备,由于时间较长,用户不会配置,这些地区交通不便,去一次需要花费不少时间,用户采用了网管的远程协助功能,工程师在很短的时间内就帮助用户解决了问题。
89
6.8 应用进程跨越 网络的通信 应用进程如何跨越网络通信?…… 应用程序如何调用操作系统提供的功能?……
6.8 应用进程跨越 网络的通信 应用进程如何跨越网络通信?…… 通过使用各种网络通信协议 这些协议安装在什么地方?…… 内嵌入操作系统,成为操作系统的一部分,相当于给操作系统增加功能(实际相当于驱动程序,其他的设备的驱动程序也是如此)。 应用程序如何调用操作系统提供的功能?…… 我们如何调用程序中所提供的函数的功能?…… 系统调用(操作系统→系统函数→外部调用者)
90
补充:什么是系统调用 所谓系统调用是操作系统提供给用户程序调用的一组“特殊”接口(函数);
用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。
91
操作系统的保护机制 为了对操作系统提供保护,操作系统定义了内核模式和用户模式。
内核模式可以执行一些特权指令和进入用户模式,而用户模式则不能。 内核模式与用户模式分别使用自己的堆栈,当发生模式切换的时候同时要进行堆栈切换。 堆栈是一种执行“后进先出”算法的数据结构。 栈: 在函数调用时,第一个进栈的是主函数中函数调用后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。 \n\n当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。 \n\n堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。 设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。 堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。 堆栈是计算机中最常用的一种数据结构,比如函数的调用在计算机中是用堆栈实现的。 堆栈可以用数组存储,也可以用以后会介绍的链表存储。 下面是一个堆栈的结构体定义,包括一个栈顶指针,一个数据项数组。栈顶指针最开始指向-1,然后存入数据时,栈顶指针加1,取出数据后,栈顶指针减1。 #define MAX_SIZE 100 typedef int DATA_TYPE; struct stack { DATA_TYPE data[MAX_SIZE]; int top; };
92
操作系统的保护机制 同样,操作系统将程序的运行空间也分为内核空间和用户空间,它们分别运行在不同的级别上,在逻辑上是相互隔离的。
系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完毕后再返回到用户空间。
93
多个应用进程 使用系统调用的机制 … 应用程序 1 应用程序 2 应用程序 n 由应用程序调用的系统函数
包括 TCP/IP 协议软件的操作系统内核 用户地址空间 中的应用程序 系统调用接口 系统地址空间 中的协议软件
94
什么是应用编程接口 API (Application Programming Interface)
在进行编程时,可以使用一系列标准的系统调用函数从而获得操作系统提供的服务…… 这些系统调用函数实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,叫做:应用编程接口API。
95
区别 系统调用函数和应用编程接口的区别 同一个东西,不同的视角 从系统的视角看 是系统调用函数(提供给外部的应用进程使用)
从应用进程编程的视角看 是编程接口(或系统调用接口,从应用进程发起,由系统提供)
96
系统空间图
97
系统层次图
98
补充: 应用进程进行网络通信时需用到的编程接口(系统调用函数)由谁提供?…… 应用程序 OR 操作系统?…… 大而言之:操作系统
具体化:协议本身提供,操作系统根据自身情况实例化 由于TCP/IP协议被设计成能运行在多种操作系统中,因此TCP/IP没有规定应用进程与TCP/IP协议如何接口的细节。 类似于C++中的哪一种特性?…… 多态性(什么是多态) 多态的主要实现方法?…… 1.多态性的概念 多态性是指用同一个名字定义不同的函数,这函数执行不同但又类似的操作,从而实现“一个接口,多种方法”。 多态性的实现与静态联编、动态联编有关。静态联编支持的多态性称为编译时的多态性,也称静态多态性,它是通过函数重载和运算符重载实现的。动态联编支持的多态性称为运行时的多态性,也称动态多态性,它是通过继承和虚函数实现的。 2.函数重载 函数重载的意义在于他能用同一个名字访问一组相关的函数。 在类中普通成员函数和构造函数都可以重载,特别是构造函数的重载(他提供了多种初使化方式)给用户更大的灵活性。 在基类和派生类的函数重载有两种情况:一种是参数有所差别的重载。另一种是参数没有差别的重载,只是他们属于不同的类。 3.运算符重载称动态多态性,他是通过继承和虚函数实现的。 重载运算符与预定义运算符的使用方法完全相同,它不能改变原有运算符的参数个数(单目或双目),也不能改变原有的优先级的结合性。用户不能定义新的运算符,只能从C++已有的运算符中选择一个恰当的运算符重载。 4.赋值运算符 继承C语言,用户自定义的类和结构都要能进行赋值运算。而数组名不能赋值,数组名实质上是一个常量指针。 对于任何类,C++提供了默认的赋值运算符。一般地,默认的赋值运算符重载是能够胜任工作的。当类中有指针类型时,需要自定义赋值运算符函数。一般其函数体包含两部分: 1)与析构函数类似,取消对象已经占有的资源;2)与构造函数类似,谄渲蟹峙湫碌淖试础?br> 类的赋值运算符重载“=”只能重载为成员函数,不能重载为友元函数。 重载后的运算符函数operator=()不能被继承。 拷贝构造函数和赋值运算符重载的区别:声明和定义方式不同;调用方式不同。 5.虚函数 虚函数是重载的另一种表现形式,允许虚函数调用与函数体之间的联系在运行时才建立。 定义:虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数,在派生类中重新定义时,其函数原形包括返回类型,函数名,参数个数与参数类型的顺序,都必须与基类中的原形必须相同。 构造函数不能是虚函数,但析构函数可以是虚函数。 虚函数与重载函数的关系:当普通的函数重载时,其函数的参数或参数类型必须有所不同,函数的返回类型也可不同;在派生类中,重新定义虚函数时要求函数名、返回类型、参数个数、参数的类型和顺序与基类中的函数原形完全相同;若仅仅返回类型不同,其余均相同,系统会给出错误信息。虚函数重载时若仅仅函数名相同,而参数的个数、类型或顺序不同系统将它作为普遍函数重载,虚函数的特征将会丢失。 多重继承与虚函数:多重继承可视为多个单继承的组合。 6.纯虚函数和抽象类 纯虚函数:是一个在基类中说明的虚函数,他在该基类中没有定义,但要求在它的派生类中定义自己的版本,或重新说明为纯虚函数。 纯虚函数的一般形式:virtual type func_name(参数表)=0(type是函数的返回类型,func_name是函数名)。 抽象类:一个类至少有一个纯虚函数的类。抽象类提供了处理各种不同派生类的统一接口,将实现的责任交给了派生类。
99
几种应用编程接口 API Berkeley 为UNIX 操作系统定义了一种 API,它又称为套接字接口(socket interface)。
90年代初,Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,称Windows Sockets(1.1,2.0),是BerkeleySockets的重要扩充。
100
什么是Socket? SOCKET就是一种应用编程接口,计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。 应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。在应用开发中就像使用文件句柄一样,可以对SOCKET句柄进行读,写操作。
101
Socket的位置 应用进程通过套接字接入到网络 因特网 客户 服务器 套接字 由应用程序 控制 应用进程 应用进程 套接字 由操作系统
TCP TCP
102
Socket的位置
103
socket的作用 分配资源:当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。 创建套接字描述符:被分配的资源整合在一起叫做:套接字描述符(用号码表示),并把此号码返回给应用进程。应用进程使用此号码来进行网络通信。
104
调用 socket 创建套接字 操作系统 0: 1: 2: 3: 4: 套接字描述符表 (每一个进程一个描述符) 套接字的数据结构
协议族:PF_INET 服务:SOCK_STREAM 本地 IP 地址: (PF_INET协议族)表示使用 IPv4 常用的Socket类型有两种:流式Socket (SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。 Dgram :datagram的缩写 远地 IP 地址: 本地端口: 远地端口:
105
Java网络编程 以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。 在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。 对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。
106
以Windows Socket2.0版本为例,需要: 头文件winsock2.h(位于VC安装目录下)
库文件Ws2_32.lib (位于VC安装目录下) DLL文件Ws2_32.dll (位于windows安装目录下) 使用尖括号的话,编译时会先在系统include目录里搜索,如果找不到才会在源代码所在目录搜索;使用双引号则相反,会先在源代码目录里搜索。这就意味着,当系统里(如/usr/include/里)有一个叫做math.h的头文件,而你的源代码目录里也有一个你自己写的math.h头文件,那么使用尖括号时用的就是系统里的;而使用双引号的话则会使用你自己写的那个。 所以建议: 使用系统里提供的头文件时使用尖括号 使用自己编写的头文件时使用双引号 头文件是一种文本文件,使用文本编辑器将代码编写好之后,以扩展名.h保存就行了。头文件中一般放一些重复使用的代码,例如函数声明,变量声明,常数定义,宏的定义等等。当使用#include语句将头文件引用时,相当于将头文件中所有内容,复制到#include处。为了避免因为重复引用而导致的编译错误,头文件常具有 #ifndef LABEL #define LABEL //代码部分 #endif 的格式。其中,LABEL为一个唯一的标号,命名规则跟变量的命名规则一样。常根据它所在的头文件名来命名,例如,如果头文件的文件名叫做hardware.h, 那么可以这样使用: #ifndef __HARDWARE_H__ #define __HARDWARE_H__ 这样写的意思就是,如果没有定义__HARDWARE_H__,则定义__HARDWARE_H__,并编译下面的代码部分,直到遇到#endif。这样,当重复引用时,由于__HARDWARE_H__已经被定义,则下面的代码部分就不会被编译了,这样就避免了重复定义。
107
如何创建套接字 以Winsock API 函数为例
应用程序在使用套接字前,先必须拥有一个套接字,系统函数socket( )向应用程序提供创建套接字的手段,调用格式如下 SOCKET PASCAL FAR socket ( int af, int type, int protocol ) 第一个参数为int af,代表网络地址族,目前只有一种取值是有效的,即AF_INET,代表internet地址族; 第二个参数为int type,代表网络协议类型,SOCK_DGRAM代表UDP协议,SOCK_STREAM代表TCP协议; 第三个参数为int protocol,指定网络地址族的特殊协议,目前无用,赋值0即可。 返回值为SOCKET,若返回INVALID_SOCKET则失败。
108
其他函数简介 bind函数 bind函数用来将一个套接字绑定到一个IP地址。一般只在服务方(即数据发送方)调用,很多函数会隐式的调用bind函数。 listen函数 从服务方监听客户方的连接。同一个套接字可以多次监听。 connect和accept函数 connect是客户方连接服务方的函数,而accept是服务方同意客户方连接的函数。这两个配套函数分别在各自的程序中被成功调用后就可以收发数据了。 send和recv函数 send和recv是用来发送和接收数据的两个重要函数。send只能在已经连接的状态下使用,而recv可以面向连接和非连接的状态下使用。
109
网络通信三要素 IP地址 端口号 连接 即主机的网络地址,两个进程要通讯,任意一方的进程必须知道通讯对方的位置,即对方的IP地址。
用来标识本地通讯进程,方便OS提交数据。 虽然任意一方的进程知道了对方进程的IP地址,但这个IP只是用来标识进程所在的主机,如何找到运行在这个主机上的这个具体进程呢→用端口号。 连接 指两个进程间的通讯链路(面向连接的还是无连接的)。
110
网络通信中的相关关系 半相关 全相关 网络中用一个三元组可以在全局唯一标志一个进程: (协议,本地地址,本地端口号)
这样一个三元组,叫做一个半相关,它指定连接的每半部分。 全相关 一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议。不可能通信的一端用TCP协议,而另一端用UDP协议。因此一个完整的网间通信需要一个五元组来标识: (协议,本地地址,本地端口号,远地地址,远地端口号) 这样一个五元组,叫做全相关。即两个协议相同的半相关才能组合成一个合适的全相关(或完全指定组成一连接)。
111
通过系统调用建立全相关 四个套接字系统调用,socket()、bind()、connect()、accept(),就可以完成一个完全五元相关的建立。 socket( ) 指定五元组中的协议元。 bind( ) 指定五元组中的本地二元,即本地主机地址和端口号。 其用法与是否面向连接有关:在服务器方,无论是否面向连接,均要调用bind();在客户方,若采用面向连接,则可以不调用bind(),而通过connect()自动完成。若采用无连接,客户方必须使用bind()以获得一个唯一的地址。 connect( ) 和 accept( ) 用于建立最终连接。
112
Socket的建立流程 面向连接的套接字调用时序图
113
无连接协议的套接字调用时序图
114
小结 dns http ftp smtp, pop3 应用层的要求: 特定协议: 可靠性, 带宽, 延迟 服务模式: 客户端-服务器模式
Internet 传输服务模型 面向连接的, 可靠的: TCP 不可靠的, 数据报: UDP 特定协议: dns http ftp smtp, pop3
115
习题 如果你要访问网站 haunghuai.edu.cn并按回车,直到黄淮学院的网站首页显示在浏览器中,请问:在此过程中,按照TCP/IP参考模型,从应用层到网络层分别都用到了哪些协议?
116
答案 (1)应用层:HTTP:WWW访问协议,DNS:域名解析; (2)传输层:TCP:在客户和服务器之间建立连接,提供可靠的数据传输;
(3)网络层:IP:IP包传输和路由选择,ICMP:提供网络传输中的差错检测,ARP:将本机的IP地址映射成物理MAC地址。
117
如果您寝室或家中原本可以访问因特网的计算机突然不能上网了,请简要叙述您所采取的检查或排错措施。(请分步骤描述,并配以相关命令)
习题 如果您寝室或家中原本可以访问因特网的计算机突然不能上网了,请简要叙述您所采取的检查或排错措施。(请分步骤描述,并配以相关命令)
118
答案 (1)检查网线是否连接,如有ADSL,则需检查其是否开机,电话线是否连接。
(2)检查本机的网卡驱动程序及TCP/IP协议是否安装正确 。输入命令:ping ,如果ping通过,则表示网卡驱动及TCP/IP都是正常的,否则表示网卡驱动程序或TCP/IP有问题,此时应该检查一下网卡驱动程序是否安装正确完好,TCP/IP协议是否安装。把网卡驱动程序及TCP/IP协议设置好后,检查一下现在能否上网,如果还是无法上网,这时就要进行第三步了。
119
答案 3)检查您的计算机到网关之间的线路 输入ipconfig命令,找到网关Ping 网关地址后,如果返回的结果正常,而IE依然打不开网页,则可进行第四、五步工作了。如果返回的结果不正常,则说明您的计算机和网关主机网络不正常。此时如果是Adsl用户则需要向运营商打电话救助,让他们检查自己的服务器是否出现了故障。如果是局域网用户,则需要向网管求助,让他们检查网络的交换设备及网关服务器是否工作正常。 (4)检查Internet网络 a.Ping 本地DNS 地址,检查DNS 服务器是否正常工作; b.Ping 远程IP 地址,检查本网或本机与外部的连接是否正常。 注:a和b可以合起来用ping一个著名的网站来完成,如ping
120
作业 6-09、6-10、6-14 6-15、6-35
121
Thank You !
Similar presentations