网络通信过程

HTTP协议规定:一个完整的由客户端发给服务器的HTTP 请求需要包含以下内容

请求行

请求头

请求体(可选)


请求行

请求行:指定请求方法、请求资源路径以及HTTP协议版本.

GET / HTTP/1.1

GET /后面的/表示访问根目录

请求头

请求头:对客户端的环境描述、客户端请求的主机地址等信息.至少包含以下信息

# 客户端要访问的服务器主机地址Host: www.baidu.com

请求头中还可以包含以下信息,告诉服务器一些额外的信息

# 访问结束后,是否断开连接Connection: keep-alive# 是否缓存数据Cache-Control: max-age=0# 客户端所能接收的数据类型Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8# 客户端的类型,客户端的软件环境User-Agent: iPhone AppleWebKit# 客户端支持的数据压缩格式Accept-Encoding: gzip, deflate, sdch# 客户端的语言环境Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

请求体

请求体(可选):客户端发给服务器的具体数据,例如要上传的文件数据

GET请求没有请求体.

POST请求有请求体.告诉服务器一些类似于用户名和密码的信息.比如注册和登陆.

请求格式

每一项请求信息末尾使用\r\n

最后一个请求项末尾使用\r\n\r\n表示请求结束

总结

GET / HTTP/1.1Host: m.baidu.comConnection: keep-aliveCache-Control: max-age=0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8User-Agent: iPhone AppleWebKitAccept-Encoding: gzip, deflate, sdchAccept-Language: zh-CN,zh;q=0.8,en;q=0.6


响应

HTTP协议规定:一个完整的HTTP 响应包含以下内容:

状态行

响应头

响应体

状态行

状态行:包含了HTTP协议版本、状态码、状态英文名称

# 请求成功HTTP/1.1200OK# 内容无变化HTTP/1.1304Not Modified

状态码

1XX消息

2XX 成功

3XX 更多选择

4XX 客户端错误

5XX 服务器错误

响应头

响应头:服务器告诉客户端一些信息.包含了对服务器的描述、对返回数据的描述

# 服务器的类型Server: Apache/2.4.10(Unix) PHP/5.5.20# 返回数据的类型Content-Type: text/html; charset=utf-8# 返回数据的长度Content-Length:660# 响应时间Date: Thu,04Jun201519:31:50GMT# ETag(HASH值,用于检测本地资源和服务器资源是否一致)ETag:"294-4e1862f57e7c0"

注意 :

请求发送的和响应返回的额外信息都是键值对的形式.

text/html : 大文件类型/小文件类型. 比如 : image/png

响应体

响应体:服务器返回给客户端的二进制数据

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容