浅谈HTTP请求与响应
HTTP协议用于客户端和服务器之间的通信,请求访问的一段是客户端,提供资源响应的一段是服务器端。
HTTP通信是采用请求应答的方式来进行的,客户端发出请求,服务器响应。如果没有客户端的请求,服务器端是不进行任何响应的。HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列4个步骤:
(1)建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP /IP完成,这是在网络层进行的。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
(2)Web浏览器向Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令,如下所示,其中GET表示请求服务的类型,随后的字符串/index.html指明了请求访问的资源对象,也叫做请求URI。最后的HTTP/1.1表示HTTP的版本号。综合来看,请求报文包括请求方法、请求URI、协议版本、可选的请求首部字段和内容实体。
GET /index.htm HTTP/1.1
Host:hackr.jp
(3)Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答,如下所示。开头的HTTP/1.1表示服务器对应的版本号,接下来的200 OK表示请求处理的处理结果的状态码和原因短语。接下来是响应首部字段。
HTTP/1.1 200 OK
Date:Tue ,10 July 2016 08:33:16 GMT
Content-Length:362
Conten-Type:text/html
<html>
……
(4)Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
在HTTP的请求服务类型主要有以下八种:
GET:获取资源
GET方法用来请求访问已经被URI识别的资源,具体的请求与响应的例子如下:
|
请求 |
GET /indexhtml HTTP/1.1 Host:www.hackr.jp |
|
响应 |
返回index.html的页面资源 |
POST:传输实体主体,具体的请求响应例子如下:
|
请求 |
POST /submit.cgi HTTP/1.1 Host:www.hackr.jp Content-Length:1560(1560字节的数据) |
|
响应 |
返回submit.cgi接收数据的处理结果 |
PUT:传输文件,具体的请求响应例子如下:
|
请求 |
PUT /example.html HTTP/1.1 Host:www.hackr.jp Content-type:text/html Content-Length:1560(1560字节的数据) |
|
响应 |
返回状态码 |
HEAD:获得保温首部
|
请求 |
HEAD /indexhtml HTTP/1.1 Host:www.hackr.jp |
|
响应 |
返回index.html有关的响应首部 |
DELETE:删除文件
|
请求 |
DELETE /example.html HTTP/1.1 Host:www.hackr.jp |
|
响应 |
返回状态码 |
OPTIONS:询问支持的方法
|
请求 |
OPTIONS* HTTP/1.1 Host:www.hackr.jp |
|
响应 |
HTTP/1.1 200 OK Allow:GET,POST,HEAD,OPTIONS (返回服务器支持的方法) |
TRACE:追踪路径
|
请求 |
TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
|
响应 |
HTTP/1.1 200 OK Content-type:message/http Content-Length:1024 TRACE HTTP/1.1 Host:www.hackr.jp Max-Forwards:2 |
CONNECT:要求用隧道协议链接代理
|
请求 |
CONNECT proxy.hackr.jp:8080 HTTP/1.1 Host:proxy.hackr.jp |
|
响应 |
HTTP/1.1 200 OK(之后进入网络隧道) |
浅谈HTTP请求与响应的更多相关文章
- 浅谈Spring 5的响应式编程
这篇使用Spring 5进行响应式编程的入门文章展示了你现在可以使用的一些新的non-blocking, asynchronous.感谢优锐课老师给予的指导! 近年来,由于响应式编程能够以声明性的方式 ...
- 浅谈HTTP请求头content-type
请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成.实体头域包含关于实体的原信息,实体头包括Allow.Content- Base.Content-Encoding.Content ...
- 浅谈JavaScript的事件响应
原文出处: Christian Heilmann 译文出处:Chajn Science 每当猴子们问我JavaScript和DOM里啥东西最牛逼时,我都会一巴掌打回去:卧槽还用问么当然是事件响应了 ...
- 浅谈http请求数据分析
前段时间,我一个朋友给我打了个电话.说是现在在搞网络销售,问我能不能帮他整个自动发帖机.说实在的,以前没有弄过这块,我就跟他讲我试试看吧,能不能成不能保证.毕竟是搞程序的嘛,自学的能力还是有滴.经过一 ...
- 浅谈jmeter请求参数获取的方式
一.传统的web端请求参数我们在浏览器url栏看到传递的参数是什么,比如百度: 1.我们假如百度有一个这样的地址: https://www.baidu.com/s?wd=jmeter&name ...
- 浅谈Vue响应式(数组变异方法)
很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法. 看来想让女神自己动,关键得用 ...
- 浅谈HTTP中GET和POST请求方式的区别
浅谈HTTP中GET和POST请求的区别 HTTP认知: HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议.HTTP的底层是TCP/IP.所以GET和POST的底层也是TCP/IP,也 ...
- 浅谈WebService SOAP、Restful、HTTP(post/get)请求
http://www.itnose.net/detail/6189456.html 浅谈WebService SOAP.Restful.HTTP(post/get)请求 2015-01-09 19:2 ...
- 浅谈flask源码之请求过程
更新时间:2018年07月26日 09:51:36 作者:Dear. 我要评论 这篇文章主要介绍了浅谈flask源码之请求过程,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...
随机推荐
- Git------pull出错解决方法
1.图片 转载:http://www.2cto.com/os/201404/293183.html
- C语言switch语句
C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英 ...
- OOXML,XLSX分析
07以上的xlsx是使用了OOXML和zip,将后缀修改为.zip,就可以看到文件,主要分析xl目录下的文件,如图: 主要数据文件在xl目录下面 styles.xml里面存放着excel的样式数据 很 ...
- 【IIS】IIS 7.0/7.5 无法启动 w3svc 服务
一般情况下,window IIS安装完毕后,会启动C:\inetpub\ 产生 类似C:\inetpub\temp\apppools的文件夹,如果IIS被改动过,此文件夹不会自动生成.需要手动添加. ...
- 160513、nginx+tomcat集群+session共享(linux)
第一步:linux中多个tomcat安装和jdk安装(略) 第二步:nginx安装,linux中安装nginx和windows上有点不同也容易出错,需要编译,这里做介绍 一.安装依赖 gcc open ...
- ambari安装集群下python连接hbase之安装thrift
简介: python连接hbase是需要通过thrift连进行连接的,ambari安装的服务中貌似没有自带安装hbase的thrift,我是看配置hbase的配置名称里面没有thrift,cdh版本的 ...
- Open 常用开源
msdn:https://msdn.microsoft.com/zh-cn codeplex:https://www.codeplex.com/ gotdotnet:http://www.gotdot ...
- Markdown安装与简单使用
早就听过Markdown的大名了,说是最适合程序员的编辑器,一点也不为过.平时写文章,写博客.除了内容以外,还要被一堆繁琐的样式困扰,毕竟样式太难看,既是自己的文章,也会懒得看的.今天正好看到博客上面 ...
- kubernetes安全认证相关资料
1.Kubernetes安装之创建Kubeconfig文件 https://jimmysong.io/blogs/kubernetes-create-kubeconfig/ 2.轻松了解Kuberne ...
- 浅析Android View(二)
深入理解Android View(一) View的位置參数信息 二.View的绘制过程 View的绘制过程一共分为三个部分: - measure(測量View的大小) - layout(确定View的 ...