前言:
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
目录
HTTP,超文本传输协议( HyperText Transfer Protocol )。互联网应用最为广泛的一种网络应用层协议。它可以减少网络传输,使浏览器更加高效。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。
请求消息:请求行 请求头 空行 请求体
浏览器—>发给—>服务器。主旨内容包含4部分:
请求行:说明请求类型,要访问的资源,以及使用的http版本
请求头:说明服务器要使用的附加信息,
空行:必须!,即使没有请求数据·
请求数据:也叫主体,可以添加任意的R他数据。
- 1. GET /hello.c Http1.1\r\n
- 2. Host: localhost:2222\r\n
- 3. User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/201001 01 Firefox/24.0\r\n
- 4. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
- 5. Accept-Language: zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3\r\n
- 6. Accept-Encoding: gzip, deflate\r\n
- 7. Connection: keep-alive\r\n
- 8. If-Modified-Since: Fri, 18 Jul 2014 08:36:36 GMT\r\n
- 【空行】\r\n
响应消息:状态行 消息报头 空行 响应正文
服务器—>发给―>浏览器。主旨内容包含4部分:
状态行:包括http协议版本号,状态码,状态信息
消息报头:说明客户端要使用的一些附加信息
空行:必须
响应正文:服务器返回给客户端的文本信息
请求指定的页面信息,并返回实体主体。
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
- 1. Http1.1 200 OK
- 2. Server: xhttpd
- Content-Type:text/plain; charset=iso-8859-1
- 3. Date: Fri, 18 Jul 2014 14:34:26 GMT
- 5. Content-Length: 32 ( 要么不写 或者 传-1, 要写务必精确 ! )
- 6. Content-Language: zh-CN
- 7. Last-Modified: Fri, 18 Jul 2014 08:36:36 GMT
- 8. Connection: close
- \r\n
- [数据起始。。。。。
- 。。。。
- 。。。数据终止]
200:正确返回
401:用户权限不足
404:请求的资源不存在
500:服务端出错
300系列:重定向
在本质上两者都是通过tcp进行通信传输的顶层协议,但是
GET请求参数在请求行中,在url后,POST请求参数在请求体中
GET请求的url长度有限制,POST没有
http默认端口号:80,https默认端口号443,ftp默认端口号21