【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://www.mzph.cn/news/777940.shtml

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

相关文章

Git--08--Git分支合并操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Git分支合并操作案例流程客户端&#xff1a;GitExtensions操作步骤&#xff1a;A操作步骤&#xff1a;B操作步骤&#xff1a;C操作步骤&#xff1a;D操作步骤&#…

Vue挂载全局方法

简介&#xff1a;有时候&#xff0c;频繁调用的函数&#xff0c;我们需要把它挂载在全局的vue原型上&#xff0c;方便调用&#xff0c;具体怎么操作&#xff0c;这里来记录一下。 一、这里以本地存储的方法为例 var localStorage window.localStorage; const db {/** * 更新…

LockSupport与线程中断机制

中断机制是个协商机制 Interrupt(): 将中断状态设置为true Interrupted():&#xff08;静态方法&#xff09; 1.返回当前线程的中断状态 2.将中断状态清零并设置为false is Interrupted(): 判断当前线程是否被中断 如何停止中断运行中的线程&#xff1f; 一个线程不应该由…

星光/宝骏/缤果/长安 车机CarPlay手机操作破解教程V2.0版本(无需笔记本、无需笔记本、无需笔记本)

之前写了个1.0版本&#xff0c;由于太局限&#xff0c;需要用到笔记本才能操作&#xff0c;很多车友反馈不方便。特此出个手机版教程&#xff0c;简单easy&#xff0c;妈妈再也不用担心我搞不定啦 一、准备工作 先卸载车机上的autokit 或者 智能互联 app&#xff0c;这步很关…

echarts 3D示例 echart, echarts-gl

echarts官网有很多的炫酷的3D模型 来尝试实现下&#xff0c;使用原本的柱状图或者折线图代码创建echarts示例,使用cdn的方式引入echarts <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewp…

.helper勒索病毒的最新威胁:如何恢复您的数据?

导言&#xff1a; 随着信息技术的不断进步&#xff0c;网络安全问题日益突出&#xff0c;其中勒索病毒成为了威胁网络安全的一大隐患。.helper勒索病毒作为近期频繁出现的一种恶意软件&#xff0c;其危害性和传播速度引起了广大用户的深切关注。本文将深入探讨.helper勒索病毒…

人工智能(pytorch)搭建模型26-基于pytorch搭建胶囊模型(CapsNet)的实践,CapsNet模型结构介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型26-基于pytorch搭建胶囊模型(CapsNet)的实践&#xff0c;CapsNet模型结构介绍。CapsNet&#xff08;Capsule Network&#xff09;是一种创新的深度学习模型&#xff0c;由计算机科学家Geo…

联想 lenovoTab 拯救者平板 Y700 二代_TB320FC原厂ZUI_15.0.677 firmware 线刷包9008固件ROM root方法

联想 lenovoTab 拯救者平板 Y700 二代_TB320FC原厂ZUI_15.0.677 firmware 线刷包9008固件ROM root方法 ro.vendor.config.lgsi.market_name拯救者平板 Y700 ro.vendor.config.lgsi.en.market_nameLegion Tab Y700 #ro.vendor.config.lgsi.short_market_name联想平板 ZUI T # B…

SQL Server 数据库常见提权总结

前面总结了linux和Windows的提权方式以及Mysql提权&#xff0c;这篇文章讲讲SQL Server数据库的提权。 目录 基础知识 权限判定 系统数据库 存储过程 常见系统存储过程 常见扩展存储过程 xp_cmdshell扩展存储过程提权 xp_dirtree写入文件提权 sp_oacreate提权 xp_re…

Flutter 中的 ScrollNotification 为啥收不到

1. 需求 在做智家 APP 悬浮窗优化需求时&#xff0c;需要获取列表的滑动并通知悬浮窗进行收起或全部显示。 基础库同事已经把 基础逻辑整理好如下&#xff1a; NotificationListener<ScrollNotification>(onNotification: (notification){//1.监听事件的类型if (notif…

使用API有效率地管理Dynadot域名,使用API获得域名转移密码

关于Dynadot Dynadot​​​​​​​是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#x…

vue3+threejs新手从零开发卡牌游戏(十九):添加战斗事件

接上一节实现画线后&#xff0c;现在可以根据鼠标移动位置判断是否选中了对方区域怪兽卡牌&#xff1a; 修改game/index.vue代码&#xff0c;在画线方法中添加获取目标对象方法&#xff1a; const selectedCard ref() // 选中的场上card const selectedTargetCard ref() // …

【冥想X理工科思维】场景13:系统上线遭遇崩溃…

冥想音频合集&#xff1a;职场解压冥想音频 压力场景&#xff1a; 我搭建的系统刚刚在客户那边上线不到三天&#xff0c;系统就崩溃了&#xff0c;客户打电话来对我破口大骂&#xff0c;我该如何借助冥想调整面对客户时的压力&#xff1f; 点击看大图&#xff1a; 详细说明&…

从零开始的软件开发实战:互联网医院APP搭建详解

今天&#xff0c;笔者将以“从零开始的软件开发实战&#xff1a;互联网医院APP搭建详解”为主题&#xff0c;深入探讨互联网医院APP的开发过程和关键技术。 第一步&#xff1a;需求分析和规划 互联网医院APP的主要功能包括在线挂号、医生预约、医疗咨询、健康档案管理等。我们…

uniApp使用XR-Frame创建3D场景(7)加入点击交互

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解如何与场景中的模型交互&#xff08;点击识别&#xff09; 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"><xr-node><xr-mesh id"…

网络socket编程(一)——socket接口函数、面向数据报的UDP编程及测试、select函数应用

目录 一、socket简介 二、socket编程接口函数介绍 2.1 socket()函数&#xff08;创建socket&#xff09; 2.2 bind()函数&#xff08;绑定地址和端口&#xff09; 2.3 listen()函数&#xff08;设置socket为监听模式&#xff09; 2.4 accept()函数&#xff08;接受连接…

jupyter notebook的各种问题和解决办法

安装jupyter&#xff0c;无法启动&#xff0c;或者经常crash 解决办法&#xff1a; 1,不要安装anaconda全家桶&#xff0c;速度慢&#xff0c;而且会安装另外一套python和库&#xff0c;导致代码跑不起来&#xff0c;容易crash。 2&#xff0c;直接安装jupyter&#xff1a; p…

八大技术趋势案例(人工智能物联网)

科技巨变,未来已来,八大技术趋势引领数字化时代。信息技术的迅猛发展,深刻改变了我们的生活、工作和生产方式。人工智能、物联网、云计算、大数据、虚拟现实、增强现实、区块链、量子计算等新兴技术在各行各业得到广泛应用,为各个领域带来了新的活力和变革。 为了更好地了解…

Spark-Scala语言实战(6)

在之前的文章中&#xff0c;我们学习了如何在scala中定义与使用类和对象&#xff0c;并做了几道例题。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-S…

HCIA-Datacom H12-811 题库补充(3/28)

完整题库及答案解析&#xff0c;请直接扫描上方二维码&#xff0c;持续更新中 OSPFv3使用哪个区域号标识骨干区域&#xff1f; A&#xff1a;0 B&#xff1a;3 C&#xff1a;1 D&#xff1a;2 答案&#xff1a;A 解析&#xff1a;AREA 号0就是骨干区域。 STP下游设备通知上游…