news 2026/5/1 6:22:42

【计网】网络分层模型和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/5/1 6:04:07

用户故事测试验收标准:从需求到质量的精准桥梁

在敏捷软件开发中,用户故事作为需求表达的核心载体,其测试验收标准(Acceptance Criteria)构成了开发团队、测试人员与产品经理之间的关键契约。根据2024年ISTQB行业调查报告显示,超过67%的软件缺陷源于需求理解不一致&…

作者头像 李华
网站建设 2026/5/1 6:03:01

测试团队的内外部沟通策略

沟通在测试中的核心价值软件测试不仅仅是技术活动,更是一种沟通密集型工作。测试团队通过沟通传递缺陷信息、风险预警和进度更新,而内外部沟通不畅往往导致项目延迟、缺陷遗漏或团队冲突。据统计,超过50%的项目问题源于沟通失败。因此&#x…

作者头像 李华
网站建设 2026/5/1 6:11:03

计算机提示network error怎么解决?超详细排查与修复教程

在使用电脑、手机、平板等设备上网时,network error是非常常见的问题。不管是浏览网页、刷视频、下载文件还是登录软件,一旦弹出network error提示,就意味着设备和网络之间的连接出现了故障。想要快速解决network error,我们可以按…

作者头像 李华
网站建设 2026/5/1 6:12:58

31、深入探索Shell编程:Here文档、自上而下设计、函数与流程控制

深入探索Shell编程:Here文档、自上而下设计、函数与流程控制 1. Here文档的介绍与使用 在输出文本时,除了使用 echo 命令,还有一种方法叫Here文档(here document)或Here脚本(here script)。Here文档是一种额外的I/O重定向形式,它允许我们将一段文本嵌入到脚本中,并…

作者头像 李华
网站建设 2026/4/23 18:48:20

学生请假管理|基于springboot + vue学生请假管理系统(源码+数据库+文档)

学生请假管理 目录 基于springboot vue学生请假管理系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue学生请假管理系统 一、前言 博主介绍&…

作者头像 李华