HTTP协议简介
超文本传输协议,是一种用于分布式\协作式和超媒体信息系统的应用层协议.是万维网的数据通信的基础.
HTTP协议是客户端和服务端 请求和应答的标准,是基于TCP/ip协议之上的应用层协议.
一。HTTP协议特点
1.基于请求-响应的模式
2.无状态保存
不对请求和响应之间的通信状态进行保存,不做持久化处理.
3.无连接
限制每次连接只能处理一个请求。处理完请求之后,并接受到客户应答后,即断开连接。
该方式可以节省时间,提高并发性能。
无连接的两种方式:
早期:一个请求一个相应之后即断开连接。
现在:一个请求一个相应之后不会立即断开,等几秒,再无请求则断开连接
二。HTTP请求方法
八种:
1.get
向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中。
例如:如果存在登陆页面,输入账号密码然后提交,内容会被窥视
2.post
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
3.head
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数 据)。
4.put
向指定资源位置上传其最新内容。
5.delete
请求服务器删除Request_URI所标识的资源。
6.trace
回显服务器收到的请求,主要用于测试或诊断。
7.options
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。
8.connect
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
请求方式: get与post请求
① GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求体中.
get:
post:
![]()
② GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
注意事项:
1.方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码 501(Not Implemented)。
2.HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述 的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。
三。HTTP状态码
状态代码的第一个数字代表当前响应的类型:
。1xx消息——请求已被服务器接收,继续处理
。2xx成功——请求已成功被服务器接收、理解、并接受
。3xx重定向——需要后续操作才能完成这一请求
。4xx请求错误——请求含有词法错误或者无法被执行
。5xx服务器错误——服务器在处理某个正确请求时发生错误
四。HTTP请求/响应的步骤:
1.客户端连接到web服务器
2.发送HTTP请求
1)通过TCP套接字(socket),客户端向Web服务器发送一个文本的请求报文.
2)请求报文:请求行--请求头部--空行--请求数据四部分组成
请求格式:
请求方法 空白 URL 空格 协议版本 回车符 换行符 ------》请求行
头部字段名:值 回车符 换行符 ---
。。。 ---》 请求头部
头部字段名:值 回车符 换行符 ---
回车符 换行符 ---》空行
最后一行 ----》 请求数据
例如:get / HTTP/1.1 \r\n\r\n
3.服务器接受请求并返回HTTP响应
1)web服务器解析请求,定位请求资源,将资源复本写到TCP套接字,由客户端读取.
2)响应:状态行--响应头部--空行--响应数据四部分组成
响应格式:
协议版本 空格 状态码 空格 状态码描述 回车符 换行符 ---》状态行
头部字段名:值 回车符 换行符 --->
。。。 -->响应头部
头部字段名:值 回车符 换行符 -->
回车符 换行符 ---》空行
最后一行 ----》 响应正文
例如:HTTP/1.1 200 ok \r\n\r\n
4.释放连接TCP连接
connection模式为colse,服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接
为keepalive,则连接会保持一段时间,在此期间可以继续接受请求
(用浏览器打开一个网址,服务器不会马上断开与客户端的连接,保持几秒,如果用客户端没有别的请求,
服务端就会断开连接)
5.客户端浏览器解析HTML内容并呈现



浙公网安备 33010602011771号