您的位置:首页 > 理论基础 > 计算机网络

HTTP协议简介

2016-08-21 11:02 330 查看

HTTP请求响应的过程

1.客户端执行请求,从url中解析主机名,有主机名解析IP,解析端口号(默认8080)。

2.客户端与服务器建立TCP连接

3.客户端通过Socket输出流发送Http请求

3.服务器向客户端返回http响应报文,客户端通过输入流解析获得报文内容。

4.关闭TCP连接,更新ui或数据

HTTP的请求方式

7中请求方式:GET,POST,DELETE,PUT,HEAD,TRACE,OPTIONS

1.GET请求

GET请求用于获取服务器中的某个资源,url 一般格式:如 http://my.csdn.net/?ref=toolbar,?后面接参数多个参数使用 & 分割

2.POST请求

post请求向服务器传递数据,通常用来提交html表单,服务器会对其进行处理。

请求参数放在的实体部分

3.PUT 请求

与GET相反,PUT向服务器写入资源,请求参数通常是url,请求服务器创建一个指定的url新的文档,如果url已经存在则替换。参数存放在实体部分。

4.Delete 请求

请求服务器删除指定url的资源,但服务器不一定会执行删除操作。参数放在URL中。

5.HEAD 请求

HEAD 请求与GET类似,但是只返回报文的首部,而不返回实体的主体部分。所以允许客户端在不获取资源情况下,获得资源的信息。HEAD的返回必须要和GET返回的头部内容一致。

6.TRACE 请求

客户端发送请求需要穿过防火墙和代理网关等,trace请求可以最终的目的服务器返回trace响应,客户端可以通过响应报文查看所有中间HTTP请求响应链上,原始报文是否被修改。

该方式主要用于诊断,查看代理和应用程序对请求产生的影响。

7.OPTIONS

OPTIONS请求用于向客户端返回服务器支持的各种功能,比如支持的请求方式等。

HTTP 报文格式

请求报文格式

不同请求方式的请求报文内容有所差别,但是都包含四部分:请求行,请求头,空行,请求数据



1.请求行:说明了请求方法,url,和协议版本

2.请求头:请求行后面是请求头,请求头包含多个字段和值,用冒号分割。添加一个头部字段就添加一行。头部以空行结束。

3.请求主体(请求数据):空行之后是主体部分。包含了请求的数据,请求行和头部都是结构化文本,主体可以使二进制数据。

GET和DELETE

这两请求参数是在请求行的url中指定,比较简单

POST和PUT

这两请求的参数在报文主体,所以包含,请求行,请求头,和主体部分。

请求头中指定本次请求的属性如请求使用的编码方式,主机等等,boundary值改值是主体部分数据的分隔符。

请求主体,boundary开始(换行),参数的属性(格式,参数名等),空行,参数的值

参数间使用boundary分隔,最后使用boundary结束。

手动构建post报文时,格式很重要否则不能被服务端识别。

响应报文格式

与请求报文类似,包括:状态行,消息报头,空行,响应正文



响应报文和请求报文只是首行有差别。

响应返回的状态码,含义

100-199 请求已接受

200 -299成功

300-399 重定向

400-499 客户端错误

500-599 服务端错误

常见的头部字段

http规定了几种头部字段,应用程序也可以自定义字段

通用首部:可以在请求也可以在响应中使用。

请求首部:描述请求的信息

响应头部:描述响应的信息

实体首部:描述主体的信息

扩展首部:http中没有规范的首部

典型的请求首部字段:

Content-type:请求数据格式

Content-Length:消息长度

User-agent:客户端浏览器类型,可以自行设置

Accept:客户端识别的内容类型类表

Accept-Encoding:客户端识别的编码

Connection:连接有关的选项,如keep-alive

Transfer-coding:接收端采用了什么编码格式

实现简单的HTTP服务器

HTTP协议就是在TCP之上的应用层协议,HTTP封装了TCP的使用细节,TCP为其提供了可靠的数据传输服务。数据都是通过TCP及TCP底下的协议进行传输,只是发送和接受的数据,是按http协议规定的格式。

实现一个简单的web服务器,就跟使用tcp实现简单的聊天室一个原理。

服务端绑定端口套接字,创建子线程监听客户端连接,创建线程处理客户端的请求并向客户端发送响应报文,最后关闭套接字,关闭流连接。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息