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

网络优化小结

网络基础知识

OSI七层网络架构

OSI简称Open System Intercnnect,开放式系统互联,是一个国际互联网标准制定的一个组织

  • 应用层

    • 实际应用场景,比如 浏览器、文件传输、电子邮件、文件服务、虚拟终端等;

    • http、FTP、ssh等

  • 表示层

    • 用于数据的格式化,让不同应用之间能够统一兼容,比如,ASCII、UTF-8等
  • 会话层

    • 用于建立、断开会话连接等;比如服务端和客户端之间是1对多关系,服务端就需要跟客户端建立多个会话连接;例如Socket
  • 传输层

    • 用于解决两个终端之间数据如何传输问题;TCP、UDP
  • 网络层

    • 用于解决在网络中定位终端问题,路由器的功能;比如IP
  • 数据链路层

    • 用于包装Mac地址等信息形成帧数据,根据MAC地址查找目标设备,检查数据错误问题等,数据单位是帧;交换机的作用
  • 物理层

    • 用于将两台设备通过网线连接起来,将比特流二进制数据中1、0转换为光电信号;比如网线

【TCP/IP】四层网络架构

  • 应用层、传输层、网络层、网络接口层

  • TCP/IP协议是美国国防部发明的,相比七层架构:

    • TCP/IP中的应用层相当于七层架构中的应用层、表示层、会话层

    • TCP/IP中的网络接口层相当于七层架构中的数据链路层和物理层

    • TCP/IP是一系列协议簇,而OSI七层网络架构是一种网络模型

IP地址和MAC地址、端口区别

  • IP地址主要作用于网络层,主要用于在外网中,通过网关定位目标设备;

  • 而MAC地址主要用于数据链路层,用于内网中定位具体的设备

  • 端口是用于在同一台设备中,区分不同应用

TCP/UDP区别

  • TCP是一种可靠的传输方式,它连接时需要经历三次握手,断开连接时需要经历四次挥手,确保传输过程中信息准确传输到目的地;缺点是传输速率慢

  • UDP是不可靠的传输方式,发送完数据不管对方有没有接收到,效率高,速度快

TCP三次握手、四次挥手

  • 三次握手:

    • 客户端向服务端发起TCP连接请求,发送ACK报文

    • 服务端收到请求后,准备好连接资源,回复SYN报文

    • 客户端收到信息后,再次发送ACK报文给服务端,表示收到消息并准备好连接

      • 服务端第二次收到客户端ACK报文后就开始正式与客户端建立TCP连接

      • 之所以要三次握手而不是两次,是为了避免服务端这边准备好连接资源后,客户端又出现意外停止连接,造成服务端资源浪费

  • 四次挥手:

    • 客户端发送SYN报文给服务端请求断开TCP连接

    • 服务端回复ACK报文告诉客户端进入等待状态

    • 服务端在一段时间后再次发送SYN报文通知客户端可以断开连接了

    • 客户端接收到通知后,再次发送ACK报文给服务端,表示准备好断开连接了

      • 服务端接收到报文后就断开TCP连接回收资源

      • 客户端在发送完最后一次报文后并不会立刻断开连接并回收资源,这是为了防止服务端在一段时间内没有接收到客户端发送过去的报文,会再次重复发送,这时候客户端就需要再次回复ACK报文通知服务端关闭连接

      • 之所以需要四次而不是三次,是因为客户端通知服务端关闭TCP连接时,可能当时还有传输任务没有结束,所以服务端会要求客户端等待一段时间,等数据传输任务都完成后再通知客户端断开连接

Socket和WebSocket

  • WebSocket和HTML一样是应用层协议,它最早出现在HTML5中,主要用于解决HTML只能单向通信问题,后面各种主流语言都有WebSocket相应实现

  • 而Socket不是协议,它是一组接口,用于方便应用层使用TCP/UDP建立连接,它介于应用层和传输层之间

  • Llinux中的Socket则是在服务端和客户端各自维护一个文件,当建立连接后,可以写入自己文件后供对方读取或者读取对方文件中的内容,断开连接后则关闭文件

