您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > HTTP Proxy及相关应用开发
Http代理及相关应用开发北京高阳圣思园信息技术有限公司应用研发部李长茂2009年5月主要内容Http协议及Http代理基本介绍Http代理服务器工作流程及程序结构终端使用Http代理连接外网的方式以EDC为例,介绍Http代理相关的应用开发Http代理相关的服务器端的开发HttpRequestMessage格式请求行,例如GET/images/logo.gifHTTP/1.1,表示从/images目录下请求logo.gif这个文件。(请求)头,例如Accept-Language:en空行可选的消息体请求行和标题必须以CRLF作为结尾。空行内必须只有CRLF而无其他空格。在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的。Http/1.1请求方法OPTIONSHEADGETPOSTPUTDELETETRACECONNECTHttp状态码所有HTTP响应的第一行都是状态行,依次是当前HTTP版本号,3位数字组成的状态代码,以及描述状态的短语,彼此由空格分隔。状态代码的第一个数字代表当前响应的类型:1xx消息——请求已被服务器接收,继续处理2xx成功——请求已成功被服务器接收、理解、并接受3xx重定向——需要后续操作才能完成这一请求4xx请求错误——请求含有词法错误或者无法被执行5xx服务器错误——服务器在处理某个正确请求时发生错误HTTP客户端与服务器之间会话的例子客户端请求:GET/HTTP/1.1Host:服务器应答:HTTP/1.1200OKContent-Length:3059Server:GWS/2.0Date:Sat,11Jan200302:44:04GMTContent-Type:text/htmlCache-control:privateSet-Cookie:PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqyX9j;expires=Sun,17-Jan-203819:14:07GMT;path=/;domain=.google.comConnection:keep-alive(紧跟着一个空行,并且由HTML格式的文本组成了Google的主页)什么是代理服务器?普通的因特网访问是一个典型的客户机/服务器结构:用户本地计算机上的客户端程序如浏览器发生请求,远端服务器程序响应请求并提供相应的数据。而代理处于客户机和服务器之间,对于服务器来说,Proxy是客户机,提出请求;对于客户机来说,Proxy是服务器,它接受请求并提供数据。代理服务器的作用安全屏障、内容过滤、访问控制提高网络性能多机共享一个IP地址用户管理通过代理服务器可以访问一些不能直接访问的网站HTTPCONNECT代理不是所有的HTTP代理都只能代理HTTP的HTTPCONNECT代理服务器是一种能够允许用户建立TCP连接到任何端口的代理服务器,这意味着这种代理不仅可用于HTTP,还包括FTP,RM流服务等Http代理服务器的工作流程Http代理服务器程序框架结构示例终端使用Http代理连接外网的方式常见的支持Http代理的终端:IE浏览器、QQ、MSN等终端使用Http代理连接外网的方式1.终端本身不支持Http代理,也不支持socks5,采用sockscap+socks2http方式2.终端本身支持socks5,可以采用socks2http方式3.终端本身支持http代理Http代理相关的应用开发_以EDC为例Http代理相关的应用开发_EDC终端需要做相关开发的模块包括SIP模块、RTP模块、MSRP模块Http代理相关的应用开发_EDCSIP模块添加TCP收发模块添加Http消息封包及解封包添加与Http2Socks服务器的信息交互Sip消息、Sdp消息相关字段的修改(Contact、Via等)Http代理相关的应用开发_EDCRtp模块添加TCP收发模块Http消息封包及解封包Http消息包体内容包括Rtp消息的最终目的接收者的IP地址、端口及Rtp消息Http代理相关的应用开发_EDCMsrp模块MSRP协议基本介绍1.相关的RFC:RFC4975TheMessageSessionRelayProtocolRFC4976RelayExtensionsfortheMessageSessionRelayProtocolHttp代理相关的应用开发_EDCMsrp模块2使用MSRP进行文件传送的典型拓扑结构Http代理相关的应用开发_EDCMsrp模块3使用MSRP进行文件传送的基本流程Http代理相关的应用开发_EDCMsrp模块4使用MSRP进行文件传送的SDP消息示例v=0o=alice28908445262890844526INIP4pc.example.coms=c=INIP4alicepc.example.comt=00m=message7654TCP/MSRP*i=Thisismylatestpicturea=sendonlya=accept-types:*a=path:msrp://pc.example.com:7654/jshA7we;tcpa=file-selector:name:Mycoolpicture.jpg”type:image/jpegsize:32349hash:SHA:72245FE8653DDAF371362F86D471913EE4A2CE2Ea=disposition:inlinea=file-date:creation:Mon,15May200615:01:31+03:00a=icon:cid:id2@alicepc.example.coma=byte-range:1-32349Http代理相关的应用开发_EDCMsrp模块5MSRP消息示例MSRPa786hjs2SENDTo-Path:msrp://biloxi.example.com:12763/kjhd37s2s20w2a;tcpFrom-Path:msrp://atlanta.example.com:7654/jshA7weztas;tcpMessage-ID:87652491Byte-Range:1-25/25Content-Type:text/plainHeyBob,areyouthere?-------a786hjs2$MSRPa786hjs2200OKTo-Path:msrp://atlanta.example.com:7654/jshA7weztas;tcpFrom-Path:msrp://biloxi.example.com:12763/kjhd37s2s20w2a;tcp-------a786hjs2$Http代理相关的应用开发_EDCMsrp模块5当需要把一个大消息分成几个小的消息传送时的MSRP消息Message-ID:456Byte-Range:1-4/8Content-Type:text/plainabcd-------dkei38sd+“+”号表示后面还有消息内容“$”表示消息完整MSRPdkei38iaSENDMessage-ID:456Byte-Range:5-8/8Content-Type:text/plainEFGH-------dkei38ia$一般一次传送消息大小最大为2K.Http代理相关的应用开发_EDCMsrp模块流程修改(进行文件传送前,先向http2socks服务器请求msrp中继服务)http封包及解封包文件数据的重新组包Http2Socks服务器设计说明功能要求1.监听请求端口,处理分配端口的请求,将分配的端口(msrp中继服务不用返回端口)返回给终端;2.建立一个UDP套接字,与分配的端口绑定,监听该端口;将从该UDP套接字接收到的消息包打包成http格式,再通过与终端保持的TCP连接转发出去;3.处理收到的终端发过来的消息包,取出消息包内容与目的服务器地址,将消息包通过之前建立的UDP套接字转发到目的服务器地址(PS服务器将响应发送到请求消息IP包源地址,所以不能通过其他套接字转发请求消息)性能要求1.大容量消息并发实时处理(包括UDP和TCP)2.7*24小时服务3.可靠消息处理Http2Socks服务器程序结构
本文标题:HTTP Proxy及相关应用开发
链接地址:https://www.777doc.com/doc-3284712 .html