文档库 最新最全的文档下载
当前位置:文档库 › HTTP 初探

HTTP 初探

HTTP 初探
HTTP 初探

HTTP协议的头信息详解

HTTP协议的头信息详解 HTTP协议的头信息详解 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。通用头域通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。 Cache-Control头域Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、

min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、 must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:Public指示响应可被任何缓存区缓存。Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。no-cache指示请求或响应消息不能缓存no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。Date头域Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。Pragma头域Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。请求消息请求消息的第一行为下面的格式:

易语言http返回

易语言http返回 .版本2 .程序集http返回封包, , 公开 .程序集变量长连接, 逻辑型 .程序集变量版本, 整数型 .程序集变量服务器名称, 文本型 .程序集变量断点续传, 逻辑型 .程序集变量压缩状态, 逻辑型 .程序集变量小甜饼, 文本型 .程序集变量地址, 文本型 .子程序_初始化, , , 当基于本类的对象被创建后,此方法会被自动调用 长连接=假 版本=2 服务器名称=“易语言web服务器” 断点续传=假

压缩状态=假 .子程序_销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用 .子程序使用帮助, 文本型, 公开 返回(#http返回编码类帮助) .子程序编码http, 字节集, 公开 .参数状态码, 整数型 .参数待编码数据, 字节集, 可空 .参数数据类型, 文本型, 可空 .参数数据起点到文件头部偏移, 整数型, 可空 .参数数据终点到文件头部偏移, 整数型, 可空 .参数总长度, 整数型, 可空 .局部变量结果, 字节集 结果=取空白字节集(0) .如果真(状态码=#HTTP状态码_正常返回) 结果=到字节集(获取协议() +“”+取状态码(状态码) +

#换行符+取服务器名称() +#换行符+取Date () +#换行符+取Last_Modified () +#换行符+取断点续传() +#换行符) .如果真(断点续传) 结果=结果+到字节集(取字节范围(数据起点到文件头部偏移, 数据终点到文件头部偏移, 总长度) +#换行符) .如果真结束 结果=结果+到字节集(包装数据类型(数据类型) +#换行符+获取数据长度(到文本(取字节集长度(待编码数据))) +#换行符+获取压缩状态() +#换行符+取小甜饼() +#换行符+#换行符) +待编码数据 返回(结果) .如果真结束 .如果真(状态码=#HTTP状态码_不存在) 结果=到字节集(获取协议() +“”+取状态码(状态码) +#换行符+取服务器名称()) 返回(结果) .如果真结束 .如果真(状态码=#HTTP状态码_服务不可用) 结果=到字节集(获取协议() +“”+取状态码(状态码) +#换行符+取服务器名称()) 返回(结果) .如果真结束

HTTP请求报头详解

HTTP头字段包括4类: general-header ; request-header ; response-header ; entity-header . ********************************************************************* ********** General Header Fields ============================= general header是request、response都可用的, 但是不能用于entity. --Cache-Control --Connection --Date --Pragma --Trailer --Transfer-Encoding --Upgrade --Via --Warning ********************************************************************* ********** Request Header Fields ====================== request-header fields 允许客户端传递关于request和客户端的附加信息到服务端, --Accept --Accept-Charset --Accept-Encoding --Accept-Language --Authorization --Expect --From --Host --If-Match --If-Modified-Since --If-None-Match --If-Range --If-Unmodified-Since

微信通信HTTP协议抓取与分析

微信通信HTTP协议抓取与分析 一、实验目标 1、基本要求:利用HTTP协议抓取工具获得微信通信会话过程,并对数据包进行分析。 二、基础知识 1、了解HTTP两个基本命令GET与POST,并利用抓取工具获得数据包; 2、利用Telnet命令仿真测试命令GET与POST; 3、利用抓取工具获得微信通信会话数据包,并进行分析。 4、GET与POST get是从服务器上获取数据; post是向服务器传送数据。 三、实验过程与结果 1、网页上Httpwatch抓包结果 安装httpwatch抓包工具,使用IE浏览器,右击有显示httpwatch professional,进入抓包界面。点击Record按钮,输入网址https://www.wendangku.net/doc/f117509958.html,/,开始抓包 1.1.1 Get方式客户端向服务器发送数据 GET /gw/css/style.css HTTP/1.1 Accept: text/css, */* X-HttpWatch-RID: 26411-10018 Referer: https://www.wendangku.net/doc/f117509958.html,/gw/index/index.html Accept-Language: zh-CN User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate Host: https://www.wendangku.net/doc/f117509958.html, Connection: Keep-Alive 1.1.2 Get方式服务器向客户端返回地数据 HTTP/1.1 200 OK Date: Thu, 25 Feb 2016 09:15:55 GMT Content-Type: text/css Content-Encoding: gzip Last-Modified: Tue, 15 Dec 2015 02:18:29 GMT Accept-Ranges: bytes ETag: "80487e3de36d11:0" Server: Microsoft-IIS/7.5 X-Powered-By: https://www.wendangku.net/doc/f117509958.html, Content-Length: 9039 Age: 1 X-Via: 1.1 lishui17:6 (Cdn Cache Server V2.0) Connection: keep-alive 在网页上输入快递单号查询,网页上发送请求 1.2.1 POST方式客户端向服务器发送地数据 POST /addTrace.ashx HTTP/1.1 X-Requested-With: XMLHttpRequest X-HttpWatch-RID: 73415-10085 Content-Type: application/x-www-form-urlencoded; charset=UTF-8

教你利用HTTP host头攻击的技术

利用HTTP host 头攻击的技术 2014-04-10 我来说两句 作者:龙臣 收藏 我要投稿 from:https://www.wendangku.net/doc/f117509958.html,/2013/05/practical-http-host-header-at tacks.html 0x00 背景 一般通用web 程序是如果想知道网站域名不是一件简单的事情,如果用一个固 定的URI 来作为域名会有各种麻烦。开发人员一般是依赖HTTP Host header (比如 在php 里是_SERVER["HTTP_HOST"] ),而这个header 很多情况下是靠不住的。而 很多应用是直接把这个值不做html 编码便输出到了页面中,比如: ? 1 (Django, Gallery, others) 这样处理问题一般会很容易遭遇到两种常见的攻击:缓存污染和密码重置。缓 存污染是指攻击者通过控制一个缓存系统来将一个恶意站点的页面返回给用户。密 码重置这种攻击主要是因为发送给用户的内容是可以污染的,也就是说可以间接的 劫持邮件发送内容。 0x01 密码重置污染攻击 拿 Gallery 这个站来做例子。当我们进行密码重置的时候,网站会给我们发 送一个随机的key : ? 1 2 3 $user -> hash = random::hash() ; $message -> confirm_url = url::abs_site("password/do_reset?key=$user->hash") ;

http协议传输数据

竭诚为您提供优质文档/双击可除 http协议传输数据 篇一:详解http传输协议 何为http协议(hypertexttransferprotocol,超文本传输协议)? 所谓协议,就是指双方遵循的规范。http协议,就是浏览器和服务器之间进行“沟通”的一种规范。我们在看空间,刷微博...都是在使用http协议,当然,远远不止这些应用。 笔者一直听说http是属于“应用层的协议”,而且是基于tcp/ip协议的。这个不难理解,如果你上大学时候学过“计 算机网络”的课程,就一定知道osi七层参考协议(我当时是死记硬背的)。如果你接触过socket网络编程,就应该明白tcp和udp这两种使用广泛的通信协议(建立连接、三次握手等等,当然,这不是本文讨论的重点)。 如图: 既然tcp/udp是广泛使用的网络通信协议,那为啥有多出个http协议来呢?

笔者曾自己动手写过一个简单的web服务器处理软件,根据我的推断(不一定准确)。udp协议具有不可靠性和不安全性,显然这很难满足web应用的需要。 而tcp协议是基于连接和三次握手的,虽然具有可靠性,但仍具有一定的缺陷。但试想一下,普通的c/s架构软件,顶多上千个client同时连接,而b/s架构的网站,十万人同时在线也是很平常的事儿。如果十万个客户端和服务器一直保持连接状态,那服务器如何满足承载呢? 这就衍生出了http协议。基于tcp的可靠性连接。通俗点说,就是在请求之后,服务器端立即关闭连接、释放资源。这样既保证了资源可用,也吸取了tcp的可靠性的优点。 正因为这点,所以大家通常说http协议是“无状态”的,也就是“服务器不知道你客户端干了啥”,其实很大程度上 是基于性能考虑的。以至于后来有了session之类的玩意。 实战准备工作: 在监视网络方面,windows平台上有一款叫做sniffer 的优秀软件,这也是很多“黑客”经常使用的嗅探工具。 在 研究http协议时,推荐大家使用一款

芊熠智能_出入口相机HTTP通信协议V1.0

车牌识别一体机数据传输协议 一、HTTP推送: 这种方式需要用户建立一个HTTP服务器,同时将这台HTTP服务器的地址配置给一体机。当一体机有识别结果后(或者其他需要推送的内容时),就会往指定的地址发送HTTP命令。 1. http服务器设置 接收http推送的服务器,配置包括地址ip地址,端口号,和超时时间设置。请根据架设的服务器的情况进行配置。 2. 车牌识别结果推送 开启推送车牌识别结果后,有车牌识别结果时,按图中的配置会发送消息到 http://192.168.0.36/cgi-bin/plateresult.cgi这个地址。 数据内容:JSON格式 { "AlarmInfoPlate" : { "channel" : 0, "deviceName" : "default", "ipaddr" : "192.168.0.100", "result" : { "PlateResult" : { "bright" : 0, "carBright" : 0, "carColor" : 0, "colorType" : 0, "colorValue" : 0,

"confidence" : 0, "direction" : 0, "license" : "_无_", "location" : { "RECT" : { "bottom" : 0, "left" : 0, "right" : 0, "top" : 0 } }, "timeStamp" : { "Timeval" : { "sec" : 1441815171, "usec" : 672241 } }, "timeUsed" : 0, "triggerType" : 1, "type" : 0 } }, "serialno" : "e10b2d6c8c07b422361457935b518642" } } 开启报警发送图片后,json中的将包含图像数据。包含全部内容的json数据如下,

