计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手

缓存: 

缓存是对cpu,内存的一个节约:节约的是网络带宽资源 节约服务器的性能

资源的每次下载和请求都会造成服务器的一个压力

减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处

表示这个html页面的返回是不要缓存的 忽略缓存  需要每次都到服务器上获取新的

并不是不缓存 而是提示浏览器忽略缓存

pragma:no-cache:浏览器忽略缓存 出现在响应头里面

用来控制缓存:

浏览器发起请求,先会去看有没有缓存 没有缓存直接去请求服务器去拉取资源

在有缓存,但是缓存过期的情况下

返回304的条件:

从磁盘缓存当中去获取:过期时间没有到

图片一定是设置了过期时间的 图片资源不放在服务器上 用单独的图片服务器 

图片就会做一个缓存 

视频类的存储在磁盘当中

三次握手 四次挥手的状态变化

状态变化是从三次握手开始的

服务器:启动--绑定--设置监听 listen()--监听先准备好 这样才是有效的

从无状态变成listen

这样开始三次握手的操作:

(1)第一次握手:客户端发起 客户端调用connect函数

rcvd:接收

第二次握手服务器发生变化  客户端收到服务器的返回页发生变化

当最后成功 客户端和服务器是一个样子 都是established

三次握手成功 双方连接建立

建立之后就可以进行通信了--进行数据传输 通信过程中tcp是没有发生任何变化的

established就是正常的通信状态

SYN==1 发起连接请求 ==0时是没有连接

 三次握手:

第一次握手:建立连接时,客户端发送SYN包到服务器,并等待服务器确认。

第二次握手:服务器收到SYN包,同时自己也给客户端发送一个确认包SYN+ACK包。

第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK。

此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手

四次挥手:

双方通信完毕,关闭连接时,要进行四次挥手

第一次挥手:客户端发送一个FIN包,申请断开连接,并等待服务器确认。

第二次挥手:服务端回复一个ACK包,表示接受到客户端的关闭连接请求,但现在服务端还不能马上关

闭连接,需要检查下是否还有未处理完的数据

第三次挥手:服务端处理完所有数据,给客户端发送FIN包,表示可以断开连接

第四次挥手:客户端回复ACK包,表示断开连接

http的长短连接:

短连接:每次请求都会建立连接

长连接就是只建立一次连接 多次资源请求都复用该连接 完成后关闭

网络深层知识:

 浏览器请求一个网页:

客户端就是用户所用的程序:浏览器  应用程序等等都叫做客户端client

客户端client

服务端就是存储数据 存储网页的程序 还有处理数据的一个载体

服务端:数据和文件的出口   客户端就是数据的入口

后台是数据的管理

服务器就是电脑:家用电脑 配置高一点 服务器的系统带server

我们输入一个url地址,回车:就会对网址先进行dns解析 先去解析到底是什么东西

将网址转换成ip地址  然后通往服务器 这个过程会建立三次握手和四次挥手

这个就是请求网页的流程!!!!

一般来说,一个服务器承载着一个或者多个ip地址 

一个网址对应一个ip地址 那为什么不直接使用ip而使用URL地址呢?

首先是方便记忆 数字不方便记忆

一个ip地址能映射出多个域名 所以ip地址是不适合用户直接接触的

计算机对数字是比较敏感的

三次握手才会真正的建立三次握手的连接 建立连接之后才能进行http请求

服务器返回,客户端收到的是html代码文件,浏览器进行解析和渲染

等到渲染页面结束,进行四次挥手

tcp/ip的这种连接方式叫做长连接

重点:

tcp在哪个层

回答下tcp的功能

tcp为什么是三次握手?不是两次四次?

如果只做两次,无法去确认客户端的接收能力

tcp面向连接 必须是双方的 如果只有两次 只是服务器建立 客户端并没有

造成连接资源的浪费

四次是没有必要的 所以没有必要进行第四次握手

TCP为什么需要4次挥手? 为什么不是三次?

如果将第二次和第三次和为一体 第二次和第三次之间是有时间延迟的

导致客户端不能及时接收:客户端会重新发送断开请求

ack和fin之间是有时差的

这个延迟是没有办法处理的 只能是把这两次都分开 这样才能达到效率最高

