news 2026/6/23 17:19:55

【计网】网络分层模型和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/6/23 9:36:45

Kotaemon在华为云上的部署实践:全流程记录

Kotaemon在华为云上的部署实践:全流程记录 在企业智能客服、知识库问答系统日益普及的今天,一个真正“可用”的AI代理不仅要能回答问题,更要答得准、有依据、可维护。然而现实是,许多基于大模型的聊天机器人仍困于“幻觉频发”“…

作者头像 李华
网站建设 2026/6/23 5:02:21

校园便利平台|基于springboot + vue校园便利平台系统(源码+数据库+文档)

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

作者头像 李华
网站建设 2026/6/23 17:19:54

38、Linux 脚本编程:bc 计算器、数组与特殊技巧

Linux 脚本编程:bc 计算器、数组与特殊技巧 1. bc - 任意精度计算器语言 在处理整数运算时,shell 能满足很多需求,但当需要进行高级数学运算或使用浮点数时,shell 就显得力不从心了。这时可以借助外部程序,比如 bc 。 bc 是许多 Linux 系统上都有的计算器程序,它能…

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

揭秘高亮车灯升级2025年值得推荐的TOP8车灯产品

在2025年,车灯升级已成为车主关注的热点之一,尤其是高亮车灯的选择。作为提升行车安全与舒适性的关键装备,市场上涌现出多款值得推荐的车灯产品。从LED日行灯到高效的激光透镜,这些产品通过先进的技术改善了照明效果和能效。为满足…

作者头像 李华
网站建设 2026/6/14 6:44:30

WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java(项目级切换,真香)

WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java(项目级切换,真香) 在 WSL2 Ubuntu 做 Java 后端开发时,经常会遇到这种组合: 老项目还在 Java 8新项目已经是 Java 17 / 21同一台机器、同一个终端,需要随时切换…

作者头像 李华
网站建设 2026/6/23 4:43:29

从“幻觉”到“诚实”:OpenAI 如何重新定义大模型的不靠谱问题

如果你对 Agent 可信性、模型行为、安全边界、长期对齐问题 感兴趣,欢迎关注 LuhuiDev。 我会在全平台持续更新这个系列,把论文、实验、工程直觉,慢慢拆给你看。OpenAI 如何重新定义大模型的不靠谱问题? 过去两年,几乎…

作者头像 李华