IIS的主机头值和HTTP头

IIS的主机头值和HTTP头 主机头是绑定域名,没有域名不用设置主机头,所谓的主机头的叫法起自IIS中对域名绑定的功能,一般的web服务器一个ip地址的80端口只能正确对应一个网站,处理一个域名的访问请求。而web服务器在不使用多个ip地址和端口的情况下,如果需要支持多个相对独立的网站就需要一种机制来分辨同一个ip地址上的不同网站的请求,这就出现了主机头绑定的方法。简单的说就是,将不同的网站空间对应不同的域名,以连接请求中的域名字段来分发和应答正确的对应空间的文件执行结果。举个例子来说,一台服务器ip地址为192.168.1.10,有两个域名和对应的空间在这台服务器上,使用的都是192.168.1.10的80端口来提供服务。如果只是简单的将两个域名A和B的域名记录解析到这个ip地址,那么web服务器在收到任何请求时反馈的都会是同一个网站的信息,这显然达不到要求。接下来我们使用主机头绑定域名A和B到他们对应的空间文件夹C和D。当含有域名A的web请求信息到达192.168.1.10时,web服务器将执行它对应的空间C中的首页文件,并返回给客户端,含有域名B的web请求信息同理,只不过解释的是空间D的文件。所以在使用主机头绑定功能后就不能使用ip地址访问其上的任何网站了,因为请求信息中不存在域名信息,所以会出错。 在IIS中有一个叫主机头的概念,我们基本都已经掌握,还有一个叫HTTP 头的概念,有的同学已经问我这个问题,其实HTTP头更多的涉及到软件上的东东。 最直观的HTTP头就是当我们在FROTPAGE或DREAMWEAVER中每次新建一个HTML页面后,在这个页面的代码都会有这样一行代码: 其实这就是一个HTTP头信息,HTML页面开头都会有类似的这样一行代码。 那么到底是么是HTTP头呢?HTTP头分为HTTP请求头和HTTP应答头。HTTP 请求头为HTTP客户在浏览服务器上的主页时,向服务器发送请求的时候必须指明请求类型。请求类型是指HTTP-GET或HTTP-POST,每个HTTP-GET和HTTP-POST 都由一系列HTTP请求头组成,这些请求头定义了客户端从服务器请求了什么,而响应则是由一系列HTTP应答头和应答数据组成,如果请求成功则返回应答。 我的理解:每次客户端通过IE向服务器请求访问一个页面时总是使用HTTP 的请求头发送GET类型或POST类型的HTTP请求头.服务器在发送应答时,发送的是HTTP应答请求。 请求头和应答具体有哪些标识,我们不详细讲了,自己看以下内容: HTTP请求头概述(HttpServletRequest) HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说Content-Length必须出现。 下面是一些最常见的请求头

