【安富莱TCPnet网络教程】HTTP通信实例
第41章 HTTP超文本传输协议基础知识
本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习。
(本章的知识点主要整理自网络)
41.1 初学者重要提示
41.2 HTTP基础知识参考资料
41.3 HTTP基础知识点
41.4 HTTP通信实例
41.5 总结
41.2 HTTP基础知识参考资料
大家可以从以下地址获得HTTP基础知识:
- RFC2616地址(HTTP/1.1) : ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt 。
- wiki百科中文版HTTP:地址链接(这个是超链接)
- wiki百科英文版HTTP:地址链接(这个是超链接)
- 百度百科HTTP:地址链接(这个是超链接)
对于初学者来说,学习上面四个参考资料就够了。如果大家有网络方面的书籍,比如《TCP/IP详解》,也可以直接看书籍。
41.4 HTTP通信实例
为了帮助大家更好的理解HTTP的请求消息和响应消息,我们这里举一个例子。请求消息如下(注意,下面代码有4行,第3行和第4行都是回车换行):
GET /index.html HTTP/1.1 Host: www.example.com
- GET /index.html HTTP/1.1
这个是请求行,请求方法使用GET,请求的URL是/index.html,即获取此网页内容,协议版本是HTTP/1.1。特别注意,这三个部分之间一定要有空格,且末尾一定要带回车换行。回车换行在这里的表现形式就是切换到了下一行Host。
- Host: www.example.com
这个是请求头域,Host头域必须要有,这里是访问网站www.example.com。特别注意,末尾也要有回车和换行符,反映在这里就是空白的第3行,由回车和换行符切换到这一行的。
- 空行
空行也是必不可少的,反映在这里就是空白的第4行,也是由回车和换行符切换到这一行的。
为了让大家看到回车换行的效果,将请求消息整理到记事本里面,然后用winhex软件打开这个记事本就可以看到回车换行的数值了。

下面我们测试HTTP请求消息,测试方法也比较简单,依然使用我们TCP通信章节用的网络调试助手。
- 第1步:创建客户端。

- 第2步:填写请求信息。

- 第3步:点击发送就可以看到返回的响应消息了。

