news 2026/7/27 8:58:04

【计网】网络分层模型和http协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【计网】网络分层模型和http协议

前言

计算机网络是一个复杂的系统,采取分层的结构,可以将复杂系统分解为可管理的模块。每层模块专注解决特定问题,使其各司其职,便于管理维护。

在网络分层模型中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做接口;同一层之间的交互所遵循的约定叫做协议。


一.五层网络模型

网络模型分四层,五层,七层。但我们主要以四层或者五层为主。

五层网络模型如下:

第一层:物理层,将0,1比特流与电压,光等传输方式之间进行互换,实现计算机节点之间比特流的传输。

第二层:数据链路层:负责物理层面上互连的节点之间的通信传输,将01序列划分为有意义的数据

帧发送给对端。

第三层:网络层:将数据传送到目标地址,判断经过哪个路由传送到目标地址。负责寻址和路由选择。

第四层:传输层:管理两个节点之间的数据传送,保证数据传送可靠。

第五层:应用层:为应用程序提供服务并规定应用程序中通信的细节,规定协议。

二.数据的传送

发送方从第五层应用层到第一层物理层从上到下按照顺序传输数据,接收方从一层到五层从下到上传输数据。

每个分层在处理由上一层传过来的数据时附上当前分层的首部信息,一层一层往下传进行封装。然后接收端对收到的数据进行解封装,最终将发送端的数据恢复为原状。

三.应用层协议

1.URL

URL(uniform resource locator,统一资源定位符)用于定位网络服务。

URL是一个固定格式的字符串

它表达了:

从网络中的哪台计算机(domain)中的哪个程序(port)寻找哪个服务(path),并注明了获取服务的具体细节(path),以及要用什么样的协议通信(schema)。

这里面包含了一些细节:

  • 当协议是 http 端口为 80 时,端口可以省略

  • 当协议是 https 端口为 443 时,端口可以省略

  • schema,domain,path 是必填的,其他的根据具体的要求填写


2.HTTP协议

HTTP超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个广泛运用于互联网的应用层协议。

该协议规定了两个方面的内容:

  • 传递消息的模式

  • 传递消息的格式

传递消息的模式:

HTTP使用一种极为简单的消息传递模式,「请求-响应」模式,并且HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。

发起请求的称之为客户端,接收请求并完成响应的称之为服务器

「请求-响应」完成后,一次交互结束。

传递消息的格式:

HTTP的消息格式是一种纯文本的格式,文本分为三个部分:

3.HTTP报文

HTTP报文分为请求报文和响应报文两种类型,每种都有其特定的格式。

3.1请求报文

HTTP请求由请求行,请求头,空行,请求体 构成请求头和请求体之间必须有空行,即使请求没有请求体,也要有空行!)

1.请求行:

请求行包含三要素:请求方法,URL,HTTP版本。

  • 一个请求方法:一个动词(像GET,PUT,POST等),或者一个名词(HEAD或OPTIONS),描述要执行的动作。
  • 请求目标:通常是一个URL,或者是协议,端口和域名的绝对路径
  • HTTP版本:定义了剩余报文的结构,作为对期望的响应版本的指示符。

在HTTP协议中,请求方法仅有语义的区别,只是表达了这次请求的「愿望」。

比如GET表达了客户端想要获取一些东西,POST表达了客户端想要提交一些东西。

常见的请求方法有:

  • GET:获取
  • POST:提交
  • PUT:修改
  • DELETE:删除

2.请求头-host:

请求头由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,如用户代理(User-Agent)、接受的内容类型(Accept)、身份验证凭证(Authorization)等。

常见的请求头如下:

  • User-Agent:标识客户端使用的浏览器和操作系统信息。
  • Accept:指定客户端能够处理的内容类型,即可接受的媒体类型。
  • Content-Type:指定请求体中的数据格式类型。常见的取值有text/htmlapplication/jsonapplication/x-www-form-urlencoded等。
  • Authorization:用于进行身份验证的凭证信息。常见的取值有Bearer Token、Basic Authentication等。
  • Cookie:包含来自客户端的Cookie信息。
  • Referer:指示当前请求是从哪个URL页面发起的。
  • Host:指定服务器的域名或IP地址。
  • X-Requested-With:指示请求是否由Ajax发起的。通常在Ajax请求中会设置该头部字段,取值为"XMLHttpRequest"。
  • Content-Length:指定请求体的长度。
  • Cache-Control:控制缓存行为的指令。用于指定客户端和代理服务器如何缓存响应。

Content-Type标注了附带的请求体是什么格式。

比如,请求体的数据为 loginId:admin,loginPwd:123456 请求体可以用不同的格式发出

Content-Type: application/x-www-form-urlencoded

loginId=admin&loginPwd=123123