ftp和http通讯协议

ftp和http协议 HTTP是Hyper Text Transfer Protocol,超文本传输协议; FTP是File Transfer Protocol,文件传输协议; 简单说HTTP是面向网页的,而FTP是面向文件的。 FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 FTP协议 FTP基于C/S模式而设计的。在进行FTP操作的时候,即需要客户端应用程序,也需要服务器端程序。我们一般先在自己的计算机中执行FTP客户端应用程序,在远程服务器中执行FTP服务器应用程序,这样,就可以通过FTP客户应用程序和FTP进行连接。连接成功后,可以进行各种操作。在FTP中,客户机只提出请求各接收服务,服务器只接收请求和执行服务。 在利用FTP进行文件传输之前,用户必须先连入INTERNET网中,在用户自己的计算机上启动FTP用户应用程序,并且利用FTP应用程序和远程服务器建立连接,激活远程服务器上的FTP服务器程序。准备就绪后,用户首先向FTP服务器提出文件传输申请,FTP服务器找到用户所申请的文件后,利用TCP/IP将文件的副本传送到用户的计算机上,用户的FTP程序再将接收到的文件写入自己的硬盘。文件传输完后,用户计算机与服务器计算机的连接自动断开。 与其他的C/S模式不同的是,FTP协议的客户机与服务器之间需要建立双重连接:一个是控制连接,另一个是数据连接。这样,在建立连接时就需要占用两个通信信道。 HTTP超文本传输协议,HTTP是用来在WWW上交换文件(文本,图形,声音,动画等)的规则集。相对于TCP/IP协议族(它是网上交换信息的基础),HTTP是应用协议。 ftp的协议和http协议的主要区别在于ftp是需要用户名和密码才能访问(匿名登陆除外),这样做的目的在于有的文件只供特殊人访问,而http协议是任何人都可以访问的。ftp在浏览器的地址栏中的格式是: ftp://用户名:密码@网站地址/文件目录/ 如果直接输入ftp.网站地址则会弹出一个登陆界面,需要输入用户名和密码,这种方式通常称为webftp,从字面上理解很容易明白,看起来是浏览器访问,实际上打开的是以文件夹的形式的存放目录。 目前常用ftp软件cuteftp,flashftp等来访问,方便管理 HTTP协议是什么 我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。

