HTTP协议及其相关
Posted cuiyuanzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP协议及其相关相关的知识,希望对你有一定的参考价值。
URI、URL、URN
- URL,统一资源定位符,用来标识某一处资源的地址,必须包含协议和域名,协议指的是HTTP、FTP、WS、file等协议,域名就是常说的网址,比如www.baidu.com ,其它还有端口,参数,虚拟目录等,对于端口来说网页常见的是80端口,下面上图。
- URN,统一资源名称。相比较于URL来说,URN注重的是资源的名称,并不会指出资源地址,如:mailto:[email protected]。
- URI,统一资源标识符。URL和URI可以看成URI的子集或者一种扩展,URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。不过,也可能是一个邮件地址、新闻消息、图书、人名、Internet主机或者任何其它内容。
如果说URI代表的是一个人,那么URL代表的就是它的住址,URN指出了他的名字。
HTTP协议
HTTP(超文本传输协议)是一种通信协议,位于tcp协议之上,现在通常都是还有一层tls或ssl层,也就是常见的https,它能够将html(超文本标记语言)文档从web服务器传送到浏览器上面,基于请求响应,在客户端没有发起请求时,服务器不会发送数据信息给客户端。
无状态
HTTP是无状态的,同一个客户端的这次请求和上次请求没有任何对应关系,它并不会知道两次请求来自同一个客户端,如果后续请求不需要第一次请求的环境,那么无状态的优势就会体现出来,但是如果两次请求有对应关系存在,就会使得后续请求发送的数据量增大,也正为了解决这个问题,web程序引入了cookie机制来维护状态,储存在浏览器中,与其相对,服务器也有储存状态信息的session机制。
无连接
无连接的含义就是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,立即断开连接,其目的是节省传输时间。请求时建立连接,请求后断开连接,避免一些通道不处理请求保持连接占用用资源,但是随着网页的发展,其内可能包含了很多静态资源,如果每传输一次资源就断开连接,效率极低,十分影响用户体验。
短连接
http 1.0 默认使用短连接,如果不想 使用短连接,就设置connection为keep-alive,客户端和服务端每进行一次http操作,就建立一次连接,任务结束就中断连接。如果请求的html中有网络js和图片,则需要新建连接去取。
tcp协议的time_wait和time_close
tcp协议释放连接时需要四次挥手,服务器和客户端会进入time_wait和close_wait状态,time_wait状态会保持端口占用1分钟到4分钟,避免对方还有一些tcp片段传输,保证新建立的链接不会受到影响,close_wait状态会等待未传输完成的数据继续传输完毕。
大量time_wait存在时的解决办法
linux服务器默认的端口范围是 322768-61000,不到3万,如果存在大量的短连接被建立后释放,就会存在大量的timew_wait状态,那么就无法建立新连接了。
1,使用长连接 2,修改ipv4.ip_local_port_range,增大可用端口范围 3,客户端程序中设置socket的SO_LONGER选项。
长连接
http1.0版本默认长连接,如果想使用短连接,就设置connection为close,它使客户端和服务器的连接持久有效(在不超过Keep-ALive规定的时间的情况下),数据库使用的就是长连接。
请求报文
请求由客户端发起,其规范格式为:请求首行、请求头、空行、请求主体。
请求首行,通常由请求方式、url、http协议版本号组成。
请求方式有GET, POST, PUT, DELETE,HEAD,OPTIONS等,前四个比较常用。请求头,post请求时会设置contenttype。
- 请求体,请求头后必须加空行,请求体就是请求的数据,get请求通常没有请求体 。
响应报文
响应由服务器发起,其规范格式为:响应首行(状态行)、响应头、响应主体。
响应首行,响应通常由协议版本号和状态码组成。
状态码:100-199 代表成功接收请求,要求客户端继续提交下一次请求完成整个处理过程。
200-299 代表成功接收请求并已经完成整个过程。
300-399 为完成请求,客户需要进一步细化请求。
400-499 客户端的请求有错误。
500-599 服务端出现错误响应头。
响应主体,服务器端返回给客户端的内容。
http协议和tcp/ip 协议的关系
- http是应用层协议,tcp协议是传输层协议,ip协议是网络协议。
- IP协议主要解决网络路由和寻址。
- tcp协议主要解决在IP层协议之上如何传输数据。
- http协议建立在tcp之上,是一种超文本传输协议。
以上是关于HTTP协议及其相关的主要内容,如果未能解决你的问题,请参考以下文章