计算机网络:应用层(二) Web与http协议

计算机网络:应用层(二) web与http协议

什么是Web

Web是一些对象的集合,我们所看到的网页就是一个Web,这个网页中除了有网页自身这个HTML对象外,很可能还有其他对象的引用(URL链接)。

所谓URL链接其实就是我们所在网页的顶部看到的链接,它有着一些基本的格式。

Web页的协议就是http/https协议,下面会介绍该协议。

Web缓存

如果我要访问某一个网址,但是该网址离我所在的物理距离很远,那么我访问到该网址的速度就会很慢,为了解决这个问题,我们可以在其中设置一个中间服务器,其中存储了我想要的内容,那么以后访问的时候我就可以访问中间服务器,这样大大减小了时间的浪费。

http是什么

http (超文本传输协议),它是一个只能运行在TCP协议上的能够让2个互联网主机之间传输视频,图片,文字等超文本的一个约定和规范。

http报文结构和内容

http报文是ASCII可读的及每段二进制数都可以翻译为ASCII

http请求报文的内容如下图。

请求行主要包含了怎样请求,请求的链接,以及协议的版本,协议版本不同会有所差异。

请求头部,主要是一些重要的属性,头部字段名称:比如Host后根请求主机的域名是什么,Connection字段是请求的链接是持续性的还是非持续性的等等。

http响应报文的内容如下图。

其中最重要的就是状态码了,状态码有以下分类。

1xx:实际中用的很少不讨论。
2xx:代表服务器成功处理了请求 ,如200代表OK,204代表基本OK,但是没有body数据...
3xx:代表请求的资源的位置发生了变动,需要对URL重定向 ,如301代表该资源永久不存在与该URL,需要修改新的URL值去访问,302代表临时重定向,只不过当前无法通过该URL访问...
4xx:代表客户端有问题,如报文错误,服务器无法处理等 ,如404代表资源在服务器上未找到/不存在,403代表服务器禁止访问该资源...
5xx:代表服务器内部处理有问题,如501表示客户端请求目前不支持,502代表服务器作为网关/代理时,自己工作正常,但是访问的服务器发生错误...

其次http协议是基于TCP的协议,TCP协议传输过程中会出现粘包问题,对于http报文来说,通过回车和换行解决报文粘包问题,对于http报文的实体来说,可以通过Content-Length字段记录http报文实体的边界,从而解决粘包问题。

传输过程解析

在传输过程中,首先应用层要使用下层及运输层为其提供的服务,http基于TCP协议运输的,所以首先要进行TCP的三次握手,在成功建立了通讯信道后,数据在此信道上进行传输,忽略TCP三次握手的时间,一次传输需要消耗的时间是1个RTT如图。

在http1.0版本中,默认在传输一次过后就关闭这个传输信道,而在http1.1版本中,默认为只要有一方没有发送中断链接报文,则就不中断链接。

同时我们也可以在http请求报文中使用Connection字段来设置传输的方法。

http不仅支持上述传输,还支持流水线传输,及上一个报文刚发出去,下一个报文就已经准备发出了,这样大大提高了http报文传输的效率。

Cookie解析

http是无状态性的,每次访问服务器,服务器不会记录访问的状态,为了解决这个问题,可以使用Cookie技术。

Cookie技术就时将用户信息写入Cookie中进行维护。

当一个用户第一次访问该服务器时,服务器会将Cookie和响应报文一起发回去,当该用户第二次访问该服务器时,其请求报文会将上次返回的Cookie也一并发送,这样服务器就可以读取Cookie值,就能进行状态的记忆了。

相关推荐
To_OC4 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic4 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy4 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志5 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble6 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯7 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
名字还没想好☜7 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司7 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
kaiking_g8 小时前
vue项目中,静态导入 vs 动态导入 详解
前端·javascript·vue.js
江华森8 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http