计算机网络:应用层(二) 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值,就能进行状态的记忆了。

相关推荐
JarvanMo几秒前
Flutter 游戏开发:网上都查到了什么?
前端
前端小巷子8 分钟前
Vue 2 组件通信全景指南
前端·javascript·面试
江城开朗的豌豆9 分钟前
Vue的双向绑定已经能精确追踪变化,为什么还要用虚拟DOM?揭秘背后的性能哲学!
前端·javascript·vue.js
闲不住的李先森12 分钟前
使用 Ultracite 告别 ESLint 和 Prettier 的配置地狱
前端·代码规范
全栈技术负责人14 分钟前
前端静态资源优化
前端·性能优化·pdf
掘金安东尼41 分钟前
⏰前端周刊第424期(2025年7月21日–7月27日)
前端·javascript·面试
江城开朗的豌豆1 小时前
Vue和React的数据流之争:双向绑定 vs 单向数据流,谁更适合你?
前端·javascript·vue.js
OpenTiny社区1 小时前
前端可智能识别的搜索组件 SearchBox 使用详解!
前端·vue.js·ui·开源·opentiny
世伟爱吗喽1 小时前
最新面试题总结
前端·javascript·vue.js
江城开朗的豌豆1 小时前
前端权限控制实战:手把手教你玩转角色权限分配
前端·javascript·vue.js