【JavaEE -- 网络初识】

网络初识

  • 1. 局域网和广域网
    • 1.1 局域网(LAN)
    • 1.2 广域网WAN
  • 2. 网络通信基础
    • 2.1 IP地址
    • 2.2 端口号
  • 3. 协议 -- 重点
    • 3.1 网络通信协议拆分成多层
    • 3.2 TCP/IP 五层网络协议
  • 4. 封装和分用
    • 4.1 封装过程
    • 4.2 分用过程
    • 4.3 网络传输的数据单位
  • 5. 网络编程中的客户端和服务器
    • 5.1 客户端和服务器之间交互模式

1. 局域网和广域网

1.1 局域网(LAN)

  • 局域网,Local Area Network,Local即标识了局域网是本地,局部组建的一种私有网络。
  • 局域网内主机之间能方便的进行网络通信,又称内网;局域网和局域网之间在没有连接的情况下是无法通信的
  • 常见的组建局域网的方式是通过路由器或者交换机

1.2 广域网WAN

  • 广域网,Wide Area Network,简称WAN。
  • 通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部局域网都属于其子网。

== 常见笔试题==:交换机和路由器的区别
路由器是工作在网路层,交换机是工作在数据链路层

2. 网络通信基础

2.1 IP地址

  • IP地址,描述了一个设备在网络上的位置。
  • 计算机中通过数字来描述地址,本质上是32位,4个字节的整数。为了方便表示,把IP地址表示成点分十进制,使用三个符号 . (点)来把这4个字节分成4个部分,每个部分1个字节取值范围是0-255。

2.2 端口号

  • 描述一个主机上的哪个应用程序。有了IP地址可以确定主机,但是一个主机上可能有很多个程序在使用网络
  • 主机收到网络数据就需要区分出是交给哪个程序使用数据
  • 每个程序在进行网络通信过程中,都需要一个端口号(可能是用户手动指定也可能是系统自动分配的)。
  • 同一个主机上,程序之间使用的端口号不能冲突

进行一次网络通信的过程中,涉及到的IP和端口其实各有两个,有目的IP和目的端口,源IP和源 端口

3. 协议 – 重点

协议,是一种通信过程中的约定,发送方和接收方需要提前商量好数据的格式,才能确保两者之间能正确进行沟通。

3.1 网络通信协议拆分成多层

  • 把功能定位相似的协议放到同一层之中。
  • 上层协议会调用下层协议的功能
  • 下层协议给上层提供服务
  • 只有相邻的层次之间可以进行沟通,不能跨层次调用

协议分层是为了让复杂的一个协议变成更简单的多个协议:

  1. 上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议把细节封装好了)。比如只要会说汉语就能打电话,不需要了解电话的工作原理。
    2.某一层的协议进行替换之后,对于其他层没有影响

3.2 TCP/IP 五层网络协议

OSI 七层网络协议简化为 TCP/IP 五层协议。
在这里插入图片描述

  • 应用层:传输的数据在应用程序中如何使用
  • 传输层:负责关注 网络数据包 的起点和终点
  • 网络层:负责关注 通信中的路径规则,(起点终点之间走那条路)
  • 数据链路层: 负责关注 相邻节点之间的通信细节
  • 物理层: 网络通信的基础设施

主机,它的操作系统内核实现从传输层到物理层的内容,即TCP/IP的下四层。
路由器,它实现了从网络层到物理层,下三层。
交换机,实现了从数据链路层到物理层,下两层。
集线器,只实现了物理层。

路由器工作在网络层,交换机工作在数据链路层,这里的路由器和交换机指的是经典的路由器交换机。事实上,很多交换机也具有一些路由器的功能,也能工作在网络层。很多路由器,也具有一些交换机的功能,也能工作在数据链路层

4. 封装和分用

封装和分用是网络传输数据过程中最核心的流程。

4.1 封装过程

假设A通过QQ给B发送一个hello。

  1. 应用层(应用程序qq):
    QQ从消息输入框获取到用户输入的hello,就把这个字符串构造成一个应用层的数据包,然后设置一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式来构造的。随后应用程序就会调用操作系统提供的api,把这个数据包交给传输层
    在这里插入图片描述
  2. 传输层:
    传输层就会把上述数据作为一个整体,再构造成一个传输层的数据包。传输层涉及的协议,主要是TCP和UDP,此处假定使用UDP来进行通信,就会构成一个UDP的数据包。随后调用下层协议提供的api,并且把刚才构造好的数据通过参数传过去,下层协议进行处理数据。即调用网络层,网络层继续进行封装。
    在这里插入图片描述
  3. 网络层:
    网络层涉及的最核心的协议是IP协议。网络层IP协议,把传输层的UDP数据包作为一个整体,再拼上一个IP协议的报头,构造成一个IP数据包构造完之后IP协议继续调用数据链路层的api,把数据交给数据链路层这里的协议进行处理
    在这里插入图片描述
  4. 数据链路层:
    数据链路层的核心协议:以太网,以IP数据包作为一个整体,在这个基础上添加帧头和帧尾。然后调用物理层的api。
    在这里插入图片描述
  5. 物理层 :
    也就是硬件设备,把以太网数据帧,二进制结构(一串0 1 这样的数据),转换成光信号(光纤)/电信号(网线)/电磁波(无线wifi),然后进行发送。

