前端网络基础知识——分层模型、URL、应用协议

146 阅读5分钟

用形象的比喻网络,分层模型是一栋大楼,URL 是门牌号,而应用协议则是你行进中的各种规则。

客户端、服务器都是应用程序

发出消息的一方称之为客户端 Client,发出消息的过程称之为请求 Request。

回复消息的一方称之为服务器 Server,回复消息的过程称之为响应 Response。

一次完整的交互,总是从请求开始,响应结束。

客户端和服务器的这种交互模式称之为经典C/S结构,若客户端是浏览器,则称之为B/S结构

分层模型

网络通信是一个复杂问题,可利用分层的思想简单化。

例如网购的流程,从商家包装发货、卡车运输、快递站分拣、快递员配送、到顾客签收。商品层层传递,每层相对独立只解决自己的问题,仅需把自己的结果交给下层即可。

分层模型有四层、五层、七层不同模型,这里我们只讨论五层网络模型,且前端主要学习的是应用层

image.png

而一次完整的网络通信,其数据基本上是经过:

  • 服务器封装:应用层->传输层->网络层->数据链路层->物理层->>
  • 客户端解封装:->>物理层->数据链路层->网络层->传输层->应用层

URL

URL(uniform resource locator,统一资源定位符)用于定位互联网中某个资源的位置。

例如网购时顾客填写的自家门牌号地址。

URL 是一个格式固定的字符串,不能出现非 ASCII 字符(允许英文、数字、基本的标点符号)。

image.png

它简要表达了:通过 https 的通信协议,在网络中从 juejin 主机中的 443 端口对应的程序中寻找 news 相关服务,并注明了服务的具体细节 id 参数。最后规定浏览器用哈希值 main 作为锚点定位页面显示内容。

应用协议

这是网络应用层的一种协议规范,而浏览器就是个网络应用。

一、http 协议
  • http 是基于请求-响应完成通信的,相互独立,这种模式称之为无状态协议
  • http 协议默认端口是 80,支持 ip 地址。
  • https 协议默认端口是 443,不支持 ip 地址。增加了安全性。
  • 每次请求-响应传递的都是字符串,而且文本格式必须按照 http 协议规定的格式书写,即报文格式。
二、报文格式 - 请求

报文格式中由客户端向服务器发送数据的格式,叫请求消息格式,有以下三部分组成:

  • 请求行:高度概括了客户端想要干什么
  • 请求头:描述了请求的额外信息
  • 请求体:给服务器发送的正文数据,可省略

image.png

请求行

请求行是整个 http 报文的第一行字符串,它包含了【请求方法 路径+参数+hash 协议/版本】。

在 http 协议中,并没有规定只能用什么请求方法做什么事,但实际应用中约定俗成,而浏览器也遵循了此规范:

  • 请求方法:GET(获取资源)、POST(提交消息)、PUT(修改数据)、DELETE(删除数据)。
  • 其中 GET 和 DELETE 不能有请求体,传递的数据只能放到 URL 的参数中。

事实上,浏览器自动发出的请求基本都是 GET 请求,比如在地址栏输入地址并按下回车获取页面、点击了某个 a 元素、获取图片音视频、获取 css/js/字体等文件。
而 POST 请求需要开发者手动处理。
详见用户代理《浏览器组成部分、用户代理、AJAX》

请求头

请求头是一系列键值对,大多是和具体业务无关的信息。且浏览器会自动附带某些服务器不需要的请求头。

重点关注:

  • Host:URL 中的主机。
  • User-Agent:客户端的信息描述。
  • Content-Type:请求体的消息格式,若无请求体则此字段无意义。

消息格式 Content-Type 常用值:(即 MIME 类型

类型浏览器行为
文本类型text/plain普通纯文本,将响应体原封不动显示到页面上
文本类型text/htmlhtml 文档,将响应体作为页面进行渲染
文本类型text/csscss 代码,将其视为样式
应用类型application/javascriptjs 代码,使用 JS 引擎解析执行
应用类型application/jsonjson 数据
应用类型multipart/form-data附件,通常触发下载功能
图片类型image/pngpng 图像,将其视为图片
视频类型video/mp4mp4 文件,将其视为视频
音频类型audio/mpegmp3 文件,将其视为音频
其他类型application/font-woffwoff 文件,将其视为字体
更多请参考《IANA 官方 MIME 类型列表》
请求体

请求体是包含具体业务数据的字符串。理论上可以是任意格式的字符串,但约定俗成,传递的是指定消息格式 Content-Type。

三、报文格式 - 响应

报文格式中由服务器接收到请求后,向客户端发送数据的格式,叫响应消息格式,也有以下三部分组成:

  • 响应行:高度概括了服务器想要干什么
  • 响应头:描述了响应的额外信息
  • 响应体:向客户端发送的正文数据

image.png

响应行

响应行是整个响应的第一行字符串,它包含了【协议/版本 状态码 状态消息】。

通常状态码和状态消息是一一对应的,如 200 对应的就是 OK,具体由后端程序决定,共分为5类:

image.png

响应头

和请求头一样,响应头也是由很多个键值对组成的,具体有哪些键值对,完全取决于服务器程序。

重点关注 Content-Type,表示响应体的数据类型。

在 B/S 模式中,浏览器会自动根据响应头中Content-Type的取值,决定如何处理响应体,所以用户在浏览器视口内看到的内容被渲染成什么数据类型的样子,都是由此值决定的。

响应体

向客户端发送的正文数据,即响应的主体内容。