优化方向:

  • 减少网络传输的数据大小

    • 使用gzip压缩数据=》“Content-Encoding”:“gzip”

    • 使用protobuffer序列化/反序列化数据;

      • 采用二进制格式,相比json序列化和反序列化速度更快;但是数据可读性差,使用相对复杂
  • 减少网络请求次数

    • 将需要上传或者下载的多份数据合并成一次网络请求

    • 使用socket发起http请求,复用http/tcp连接,避免多次频繁创建和销毁连接

      • okhttp就是使用了socket复用,socket建立连接后会缓存起来供下次使用,提高网络请求效率
  • 其他方面优化

    • 发起网络请求时直接用IP地址代替网址,因为网址转IP地址需要经过DNS解析

相关文章:

网络优化小结

网络基础知识 OSI七层网络架构 OSI简称Open System Intercnnect,开放式系统互联,是一个国际互联网标准制定的一个组织 应用层 实际应用场景,比如 浏览器、文件传输、电子邮件、文件服务、虚拟终端等; http、FTP、ssh等 表示层…...

Android 11.0 原生SystemUI下拉通知栏UI背景设置为圆角背景的定制(一)

1.前言 在11.0的系统rom定制化开发中,在原生系统中关于SystemUI下拉状态栏的通知栏的每条通知的背景是白色的四角的背景, 由于在产品设计中,需要把四角背景默认改成白色的圆角背景,所以就需要分析系统原生下拉通知栏的每条通知的默认背景, 这就需要了解11.0的systemui的通…...

个人练习-Leetcode-1942. The Number of the Smallest Unoccupied Chair

题目链接:https://leetcode.cn/problems/the-number-of-the-smallest-unoccupied-chair/ 题目大意:给出一群人到达一个排队的时间和离开派对的时间[arr, lev]。有无数个座位,下标从0开始。当一个人在tm时刻离开时,如果一个人在tm…...

EMC经典问答85问(59-62问)

59、用双向可控硅控制直流电机的调速,但电机会干扰电源影响过零检则,造成不受控或速度妀变。请各位指教! 答 1: 出现这中现象的可能性有:1、电机属于非阻性负载,所以电路中产生相位移动,导致控制不准&#…...

Java面向对象 - 封装、继承和多态的综合练习(答案+知识点总结)第1关:封装、继承和多态进阶(一)+ 第2关:封装、继承和多态进阶(二)

目录 第1关:封装、继承和多态进阶(一) 报错总结 & 注意事项: 第2关:封装、继承和多态进阶(二) 源码: 报错总结 & 注意事项: 思维导图免费制作网站&#xf…...

小迪安全day20WEB漏洞-文件上传之基础及过滤方式

小迪安全day20WEB漏洞-文件上传之基础及过滤方式 什么是文件上传漏洞 有文件上传就可以测试是否有漏洞,关键看代码是否完备。 服务端代码未对客户端上传的文件进行严格的验证和过滤 漏洞危害 自定义网站后门,获取网站权限,属于高危漏洞。 上…...

LeetCode236.最近的公共祖先

求解最近公共祖先的算法 分为两个步骤: 求出两节点路径取两路径上最后一个相同的节点(该节点即为p,q节点的最近公共祖先) 节点路径的算法设计与实现 求节点路径即输入二叉树根节点与待求节点返回根节点到该节点路径上的所有节…...

【springcloud 微服务】Spring Cloud Alibaba整合Sentinel详解

目录 一、前言 二、环境准备 2.1 部署sentinel管控台 2.1.1 官网下载sentinel的jar包 2.1.2 启动控制台 2.1.3 访问控制台 2.2 整合springcloud-alibaba 2.2.1 引入相关依赖 2.2.2 修改配置文件 2.2.3 增加一个测试接口 2.2.4 接口测试 三、sentinel 流控规则使用 …...