只有当客户端和服务器两端都确定好要断开了 才能断开 

四次是最优的方案

五次会造成资源的浪费

异常状态码,400应该找前端还是后端

HTTP状态码 400 表示客户端请求存在语法或参数错误,其责任归属需要具体分析。 

http是哪一层协议

osi七层协议有哪七层  tcp四层模型

tcp四层模型

物理层和数据链路层合称为网络接口层

三层交换机具有路由功能

分层:方便管理

第七层 应用层

应用层是OSI模型中的最高层,也是和用户最近的一层。它直接面向用户和应用程序,为用户提供各种网络服务和应用程序支持

第六层 表示层

负责数据格式与编码方式的转换、加密解密和数据压缩等任务。在实际的通信协议中,表示层往往与应用层或会话层结合使用,对数据进行处理和转换。

第五层 会话层

在OSI七层模型中,会话层没有单独的协议,而是利用下层协议提供的会话机制来实现数据交换。会话层的作用是管理和协调应用程序之间的对话和会话,并与表示层一起支持数据转换、加密和解密等功能。

第四层 传输层


传输层的作用是在不可靠的网络上提供可靠的数据传输服务。它负责将应用程序发送的数据分割成较小的数据段,并使用可靠的数据传输协议(如TCP)或不可靠的数据传输协议(如UDP)将这些数据段传输到目标设备。传输层还负责控制数据流量、错误恢复和拥塞控制等任务。
如果你想要稳,就选tcp,想要稳,就选UDP

第三层 网络层

负责将数据包从源主机传输到目标主机。网络层通过使用IP协议来实现这一过程,提供了路由、寻址和分组传输等功能,以确保数据能够经过多个网络进行传输,并最终到达目标主机。

第二层 数据链路层

负责将网络层传输过来的数据包进行分帧,并在物理介质上进行传输。数据链路层还提供了错误检测和纠正功能,以确保数据的可靠性。此外,数据链路层还实现了访问控制和流量控制等功能,以协调多个设备之间的数据传输。

第一层 物理层

这一层就是osi最底层了,负责将数字数据转换成物理信号并在网络中传输。其意义在于实现不同设备之间的数据传输和通信,使得计算机网络得以正常工作。物理层还定义了传输媒介、传输速率、编码方式等参数,为上层协议提供了可靠的数据传输基础。

就是进行物理连接的

get和post请求的区别 

应用层的常见协议有哪些? 

http状态码

常见HTTP状态码 :

1xx :100 Continue继续:客户端应继续其请求

2xx :200 OK

请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。

204 No Content(无内容)

服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档。

206 Partial Content(部分内容)

服务器成功处理了部分GET请求。

3xx

301 Moved Permanently(永久重定向)

请求的资源已被永久的移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URI代替。

302 Found(临时重定向)

与301类似。但资源只是临时被移动。表示请求的资源被分配了新的URL,希望本次访问使用新的URL。

303 See Othe(查看其他地址)

当请求者应对不同的位置进行单独的 GET 请求以检索响应时,服务器会返回此代码。对于除 HEAD 请求之外的所有请求,服务器会自动转到其他位置。

304 Not Modified(未修改)

所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。

305 Use Proxy(使用代理)

请求者只能使用代理访问请求的网页。如果服务器返回此响应,那么,服务器还会指明请求者应当使用的代理

307 Temporary Redire(临时重定向)

与303有着相同的含义,307会遵照浏览器标准不会从POST变成GET;(不同浏览器可能会出现不同的情况)。

4xx :

400 Bad Request (语法错误)

客户端请求的语法错误,服务器无法理解。

401 Unauthorized(未授权)

请求要求用户的身份认证

403 Forbidden(禁止)

服务器理解请求客户端的请求,但是拒绝执行此请求

404 Not Found(未找到)

服务器无法根据客户端的请求找到资源(网页)。除此之外,也可以在服务器拒绝请求但不想给拒绝原因时使用。

405 Method Not Allowed (方法禁用)

客户端请求中的方法被禁止。

406 Not Acceptable(不接受)

无法使用请求的内容特性来响应请求的网页。

408 Request Time-out(请求超时)

服务器等待客户端发送的请求时间过长,超时。

5xx

500Internal Server Error(服务器内部错误)

