软件通信之HTTP通信协议

来源:互联网 发布:知乐胶囊为什么这么贵 编辑:程序博客网 时间:2024/06/07 02:25


本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!


Http通信协议

http:超文本传输协议。通信有四步骤:建立连接、发送请求、发送响应、关闭连接,主要用来传输数据,只要你能想到的数据。

Url链接:

http://www.wenku.baidu.com/view/a02d9786b9d528ea81c7796d.html

http://:代表超文本传输协议

www:代表万维网的服务器

wenku.baidu.com/:代表站服务器地址

view/:代表服务器下的一个文件夹

a02d9786b9d528ea81c7796d.html:代表文件夹下的一个文件

如上所述,只要是文件,不论文本、图片、电影、音乐等,对于浏览器来说,只是从远程服务器拿来的一个文件,解析到浏览器上给用户查看。

一个万网,连接了无数个网站的无数台服务器,每个服务器上都有庞大的资料库,并给予用户链接以查看,所以我们今天看到的互联网是丰富多彩的。


顺便讲一个拓扑结构,研究路线等一些有趣的问题,比如哥尼斯堡七桥问题,可以让人不重复走一条路;也有美学定律如欧拉定理,确定多边形的个数;也有国界如四色猜想,用来标记国界区别领土;还有莫比乌丝带,可以让摩托车选手无限在的运行在曲面上(大学没学到这个,如果学到一定会爱上)。局域网通常使用总线拓扑的方式进行连接,每个主机都边到总线进行消息传递;而广域网即Internet,则通过网络拓扑来进行连接,让每个主机都成为一个总线,通过算法和流量控制,能达到信息流通的最高效率。


HTTP请求消息

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

GET /somedir/page.html HTTP/1.1 :请求行。

注释:3个字段:方法字段、URL字段、HTTP版本字段。

方法字段主要有三个值可供选择,包括GETPOSTHEAD

URL字段:浏览器在请求对象

HTTP版本字段:就是HTTP协议的版本

Host:www.yesky.com请求对象所在的主机

Connection:close :短连接 keep-alive:长连接

注:短连接,连接一次就断开;长连接,B/S通信一直存在

User-agent:Mozilla/4.0 :浏览器的类型 
Accept-language:zh-cn :请求中文,否则默认

GET方法:提交的数据会跟在URL后面,理论最多提交1024bytes

POST方法:提交的数据存在HTTP包中,理论不要求提交数据大小,由服务器处理能力决定,适用于需由用户填写表单的场合,如登录,HEAD方法:基本与GET方法相同,区别只是服务器在处理响应消息时,去掉了所请求的对象。通常用于HTTP服务器软件开发人员进行调试。


HTTP响应消息

下面是一个典型的HTTP响应消息:
  HTTP/1.1 200 0K 
  Connectlon:close 
  Date: Thu, 13 Oct 2005 03:17:33 GMT 
  Server: Apache/ (Unix) 
  Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT 
  Content—Length: 
  Content—Type:text/html

1个状态行,6个头部行、1个包含所请求对象本身的附属体。

状态行:协议版本字段、状态码字段、原因短语字段。

Connectlon:close:告知用户自己将在发送完本消息后关闭TCP连接。

(TCP是底层通讯协议,定义的是数据传输和连接方式的规范

HTTP是应用层协议,定义的是传输数据的内容的规范
HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP

Date:服务器创建并发送本响应消息的时间。

Server:本消息由Apache服务器产生,与HTTP请求消息中的User-agent类似。

Last—Nodified:对象本身最后修改时间。

Content—Length:发送对象的字节数。

Content—Type:附属体中的对象类型,不由件扩展名正式指定。


根据HTTP通信协议的规定,每个“HTTP回应必须包含下列信息:

HTTP版本

HTTP状态代码(Status Code

HTTP状态代码所对应的摘要文字(Reason-Phrase

标头信息(Response Header

状态码

  200 :请求成功,所请求信息在响应消息中返回。

  301 Moved Permanently:所请求的对象己永久性迁移;新的URL会在响应消息的Location:头部指出,会自动请求新URL

  400 Bad Request:表示服务器无法理解相应请求的普通错误的状态码

  404 Not Found:服务器上不存在所请求的文档。

    HTTP Version Not Support:服务器不支持所请求的HTTP协议版本

附Http请求常用的七种方式:

向服务端发送请求,

Get:获得多媒体信息,请求的用户信息会显示在地址栏中,信息长度有限制(不超过255),请求高效!

Head:判断资源是否存在!

Post: 提交数据,不显示资源具体地址;请求信息放在消息体中,请求安全但慢!

Put:提交数据,显示资源具体地址,博客常用!

Delete:删除资源!

Options:获得URL所支持的请求方式,Post或Get!

Trace:用于诊断发送的请求和到达服务端的请求,这中间Http请求报文是否发生改变。

其他:

Lock:允许“锁定”资源,如编辑时

Mkcol:允许用户创建资源

Copy:允许用户在服务器上复制资源

Move:允许用户在服务品上移动资源

上述请求,可以与数据库CRUD联系

Create:Put、Mkcol

Read:Get、 Head、Options、Trace

Update:Post、Lock、Copy、Move

Delete:Delete


连接:两个程序间建立的虚拟电路

消息:http通信的基本单元,8bit的字符组成

请求和响应如上

资源:网络数据对象或服务

实体:请求或响应信息的承载

客户端:发起请求者

服务器:返回客户端的响应信息

代理:代表客户端发送请求给服务端

网关:代表服务器跟客户端提供服务

隧道:两端都关闭则不存在

缓存:本地存储,包括消息头和响应信息,双方都可能存储



网络通信分这么几步,网络请求-代理-隧道-网关-服务器


DNS:http://www.ruanyifeng.com/blog/2016/06/dns.html

原创粉丝点击