Socket和HTTP网络通信

Socket和HTTP网络通信 在Android的网络通讯中,通常会使用Socket进行设备间数的数据通讯,使用Http来 对网络数据进行请求。 1、Socket(套接字) 不管是有过Java开发经验还是.NET开发经验的同学都应该对Socket有或多或少的了解,常见的TCP或者UDP协议其实都是基于Socket来实现的。 Socket是用于描述网络上的一个设备中的一个进程或者应用程序的,Socket由 IP地址和端口号两部分组成。IP地址用来定位设备,端口号用来定位应用程序或者进程,比如我们常见的运行在80端口上的HTTP协议。Socket的常见格式为: 192.168.1.1:1234。 那么应用程序是如何通过Socket来与网络中的其他设备进行通讯的呢?通常情况下,Socket通信有两部分,一部分为监听的Server端,一部分为主动请求连接的 Client端。Server端会一直监听Socket中的端口直到有请求为止,当Client端对该端 口进行连接请求时,Server端就给予应答并返回一个Socket对象,以后在Server端 与Client端的数据交换就可以使用这个Socket来进行操作了。 2、Android中使用Socket进行数据交换 ?ServerSocket 建立服务端(Server)时,需要使用ServerSocket对象,这个对象会自动对其构造函数中传入的端口号进行监听,并在收到连接请求后,使用ServerSocket.accept()方 法返回一个连接的的Socket对象。这个方法并不需要我们像在.NET中那样使用Start方法,它会自动进行监听的。 ?Socket 不管建立客户端(Client)还是在进行其他数据交换方面的操作时,都需要使用Socket类。Socket类在进行初始化时需要出入Server 端的IP地址和端口号,并返回 连接到Server端的一个Socket对象,如果是连接失败,那么将返回异常。同ServerSocket,也是自动进行连接请求的。 通过上面两个步骤后,Server端和Client端就可以连接起来了,但是仅仅连接起来 是没有任何作用的,数据交换才是我们的目的,这时候就需要用到IO流中的OutputStream类和InputStream类。 ?OutputStream——可写流 当应用程序需要对流进行数据写操作时,可以使用Socket.getOutputStream()方 法返回的数据流进行操作。 ?InputStream——可读流

