【1】网络协议基础概念

【1】网络协议基础知识

  • 1、互联网
  • 2、为什么要学习网络协议
  • 3、学习中需要搭建的环境
  • 4、客户端-服务器
  • 5、Java 的跨平台原理
  • 6、C/C++的跨平台原理
  • 7、一个简单的SpringBoot项目
    • (1) pom.xml
    • (2) application.yml
    • (3) NetworkStudyApp.java
    • (4) SwaggerConfig.java
    • (5) HelloWorldController.java
  • 8、什么是协议
  • 9、网络互连模型
  • 10、客户端传数据到服务器端
  • 11、网络分层
  • 12、计算机之间的通信基础
  • 13、计算机之间的连接方式
    • (1) 网线直连
      • ① 使用交叉线连接两台计算机
      • ② 设置两台计算机的IP地址
      • ③ ping 测试是否连通
      • ④ 使用仿真发数据包测试是否连通
      • ⑤ ARP 广播协议
    • (2) 同轴电缆(Coaxial)
    • (3) 集线器(Hub)
      • ① 三台计算机,一台集线器
      • ② 计算机1向计算机2发数据
      • ③ 集线器“没有智商”
    • (4) 网桥(Bridge)
    • (5) 交换机(Switch)
    • (6) 路由器(Router)

1、互联网

🖊 互联网的出现,彻底改变了人们的生活方式,足不出户就可以购物、聊天、看电影、买车票、上班等
在这里插入图片描述

❓ 思考:数据是如何从一个设备传递到另一个设备的?
🖊 这一切都是由网络协议来规定的。没有网络协议,就没有今天的互联网。

2、为什么要学习网络协议

📕 互联网、移动互联网、物联网,都离不开网络协议
🖊 最熟悉的网络协议:HTTP
🖊 为了满足各种需求,产生了各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP 等)
🖊 不同的网络协议有不同的应用场景

🍀 HTTPHyperText Transfer Protocol:超文本传输协议

📕 随着物联网、音视频、直播等领域的发展,企业提高对开发人员网络基本功的要求,经常问网络协议的面试题
🖊 TCP和UDP的区别?说一下它们的报文格式?
🖊 TCP的流量控制和和拥塞控制?TCP如何实现可靠性传输?
🖊 为什么连接是3次握手,关闭是4次挥手?
🖊 7层模型与4层模型的区别?每一层的作用是什么?
🖊 交换机与路由器的区别?
🖊 …

3、学习中需要搭建的环境

📕 客户端-服务器开发环境
🖊 客户端:浏览器(HTML+CSS+JS)
🖊 服务器:Java

📕 网络抓包
🖊 浏览器(Chrome、Firefox)
🖊 抓包工具(Fiddler、Wireshark)

📕 模拟环境
🖊 xshell、packet-tracer、gns3

4、客户端-服务器

在这里插入图片描述
在这里插入图片描述

🖊 服务器软件(Tomcat)监听端口,端口(如 5200)和某个项目绑定
🖊 客户端通过端口和指定的项目交互

5、Java 的跨平台原理

📕 JVM(Java Virtual Machine):Java 虚拟机
📕 Java 的跨平台:一次编译,到处运行
🖊 编译生成跟平台无关的字节码文件(class 文件)
🖊 由对应平台的 JVM 把字节码解析为机器指令(010101)
在这里插入图片描述
📕 如果代码有语法错误,将编译失败,就不会生成字节码文件
🖊 那就不会去运行一个 JVM 程序。最后导致 Java 程序运行失败

6、C/C++的跨平台原理

在这里插入图片描述
📕 使用平台相关的编译器生成对应平台的可执行文件

🖊 JS 是解释型语言,由对应平台的浏览器执行JS代码

7、一个简单的SpringBoot项目

(1) pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.5</version><relativePath/></parent><groupId>com.guoqing</groupId><artifactId>network-study</artifactId><version>1.0.0</version><properties><springfox-swagger.version>3.0.0</springfox-swagger.version><swagger-models-version>1.6.2</swagger-models-version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>${springfox-swagger.version}</version></dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>${swagger-models-version}</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency></dependencies>
</project>

(2) application.yml

