http
- 是客户端与服务端传输文本的一种协议标准
- http协议是无状态的
- http协议默认端口是80
- hrrps协议(加密传输)端口443
一、请求方法
- get(获取信息页面)
- post(上传,修改,添加,服务端信息)
- put(修改)
- delete(删除)
- head(只返回头信息)
- trace(回显服务器收到的请求,主要用于测试或诊断)
- connect(HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器)
- options(客户端查看服务器性能)
二、请求报文
- 建立TCP连接
在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建
Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,
只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。
- Web浏览器向Web服务器发送请求命令
一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。
- Web浏览器发送请求头信息
浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。
- Web服务器应答
客户机向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。
- Web服务器发送应答头信息
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。
- Web服务器向浏览器发送数据
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
- Web服务器关闭TCP连接
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
三、HTTP响应报文
HTTP响应报文主要由状态行、响应头部、空行以及响应数据组成。
1.状态行
由3部分组成,分别为:协议版本,状态码,状态码描述。
其中协议版本与请求报文一致,状态码描述是对状态码的简单描述,所以这里就只介绍状态码。
状态码
状态代码为3位数字。 1xx:指示信息–表示请求已接收,继续处理。 2xx:成功–表示请求已被成功接收、理解、接受。
3xx:重定向–要完成请求必须进行更进一步的操作。 4xx:客户端错误–请求有语法错误或请求无法实现。
5xx:服务器端错误–服务器未能实现合法的请求。
下面列举几个常见的:
2.响应头部
与请求头部类似,为响应报文添加了一些附加信息
常见响应头部如下:
3.响应数据
用于存放需要返回给客户端的数据信息。
下面是一个响应报文的实例:
HTTP/1.1 200 OK 状态行
Date: Sun, 17 Mar 2013 08:12:54 GMT 响应头部
Server: Apache/2.2.8 (Win32) PHP/5.2.5
X-Powered-By: PHP/5.2.5
Set-Cookie: PHPSESSID=c0huq7pdkmm5gg6osoe3mgjmm3; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 4393
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
空行
<html> 响应数据
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
四、http状态码
1xx:响应
2xx:成功
2XX系列响应代码表明操作成功了。
- 200 get请求成功
- 201修改成功
3xx:重定向
3XX系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。它们通常用于GET请求。他们通常告诉客户端需要向另一个URI发送GET请求,才能得到所需的表示。那个URI就包含在Location响应报头里。
- 302 临时重定向
- 304 未修改
- 307 临时重定向
4xx:客户端的问题
这些响应代码表明客户端出现错误。不是认证信息有问题,就是表示格式或HTTP库本身有问题。客户端需要自行改正。
- 401 未授权
- 403 禁止访问
- 404 找不到
5xx:服务器问题
这些响应代码表明服务器端出现错误。
- 500 服务器内部错误
- 503 服务器找不到
- 504 超时
五、GET和POST请求
- get可以收藏地址,post不能
- get可以缓存,post不能缓存
- get 的内存2048kb,post无限
- get请求在浏览器地址显示,留历史记录,post参数不会在地址显示,不留历史记录
六、http特点
1、无连接:一次处理一个链接,处理完直接关闭
2、无状态:没有历史记录功能,处理完断开,客户端和服务互相不了解
3、简单快捷:get 和post 还有header求情方式
4、灵活:不同content-type返回上传不同数据类型
5、支持BS和CS
七、互联网专业名词
1、B/S架构:Browser/Server,浏览器/服务器模式
2、C/S架构:Client-Server(C/S)结构
3、To B 产品:各种管理系统,技术负责,图表多
4、ToC 产品:客户直接使用的产品/要求好看,任性化
5、B2C :Businiess To Customer 商家对个人 例如: 京东、淘宝
6、B2B :Businiess To Businiess 商家对商家 例如:1688
7、C 2 C:Customer To Customer 个人对个人 例:咸鱼 转转
8、O2O:online To Offline 线上支付 线下 消费 例:美团
9、P2P:个人对个人 例子:理财