- 底层知识永不过时!冲!
- 理解Http协议,动手试,
- PHP+socket发http协议
- PHP批量发帖,防盗链;
HTTP协议概念和工作流程
计算机中的协议就像生活中的协议一样,一式双份,双方都遵循这个规范!计算机能全世界互通计算机协议功不可没。类似的还有ftp、http、stmp、pop、tcp/ip等协议。
当你打开一个页面时,客户端就发送请求和服务器建立连接;
服务器就沿着连接,返回响应信息;
客户端收到响应的html代码解析出图片和文字组成页面呈现出来
http协议请求方法
1 | GET | 请求指定的页面信息,并返回实体主体。 |
---|---|---|
2 | HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
4 | PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | DELETE | 请求服务器删除指定的页面。 |
6 | CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | OPTIONS | 允许客户端查看服务器的性能。 |
8 | TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
9 | PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
cmd发起请求:
- ipconfig查看ip
- telnet localhost 80 //连接本地端口
- ctrl+】打开回显
- 输入客户端请求消息
- 得到服务器响应消息
请求消息:
请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
请求行=请求方法+请求路径+协议版本
请求头=key+value
空行 //这个千万不能省略,这是用来区分请求消息和请求数据的,没有请求数据时可以为空
请求数据 //也可以为空
例子如下:
GET /hello.txt HTTP/1.1 User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3 Host: www.example.com Accept-Language: en, mi
响应消息:
状态行、消息报头、空行和响应正文
状态行 = 协议版本+状态码+状态
消息报头=key+value
空行
响应正文
例子如下:
HTTP/1.1 200 OK Date: Mon, 27 Jul 2009 12:28:53 GMT Server: Apache Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT ETag: "34aa387-d-1568eb00" Accept-Ranges: bytes Content-Length: 51 Vary: Accept-Encoding Content-Type: text/plain
状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
HTTP 状态码的英文为 HTTP Status Code。。
下面是常见的 HTTP 状态码:
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
程序员最想看到的:200-OK。
程序员不想看到的:500-Internal-Server-Error
本文学习引用自: