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,OPTIONS1.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实现简单的聊天室一个原理。
服务端绑定端口套接字,创建子线程监听客户端连接,创建线程处理客户端的请求并向客户端发送响应报文,最后关闭套接字,关闭流连接。
相关文章推荐
- java-模拟tomcat服务器
- Linux socket 初步
- 小心服务器内存居高不下的元凶--WebAPI服务
- android wifi 无线调试
- 运维入门
- 利用开源软件打造自己的全功能远程工具
- Linux5.9无人值守安装
- 数据中心和云未来的十二大趋势
- 虚拟化基础架构Windows 2008篇之10-使用WDS安装Windows 7
- 虚拟化基础架构Windows 2008篇之11-WSUS服务器的安装与配置
- 用vsftp快速搭建ftp服务器
- Linux快速构建apache web服务器
- 服务器监控策略浅谈
- java socket 注意的地方
- java socket 注意的地方
- 拨号网络的简单知识
- 菜鸟必看网络名词
- 通晓网络测试常用命令