服务器遇到错误,无法完成请求。

501 Not Implemented(尚未实施)

服务器不具备完成请求的功能。例如,当服务器无法识别请求方法时,服务器可能会返回此代码。

502 Bad Gateway(错误网关)

作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

503 Service Unavailable(服务不可用)

由于超载或系统维护,服务器暂时的无法处理客户端的请求。通常,这只是一种暂时的状态。

504 Gateway Time-out(网关超时)

服务器作为网关或代理,未及时从上游服务器接收请求。

505 HTTP Version not supported(HTTP 版本不受支持)

服务器不支持请求中所使用的 HTTP 协议版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《构建社交应用用户激励引擎:React Native与Flutter实战解析》

React Native凭借其与JavaScript和React的紧密联系,为开发者提供了一个熟悉且灵活的开发环境。在构建用户等级体系时,它能够充分利用现有的前端开发知识和工具。通过将用户在社交应用中的各种行为进行量化,比如发布动态的数量、点赞评论的次数…

接口自动化测试框架详解(pytest+allure+aiohttp+ 用例自动生成)

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 近期准备优先做接口测试的覆盖,为此需要开发一个测试框架,经过思考,这次依然想做点儿不一样的东西。 接口测试是比较讲究效…

Linux-----文件系统

文件大家都知道,前面的我的博客课程也为大家解释了关于文件的打开等,今天我们要谈论的是 文件在没被打开的时候在磁盘中的位置和找到它的方式。 画图为大家展示: 方便理解 我们从下面几个方面入手: 1. 看看物理磁盘 2. 了解一…

C++ set替换vector进行优化

文章目录 demo代码解释&#xff1a; 底层原理1. 二叉搜索树基础2. 红黑树的特性3. std::set 基于红黑树的实现优势4. 插入操作5. 删除操作6. 查找操作 demo #include <iostream> #include <set>int main() {// 创建一个存储整数的std::setstd::set<int> myS…

如何巧妙解决 Too many connections 报错?

1. 背景 在日常的 MySQL 运维中&#xff0c;难免会出现参数设置不合理&#xff0c;导致 MySQL 在使用过程中出现各种各样的问题。 今天&#xff0c;我们就来讲解一下 MySQL 运维中一种常见的问题&#xff1a;最大连接数设置不合理&#xff0c;一旦到了业务高峰期就会出现连接…

QT的布局和弹簧及其代码解读

this指的是真正的当前正在显示的窗口 main函数&#xff1a; Widget w是生成了一个主窗口&#xff0c;QT Designer是在这个主窗口里塞组件 w.show()用来展示这个主窗口 头文件&#xff1a; namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一个东西 Ui…

《AI大模型应知应会100篇》第52篇:OpenAI API 使用指南与最佳实践

第52篇&#xff1a;OpenAI API 使用指南与最佳实践 &#x1f4cc; 摘要 本文将带你从零开始掌握 OpenAI API 的核心使用方法&#xff0c;涵盖从基础调用到高级功能的完整实战路径。通过详细的代码示例、图文解析和可运行的 Python 脚本&#xff0c;帮助你快速上手 GPT-3.5、GP…

C#学习7_面向对象:类、方法、修饰符

