1、Http代理及相关应用开发北京高阳圣思园信息技术有限公司应用研发部北京高阳圣思园信息技术有限公司应用研发部李长茂李长茂20092009年年5 5月月1.主要内容n nHttp协议及Http代理基本介绍n nHttp代理服务器工作流程及程序结构n n终端使用Http代理连接外网的方式n n以EDC为例,介绍Http代理相关的应用开发n nHttp代理相关的服务器端的开发2.HttpRequestMessage格式n n请求行,例如请求行,例如GET/images/logo.gifHTTP/1.1GET/images/logo.gifHTTP/1.1,表示从,表示从/images/images目录
2、下请求目录下请求logo.giflogo.gif这个文件。这个文件。(请求)头,例如(请求)头,例如Accept-Language:enAccept-Language:enn n空行空行 n n可选的消息体可选的消息体 请求行和标题必须以请求行和标题必须以作为结尾。空行内必须只作为结尾。空行内必须只有有而无其他空格。在而无其他空格。在HTTP/1.1HTTP/1.1协议中,所有协议中,所有的请求头,除的请求头,除HostHost外,都是可选的。外,都是可选的。3.Http/1.1请求方法n nOPTIONSn nHEADn nGETn nPOSTn nPUTn nDELETEn nTRACEn
3、 nCONNECT4.Http状态码n n所有所有 HTTPHTTP响应的第一行都是响应的第一行都是状态行状态行,依次是当前依次是当前 HTTPHTTP版本号,版本号,3 3位数字组成的位数字组成的状态代码状态代码,以及描述状态的短语,以及描述状态的短语,彼此由空格分隔。彼此由空格分隔。n n状态代码的第一个数字代表当前响应的类型:状态代码的第一个数字代表当前响应的类型:1xx1xx消息消息请求已被服务器接收,继续处理请求已被服务器接收,继续处理 2xx2xx成功成功请求已成功被服务器接收、理解、并接受请求已成功被服务器接收、理解、并接受 3xx3xx重定向重定向需要后续操作才能完成这一请求需
4、要后续操作才能完成这一请求 4xx4xx请求错误请求错误请求含有词法错误或者无法被执行请求含有词法错误或者无法被执行 5xx5xx服务器错误服务器错误服务器在处理某个正确请求时发生错误服务器在处理某个正确请求时发生错误 5.HTTPHTTP客户端与服务器之间会话的例子客户端与服务器之间会话的例子n n客户端请求:客户端请求:GET/HTTP/1.1GET/HTTP/1.1HostHost:n n服务器应答:服务器应答:HTTP/1.1200OKHTTP/1.1200OKContent-Length:3059Content-Length:3059Server:GWS/2.0DServer:GWS
5、/2.0Date:Sat,11Jan200302:44:04GMTate:Sat,11Jan200302:44:04GMTContent-Type:text/htmlContent-Type:text/htmlCache-control:privateCache-control:privateSet-Cookie:Set-Cookie:PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCPREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiq
6、yX9j;expires=Sun,17-Jan-203819:14:07GMT;path=/;QiqyX9j;expires=Sun,17-Jan-203819:14:07GMT;path=/;domain=domain=Connection:keep-aliveConnection:keep-alive(紧跟着一个空行,并且由(紧跟着一个空行,并且由HTMLHTML格式的文本组成了格式的文本组成了GoogleGoogle的主页)的主页)6.什么是代理服务器?n n普通的因特网访问是一个典型的客户机普通的因特网访问是一个典型的客户机/服务器结构:用服务器结构:用户本地计算机上的客户端程序如浏览
7、器发生请求,远端户本地计算机上的客户端程序如浏览器发生请求,远端WWWWWW服务器程序响应请求并提供相应的数据。而代理处服务器程序响应请求并提供相应的数据。而代理处于客户机和服务器之间,对于服务器来说,于客户机和服务器之间,对于服务器来说,ProxyProxy是客户是客户机,提出请求;对于客户机来说,机,提出请求;对于客户机来说,ProxyProxy是服务器,它接是服务器,它接受请求并提供数据。受请求并提供数据。7.代理服务器的作用n n安全屏障、内容过滤、访问控制n n提高网络性能n n多机共享一个IP地址n n用户管理n n通过代理服务器可以访问一些不能直接访问的网站8.HTTPCONNE
8、CT代理n n不是所有的HTTP代理都只能代理HTTP的n nHTTPCONNECT代理服务器是一种能够允许用户建立TCP连接到任何端口的代理服务器,这意味着这种代理不仅可用于HTTP,还包括FTP,RM流服务等9.Http代理服务器的工作流程10.Http代理服务器程序框架结构示例11.终端使用Http代理连接外网的方式n n常见的支持Http代理的终端:IE浏览器、QQ、MSN等n n终端使用Http代理连接外网的方式1.1.终端本身不支持Http代理,也不支持socks5,采用sockscap+socks2http方式2.2.终端本身支持socks5,可以采用socks2http方式3.
9、3.终端本身支持http代理12.Http代理相关的应用开发_以EDC为例13.Http代理相关的应用开发_EDC终端n n需要做相关开发的模块包括SIP模块、RTP模块、MSRP模块14.Http代理相关的应用开发_EDCSIP模块n n添加TCP收发模块n n添加Http消息封包及解封包n n添加与Http2Socks服务器的信息交互n nSip消息、Sdp消息相关字段的修改(Contact、Via等)15.Http代理相关的应用开发_EDCRtp模块n n添加TCP收发模块n nHttp消息封包及解封包n nHttp消息包体内容包括Rtp消息的最终目的接收者的IP地址、端口及Rtp消息1
10、6.Http代理相关的应用开发_EDCMsrp模块n nMSRP协议基本介绍1.1.相关的RFC:RFC4975TheMessageSessionRelayProtocolRFC4976RelayExtensionsfortheMessageSessionRelayProtocol17.Http代理相关的应用开发_EDCMsrp模块n n2使用MSRP进行文件传送的典型拓扑结构18.Http代理相关的应用开发_EDCMsrp模块n n3使用MSRP进行文件传送的基本流程19.Http代理相关的应用开发_EDCMsrp模块n n4使用MSRP进行文件传送的SDP消息示例v=0v=0o=alice
11、28908445262890844526INIPo=alice28908445262890844526INIPs=s=c=INIPc=INIPt=00t=00m=message7654TCP/MSRP*m=message7654TCP/MSRP*i=Thisismylatestpicturei=Thisismylatestpicturea=sendonlya=sendonlya=accept-types:*a=accept-types:*a=path:msrp:/:7654/jshA7we;tcpa=path:msrp:/:7654/jshA7we;tcpa=file-selector:nam
12、e:My cool picture.jpg”a=file-selector:name:My cool picture.jpg”type:image/jpeg size:32349type:image/jpeg size:32349hash:SHA:72245FE8653DDAF371362F86D471913EE4A2CE2Ehash:SHA:72245FE8653DDAF371362F86D471913EE4A2CE2Ea=disposition:inlinea=disposition:inlinea=file-date:creation:Mon,15 May 2006 15:01:31+0
13、3:00a=file-date:creation:Mon,15 May 2006 15:01:31+03:00a=icon:cid:a=icon:cid:a=byte-range:1-32349a=byte-range:1-3234920.Http代理相关的应用开发_EDCMsrp模块n n5MSRP消息示例MSRPa786hjs2SENDMSRPa786hjs2SENDTo-Path:msrp:/:12763/kjhd37s2s20w2a;tcpTo-Path:msrp:/:12763/kjhd37s2s20w2a;tcpFrom-Path:msrp:/:7654/jshA7weztas;t
14、cpFrom-Path:msrp:/:7654/jshA7weztas;tcpMessage-ID:87652491Message-ID:87652491Byte-Range:1-25/25Byte-Range:1-25/25Content-Type:text/plainContent-Type:text/plainHeyBob,areyouthere?HeyBob,areyouthere?-a786hjs2$-a786hjs2$MSRPa786hjs2200OKMSRPa786hjs2200OKTo-Path:msrp:/:7654/jshA7weztas;tcpTo-Path:msrp:/
15、:7654/jshA7weztas;tcpFrom-Path:msrp:/:12763/kjhd37s2s20w2a;tcpFrom-Path:msrp:/:12763/kjhd37s2s20w2a;tcp-a786hjs2$-a786hjs2$21.Http代理相关的应用开发_EDCMsrp模块n n5当需要把一个大消息分成几个小的消息传送时的当需要把一个大消息分成几个小的消息传送时的MSRPMSRP消息消息Message-ID:456Message-ID:456Byte-Range:1-4/8Byte-Range:1-4/8Content-Type:text/plainContent-Ty
16、pe:text/plainabcdabcd-dkei38sd+“+”-dkei38sd+“+”号表示后面还有消息内容号表示后面还有消息内容“$”“$”表示消息完整表示消息完整MSRPdkei38iaSENDMSRPdkei38iaSENDMessage-ID:456Message-ID:456Byte-Range:5-8/8Byte-Range:5-8/8Content-Type:text/plainContent-Type:text/plainEFGHEFGH-dkei38ia$-dkei38ia$一般一次传送消息大小最大为一般一次传送消息大小最大为2K.2K.22.Http代理相关的应用开
17、发_EDCMsrp模块n n流程修改(进行文件传送前,先向http2socks服务器请求msrp中继服务)n nhttp封包及解封包n n文件数据的重新组包23.Http2Socks服务器设计说明n n功能要求功能要求1.1.监听请求端口,处理分配端口的请求,将分配的端口监听请求端口,处理分配端口的请求,将分配的端口(msrp(msrp中继服务中继服务不用返回端口不用返回端口)返回给终端返回给终端;2.2.建立一个建立一个UDPUDP套接字,与分配的端口绑定,监听该端口;将从该套接字,与分配的端口绑定,监听该端口;将从该UDPUDP套接字接收到的消息包打包成套接字接收到的消息包打包成httph
18、ttp格式,再通过与终端保持的格式,再通过与终端保持的TCPTCP连连接转发出去接转发出去;3.3.处理收到的终端发过来的消息包,取出消息包内容与目的服务器地址,处理收到的终端发过来的消息包,取出消息包内容与目的服务器地址,将消息包通过之前建立的将消息包通过之前建立的UDPUDP套接字转发到目的服务器地址(套接字转发到目的服务器地址(PSPS服务服务器将响应发送到请求消息器将响应发送到请求消息IPIP包源地址,所以不能通过其他套接字转发包源地址,所以不能通过其他套接字转发请求消息)请求消息)n n性能要求性能要求1.1.大容量消息并发实时处理(包括大容量消息并发实时处理(包括UDPUDP和和TCPTCP)2.2.7*247*24小时服务小时服务3.3.可靠消息处理可靠消息处理24.Http2Socks服务器程序结构25.
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100