服务器推技术

基于HTTP长连接的“服务器推”技术 Comet简介 浏览器作为Web应用的前台,自身的处理功能比较有限。浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广。在Web应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示。AJAX是浏览器技术发展的成果,通过在浏览器端发送异步请求,提高了单用户操作的响应性。但Web本质上是一个多用户的系统,对任何用户来说,可以认为服务器是另外一个用户。现有AJAX技术的发展并不能解决在一个多用户的Web应用中,将更新的信息实时传送给客户端,从而用户可能在“过时”的信息下进行操作。而AJAX的应用又使后台数据更新更加频繁成为可能。 图 1.传统的Web应用模型与基于AJAX的模型之比较 “服务器推”是一种很早就存在的技术,以前在实现上主要是通过客户端的套接口,或是服务器端的远程调用。因为浏览器技术的发展比较缓慢,没有为“服务器推”的实现提供很好的支持,在纯浏览器的应用中很难有一个完善的方案去实现“服务器推”并用于商业程序。最近几年,因为AJAX技术的普及,以及把IFrame嵌在“htmlfile“的ActiveX组件中可以解决IE 的加载显示问题,一些受欢迎的应用如meebo,gmail+gtalk在实现中使用了这些新技术;同时“服务器推”在现实应用中确实存在很多需求。因为这些原因,基于纯浏览器的“服务器推”技术开始受到较多关注,Alex Russell(Dojo Toolkit的项目Lead)称这种基于HTTP长连接、无须在浏览器端安装插件的“服务器推”技术为“Comet”。目前已经出现了一些成熟的Comet应用以及各种开源框架;一些Web服务器如Jetty也在为支持大量并发的长连接进行了很多改进。关于Comet技术最新的发展状况请参考关于Comet的wiki。 下面将介绍两种Comet应用的实现模型。

Http各种请求头的备注

