HTTP协议学习 – HTTP HTTP协议介绍 持续连接 HTTP消息
本文由发表于6年前 | 网络知识 | 评论数 1 |  被围观 5,980 views+
1、HTTP协议介绍:2、浏览器与服务器通信的过程:2.1、浏览器连接到服务器的过程:3、持续连接(Persistent Connections)4、HTTP消息:4.1、HTTP URL格式:4.2、URL与URI:4.3、HTTP的请求:4.3.1、HTTP请求的方法:4.4、响应消息:4.4.1、状态代码与状态描述:4.5、HTTP消息:
1、HTTP协议介绍:

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

HTTP属于应用层协议,网页的浏览实际上是浏览器和服务器之间通过HTTP在Internet上进行数据的发送和接收。

绝大多数的Web开发都是构建在HTTP协议之上的Web应用。

HTTP是一个基于请求/响应模式的无状态的协议(Request/Response based, stateless protocol)

域名 DNS 解析

2、浏览器与服务器通信的过程:
1、 客户发起连接
2、 客户发送请求
3、 服务器响应请求
4、 服务器关闭连接
2.1、浏览器连接到服务器的过程:
ServerSocket serverSocket = new ServerSocket(80);
serverSocket.accept();

客户端请求:
www.itzhai.com + 80(浏览器自动添加) --> DNS(Domain Name Service) --> 192.168.0.1:80
Socket socket = new Socket("192.168.0.1:80");

3、持续连接(Persistent Connections)

HTTP1.0中,建立连接,发送请求,服务器回应一个小小,然后就关闭连接。是需要不断建立连接的通信方式,开销比较大。会造成Internet上的信息阻塞。

而在HTTP1.1版本中,引入了了持续连接(Persistent Connections)的机制,并把该机制作为缺省行为。

这种机制下,浏览器只需建立一个连接,发送请求得到回应后,可以继续发送请求,支持流水线的请求。即是客户端可以连续发送多个请求,而不用等待每一个响应的到来。

4、HTTP消息:
4.1、HTTP URL格式:
http://host[:port][abs_path]
http表示通过HTTP协议来定位网络资源
host:表示合法的Internet主机域名或IP地址
port:指定一个端口号,缺省为80
abs_path:指定请求资源的URI
4.2、URL与URI:

URI是一个符号结构,用于指定构成Web资源的字符串的各个不同部分。

URL,特殊的URI,包含了用户查找某个资源的足够的信息。

4.3、HTTP的请求:

客户端通过发送HTTP请求向服务器请求对资源的访问

HTTP请求由三部分组成:请求行,消息报头,请求正文

- Method Request-URI HTTP-Version CRLF
Method标签请求的方法
Request-URI是一个统一资源标识符
HTTP-Version表示请求的HTTP协议版本
CRLF表示回车换行

例如:

- GET /index.php HTTP/1.1 (CRLF)
4.3.1、HTTP请求的方法:
GET:请求获取由Request-URI所标识的资源
POST:在Request-URI所表示的资源后附加新的数据
HEAD:请求获取有Request-URI所表示的资源的响应消息报头
DELETE:请求服务器删除由Request-URI所标识的资源
TRACE:请求服务器会送受到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
PUT:请求服务器存储一个资源,并用Request-URI作为其标识

GET方法:

GET方法获取由Request-URI所标识的资源的信息,格式如下:

- GET Request-URI HTTP/1.1

当我们通过在浏览器的地址栏中直接输入网址方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源。

POST方法:

POST方法向服务器发送请求,要求服务器接受负载请求后面的数据。POST方法在表单提交时采用的最多。

例如:

POST/login.jsp HTTP/1.1(CRLF)
Accept:image/png(CRLF)(…)
Host:www.abc.com(CRLF)(…)
…
Cache-Control:no=cache(CRLF)
(CRLF)
username=Jason&password=123

HEAD方法:

HEAD方法与GET方法几乎一样,区别在于HEAD方法只是请求消息报头。

这个方法通常用户测试超链接的有效性,是否可以访问,以及最近是否更新等。

在提交表单时,浏览器会根据提交方法的选择采用相应的HTTP协议中的GET或POST方法向服务器发送请求。(HTML中书写get和post不区分大小写,但HTTP协议中的GET和POST方法只能是大写形式)

4.4、响应消息:

在接受和解释请求消息后,服务器会返回一个HTTP响应消息。

与HTTP请求消息类似,HTTP相应也是由三个部分组成:状态行,消息报头,响应正文。

- HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version:服务器HTTP协议的版本
Status-Code:服务器发回的响应代码
Reason-Phrase状态代码的文本描述
CRLF:回车换行

例如:

- HTTP/1.1 200 OK (CRLF)
4.4.1、状态代码与状态描述:

状态代码由三位数字组成,第一个数字定义响应类别,后面两个数字没有具体的分类:

1xx:指示信息-表示请求已接收,继续处理
2xx:成功-表示请求已经被成功接收理解,接受
3xx:重定向-要完成请求必须进行更进一步的操作
4xx:客户端错误-请求有语法错误或请求无法实现
5xx:服务器错误-服务器未能实现合法的请求
4.5、HTTP消息:

HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行(请求行/状态行),消息报头(可选),空行(只有CRLF),消息正文(可选)组成。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/http-protocol-to-learn-http-http-persistent-connection-http-message-protocol-described.html
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 11/6
文章评论
    一条评论
给我留言

有人回复时邮件通知我
网络知识的相关文章
随机文章 本月热门 热评
1 InvalidMappingException提示Could not parse mapping document错误的解决方法 2011/5/26
2 数据结构笔记 – 排序算法 优化冒泡排序算法 2011/9/20
3 MySQL中的数据类型和使用方法 2014/7/13
4 【转】关于用户体验的三个反思 2013/11/6
5 Java虚拟机笔记 – JVM 自定义的类加载器的实现和使用 2011/11/5
6 Struts2单选按钮标签s:radio的使用及其设置默认值 2011/9/10
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.