4.2 分用过程

暂时不考虑中间过程,假定数据包已经到达B的网卡了,B的处理过程就叫分用。

  1. B的物理层,
    收到了 光信号/电信号/电磁波,就会把这些物理信号 转换成 数字信号。得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层。
  2. 数据链路层:
    按照以太网数据帧的格式来解析,取出其中的载荷,再交给上层协议。
    在这里插入图片描述
  3. 网络层 IP协议:
    按照IP协议的格式进行解析,取出其中的载荷交给上层协议。
    在这里插入图片描述
  4. 传输层UDP协议:
    按照UDP协议进行解析,并且取出载荷交给上层协议
    在这里插入图片描述
  5. 应用层 QQ程序:
    按照QQ应用程序内部的应用层协议格式来进行解析数据。
    qq程序拿到这些信息之后在窗口弹出展示,即显示到聊天窗口上。

4.3 网络传输的数据单位

  • 包(packet) IP数据包
  • 段(segment) TCP数据段
  • 报(datagram) UDP数据报
  • 帧(frame) 以太网数据帧

5. 网络编程中的客户端和服务器

  • 在网络中主动发起通信的这一方,称为 客户端,被动接受的这一方,称为 服务器。
  • 同一个程序在不同的场景中,可能是 客户端也可能是服务器。
  • 客户端给服务器发送的数据,称为请求(request)
  • 服务器在客户端返回的数据,称为响应(response)

5.1 客户端和服务器之间交互模式

  1. 一问一答:一个请求对应一个响应,如网站开发
  2. 一问多答:一个请求对应多个响应,如下载。
  3. 多问一答:多个请求对应一个响应,如上传。
  4. 多问多答:一个请求可能对应多个响应,一个响应也可能对应多个请求。如远程控制,进行鼠标键盘操作,都会作为一个的请求发送,看到的画面,作为响应。

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

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

相关文章

Java基础-反射

文章目录 1.快速入门1.案例引入2.代码实例3.反射机制原理图 2.反射相关类1.反射获取类的成员代码实例结果 2.反射调用优化1.关闭访问检查2.代码实例 3.Class类1.类图2.基本介绍3.Class类常用方法代码实例结果 4.获取Class类对象代码实例结果 5.哪些类型有Class对象 4.类加载1.基…

学习刷题-13

3.23 hw机试【二叉树】 剑指offer32 剑指 offer32(一、二、三)_剑指offer 32-CSDN博客 从上到下打印二叉树I 一棵圣诞树记作根节点为 root 的二叉树,节点值为该位置装饰彩灯的颜色编号。请按照从 左 到 右 的顺序返回每一层彩灯编号。 输…

Spring Cloud Alibaba Sentinel 使用详解

一、Sentinel 介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: 丰富的应用场景: Sentinel 承接了阿里巴…

微服务(基础篇-003-Nacos集群搭建)

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 视频地址: 06-Nacos配置管理-nacos集群搭建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p29&…

Vue字符串里的中文数字转换为阿拉伯数字

js字符串里的汉字数字转化为数字 <template><view><view><view class"inpbox" ><textarea v-model"voiceMane" input"convert" ></textarea></view></view></view> </template> &…

SpringCloudAlibaba之Nacos Config

1、服务配置中心介绍 首先我们来看一下,微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相对分散。在一个微服务架构下&#xff0c;配置文件会随着微服务的增多变的越来越多&#xff0c;而且分散在各个微服务中&#xff0c;不好统一配置和管理。配置文件无法区分环境…

【windows】安装 Tomcat 及配置环境变量

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

Protobuf基础使用

Protobuf是什么 在我们日常编写代码的过程中&#xff0c;经常会涉及到网络传输的部分。我们通常会在网络之间传递各种各样的请求&#xff0c;但是在我们日常架构之中&#xff0c;经常会涉及后端服务器之间的通信&#xff0c;通信过程中&#xff0c;可能传递的对象就是一个类。…

大数据基础:Linux基础详解