HTTP1.1 请求头:消息头来自黑马:方立勋老师的课件 Accept:text/html,image/* 告诉服务器,客户机支持的数据类型 Accept-Charset:ISO-8859-1 告诉服务器,客户机采用的编码 Accept-EnCoding:gzip,compress 告诉服务器,客户机支持的数据压缩格式 Accept-Language:en 客户机的语言环境 Host: 客户机告诉服务器,想访问的主机名 If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间 Referer:https://www.wendangku.net/doc/f117509958.html,/1.jsp 客户机通过这个头告诉服务器;它是从哪个资源来访问服务器的(防盗链) User-Agent: 客户机告诉服务器,客户机的软件环境 Cookie: 客户机通过这个头可以向服务器带数据; 响应头: Location:这个头信息配合302状态码使用,用于告诉客户找谁;重定向; Server:告诉客户机服务器的类型 Content-Encoding: gzip 服务器通过这个头,告诉客户机服务器压缩数据的格式 Content-Length:告诉浏览器压缩数据格式的同时;告诉客户机压缩数据的长度;Content-Language: zh-cn回送给浏览器,告诉回送时的语言环境; Content-Type: text/html;charset=GB2312 服务器通过这个头, 告诉浏览器回送数据的类型;可以控制以哪种类型方式(参照tomcat|web.xml)打开送回的数据; Last-Modified:服务器通过这个头,告诉浏览器当前资源缓存时间; Refresh:3;url=https://www.wendangku.net/doc/f117509958.html, 服务器通过这个头,告诉浏览器隔多长时间刷新一次,也可以刷新到指定的页面(单位时间:秒) Content-Disposition:attachment;filename=aa.zip 服务器通过这个头,告诉浏览器以下载方式打开数据 Transfer-Encoding:chunked 服务器通过这个头,告诉浏览器数据的传送格式是以chunked ETag:缓存相关的头;比其他的缓存,可以实现实时更新; Expires:与缓存相关;服务器通过这个头,告诉浏览器吧回送的资源缓存多长时间;-1或0,表示不缓存; Cache-Control:no-cache Pragma:no-cache 服务器通过以上两个头,也是控制浏览器不要缓存数据; 因为市面上很多浏览器支持的控制缓存数据不一致;通过以上三个缓存头就可以控制所有浏览器不要缓存数据了; Http请求头字段: Range 头指示服务器只传送一部分web资源。这个头可以实现断点续传功能。有三种格式设置要传输的字节范围 Range: bytes=1000-2000 传输范围从1000到2000字节 Range:byetes=1000- 传输web资源中的第1000个字节以后的所有内容 Range: bytes=1000 传输最后1000个字节 http响应消息头字段:

java长连接的实现

java长连接的实现.txt32因为爱心,流浪的人们才能重返家园;因为爱心,疲惫的灵魂才能活力如初。渴望爱心,如同星光渴望彼此辉映;渴望爱心,如同世纪之歌渴望永远被唱下去。梁应宏 引言 TCP长连接服务在传统的智能网应用中扮演着重要的角色。由于其传输的高效率,在智能网SCP和IP的各个模块之间,大量使用了这种服务。例如,SS7gateway与SCF、SCF与INES、INES与外部节点、CN与VN,等等。 相反,在各种WEB应用中,广泛使用TCP短连接服务。基于HTTP承载的各种应用协议,如HTML,XML,SOAP等,多数使用TCP短连接服务。原因有二:一是这些HTTP协议的数据包较大,传输所占的开销较大,连接建立的开销相对较小。此时使用长连接对性能的提升并不明显。二是相对于长连接而言,无论是对于客户端还是服务端,短连接的实现难度要低很多。 以网通水平业务平台SPGW为例,多数对外接口采用HTTP/XML/SOAP协议和短连接。然而,出于性能的考虑,还有两个接口采用TCP长连接: l 东向接口(SPGW-DSMP):SCCP协议使用二进制消息。 l 南向接口(SPGW-SMSC):SPGW与短消息网关SMSC之间的SM7协议使用二进制消息。 从Java开发语言的角度,短连接的使用比较简单。因为Java的IO库已经提供了一个httpConnection类,成熟可靠,使用方便。但是,对于TCP长连接的使用,Java的IO库并没有直接的支持。本文将探讨对TCP长连接服务的一般需求和我们的实现考虑。 以下也简称TCP长连接服务为TCP服务。 需求 具有网络编程经验的人都知道,TCP程序的编写是“易学难精”。很容易编写一个TCP程序,具有一定的功能并且在少数正常情况下可以运行。但是,要想让它在各种网络条件、各种负荷情况下都能稳定运行,却不是一件简单的工作。具体说来,TCP长连接服务需要满足以下条件: 高性能 实现这一点的关键是,消息的接收操作必须是异步的。以SPGW与短信网关之间的消息流程为例,如下: 如上图所示,SPGW可以不等待上一消息的应答消息,就发送下一个短消息。因此在同一个TCP connection上,SM7消息的接收必须是异步的,否则就会阻塞后续消息的发送。

HTTP协议报头信息详细讲解

对HTTP协议的头信息详解 HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP 协议的详细容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户信息和容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体容。 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。 通用头域 通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。 Cache-Control头域 Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之的响应消息。 Date头域

Linux下http协议GET通讯的C语言实现

Linux下http协议GET通讯的C语言实现 from https://www.wendangku.net/doc/f117509958.html,/uid-21768364-id-187570.html201 1.03 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <errno.h> #include <unistd.h> #include <netinet/in.h> #include <limits.h>

#include <netdb.h> #include <arpa/inet.h> #include <ctype.h>int main(int argc, char *argv[]) { int sockfd; char buffer[1024]; struct sockaddr_in server_addr; struct hostent *host; int portnumber,nbytes; char host_addr[256]; char host_file[1024];

char local_file[256]; FILE * fp; char request[1024]; int send, totalsend; int i; char * pt;if(argc!=2) { fprintf(stderr,"Usage:%s web-address\a\n",argv[0]); exit(1); } portnumber=80;

【每日一步】http协议头学习

请求头 HTTP最常见的请求头如下: ●Accept:浏览器可接受的MIME类型; ●Accept-Charset:浏览器可接受的字符集; ●Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet 能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5 到10倍的下载时间; ●Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的 语言版本时要用到; ●Authorization:授权信息,通常出现在对服务器发送的WWW-Authenticate 头的应答中; ●Connection:表示是否需要持久连接。如果Servlet看到这里的值为 “Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接), 它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著 地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个 Content-Length头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小; ●Content-Length:表示请求消息正文的长度; ●Cookie:这是最重要的请求头信息之一; ●From:请求发送者的email地址,由一些特殊的Web客户程序使用,浏览器不 会用到它; ●Host:初始URL中的主机和端口; ●If-Modified-Since:只有当所请求的内容在指定的日期之后又经过修改才返回 它,否则返回304“Not Modified”应答; ●Pragma:指定“no-cache”值表示服务器必须返回一个刷新后的文档,即使它是 代理服务器而且已经有了页面的本地拷贝; ●Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。 ●User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值 非常有用;

HTTP协议培训资料

HTTP(HyperTextTransfer Protocol)是一套计算机通过网络进行通信的规则。计算机专家设计出HT TP,使HTTP客户(如Web浏览器)能够从HTTP服务器(Web服务器)请求信息和服务,HTTP目前协议的版本是1.1.HTTP是一种无状态的协议,无状态是指Web浏览器和Web服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后Web服务器返回响应(Respo nse),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。W eb浏览器向Web服务器发送请求,Web服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。 HTTP使用内容类型,是指Web服务器向Web浏览器返回的文件都有与之相关的类型。所有这些类型在MIME Internet邮件协议上模型化,即Web服务器告诉Web 浏览器该文件所具有的种类,是HTML文档、GIF格式图像、声音文件还是独立的应用程序。大多数Web浏览器都拥有

一系列的可配置的辅助应用程序,它们告诉浏览器应该如何处理Web服务器发送过来的各种内容类型。 HTTP通信机制是在一次完整的HTTP通信过程 中,Web浏览器与Web服务器之间将完成下列7个步骤: (1)建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP 是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80 (2)Web浏览器向Web服务器发送请求命令一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET /sample/hello.jsp HTTP/1.1 (3)Web浏览器发送请求头信息 浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。

Web前端开发培训第一讲:Http协议讲义完整版

Web前端培训第一讲:HTTP协议讲义完整版 目录 0. 预备知识 (1) 0.1 OSI层次模型与TCP/IP协议栈 (1) 0.2 IP地址 (2) 0.3 TCP/IP通信方式 (2) 1. HTTP协议通信过程 (2) 1.1 URL自动解析 (2) 1.2 获取IP,建立TCP连接 (3) 1.3客户端浏览器向服务器发出HTTP请求 (3) 1.4 Web服务器应答,并向浏览器发送数据 (3) 1.5 Web服务器关闭TCP连接 (3) 2. HTTP协议之URL (4) 2.1 HTTP协议概述 (4) 2.2 HTTP之URL (4) 2.3 URL编码 (5) 3. HTTP协议之请求 (8) 3.1 HTTP请求的结构 (8) 4. HTTP协议之响应 (9) 5. HTTP协议之消息报头 (10) 5.1 普通报头 (10) 5.2 请求报头 (11) 5.3 响应报头 (12) 5.4 实体报头 (13) 6. 需要提前了解的工具HttpAnalyzer (14) 7. 核心参考资料 (14) 0.预备知识 0.1OSI层次模型与TCP/IP协议栈 CCNA视频教程:https://www.wendangku.net/doc/f117509958.html,/playlist_show/id_767428.html 重点学习第二讲OSI层次参考模型与第三讲TCP/IP协议栈。

0.2IP地址 Windows Server 2003从入门到精通系列之:TCP/IP协议基础。 0.3 TCP/IP通信方式 ●按Client和Server的连接数量分类 1)一个Client方连接一个Server方,或称点对点(peer to peer)。 2)多个Client方连接一个Server方,这也是通常的并发服务器方式。 3)一个Client方连接多个Server方,这种方式很少见。 ●按连接方式分类 1)长连接 Client方与Server方先建立通讯连接,然后再进行报文发送和接收,在通信过程中连接不断开。 2)短连接 Client方与Server每进行一次报文收发交易时才进行通讯连接,通讯完毕后立即断开连接。 ●按发送接收方式分类 1)异步 报文发送和接收是分开的,相互独立的,互不影响。这种方式又分两种情况: (1)异步双工:接收和发送在同一个程序中,有两个不同的子进程分别负责发送和接收 (2)异步单工:接收和发送是用两个不同的程序来完成。 2)同步 报文发送和接收是同步进行,既报文发送后等待接收返回报文。 1.HTTP协议通信过程 当我们在浏览器的地址栏输入“https://www.wendangku.net/doc/f117509958.html,”然后按回车,这之后发生了什么事,我们直接看到的是打开了对应的网页,那么内部客户端和服务端是如何通信的呢? 1.1 URL自动解析 HTTP URL包含了用于查找某个资源的足够信息,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶盖HTTP协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

相关文档
相关文档 最新文档