HTTP协议

本文深入解析了HTTP协议的工作原理,包括其请求与响应机制、状态码含义及响应模型。阐述了HTTP在客户端与服务器间的通信流程,从TCP连接的建立到HTTP报文的构造,以及网站访问量的统计方式。

HTTP:Hyper Text Transfer Protocol 超文本传输协议

协议:
指计算机之间通信网络中两台计算机之间进行通信所必须共同遵守的规定或者规则,超文本传输协议是一种通信协议,它允许将超文本标记语言(HTML)文档从WEB服务器传送到客户端。

建立在TCP上的无状态连接,当客户端发送HTTP请求(基于浏览器,常见的浏览器有chrome,火狐,Sofia等等)到web服务器,服务器接收到请求,开始处理请求,根据请求做出相应的动作在服务器中访问资源,最后通过HTTP响应把结果返回给客户端,浏览器通过解析HTML资源,在页面呈现数据。从一个HTTP请求的开始到HTTP响应结束为一个事务,当事务结束之后在服务器端添加一条日志目录。

HTTP的位置

HTTP处于网络模型中的最上层-应用层,在不同计算机之间,要想实现通信,需要遵守协议和规则,那么这个协议和规则就是HTTP

在浏览器和服务器之间进行通信之间,需先建立连接,就是我们常说的TCP三次握手,以及断开连接的TCP四次挥手
TCP三次握手和四次挥手

HTTP请求 Request

http请求是客户端给服务端发送请求动作,告诉服务器自己的要求

HTTP的组成:
状态行
请求头
请求正文

状态行:包括请求方式Method、资源路径URL、协议版本Version;

请求头:包括一些访问的域名、用户代理、Cookie等信息;

请求正文:就是HTTP请求的数据。

请求方式Method一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。
在这里插入图片描述

响应 Response

服务器收到客户端发来的HTTP请求后,服务器根据客户端发送的HTTP请求动作做出相应的动作,
将结果返回给客户端,这一过程叫做HTTP响应。

HTTP响应组成:
状态行
响应头
响应正文

状态行:包括协议版本Version、状态码Status Code、回应短语;

响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据。
在这里插入图片描述

在客户端中能看到三位数的状态码,不同的状态码代表不同的含义
在这里插入图片描述
常见状态码的含义:

	200---OK/请求已经正常处理完毕

    301---/请求永久重定向

    302---/请求临时重定向

    304---/请求被重定向到客户端本地缓存

    400---/客户端请求存在语法错误

    401---/客户端请求没有经过授权

    403---/客户端的请求被服务器拒绝,一般为客户端没有访问权限

    404---/客户端请求的URL在服务端不存在

    500---/服务端永久错误

    503---/服务端发生临时错误

HTTP响应模型

服务器收到HTTP请求之后,会有多种方法响应这个请求,下面是HTTP响应的四种模型:

    单进程I/O模型

服务端开启一个进程,一个进程仅能处理一个请求,并且对请求顺序处理;

    多进程I/O模型

服务端并行开启多个进程,同样的一个进程只能处理一个请求,这样服务端就可以同时处理多个请求;

    复用I/O模型

服务端开启一个进程,但是呢,同时开启多个线程,一个线程响应一个请求,同样可以达到同时处理多个请求,线程间并发执行;

    复用多线程I/O模型

服务端并行开启多个进程,同时每个进程开启多个线程,这样服务端可以同时处理进程数M*每个进程的线程数N个请求。

HTTP报文

HTTP报文是HTTP应用程序之间传输的数据块,HTTP报文分为HTTP请求报文HTTP响应报文,但是无论哪种报文,它的整体格式是类似的,大致都是由起始首部主体三部分组成
起始:报文的动作
首部:报文的属性
主体:报文的数据

请求报文
在这里插入图片描述
请求报文的起始由请求行构成(有些资料称为状态行,名字不一样而已,都是指的一个东西),用来说明该请求想要做什么,由、、 三个字段组成,注意每个字段之间都有一个空格。

    其中<Method>字段有不同的值:

            GET   --- 访问服务器的资源

            POST  --- 向服务器发送要修改的数据

            HEAD  --- 获取服务器文档的首部

            PUT   --- 向服务器上传资源

            DELETE--- 删除服务器的资源

    <URL>字段表示服务器的资源目录定位

    <Version>字段表示使用的http协议版本

    首部部分由多个请求头(也叫首部行)构成,那些首部字段名有如下,不全:

            Accept     指定客户端能够接收的内容格式类型

            Accept-Language 指定客户端能够接受的语言类型

            Accept-Ecoding  指定客户端能够接受的编码类型

            User-Agent      用户代理,向服务器说明自己的操作系统、浏览器等信息

            Connection      是否开启持久连接(keepalive)

            Host            服务器域名

            ...

    主体部分就是报文的具体数据。          

HTTP响应报文

在这里插入图片描述

响应报文的起始由状态行构成,用来说明服务器做了什么,由、、三个字段组成,同样的每个字段之间留有空格;

    首部由多个响应头(也叫首部行)组成, 首部字段名如下,不全:

            Server    服务器软件名,Apache/Nginx

            Date      服务器发出响应报文的时间

            Last-Modified   请求资源的最后的修改时间

            ...

    主体部分是响应报文的具体数据。

网站访问量

 IP IP访问量

相同的公网IP计算一次,就是同一个局域网内的所有用户访问一个网站,但是他们都是借助一个公网IP去访问那个网站的(NAT),因此这也只能算作一个IP访问量。换一次公网IP则会加1。

    PV 网页访问量

用户访问的页面数就是PV访问量,同一个局域网的不同用户,而且就算是同一个用户,只要刷新一次网站页面,PV访问量就加1,三个访问量的值往往数PV的值最大。

    UV 访客访问量

这里的访客不是用户,而是电脑,一台电脑算一个访客,即使是同一台电脑的不同用户,访问同一个网站UV也只能加1,只有更换电脑才会使UV加1,因为服务端会记录客户端电脑的信息。

总结:
一、HTTP(Hyper Text Transfer Protocol)超文本传输协议,服务器和客户端传输数据的工具

二、Http中分为请求消息(HttpServletRequest)、响应消息(HttpServletResponse)
Http请求消息分为三部分:
1.请求行
a)请求方式 、请求的资源路径 、 协议版本
2.请求头
a)由若干key:value组成的信息,浏览器请求服务器的一些参数
3.请求实体
a)POST方式提交的用户的额外的数据
Http响应消息分为三部分:
1.状态行
a)协议版本 、 http状态码 、http状态描述
2.应答头
a)由若干key:value组成的信息,服务器响应浏览器的一些参数
3.响应实体
a)服务返回给浏览器的显示数据

三、Http协议的特点:
1.无状态
2.http1.1之后才支持连续连接,一次连接可以发送多次请求

四、Http如何传输数据
1.建立连接
2.客户端发起请求消息
3.服务器给客户端响应消息
4.断开连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值