课程介绍 本课程主要通过对linux基础课程的详细讲解&#xff0c;让大家熟练虚拟机的安装使用&#xff0c;Linux系统的安装配置&#xff0c;学习掌握linux系统常用命令的使用&#xff0c;常用的软件安装方法&#xff0c;制作快照&#xff0c;克隆&#xff0c;完成免密登录&…

springboot企业级抽奖项目业务三(活动模块)

梅开三度 开发流程 该业务基于rouyi生成好了mapper和service的代码&#xff0c;现在需要在controller层写接口 实际操作流程&#xff1a; 看接口文档一>controller里定义函数一>看给出的工具类一>补全controller里的函数一>运行测试 接口文档 在用户模块用户…

泰迪智能科技荣获山东省“技能兴鲁”职业技能大赛优秀组织奖

近日&#xff0c;泰迪智能科技荣获了山东省“技能兴鲁”职业技能大赛——第四届山东省“云数”技能竞赛“优秀组织单位”。 据悉&#xff0c;山东省“技能兴鲁”职业技能大赛——第四届山东省“云数”技能竞赛是由山东电子学会、山东省信息产业协会主办的&#xff0c;该竞赛是通…

32.HarmonyOS App(JAVA)鸿蒙系统app类自动生成GetSet方法

1.空白区域右键单击 2.选择Generate 3.选择getter,setter 4.选择列出的所有项 5.点击OK 6.成功生成。

说一说Java中的四种引用类型?

引言 在JDK1.2之前Java并没有提供软引用、弱引用和虚引用这些高级的引用类型。而是提供了一种基本的引用类型&#xff0c;称为Reference。并且当时Java中的对象只有两种状态&#xff1a;被引用和未被引用。当一个对象被引用时&#xff0c;它将一直存在于内存中&#xff0c;直到…

Spring Boot 实现定时任务动态管理

前言 本文主要介绍了SpringBoot架构下动态定时任务的使用&#xff0c;定时任务表达式配置在数据库中&#xff0c;通过反射执行到目标方法。 Quartz Quartz 是一个开源的作业调度框架,支持分布式定时任务&#xff0c;Quartz定时任务据我了解可分为Trigger&#xff08;触发器&…

毕业论文降重(gpt+完美降重指令),sci论文降重gpt指令——超级好用,重复率低于4%

1. 降重方法&#xff1a;gpt降重指令 2. gpt网站 https://yiyan.baidu.com/ https://chat.openai.com/ 3. 降重指令——非常好用&#xff01;&#xff01;sci论文&#xff0c;本硕大论文都可使用&#xff01; 请帮我把下面句子重新组织&#xff0c;通过调整句子逻辑&#xff0…

nvidia显卡如何安装cuda驱动

目录 查看显卡对应的cuda版本下载与你显卡匹配的CUDA Toolkit 查看显卡对应的cuda版本 按 微软 R 键&#xff0c;输入cmd 然后输入 nvidia-smi &#xff0c;回车显示下面信息&#xff1a; 看到 CUDA Version 为 12.2 下载与你显卡匹配的CUDA Toolkit 打开网页&#xff1a…

【项目管理——时间管理】【自用笔记】

1 项目时间管理&#xff08;进度管理&#xff09;概述 过程&#xff1a;&#xff08;2—6&#xff09;为规划过程组&#xff0c;7为监控过程组 题目定义&#xff1a;项目时间管理又称为进度管理&#xff0c;是指确保项目按时完成所需的过程。目标&#xff1a;时间管理的主要目标…

疲劳检测YOLOV8

疲劳检测YOLOV8&#xff0c;只需要OPENCV&#xff0c;采用YOLOV8训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV调用&#xff0c;支持C/PYTHON/ANDROID开发疲劳检测YOLOV8

嵌入式开发--获取STM32产品系列的信息

嵌入式开发–获取STM32产品系列和容量信息 获取STM32产品系列 有时候我们需要知道当前MCU是STM32的哪一个系列&#xff0c;这当然可以从外部丝印看出来&#xff0c;但是运行在内部的软件如何知道呢&#xff1f; ST为我们提供了一个接口&#xff0c;F1和G4系列地址统一为&…

第十四届蓝桥杯省赛C++ A组所有题目以及题解(C++)【编程题均通过100%测试数据】

第一题《幸运数》【模拟】 【问题描述】 小蓝认为如果一个数含有偶数个数位&#xff0c;并且前面一半的数位之和等于后面一半的数位之和&#xff0c;则这个数是他的幸运数字。例如 2314是一个幸运数字,因为它有4个数位,并且2314。现在请你帮他计算从1至100000000之间共有多少…