ASP医院管理系统—病历管理系统的设计与实现

病历管理系统是医院管理系统的重要组成,该系统的开发主要包括后台数据库的建立以及前台应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的数据库,而对于后者则要求具有齐全完善的应用程序功能,友好人性化的操作界面。该系统采用现代的办公自动化…...

【蓝桥杯】动态规划(dp)入门!| 入门动态规划的正确方式! ——学习笔记

目录 最暴力的dfs --> 记忆化搜索 ---> 递推(dp) 记忆化搜索 暴力dfs 记录答案 递推的公式 dfs 向下递归的公式 递推数组的初始值 递归的边界 动态规划(dp)入门 | 这tm才是入门动态规划的正确方式! | dfs记忆化搜索 | 全体起立!!_哔哩哔哩_bilibili 大佬教学视频…...

元宇宙与网络安全

元宇宙是一种虚拟现实空间,用户可以在计算机生成的环境中进行互动。元宇宙的应用范围很广,比如房地产,医疗,教育,军事,游戏等等。它提供了更具沉浸感的体验,更好地现实生活整合,以及…...

Pod控制器之hpa

简述 HPA全称HorizontalPodAutoscaler Pod水平自动扩缩容,Kubernetes控制器HPA是一种用于自动调整Pod数量的控制器。它可以根据资源使用情况自动增加或减少Pod的数量,以确保应用程序的高可用性和性能。HPA可以根据CPU使用率或自定义指标来进行调整&…...

发现一个白嫖GPT4.0的方法!真的是完胜3.5!

大家好,我是五竹。 先说个基本的科普,最近被问的人都嘛了。 1、ChatGPT账号只有两种:普通账号和plus账号。 2、普通账号升级到plus账号,需要绑定国外的支付方式,每个月大概130左右!plus账号更稳!更快&am…...

数据结构之第四章、ArrayList和顺序表

一、线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是…...

webase全家桶搭建教程过程记录+bug解决

前置条件 Ubuntu20 基础环境搭建 检查Java java -version 检查mysql(Ubuntu部署MySQL) mysql --version 在装MySQL的时候发现了一个问题 就是不管怎么sudo mysql_secure_installation,,第二步设置密码就是不对,解…...

openEuler Linux 部署 HadoopHA

openEuler Linux 部署 HadoopHA 升级操作系统和软件 yum -y update升级后建议重启 安装常用软件 yum -y install gcc gcc-c autoconf automake cmake make rsync vim man zip unzip net-tools zlib zlib-devel openssl openssl-devel pcre-devel tcpdump lrzsz tar wget修改…...

React-Hooks----useEffect()

文章目录前言用法前言 useEffect() 是 React 中最常用的 Hook 之一,它可以让函数组件拥有类似于类组件中 componentDidMount、componentDidUpdate 和 componentWillUnmount 生命周期函数的功能。 用法 useEffect() 接受两个参数 第一个参数是一个函数&#xff0c…...

JavaWeb基础-汇总

SSM框架课程汇总01-MySQL基础02-MySQL高级03-JDBC04-JDBC练习05-Maven&Mybatis基础06-Mybatis练习07-JavaScript08-Web概述09-HTTP10-Tomcat11-Servlet12-Request&Response13-用户注册登录案例14-JSP15-JSP案例16-会话技术17-用户登录注册案例18-Filter19-Listener&…...

Niuke:JZ36.二叉树与双向链表

文章目录Niuke:JZ36.二叉树与双向链表题目描述示例思路分析代码实现Niuke:JZ36.二叉树与双向链表 题目描述 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 注意: 1.要求不能创建任何新的结点,只…...

javaScript---读懂promise、async/await

一、Promise Promise 是一个 Es 6 提供的类,目的是更加优雅地书写复杂的异步任务。可以解决嵌套式的回调地域问题,Promise 将嵌套格式的代码变成了顺序格式的代码。 //回调地域 setTimeout(function () {console.log("红灯");setTimeout(function () {console.lo…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...