Content-Type: application/json

{ "loginId": "admin", "loginPwd": "123123" }

3.请求体-body

请求体只有在发送POST请求时才会有请求体,GET方法没有请求体。

3.2 响应报文

响应报文也由四个部分组成:状态行,响应头,空行,响应体。

1.状态行:

状态行也由三部分组成:包括HTTP版本,状态码,以及对状态码的文本描述。

常见的响应码如下:

常见的状态码有:

  1. 200 OK:一切正常

  2. 301 Moved Permanently资源已被永久重定向。所请求的页面已经转移至新的地址 ,地址放到响应头的Location了。

  3. 302 Found:资源已被临时重定向。所请求的页面已经临时转移至新的 URL 。地址同样放到响应头的Location了。

  4. 304 Not Modified:文档内容未被修改。客户端有缓冲的文档并发出了一个条件性的请求,服务器已收到请求,但由于文档未修改,所以服务器想告诉客户,原来缓冲的文档还可以继续使用。

  5. 400 Bad Request:语义有误,当前请求无法被服务器理解。一般是请求的代码语法写错。

  6. 401 未授权:合法请求,但对被请求页面的访问被禁止。因为被请求的页面需要身份验证,客户端没有提供或者身份验证失败。

  7. 403 Forbidden:服务器拒绝执行。合法请求,但对被请求页面的访问被禁止。

  8. 404 Not Found:资源不存在。服务器无法找到被请求的页面。

  9. 500 Internal Server Error:服务器内部错误。

2.响应头:

响应头由一系列的键值对组成,用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它响应回来的数据。

常见的响应头如下:

  • Accept-Patch:指定服务器所支持的文档补丁格式
  • Accept-Ranges:服务器所支持的内容范围
  • Content-Disposition:对已知MIME类型资源的描述,浏览器可以根据这个响应头决定是对返回资源的动作,如:将其下载或是打开。
  • Content-Encoding:响应资源所使用的编码类型。
  • Content-Language:响应内容所使用的语言
  • Content-Length:响应消息体的长度,用8进制字节表示
  • Content-Type:标注附带的响应体是什么格式
  • Date:此条消息被发送时的日期和时间
  • Expires:指定一个日期/时间,超过该时间则认为此回应已经过期
  • Server:服务器的名称

Content-Type 标注了附带的响应体是什么格式:

常见的值有:

  • text/plain:普通的纯文本
  • text/html:html文档
  • text/javascript 或 application/javascript :js代码
  • text/css:css代码
  • image/jpeg:jpg图片
  • attachment:附件

3.响应体:

响应体一般就是页面代码。


最后

如果这篇文章对你有帮助的话就点个赞吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 8:12:41

构筑测试事业的北极星——软件测试愿景制定指南

为什么测试团队需要明确的愿景? 在瞬息万变的软件开发领域中,软件测试作为质量保障的核心环节,常常陷入被动响应的工作模式——追逐不断变更的需求,应对持续迭代的产品,处理突发的线上问题。这种被动姿态不仅使测试人…

作者头像 李华
网站建设 2026/7/26 11:15:43

如何在没有经费的情况下做科研

实验的家伙事 在做这个工作之前,笔者的主业是合成生物学与分子生物学,见我之前的博文《质粒拷贝数以及启动子活性的定量测量》。在研究过程中有一些发现,也积累了几个点子和想法。然而这些想法无一实现,主要问题是没有钱和资源来…

作者头像 李华
网站建设 2026/7/26 13:50:26

打造自己的Python工具集

最近在使用Jep(Java Embedded Python)做一个Java调用Python代码的案例(一种在网页上编写并支持代码即时运行)时发现一个问题。由于每个人都在页面上编写属于自己的python脚本,而这些python脚本可能会使用一些诸如计算时…

作者头像 李华
网站建设 2026/7/26 3:26:21

25、Linux文本处理工具:从补丁应用到拼写检查

Linux文本处理工具:从补丁应用到拼写检查 1. 补丁应用 在文件处理中,我们常常需要将旧文件更新为新文件。当差异文件(diff file)创建好后,就可以使用它来给旧文件打补丁,将其转化为新文件。操作步骤如下: 1. 创建差异文件:使用 diff 命令生成差异文件。例如,对比…

作者头像 李华
网站建设 2026/7/26 4:14:29

27、文档格式化与打印:Unix/Linux 实用指南

文档格式化与打印:Unix/Linux 实用指南 文档格式化系统 在处理小型简单的文本任务时,简单的文本格式化工具表现出色。但对于大型任务,Unix 系统提供了更强大的工具,这也是它在技术和科学用户中广受欢迎的原因之一。实际上,文档处理对 Unix 的发展起到了重要作用。 早期…

作者头像 李华