返回的完整消息内容如下:
HTTP/1.1 OK
Cache-Control: max-age=
Content-Type: text/html
Date: Sun, Aug :: GMT
Etag: "359670651+ident"
Expires: Sun, Aug :: GMT
Last-Modified: Fri, Aug :: GMT
Server: ECS (rhv/)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: ;
padding: ;
font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 50px;
background-color: #fff;
border-radius: 1em;
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
body {
background-color: #fff;
}
div {
width: auto;
margin: auto;
border-radius: ;
padding: 1em;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is established to be used for illustrative examples in documents. You may use this
domain in examples without prior coordination or asking for permission.</p>
<p><a href="http://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
- HTTP/1.1 200 OK
这个是状态行,协议版本HTTP/1.1,状态码200,状态码描述OK,表示响应消息返回成功。
- Cache-Control
这个是响应头域,表示缓冲控制,无论是否可以缓存此对象,都要告诉服务器到客户端的所有缓存机制。这里表示604800秒后缓冲的内容失效。
- Content-Type
属于响应头域,内容类型用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件。这里返回的内容类型是TEXT/HTML。
- Date
属于响应头域,表示此条消息被发送时的日期和时间。
- Etag
属于响应头域,表示对于某个资源的某个特定版本的一个标识符,通常是一个消息散列。ETag是HTTP协议提供的若干机制中的一种Web缓存验证机制,并且允许客户端进行缓存协商。
- Expires
属于响应头域,表示指定一个日期/时间,超过该时间则认为此回应已经过期。
- Last-Modified
属于响应头域,表示所请求对象的最后修改日期。
- Server
属于响应头域,表示服务器名字。
- Vary
属于响应头域,用于告知下游的代理服务器,应当如何对未来的请求协议头进行匹配,以决定是否可使用已缓存的回应内容而不是重新从原始服务器请求新的内容。
- X-Cache
属于响应头域,表示HTTP请求是由代理服务器回应的,HIT表示代理直接回应。
- Content-Length
属于响应头域,表示回应消息体的长度,即实际内容,单位字节。这里是1270字节的数据。
- 剩下的内容就是HTML格式的消息实体了。
具体大家可以实际操作下,有个感性的认识,另外就是换个其它的网址也操作下,加深理解。
【安富莱TCPnet网络教程】HTTP通信实例的更多相关文章
- 【安富莱二代示波器教程】第19章 附件E---参考资料
第19章 附件E---参考资料 DSP教程 http://forum.armfly.com/forum.php?mod=viewthread&tid=3886 . FreeRTOS教 ...
- 【安富莱二代示波器教程】第18章 附件C---波形拟合
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785 第18章 附件C---波形拟合 emWin5. ...
- 【安富莱二代示波器教程】第17章 附件B---功能扩展和改进方向
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=45785 第17章 附件B---功能扩展和改进方向 ...
- 【安富莱二代示波器教程】第16章 附件A---电阻屏触摸校准
第16章 附件A---电阻屏触摸校准 二代示波器的触摸校准比较简单,随时随地都可以做触摸校准,按下K1按键即可校准.有时候我们做触摸校准界面,需要在特定的界面才可以进入触摸校准状态,非常繁琐 ...
- 【安富莱二代示波器教程】第6章 示波器设计—双通道ADC驱动
第6章 示波器设计—双通道ADC驱动 本章节为大家讲解示波器的ADC驱动,采用STM32自带ADC实现.关于STM32F429的ADC,可以说处处有地雷,不小心就踩上了,如果简单的使用, ...
- 【安富莱STM32H7教程】第1章 初学STM32H7的准备工作
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第1章 初学STM32H7的准备工作 俗话说万事开头 ...
- 【安富莱】RTX嵌入式操作系统教程发布,支持F103,F407和F429,含81个配套例程(2017-10-17)
前言说明:1. 首先感谢大家对我们安富莱电子一年来的支持,2016年我们会再接再厉推出更好的教程. 2. 估计也有网友会问RTX的优势在那里,针对这个问题,教程中第一章分为6条专门回答了这个问题,有兴 ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
- 【安富莱专题教程第3期】开发板搭建Web服务器,利用花生壳让电脑和手机可以外网远程监控
说明:1. 开发板Web服务器的设计可以看我们之前发布的史诗级网络教程:链接.2. 需要复杂些的Web设计模板,可以使用我们V6开发板发布的综合Demo:链接.3. 教程中使用的是花生壳免费版, ...
随机推荐
- Get Docker CE for CentOS
To get started with Docker CE on CentOS, make sure you meet the prerequisites, then install Docker. ...
- GraphicsMagick+im4java实现高质量大图的处理
http://www.open-open.com/lib/view/open1355754261963.html 做网站往往需要处理各种各样的图片,对于jdk自带的一套图片处理库,他的特点是稳定简单, ...
- 根据NABCD原则完成的案例项目需求分析及其创新方法
<well> Need:在当下的知识经济时代,社会效率在提升,社会竞争强度也在增大,现代社会对人的素质提出了更高的要求,这导致了越来越多的人心理压力增大.well产品就是为了缓解人们心理压 ...
- 排序系列 之 快速排序算法 —— Java实现
基本思想: 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变 ...
- 【莫比乌斯反演】BZOJ2005 [NOI2010]能量采集
Description 求sigma gcd(x,y)*2-1,1<=x<=n, 1<=y<=m.n, m<=1e5. Solution f(n)为gcd正好是n的(x, ...
- 使用bat打开多个cmd窗口执行gulp、node
一.使用场景 使用场景:项目发布前 操作步骤: 1.执行gulp,对文件进行压缩.合并等操作: 2.在1执行完成后,对1中合并的文件如default.css进行多主题色的自动生成,在这里使用node处 ...
- AngularJs 服务 广播
1, angularJs的服务有provider,Service, Factory. Factory是对Service的封装,Service是对Provider的封装. Provide的源码如下: f ...
- Django基础三(form和template)
上一篇博文学习了Django的View和urls,接下来是对django form 和 template的学习. 1 django form django form为我们提供了便捷的方式来创建一些HT ...
- python书籍推荐:python编码推荐(高清完整pdf)
目录INF-qa Python 编码规范................................................................................ ...
- 用keras实现人脸关键点检测(2)
上一个代码只能实现小数据的读取与训练,在大数据训练的情况下.会造内存紧张,于是我根据keras的官方文档,对上一个代码进行了改进. 用keras实现人脸关键点检测 数据集:https://pan.ba ...