软件通信之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版本字段。
方法字段主要有三个值可供选择,包括GET、POST和HEAD。
URL字段:浏览器在请求对象
HTTP版本字段:就是HTTP协议的版本
Host:www.yesky.com请求对象所在的主机
Connection:close :短连接 keep-alive:长连接
注:短连接,连接一次就断开;长连接,B/S通信一直存在
GET方法:提交的数据会跟在URL后面,理论最多提交1024bytes
POST方法:提交的数据存在HTTP包中,理论不要求提交数据大小,由服务器处理能力决定,适用于需由用户填写表单的场合,如登录,HEAD方法:基本与GET方法相同,区别只是服务器在处理响应消息时,去掉了所请求的对象。通常用于HTTP服务器软件开发人员进行调试。
HTTP响应消息
1个状态行,6个头部行、1个包含所请求对象本身的附属体。
状态行:协议版本字段、状态码字段、原因短语字段。
Connectlon:close:告知用户自己将在发送完本消息后关闭TCP连接。
(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
- 软件通信之HTTP通信协议
- 通信协议之:Http,Socket,UDP
- 【Cocos2dx-3.x】通信协议之HTTP通信协议篇
- 通信协议之Http、TCP、UDP详解
- HTTP通信协议
- http 通信协议
- 通信规程与通信协议
- 串口通信--通信协议
- 网络通信之HTTP
- Android:Http通信协议
- 通信协议HTTP、TCP、UDP
- 通信协议-HTTP/TCP/UDP
- 通信协议:HTTP、TCP、UDP
- 通信协议:HTTP、TCP、UDP
- 通信协议:HTTP、TCP、UDP
- 通信协议:HTTP、TCP、UDP
- 通信协议:HTTP、TCP、UDP
- 通信协议:HTTP、TCP、UDP
- 修改数据库表中的数据mysql
- 黑马程序员_java基础
- [Object-C]OC实例变量初始化方法
- BOOST--学了很久的C++
- 专注
- 软件通信之HTTP通信协议
- The Ruby_Newbie Guide to Symbols
- 2013-05-19
- wine相关
- 获取年月日
- 黑马程序员 面向对象的分析与设计
- 【OC】OC description方法
- spring学习笔记(二)
- 浅谈开发模式(一)--工厂模式