一、类 1class 1)定义类 访问修饰符class 类名{ 字段 构造函数&#xff1a;特殊的方法&#xff08;用于初始化对象&#xff09; 属性 方法... } eg: public class Person { // 字段 private string name; private int a…

湖北理元理律师事务所:债务优化中的“生活保障”方法论

债务危机往往伴随生活质量骤降&#xff0c;如何在还款与生存间找到平衡点&#xff0c;成为债务优化的核心挑战。湖北理元理律师事务所基于多年实务经验&#xff0c;提出“双轨并行”策略&#xff1a;法律减负与生活保障同步推进。 债务优化的“温度法则” 1.生存资金预留机制…

Jetpack Compose与Kotlin UI开发革命

Jetpack Compose + Kotlin:Android UI 开发的革命 简介 Jetpack Compose 是 Google 推出的现代 Android UI 工具包,结合 Kotlin 语言,彻底改变了传统 Android 开发的模式。过去,开发者依赖 XML 布局和命令式编程(如 findViewById 和手动更新视图),导致代码冗长且易出错…

基于pyqt的上位机开发

目录 安装依赖 功能包含 运行结果 安装依赖 pip install pyqt5 pyqtgraph pyserial 功能包含 自动检测串口设备&#xff0c;波特率选择/连接断开控制&#xff0c;数据发送/接收基础框架&#xff0c;实时绘图区域&#xff08;需配合数据解析&#xff09; ""&q…

QT人工智能篇-opencv

第一章 认识opencv 1. 简单概述 OpenCV是一个跨平台的开源的计算机视觉库&#xff0c;主要用于实时图像处理和计算机视觉应用‌。它提供了丰富的函数和算法&#xff0c;用于图像和视频的采集、处理、分析和显示。OpenCV支持多种编程语言&#xff0c;包括C、Python、Java等&…

Python自学第5天:字符串相关操作

1.字符串运算符 作符描述字符串连接*重复输出字符串[]通过索引获取字符串中字符[ : ]截取字符串中的一部分&#xff0c;遵循左闭右开原则&#xff0c;str[0:2] 是不包含第 3 个字符的。in成员运算符 - 如果字符串中包含给定的字符返回 Truenot in成员运算符 - 如果字符串中不包…

RabbitMq(尚硅谷)

RabbitMq 1.RabbitMq异步调用 2.work模型 3.Fanout交换机&#xff08;广播模式&#xff09; 4.Diret交换机&#xff08;直连&#xff09; 5.Topic交换机&#xff08;主题交换机&#xff0c;通过路由匹配&#xff09; 6.Headers交换机&#xff08;头交换机&#xff09; 6…

分库分表后复杂查询的应对之道:基于DTS实时性ES宽表构建技术实践

1 问题域 业务发展的初期&#xff0c;我们的数据库架构往往是单库单表&#xff0c;外加读写分离来快速的支撑业务&#xff0c;随着用户量和订单量的增加&#xff0c;数据库的计算和存储往往会成为我们系统的瓶颈&#xff0c;业界的实践多数采用分而治之的思想&#xff1a;分库…

CVE-2024-4577:Windows 编码错误

CVE-2024-4577是一个 PHP-CGI 漏洞,就是其中一种情况:虽然有这个版本,但由于 PHP 经常被反向移植,因此无法可靠地使用。 这篇博文详细介绍了如何研究 CVE-2024-4577 以及当前用于检测它的方法。 CVE-2024-4577 CVE-2024-4577 是 Windows 版 PHP 安装中的一个高危漏洞,会…

NetBox Docker 全功能部署方案(Ubuntu 22.04 + Docker)

环境准备 检查操作系统版本&#xff1a; 本方案使用 Ubuntu 22.04&#xff0c;并在 VMware 虚拟机中运行。通过以下命令检查系统版本&#xff1a; lsb_release -a 如果未安装 Ubuntu 22.04&#xff0c;请下载并安装一个全新的系统。 更新系统软件源&#xff1a; 更新软件包列表…

DeepSeek Copilot idea插件推荐

&#x1f30c; DeepSeek Copilot for IntelliJ IDEA 让 AI 成为你的编程副驾驶&#xff0c;极速生成单元测试 & 代码注释驱动开发&#xff01; &#x1f680; 简介 DeepSeek Copilot 是一款为 IntelliJ IDEA 打造的 AI 编程助手插件&#xff0c;它能够智能分析你的代码逻辑…

QT中的JSON

1.JSON的两种数据格式 JSON有两种数据格式:JSON对象和JSON数组 JSON数组&#xff1a; JSON数组格式&#xff1a;[元素1&#xff0c;元素2&#xff0c;元素3&#xff0c;......元素n] JSON数组中的元素可以是同一类型&#xff0c;也可以使不同类型&#xff0c;可以嵌套JSON数组…

详细剖析传输层协议(TCP和UDP)

详细讲解传输层的网络协议&#xff0c;为什么TCP是可靠连接协议&#xff0c;凭什么能做到不丢包&#xff0c;有哪些机制保证可靠呢&#xff1f; TCP/UDP UDPTCP**三次握手和四次挥手****滑动窗口****拥塞控制**&#xff08;socket套接字&#xff09;**listen的第二个参数** UD…