server:port: 5200
spring:mvc:pathmatch:matching-strategy: ANT_PATH_MATCHER
springfox:documentation:enabled: true # 是否启用Swagger功能open-api:enabled: true # 是否启用Swagger的open-apiswagger-ui:enabled: true # 是否启用Swagger的WebUI

(3) NetworkStudyApp.java

@SpringBootApplication
public class NetworkStudyApp {public static void main(String[] args) {SpringApplication.run(NetworkStudyApp.class, args);System.out.println("服务启动成功✌");System.out.println("✌Swagger地址:http://localhost:5200/swagger-ui/index.html");}
}

(4) SwaggerConfig.java

@Configuration
public class SwaggerConfig {@Beanpublic Docket docket(Environment env) {return new Docket(DocumentationType.SWAGGER_2).ignoredParameterTypes(HttpSession.class,HttpServletResponse.class,HttpServletRequest.class) // 忽略参数.apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("学习网络").description("原万事顺心").contact(new Contact("张国庆", null, "3465764450@qq.com")).version("1.0").build();}
}

(5) HelloWorldController.java

@Api(tags = "网络协议学习")
@RestController
@RequestMapping("/hello/world")
public class HelloWorldController {@ApiOperation(value = "模拟登录", notes = "模拟登录")@PostMapping("/login")@ApiImplicitParams({@ApiImplicitParam(name = "username", value = "用户名"),@ApiImplicitParam(name = "password", value = "密码")})public String login(@RequestParam(defaultValue = "张思睿") String username,@RequestParam(defaultValue = "zgq666") String password) {if ("张思睿".equals(username) && "zgq666".equals(password))return "张思睿 登录成功🍀";return username + " 登录失败😟";}
}

8、什么是协议

在这里插入图片描述

🖊 协议是一个约定
🖊 网络协议约定客户端可以发什么数据到服务器,服务器可以返回什么数据到客户端,约定数据格式等

9、网络互连模型

📕 为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型
🖊 OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构【国际标准

在这里插入图片描述

10、客户端传数据到服务器端

在这里插入图片描述

11、网络分层

在这里插入图片描述

12、计算机之间的通信基础

📕 需要得知对方的 IP 地址
📕 最终是根据 MAC 地址(网卡地址)输送数据到网卡,被网卡接收
🖊 如果网卡发现数据的目标 MAC 地址是自己,就会将数据传递给上一层进行处理
🖊 如果网卡发现数据的目标 MAC 地址不是自己,就会将数据丢弃,会传递给上一层进行处理

13、计算机之间的连接方式

(1) 网线直连

在这里插入图片描述

🌼 通过交叉线连接(不是直通线)


👇 使用思科模拟器(Cisco Packet Tracer)模拟

① 使用交叉线连接两台计算机

在这里插入图片描述

② 设置两台计算机的IP地址

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

③ ping 测试是否连通

在这里插入图片描述

在这里插入图片描述

④ 使用仿真发数据包测试是否连通

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

⑤ ARP 广播协议

🖊 ARP 协议是广播
🖊 广播只在同一网段进行
🖊 广播的目标MAC地址是 FFFF.FFFF.FFFF,表示同一网段的设备的网卡都会收到广播信息
🖊 ARP 是有缓存的

在这里插入图片描述

在这里插入图片描述

(2) 同轴电缆(Coaxial)

🖊 多台计算机互联

在这里插入图片描述

🖌 半双工通信( 同一时间只能一个设备向另一个设备发数据全双工通信:同一时间,A设备可以向B设备发数据,B设备也可以向A设备发数据
🖌 容易冲突
🖌 不安全
🖌 中间断了,则整个瘫痪
🖌 同轴电缆"没有智商"(会向所有的设备发广播)

(3) 集线器(Hub)

在这里插入图片描述

🖌 半双工通信
🖌 容易冲突
🖌 不安全
🖌 根同轴电缆一样:没有智商(会向所有的设备发广播)


👇 使用思科模拟器(Cisco Packet Tracer)模拟

① 三台计算机,一台集线器

在这里插入图片描述

② 计算机1向计算机2发数据

在这里插入图片描述

在这里插入图片描述

③ 集线器“没有智商”

在这里插入图片描述

(4) 网桥(Bridge)

在这里插入图片描述

🖌 能够通过自学习得知每个接口那侧的 MAC 地址
🖌 从而起到隔绝冲突域的作用

(5) 交换机(Switch)

在这里插入图片描述

🖊 相当于接口更多的网桥
🖊 全双工通信
🖊 比集线器安全
❓ 思考:全球所有的设备都用交换机连接会是什么情况?

(6) 路由器(Router)

在这里插入图片描述

📕 网线直连、同轴电缆、集线器、网桥、交换机
🖊连接的设备必须在同一网段
🖊连接的设备处在同一广播域

📕 路由器
🖊可以在不同网段之间转发数据
🖊隔绝广播域

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

如何创建纯净版Django项目并启动?——让Django更加简洁

目录 1. Django的基本目录结构 2. 创建APP 2.1 创建app 2.2 配置文件介绍 3. 迁移数据库文件 3.2 连接数据库 3.1 创建迁移文件 3.2 同步数据库 4. 纯净版Django创建 4.1 剔除APP 4.2 剔除中间件 4.3 剔除模板引擎 5. 最终 1. Django的基本目录结构 在我们创建Django项…

Scala第十三章节(作为值的函数及匿名函数、柯里化、闭包及控制抽象以及计算器案例)

章节目标 掌握作为值的函数及匿名函数的用法了解柯里化的用法掌握闭包及控制抽象的用法掌握计算器案例 1.高阶函数介绍 Scala 混合了面向对象和函数式的特性&#xff0c;在函数式编程语言中&#xff0c;函数是“头等公民”&#xff0c;它和Int、String、Class等其他 类型处于…

图像处理与视觉感知---期末复习重点(5)

文章目录 一、膨胀与腐蚀1.1 膨胀1.2 腐蚀 二、开操作与闭操作 一、膨胀与腐蚀 1.1 膨胀 1. 集合 A A A 被集合 B B B 膨胀&#xff0c;定义式如下。其中集合 B B B 也称为结构元素&#xff1b; ( B ^ ) z (\hat{B})z (B^)z 表示 B B B 的反射平移 z z z 后得到的新集合。…

Maven配置国内镜像-阿里云仓库镜像

使用自己安装maven环境时&#xff1a; 打开解压目录下conf/settings.xml文件 使用Idea自带的Maven时&#xff1a; 打开Idea安装路径\plugins\maven\lib\maven3\conf\settings.xml文件 在mirrors节点中加入如下配置&#xff1a; <!-- 加入如下mirror节点 使用国内阿里云仓…

Unity | 射线检测及EventSystem总结

目录 一、知识概述 1.Input.mousePosition 2.Camera.ScreenToWorldPoint 3.Camera.ScreenPointToRay 4.Physics2D.Raycast 二、射线相关 1.3D&#xff08;包括UI&#xff09;、射线与ScreenPointToRay 2.3D&#xff08;包括UI&#xff09;、射线与ScreenToWorldPoint …

CI/CD实战-jenkins结合ansible

配置主机环境 在jenkins上断开并删除docker1节点 重新给master添加构建任务 将server3&#xff0c;server4作为测试主机&#xff0c;停掉其上后面的docker 在server2&#xff08;jenkins&#xff09;主机上安装ansible 设置jenkins用户到目标主机的免密 给测试主机创建用户并…

【计算机网络】第 9 问:四种信道划分介质访问控制?

目录 正文什么是信道划分介质访问控制&#xff1f;什么是多路复用技术&#xff1f;四种信道划分介质访问控制1. 频分多路复用 FDM2. 时分多路复用 TDM3. 波分多路复用 WDM4. 码分多路复用 CDM 正文 什么是信道划分介质访问控制&#xff1f; 信道划分介质访问控制&#xff08;…

提升数据传输效率的杀手锏“零拷贝技术“

&#x1f4a1;那么为什么需要零拷贝技术? 它是怎么演进的过来的呢? 首先了解零拷贝之前呢, 我们先来认识一下零拷贝的前世今生.先来回顾一下消息传输的正常流程 举个例子说明 就举寄快递的例子吧 &#xff0c;一般我们先把快递送到附近的驿站&#xff0c; 然后由快递员前往…

Java的IDEA的工程管理

模块和包的图标&#xff1a; 举个例子&#xff1a; IDEA中创建包&#xff1a; 如图所示&#xff0c;com.LBJ的意思是在com包中创建子包LBJ 参见&#xff1a; IDEA中项目、模块和包的关系_idea中模块和项目-CSDN博客

网站为什么要选择使用安全加速SCDN?

安全加速SCDN&#xff08;安全内容交付网络&#xff09;是一种网络加速服务&#xff0c;旨在提高网站和应用程序的性能和安全性。它使用专门的技术和基础设施来加速内容传输并保护网站免受网络攻击。 安全加速SCDN可以通过内容缓存、快速传输和动态路由技术来加速网站和应用程…

linux nginx配置ssl, 实现https+ip访问

mkdir sslZhengShu openssl req -newkey rsa:2048 -nodes -keyout ca.key -out ca.csr openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr 和之前输入一样即可 …

京东云0基础搭建帕鲁服务器_4核16G和8核32G幻兽帕鲁专用服务器

使用京东云服务器搭建幻兽帕鲁Palworld游戏联机服务器教程&#xff0c;非常简单&#xff0c;京东云推出幻兽帕鲁镜像系统&#xff0c;镜像直接选择幻兽帕鲁镜像即可一键自动部署&#xff0c;不需要手动操作&#xff0c;真正的新手0基础部署幻兽帕鲁&#xff0c;阿腾云atengyun.…

每日一题--最长连续序列

洛阳春-岑参 人到洛阳花似锦&#xff0c;偏我来时不逢春。 谁道三冬无春色&#xff0c;冰山高处万里银 目录 题目描述 思路分析 方法及其时间复杂度 法一 暴力枚举&#xff1a; 法二 哈希表遍历&#xff1a; 法三 并查集&#xff1a; 个人总结 题目描述 128. 最长连续序…

【UEditorPlus】后端配置项没有正常加载,上传插件不能正常使用

解决办法&#xff1a; 1、找到UEditorPlus的根目录&#xff0c;修改 ueditor.all.js 文件 搜索&#xff1a;isJsonp utils.isCrossDomainUrl(configUrl); 更改为&#xff1a;isJsonp false; 2、重新运行前端即可正常使用 如果出现依旧不行&#xff0c;请关闭服务&#xff…

后端之卡尔曼滤波

后端之卡尔曼滤波 前言 在很久之前&#xff0c;人们刚结束信息传递只能靠信件的时代&#xff0c;通信技术蓬勃发展&#xff0c;无线通信和有线通信走进家家户户&#xff0c;而著名的贝尔实验室就在这个过程做了很多影响深远的研究。为了满足不同电路和系统对信号的需求&#…

每日一练:LeeCode-48、旋转图像【二维数组+行列交换】

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出…

6、鸿蒙学习-Stage模型应用程序包结构

基于Stage模型开发的应用&#xff0c;经编译打包后&#xff0c;其应用程序的结构如下图应用程序包结构&#xff08;Stage模型&#xff09;所示。开发者需要熟悉应用程序包结构相关的基本概念。 一、在开发态&#xff0c;一个应用包含一个或者多个Module&#xff0c;可以在DevE…

vscode安装vue3+elment-plus

1.用vscode打开打算创建项目的目录 2.命令行中运行以下命令 npm create vuelatest3.设置好项目名称 4.执行以下命令 cd <your-project-name>5.执行以下命令 cnpm install6.执行以下命令安装elment-plus cnpm install element-plus --save7.执行以下命令 npm run dev…

怎样去保证 Redis 缓存与数据库双写一致性?

解决方案 那么我们这里列出来所有策略&#xff0c;并且讨论他们优劣性。 先更新数据库&#xff0c;后更新缓存先更新数据库&#xff0c;后删除缓存先更新缓存&#xff0c;后更新数据库先删除缓存&#xff0c;后更新数据库 先更新数据库&#xff0c;后更新缓存 这种方法是不推…

【明道云】如何让用户可以新增但不能修改记录

【背景】 遇到一个需求场景&#xff0c;用户希望新增数据后锁住数据不让更改。 【分析】 在设计表单时直接将字段设置只读是不行的。字段设置只读将会直接让界面上此字段的前端组件不可编辑。包括新增时也无法填入。显然是不符合需求的。 需要既能新增&#xff0c;新增后又不…