HTTP 协议
HTTP 协议对应 Web 开发者来说都必须要了解的,无论技术背景或首选编程语言是什么,"请求-响应" 对话是驱动 Web 上通信的基础。
HTTP 概述
HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。通常,由 HTTP 客户端发起一个请求,创建一个到服务器指定端口(默认是 80 端口)的 TCP 连接。HTTP 服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如 "HTTP/1.1 200 OK" ,以及返回的内容,如请求的文件、错误消息、或者其它信息。
平时我们在浏览器上输入网址,按回车就能浏览网页内容。这过程中主要分为两个部分 “请求” (浏览器向服务器发送的消息) 和 “响应” (服务器将处理结果返回给浏览器)。
HTTP 请求
HTTP 请求分为四格部分:请求行, 请求头, 空行, 请求主体,下面直接给出一个示例:
GET /hello.txt HTTP/1.1
Host: www.example.com
上示例中第一行为请求行,第二行为请求头,末尾有一个空行(即空行,必须要有)。
请求行包含:请求方法, 请求资源, 协议版本
常见的请求方法有GETPOSTHEAD等
协议版本有 0.9, HTTP/1.0, HTTP/1.1在 HTTP/1.1协议中,所有的请求头,除 Host 外,都是可选的。点击 HTTP头字段 了解更多头字段。下面给出常用的请求头:
host:请求的域名,必须要有
accept-encoding:可以接受的编码类型(不是字符编码,指的是文件格式)
connection:连接方式,1.0版本close,1.1版本keep-alive
accept-language:可以接收的语言类型
cookie:之前由服务器通过 Set-Cookie 发送的一个超文本传输协议 Cookie
user-agent:客户端信息
content-length:表示的请求体的长度,单位是字节
HTTP 响应
HTTP 响应分为四个部分:状态行, 响应头, 空行, 消息体(响应内容) 示例:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain
Hello World! My payload includes a trailing CRLF.
上示例中第一行为状态行,第二行至第九行处为响应头,第十行为空行,最后一行为消息体。
状态行包含:协议版本, 状态码, 状态描述。其中有关状态码更多的介绍可移步阅读 HTTP状态码
响应头更多信息可点击上文中的 “HTTP头字段” 链接查看。下面给出常见的响应头:
server:服务器信息
date:服务器响应的时间
last-modified:当前请求文件最后被修改的时间
content-length:响应体的数据长度,单位是字节
content-type:响应体的类型
location:重定向
cache-control:缓存控制
其中一个重要的 HTTP 响应头 Content-Type 服务器上的每个资源都可以以不同的格式返回给客户端,如 HTML、XML 或 JSON 等;通过在 Content-Type 里设置如 text/html 这样的互联网媒体类型,可以告知客户端,服务器给出的响应格式是什么。常用的媒体类型可移步阅读 互联网媒体类型
拓展知识
HTTP 长连接说明,还有文中提到的“TCP\IP三次握手连接”
其中还有长轮询、服务器发送事件、WebSocket等知识点都与 HTTP 相关,在这就不拓展开了,读者可自行谷歌
相关阅读
- 超文本传输协议
- WebSocket
- Comet (web技术)
- 推送技术
- HTTP 教程
- 写给前端的http详解
- HTTP协议头部与Keep-Alive模式详解
- HTTP 缓存
- Web缓存机制系列
- HTTP持久连接
HTTP 协议的更多相关文章
- HTTP协议系列(1)
一.为什么学习Http协议 首先明白我们为什么学习HTTP协议,也就是说明白HTTP协议的作用.HTTP协议是用于客户端与服务器之间的通讯.明白了HTTP协议的作用也就知道了为什么要学习H ...
- 重温Http协议--请求报文和响应报文
http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...
- 协议森林17 我和你的悄悄话 (SSL/TLS协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. TLS名为传输层安全协议(Transport Layer Protocol),这个协议是一套加密的 ...
- 协议森林16 小美的桌号(DHCP协议)
作者:Vamei 出处:http://www.cnblogs.com/vamei 转载请先与我联系. DHCP协议用于动态的配置电脑的网络相关参数,如主机的IP地址,路由器出口地址.DNS域名服务器地 ...
- 简约之美Jodd-http--深入源码理解http协议
Jodd 是一个开源的 Java 工具集, 包含一些实用的工具类和小型框架.简单,却很强大! jodd-http是一个轻巧的HTTP客户端.现在我们以一个简单的示例从源码层看看是如何实现的? Http ...
- 【JavaScript】javascript中伪协议(javascript:)使用探讨
javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行. 比如下面这个死链接: <a href="javasc ...
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- 海鑫智圣:物联网漫谈之MQTT协议
什么是MQTT协议 MQTT(消息队列遥测传输协议)是IBM在1999年专门针对物联网等应用场景来制订的轻量级双向消息传输协议,它主要是为了解决物联网上使用到的设备的互相通信的问题,以及这些设备与后端 ...
- linux-图形化远程管理协议
远程管理控制方式: RDP(remote desktop protocol)协议: telnet: SSH(Secure Shell): RFB(Remote FrameBuffer)协议(图形化远程 ...
- RTP与RTCP协议介绍(转载)
RTSP发起/终结流媒体.RTP传输流媒体数据 .RTCP对RTP进行控制,同步.RTP中没有连接的概念,本身并不能为按序传输数据包提供可靠的保证,也不提供流量控制和拥塞控制,这些都由RTCP来负责完 ...
随机推荐
- 如何更新 OpenStack 组件?- 每天5分钟玩转 OpenStack(161)
这是 OpenStack 实施经验分享系列的第 11 篇. 本节教大家更新 OpenStack 组件的方法.请注意,是更新(Update)而不是升级(Upgrade).更新是给组件打补丁,版本不变:而 ...
- 导航栏转场动画CATransition
CATransition动画来实现, 下面的代码是跳转到下一个视图: CATransition *animation = [CATransition animation]; [animation se ...
- Linux下使用ssh密钥实现无交互备份
服务器A(主) 192.168.1.120 服务器B(从) 192.168.1.130 需求:服务器B定期拉取服务器A的数据并备份. 实现方式: 一.备份服务器B安装rsync 1)查看是否安装 rp ...
- 九度OJ题目1076:N的阶乘 (java)运用BigInteger的例子。
题目描述: 输入一个正整数N,输出N的阶乘. 输入: 正整数N(0<=N<=1000) 输出: 输入可能包括多组数据,对于每一组输入数据,输出N的阶乘 样例输入: 4 5 15 样例输出: ...
- 设置node服务器的端口及运行环境
一般来说,node服务器中通常会看到这样的代码: ``` app.set('port', process.env.PORT || 3000); if ( process.env.NODE_ENV == ...
- Thrift序列化与反序列化的实现机制分析
Thrift是如何实现序死化与反序列化的,在IDL文件中,更改IDL文件中的变量序号或者[使用默认序号的情况下,新增变量时,将新增的变量不放在IDL文件的结尾,均会导致Thrift文件的反序列后无法做 ...
- 构建微服务-使用OAuth 2.0保护API接口
微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...
- SolrCloud的介绍
SolrCloud(solr云)是Solr提供的分布式搜索方案. 当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud. 当索引量很大,搜索请求并发很高时,同样需要使用SolrClou ...
- MVC不用302跳转Action,内部跳转
原理,在一个Action里面return 另一个Action出去. public class HomeController : Controller { // GET: Home public Act ...
- X-Scan使用教程
下载X-Scan扫描器,解压缩,双击Xscan_gui.exe即可运行,不需要安装.X-Scan采用多线程的方式,对指定主机或者网段进行扫描. 其扫描功能(插件)有: 开放服务:扫描TCP端口状态,根 ...