当前位置: 首页 > news >正文

【计网】网络分层模型和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.响应体:

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


最后

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

http://www.cnnetsun.cn/news/137758.html

相关文章:

  • Kotaemon在华为云上的部署实践:全流程记录
  • 校园便利平台|基于springboot + vue校园便利平台系统(源码+数据库+文档)
  • 38、Linux 脚本编程:bc 计算器、数组与特殊技巧
  • 揭秘高亮车灯升级2025年值得推荐的TOP8车灯产品
  • WSL2 / Ubuntu 下用 SDKMAN 管理多版本 Java(项目级切换,真香)
  • 从“幻觉”到“诚实”:OpenAI 如何重新定义大模型的不靠谱问题
  • 高精度宽频段VG7050CDN压控晶体振荡器(VCXO),适用于通信与GPS设备等
  • 重塑艺术“原罪”?Nano Banana Pro 引入数字水印与归属协议:谷歌要给 AI 生图打上“DNA”标签?
  • 基于最优指派策略的弹道导弹目标数据关联算法
  • 通达信主图MACD
  • Mistral 3 模型解析与部署实战:从 Large 3 到 Mini-stral
  • 2025网络安全学习路线 非常详细 推荐学习
  • 测试必知:线上出现BUG,该怎么办!
  • 【C++】学生管理系统设计与实现丨SQLite数据库版本
  • 第55集科立分板机:PCB激光分板机的效率如何
  • 28、UNIX 终端操作与测试实用指南
  • 31、UNIX实用技巧:ASCII表与经典编辑器使用指南
  • 三大限流算法:滑动窗口、令牌桶、漏桶
  • # 深入浅出 Flutter:构建跨平台应用的利器
  • 40、深入了解UNIX系统管理:职责与求职指南
  • stm32毕设本科生任务书指导
  • 效率神器!QuickTextPaste 便携版:快速文本粘贴 + 预设管理全攻略
  • 向量在计算机图形学中的核心应用
  • SelectDB索引实战:从入门到精通,避开那些年我踩过的坑
  • 探秘常见机器人控制运动上位机源码:解锁多种运动算法
  • 9 个降AI率工具,继续教育学生必备!
  • 运用工具Postman快速导出python接口测试脚本
  • 研发管理软件:合规・协同・智能・灵活为汽车部件行业研发管理强力赋能——全星研发管理APQP软件系统功能解析
  • EMS-NT企业微电网能碳管理平台:架构、功能与应用研究
  • 读捍卫隐私10读后总结与感想兼导读