生产实习报告.docx
- 文档编号:12392130
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:51
- 大小:251.16KB
生产实习报告.docx
《生产实习报告.docx》由会员分享,可在线阅读,更多相关《生产实习报告.docx(51页珍藏版)》请在冰豆网上搜索。
生产实习报告
生产实习报告
专业:
班级:
姓名:
学号:
同组姓名:
指导老师:
实习进度计划:
本次实习地点是汤学明、龙涛老师的实验室,具体实习进度计划如下:
指导老师讲解实习纪律于实习要求,分配小组并指定实习任务1天
第一周根据指定课题搜集相关资料,熟读理解,并作出报告6天
第二周周一进行工作成果汇报,老师指导下一阶段计划1天
第二周其余时间安装ORACLE数据库,计算机间进行通信,对
通信过程进行截包,查看分析协议格式,并将实验结果截图。
6天
第三周周一进行工作成果汇报,老师指导下一阶段计划1天
第三周其余时间完善表的约束条件,执行更加复杂的查询语
句,再截包分析,实验结果截图。
6天
第四周周一进行第三周工作成果汇报,老师对实习进行总结1天
前三周实习期间书写实习日志。
书写实习报告2天
总结及考核1天
oracle通信协议分析
摘要
TNS协议是ORACLE服务端和客户端通讯的协议。
TNS协议传输可以使用TCP/IP协议、使用SSL的TCP/IP协议、命名管道和IPC协议传输,其中TCP/IP协议传输是使用明文传送。
这里我们只分析基于TCP/IP协议上的TNS数据。
ORACLE当中,如果想访问某个服务器,必须要设置TNS,ORCAL不能自动列举出网内的服务器,需要通过读取TNS配置文件才能列出经过配置的服务器名。
本文详细介绍了生产实习中对oracle通信协议格式的研究过程,包括对oracle通信协议格式的一些介绍,OracleTNS配置流程,包括listener.ora,sqlnet.ora,tnsnames.ora这些文件的配置,以及对客户端与服务器端进行通信并用wireshark截包以分析oracle通信协议格式。
关键字:
TNS
Analysisoftheoraclecommunicationprotocolformats
Abstract
TNSprotocolisORACLEserverandclientcommunicationsprotocol.TNSprotocoltransmissioncanusetheTCP/IPprotocol,usingSSLTCP/IPprotocol,namedpipesandIPCprotocoltotransmitthemessage.Amongthis,theTCP/IPprotocolonlytransmitscleartext.HerewejustanalyzetheTNSdatathatbasedontheTCP/IPprotocol.
WhenusingORACLEdatabase,ifyouwanttoaccessaserver,youmustfirstsettheTNS.ORCALcannotautomaticallylistthenetworkservers,thenamesoftheconfiguredserverscanbelistedonlyafterreadingtheTNSconfigurationfiles.Thisarticledescribestheprocessofproductionpracticeoraclecommunicationprotocolformat,introducedonoraclecommunicationprotocolformat,OracleTNSconfigurationprocess,includingtheconfigurationofthesefileslistener.ora,sqlnet.ora,tnsnames.ora,andcommunicateswithclientandserver-sideandwiresharkcutpackagetoanalyzetheoraclecommunicationprotocolformat.
Keyword:
TNS
实习进度计划······················································2
摘要······························································3
Abstract···························································3
1概述····························································5
2实习内容记述
2.1实验步骤·······················································6
2.2TNS配置文件
2.2.1oracleTNS配置流程···········································6
2.2.2oracle监听器Listener资料······································11
2.2.2.1监听器的功能···············································12
2.2.2.2监听器的操作···············································12
2.2.2.3.监听器的工作过程···········································13
2.2.2.4.监听器的动/静态注册机制····································14
2.2.3客户端连接服务器端常见问题排除方法···························18
3专题内容分析
3.1ORACLE协议分析
3.1.1TNS介绍·····················································20
3.1.2TNS数据格式·················································20
3.1.2.1通用包头格式···············································20
3.1.2.2连接包结构(0x01)············································21
3.1.2.3接受包结构(0x02)············································22
3.1.2.4拒绝包结构(0x04)············································23
3.1.2.5重定向包结构(0x05)··········································23
3.1.2.6标记包结构(0x0c)············································24
3.1.2.7控制包结构(0x0d)············································24
3.1.2.8数据包结构(0x06)············································24
3.1.2.9典型的使用序列·············································34
3.2实验截包截图····················································35
4实习收获与体会···················································36
5对实习工作的改进意见·············································36
参考文献···························································36
附录:
Oracle数据库安全论述·········································37
1概述
Oracle是一种关系型数据库管理系统,它功能强大、性能卓越,国内外很多重要的站点,尤其是大中型的网站服务器、邮件服务器、文件服务器存储端都采用Oracle数据库,因此,Oracle数据库的安全对众多用户的数据安全有着至关重要的影响。
Oracle数据库的安全隐患来源有多种,包括设计时未考虑到的协议脆弱性,开发时的疏忽导致的模块缓冲区溢出漏洞,用户使用过程中部署不恰当和管理过程中的权限控制不严格。
TNS协议是Oracle网络连接最初使用的协议,它的漏洞可能造成客户端无阻碍的获取服务器的管理信息。
因此对oracle通信协议即TNS协议的格式进行分析显得很有必要。
我们研究oracle通信协议格式的目的在于了解其漏洞,避免造成安全隐患。
Oracle数据库客户端和服务器之间连接建立和身份认证协议具有脆弱性,我们可以利用实验抓取通信协议包进行分析的方法,避开了协议的不开源造成的困难。
网络上搜集的与oracle通信协议TNS研究相关的资料不多,中文资料大多数都是一些博客或XX文档里的短篇文章有所涉及,详细的讲解TNS协议的只有国外教授JonahH.Harris发表的一篇长篇论文,本文对TNS协议格式分析主要参考这篇论文,其博客上也有一些对TNS的论述,具有一定参考价值。
JonahH.Harris写的文献oracle通信协议分析对oracle通信协议进行了详细地探讨,其中包括:
oracle网络体系结构、oracle网络组件、oracle支持的协议(TNS)、各种TNS包、oracle建立网络连接、oracle数据库查询、底层网络协议、如何捕获通信数据包等等。
根据这些资料可以安装oracle进行实验,对通信截包,分析TNS协议。
2实习内容记述
2.1实验步骤
1.安装Oracleserver端,并着手配置监听器listener;
2.在客户端安装Oracleclient,同时配置tnsnames.ora文件;
3.建立连接,客户端访问服务器;
4.运行sniffer,开始抓包,执行几条数据库操作语句,完成后抓包结束;
5.设置过滤条件,找出真正需要的内容,分析数据部分,应该有执行的sql语句。
2.2TNS配置文件
2.2.1oracleTNS配置流程
TNS是OracleNet的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS,当然在少数情况下,不用配置TNS也可以连接Oracle数据库,比如通过JDBC.如果通过TNS连接Oracle,那么客户端必须安装Oracleclient程序.
TNS有那些配置文件?
TNS的配置文件包括服务器(安装Oracle数据库的机器)端和客户端两部分。
服务器有listener.ora,sqlnet.ora,tnsnames.ora,如果通过OCM(OracleConnectionManage)和域名服务管理客户端连接,服务器端可能还包括cman.ora等文件;客户端有tnsnames.ora,sqlnet.ora.
listener.ora:
监听器配置文件,成功启动后是驻留在服务器端的一个服务。
什么是监听器?
监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序。
默认情况下Oracle在1521端口上侦听数据库连接请求。
sqlnet.ora:
用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接。
根据参数作用的不同,需要分别在服务器和客户端配置。
tnsnames.ora:
配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息。
Oracle所有的TNS配置文件都存放在
unix/linux:
$ORACLE_HOME/network/admin
windows:
%ORACLE_HOME%\network\admin
TNS有那些配置工具?
我们可以手动配置,也可以通过OracleNetConfiguretionAssitant配置。
OracleTNS配置流程
首先在Oracleserver端安装完成之后,因该先着手配置LISTENER,listenerr是进行Oracle通讯的首要组件,紧接着在客户端安装Oracleclient,同时配置tnsnames.ora文件。
LISTENER(监听器)配置
首先监听器包括两个部分:
Oracle要监听的地址、端口、通讯协议;Oracle要监听的数据库实例.非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器.每个数据库最少要配置一个监听器
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=extproc))
)
)
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=plsextproc)
(ORACLE_HOME=/oracle10g)
(PROGRAM=extproc)
)
(SID_DESC=
(SID_NAME=mayp)
(ORACLE_HOME=/oracle10g)
)
)listener部分配置了Oracle要监听的地址信息;SID_LIST_LISTENER部分配置了Oracle需要监听的实例.
HOST参数即可以是hostname,也可以是ip地址.在一个多IP的服务器上可以配置listener同时监听多个地址.比如下面的配置:
LISTENER=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.10)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1)(PORT=1521))
)
)或者可以配置多个监听器,分别监听不同的IP地址.
OracleNet支持的通讯协议有:
■TCP/IP
■TCP/IPwithSSL
■NamedPipes
■SDPOracle9i引入了动态监听服务注册,指的是我们不需要在listener.ora中配置oracle要监听的数据库实例信息,数据库启动的时候,PMON进程可以自动注册当前数据库实例到listener的监听列表.也就是说上面的SID_LIST_LISTENER部分就不用配置了。
使用动态监听服务器端必须满足以下条件:
■数据库必须设置INSTANCE_NAME和SERVICE_NAME参数;
■监听器采用默认的TCP协议并使用1521端口进行监听;
■如果在配置监听器时采用了其他通讯协议或者侦听端口,进行以下设置告诉Oracle采用自定义监听器:
1、通过LOCAL_LISTENER参数明确设置当前使用的监听器,
2、在服务器端都tnsnames.ora文件中加入自定义监听器的配置信息.如果采用了OCM,那么还可以在cman.ora中加入监听器的配置信息.
.LOCAL_LISTENER可以通过ALTERSYSTEM动态设置.
ALTERSYSTEMSETLOCAL_LISTENER=’listener_alias’;一个动态监听配置的示例:
listener.ora文件的配置:
LISTENER1=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.205.73)(PORT=1421))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.64)(PORT=1421))
(ADDRESS=(PROTOCOL=IPC)(KEY=extproc))
)
)LOCAL_LISTENER参数的配置(因为这里采用非1521的端口):
SQL>showparameterlocal_listener
NAMETYPEVALUE
-----------------------------------------------------------
local_listenerstringlistener1tnsnames.ora的配置:
LISTENER1=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbtest)(PORT=1421)(IP=FIRST))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.205.73)(PORT=1421))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.64)(PORT=1421))
)
mayp=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbtest)(PORT=1421))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.64)(PORT=1421))
)
(CONNECT_DATA=
(SERVICE_NAME=mayp)
(SERVER=DEDICATED)
)
)TNS配置
我们说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora有客户端的配置,也有服务器端的配置.客户端和服务器端配置的区别是因为服务器端的配置跟LISTENER的配置相关.下面是一个简单的配置示例:
mayp=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbtest)(PORT=1421))
)
(CONNECT_DATA=
(SERVICE_NAME=mayp)
(SERVER=DEDICATED)
)
)同样tnsnames.ora也包括两部分,ADDRESS_LIST部分包含了远程数据库服务器的监听地址信息,也就是要告诉TNS远程数据库可通过乃些地址和CLIENT通讯;CONNECT_DATA定义了CLIENT要连接的数据库,还有数据库的连接方式,(专用或共享)。
在一个多ip环境中,TNS也可以配置多个远程IP地址:
mayp=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=dbtest)(PORT=1421))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.64)(PORT=1421))
)
(CONNECT_DATA=
(SERVICE_NAME=mayp)
(SERVER=DEDICATED)
)
)一般在多IP环境中,还可以在TNS端配置load_balance和failover特性.这些特性在RAC环境下比较流行,load_balance特性可以让client在连接数据库是选择任意地址进行连接,是各地址的连接均衡.failover开启Oracle特有的TAF特性,TAF为TransparentApplicationFailover的缩写.load_balance可以在客户端配置,也可以在服务器端配置.下面是一个客户端的配置示例:
mayp=
(DESCRIPTION=
(ADDRESS_LIST=
(LOAD_BALANCE=ON)
(FAILOVER=ON)
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.205.73)(PORT=1421))
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.200.64)(PORT=1421))
)
(CONNECT_DATA=
(SERVER=DEDICATED)
(SERVICE_NAME=MAYP)
(FAILOVER_MODE=
(TYPE=SELECT)
(METHOD=BASIC)
)
)
)sqlnet.ora的配置
sqlnet.ora是个很重要的配置,他可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置.sqlnet.ora的配置是全局性的,也就说sqlnet.ora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以在TNS配置相应参数.详细参数可以参考:
2.2.2Oracle监听器Listener资料
Oracle监听器Listener是一个重要的数据库服务器组件,在整个Oracle体系结构中,扮演着重要的作用。
它负责管理Oracle数据库和客户端之间的通讯,它在一个特定的网卡端口(默认是TCP1521端口)上监听连接请求,并将连接转发给数据库,下面的部分,会从几个方面对监听器进行简单介绍。
2.2.2.1.监听器的功能
从当前的Oracle版本看,Listener主要负责下面的几方面功能:
1.监听客户端请求。
监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process,在Windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程。
Windows上名为TNSLSNR,Linux/Unix平台上是lsnrctl。
监听器守候在服务器制定端口(默认为:
1521),监听客户端的请求。
2.为客户端请求分配ServerProcess。
监听器只负责接听请求,之后将请求转接给OracleServerProcess。
在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程ServerProcess(也称为影子进程)作为代理。
监听器接受到请求之后,就向操作系统(或者Dispatcher组件)要求fork(或分配)一个ServerProce
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生产 实习 报告