JavaWeb——网络的基本概念

news2024/9/9 0:36:49

目录

一、IP地址

1、定义

2、格式

(1)、A类地址

(2)、B类地址

(3)、C类地址

(4)、特殊地址

二、端口号

三、协议

四、协议分层

1、定义

2、分类 

(1)、OSI七层网络模型

(2)、TCP/IP五层网络模型(当下广泛使用的网络模型)

五、封装和分用

1、封装

(1)、应用层封装数据

(2)、传输层处理应用层的数据

(3)、网络层处理传输层的数据

(4)、数据链路层处理网络层的数据

(5)、物理层处理数据链路层的数据

2、分用

(1)、物理层收到二进制数据

(2)、数据链路层接收物理层数据

(3)、网络层接收数据链路层数据

(4)、传输层接收网络层数据

(5)、应用层接收传输层数据

3、交换机和路由器

(1)、交换机

(2)、路由器

六、主机之间的网络通信流程

1、客户端

(1)、定义

(2)、核心工作

2、服务器

(1)、定义

(2)、核心工作

3、请求

4、响应

5、网络通信流程


一、IP地址

1、定义

IP地址是描述的一个主机在互联网的具体位置,互联网上的每一台主机和网络都被分配了一个IP地址。

IP地址是一个32位的二进制数,通常是4个8位二进制数即4字节。

IP地址通常表示成a.b.c.d的形式,其中每一位可以表示0-255的十进制整数。

每个IP地址又可分为两部分即网络号部分和主机号部分:网络号表示其所属的网络段编号,主机号则表示该网段中该主机的地址编号。根据网络规模大小还可以分成A,B,C,D,E五类。

2、格式

(1)、A类地址

在IP地址的四段编码中,第一段编码为网络编码,后三段编码为主机编码。用二进制表示A类IP地址由1字节的网络地址和3字节主机地址组成。A类IP地址中网络的标识长度为8位,主机标识的长度为24位。

A类网络地址数量较少,可以用于大型网络,地址范围从1.0.0.0到126.255.255.255,子网掩码为255.0.0.0。

(2)、B类地址

在IP地址的四段编码中,前两段编码为网络编码,后两段编码为主机编码。用二进制表示B类IP地址由2字节的网络地址和2字节主机地址组成。B类IP地址中网络的标识长度为16位,主机标识的长度为16位。

B类网络地址适用于中等规模的网络,地址范围从128.0.0.0到191.255.255.255,子网掩码为255.255.0.0。

(3)、C类地址

在IP地址的四段编码中,前三段编码为网络编码,最后一段编码为主机编码。用二进制表示C类IP地址就由3字节的网络地址和1字节主机地址组成。C类IP地址中网络的标识长度为24位,主机标识的长度为8位。

C类网络地址数量较多,适用于小规模的局域网络,地址范围从192.0.0.0到223.255.255.255其子网掩码为255.255.255.0。

(4)、特殊地址

  • 地址0.0.0.0对应当前主机
  • 地址127.0.0.1到127.255.255.255是用于回路测试

二、端口号

服务器有很多应用程序,每个应用程序都对应一个端口号。只有通过端口号客户端才能访问服务器。端口号常用来区分一个主机上的应用程序,我们可以通过端口号去寻找应用程序,并且每台电脑的端口号不能重复

两个不同的进程,不能绑定同一个端口号,但一个进程可以绑定多个端口号。

三、协议

协议是通信双方遵守的同一组约定,发送方约定了一个发送数据的格式,接收方也得理解这个格式,双方相互匹配才能够进行正确的通信。

例:

网络传输本质上都是通过网线等进行传输信息,传输的是一系列高低电平表示0和1的二进制位数,因此在传输前就需要让发送发和接收方约定好每组0和1的意思,这就是协议.

四、协议分层

1、定义

在网络通信中面对复杂的环境需要约定的协议也非常复杂,但是一个协议太复杂不利于管理和使用,因此可以将其拆分为多个协议。

因为协议是可以拆分的,所以存在有些小的协议作用或者定位是类似的。对此我们可以针对这些小协议进行分类,同时针对这些不同的类别进行分层。

分层相当于是约定了层级与层级之间的调用关系:要求上层协议调用下层协议,下层协议给上层协议提供支持,不能跨层调用。

优点:

  • 分层后层次间耦合程度低,上层协议不必了解下层的细节,下层也不必了解上层的细节
  • 方便后续对某一层的协议进行替换

例: 类似于公司的管理机制,上层管理下层,下层为上层服务,但不能跨级调用

2、分类 

(1)、OSI七层网络模型

注:仅仅存在于教科书

(2)、TCP/IP五层网络模型(当下广泛使用的网络模型)

网络通信的下四层不关心传输的数据是做什么的,只有应用层才真正关心数据的用途。

应用层对应的是程序员写的应用程序,下四层则是操作系统内部已经封装好的,因此我们写代码进行网络编程主要工作还是围绕应用层展开的。

五、封装和分用

  • 封装:发送方发送数据,要把数据从上往下,依次交给对应的层次的协议进行封装
  • 分用:接收方收到数据,要把数据从下往上,依次交给对应的层次的协议进行解析

例:A向B发送QQ信息

1、封装

(1)、应用层封装数据

拿到用户数据进行封装,封装成应用层数据包(本质上就是字符串拼接)

(2)、传输层处理应用层的数据

传输层拿到上述数据后,应用层要调用传输层提供的API来处理这个数据。传输层有很多协议,最典型的是TCP和UDP。此处以UDP为例,UDP针对上述数据包再进行封装。

一个典型的数据报都是通过报头+载荷的方式构成的,本质上还是字符串拼接。

将整个应用层数据包作为UDP数据包的数据部分(载荷),UDP协议给应用层数据报加上一个UDP报头,就是为了再贴一层标签,从而在标签上填写必要的属性。

(3)、网络层处理传输层的数据

UDP数据报已经有了,接下来就要把这个数据报交给网络层的协议。网络层最常见的协议就是IP协议。上述的UDP数据报道道网络层还需要进一步的封装,添加上IP协议报头。

源IP和目的IP就描述了这次传输中,最初的起点和最终的终点。

加上一个IP协议的报头,整个UDP数据报作为IP的载荷

(4)、数据链路层处理网络层的数据

数据链路层最典型的协议叫做以太网,是最常见的网络,平时使用网线上网就是用以太网。

mac地址也叫做物理地址,是描述一个主机在网络上的位置。

它的功能和IP地址很相似但是当下把这两个地址分别作用于不同的用途:

  • IP用来进行网络层的路径规划
  • mac用来描述数据链路层中两个即将进行传输的相邻节点。

mac是和网卡绑定的,理论上每个设备都会有一个自己的唯一的mac地址,但是IP则不是。

(5)、物理层处理数据链路层的数据

数据链路层就要把上述以太网数据帧交给物理层,物理层要把上述的二进制数据转换成光信号、电信号等进行传输。

2、分用

接受数据过程和上述封装过程相反,发送方从上到下依次封装新增报头,接受方从下到上依次分用去掉报头。

(1)、物理层收到二进制数据

物理层收到二进制数据后就会对其进行解析,还原成二进制序列。

(2)、数据链路层接收物理层数据

此时把上述二进制序列数据当作一个以太网数据帧,此处从以太网收到的数据就是要交给以太网协议来处理了。

把帧头和帧尾去掉,取出中间的载荷,再往上交给网络层。

以太网数据帧帧头中有一个消息类型,根据这个类型就可以知道网络层是IP协议。

(3)、网络层接收数据链路层数据

此时就由网络层的IP协议进行解析数据报,也是去掉IP报头。最重要的还是取出载荷,交给更上层的传输层IP数据报。

报头也有一个字段,标识当前传输层用的是哪个协议。

(4)、传输层接收网络层数据

此处是由UDP来解析处理,去掉报头取出载荷,把数据交给应用层。借助端口号来区分具体的应用程序,每个要接受网络数据的程序都需要关联上一个端口号。

(5)、应用层接收传输层数据

由QQ这个程序进行解析应用层数据报,取出下列字段放到程序界面中。

3、交换机和路由器

真实的网络环境中,数据的传输中间可能要经历很多节点进行转发。

(1)、交换机

交换机会进行分用,从物理层分用到数据链路层,直到当前这个数据报的目的mac不对就行了。

交换机针对这个数据重新封装,从数据链路层封装到物理层,把数据继续转发。

中间的交换机只需要封装分用到数据链路层(只需要重新封装源mac和目的mac)

(2)、路由器

路由器收到的数据,会从物理层分用到网络层。根据当前得到的目的IP进行下一阶段的寻路操作。IP协议是在一边传输的过程,一边规划路径。

中间的路由器则需要封装分用到网络层(需要重新封装mac地址,同时还需要根据目的IP进行下一阶段的路径规划)

六、主机之间的网络通信流程

1、客户端

(1)、定义

客户端是指与服务器相对应的、为客户提供本地服务的程序。除了一些只在本地运行的应用程序之外,客户端一般安装在普通的客户机上,需要与服务端互相配合运行。

客户端为用户提供服务。

(2)、核心工作

  • 读取用户输入
  • 构造请求,并发送
  • 客户端读取服务器的响应
  • 客户端把响应转成字符串,并显示出来

2、服务器

(1)、定义

服务器端是向网络上的其他机器提供某些服务的计算机系统。接收并储存客户端发送过来的数据或请求,并且对请求进行响应,发送数据给客户端。

(2)、核心工作

  • 读取请求并解析
  • 根据请求计算响应
  • 把响应返回客户端

3、请求

请求是指向服务器发送要求来获取数据进行相关操作。

4、响应

响应是指向服务器申请相关操作,服务器在进行处理之后返回相关内容或者返回请求失败的一个回应。

5、网络通信流程

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

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

相关文章

pytorch进阶学习(六):如何对训练好的模型进行优化、验证并且对训练过程进行准确率、损失值等的可视化,新手友好超详细记录

课程资源: 7、模型验证与训练过程可视化【小学生都会的Pytorch】【提供源码】_哔哩哔哩_bilibili 推荐与上一节笔记搭配食用~: pytorch进阶学习(五):神经网络迁移学习应用的保姆级详细介绍,如何将训练好…

给boss直聘的搜索结果加上hr活跃状态,少看点半年活跃的岗位,有书签版,油猴版

背景:这段时间找工作,无奈大环境不好,所在城市大部分公司都投了。就是没几个回复的,要么送达,要么已读不回,要么拿了简历没见邀约。然后boss为了争取我们多浏览网站,把一些陈年老醋也拿上台面&a…

企业云盘如何实现文件共享?

企业文件共享的方式有很多,最常见的就是使用第三方企业云盘工具进行文件实时共享,这种方法不仅方便安全,而且兼容性高。 企业云盘主要是通过建立企业内部共享文件夹进行文件分享,支持通过权限管控来保障文件的安全,管理…

SonarQube踩坑:本地利用maven进行代码SonarQube静态扫描

1、ERROR: [1] bootstrap checks failed [1]: max virtual memory areas vm.max_map_count SonarQube内置ElasticSearch内存不够 - 解决办法:修改内存配置大小 - 查询当前配置内存:sysctl -a | grep vm.max_map_count - 更改内存大小:sysctl …

SpringBoot集成Camunda流程引擎 (一)

一、匹配版本简介 首先官网camunda7.17对应的springboot版本。camunda官网 camunda中文手册:Camunda 中文站 | docs.camunda.org 使用camunda流程引擎、web界面、Rest服务接口相应依赖如下: 流程引擎:camunda-bpm-spring-boot-starterRest服务接口:camunda-bpm…

深度学习中的两阶段目标检测

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

第五元素奏鸣曲:企业的新数据之道

1997年,吕克贝松指导的经典电影《第五元素》上映,引发了全球的科幻热潮。影片中,各界都在为追逐第五元素而努力。有趣的是,二十年过去,千行百业与亿万企业开始共同追逐一种新的“第五元素”——数据。数据之所以有这个…

走迷宫项目

这个项目主要就是基于easyx图形库来用的 先是把图片加载上去,但是我搞的时候忘记使用双缓冲绘图就会导致这个图片一直闪,而且物体移动会导致图片上面留下痕迹 于是就把双缓冲加上然后把图片也放入循环当中 就不会出现之前的情况; 我的物体移…

CTO:给我一个SpringBoot实现MySQL百万级数据量导出并避免OOM的解决方案

前言 动态数据导出是一般项目都会涉及到的功能。它的基本实现逻辑就是从mysql查询数据,加载到内存,然后从内存创建excel或者csv,以流的形式响应给前端。 参考:https://grokonez.com/spring-framework/spring-boot/excel-file-dow…

软件质量保证与软件测试 第三周(决策表+黑盒测试总结)+第四周(路径测试(白盒测试的一种)+各种覆盖判定的计算)

继续上周的等价类测试用例,例题3:佣金问题等价类测试用例 题目: 弱一般:max (2, 1, 1) 2 强一般:2*1*1 2 弱健壮:2 3*2 8 强健壮:4 * 3 * 3等价类的观察总结: 第三周 决…

DC3算法生成后缀数组详解

文章目录1、何为后缀数组2、暴力生成后缀数组3、用DC3算法生成后缀数组的流程4、DC3算法代码实现C版Java版5、DC3算法的地位1、何为后缀数组 假设有一个字符串 “aabaabaa”,从每个位置开始往后到最后一个位置得到的所有的「后缀字符串」” 下标7开头:…

电商项目8:平台属性

电商项目8&#xff1a;平台属性1、后端1.1、属性分组模糊查询1.2、商品属性新增功能&#xff1a;保存关联关系1、后端 1.1、属性分组模糊查询 需要改造。当前端传0时候。模糊查询功能有点问题 AttrGroupServiceImpl Overridepublic PageUtils queryPage(Map<String, Obje…

Java 进阶(10) 线程生命周期

线程的生命周期 五种基本状态 当线程被创建并启动以后&#xff0c;它既不是⼀启动就进⼊了执⾏状态&#xff0c;也不是⼀直处于执⾏状态。 新建状态&#xff08;New&#xff09; 当线程对象对创建后&#xff0c;即进⼊了新建状态&#xff0c;如&#xff1a; Thread t new M…

微服务架构中多级缓存设计

一.Nginx 缓存管理 在 Nginx 中自带将后端应用中图片、CSS、JS 等静态资源缓存功能&#xff0c; 我们只需在 Nginx 的核心配置 nginx.conf 中增加下面的片段&#xff0c; 便可对后端的静态资源进行缓存&#xff0c;关键配置我已做好注释&#xff0c; 可以直接使用; # 设置缓存…

同源策略与跨域

同源:协议、域名、端口号 必须完全相同。 违背同源策略就是跨域。 例如&#xff1a; 协议&#xff1a;http或者是https 域名&#xff1a;www.xxx.com 端口号&#xff1a;80&#xff0c;8000等。 同源&#xff1a;同一个来源。 同源&#xff1a;可以直接简写服务器页面的地址。…

激活数字营销新引擎,亚马逊云科技为企业带来数字化营销新体验

随着流量红利逐渐消失&#xff0c;营销触点呈现多元化&#xff0c;消费者决策变得复杂&#xff0c;利用数字化激活新的营销引擎成为破局关键。亚马逊云科技联合合作伙伴&#xff0c;基于智能湖仓打造了4个解决方案领域&#xff1a;一方数据平台、客户数字体验、广告智能分析、隐…

工具-win11系统,微软自带输入法输入“sj” 显示时间 【2022年01月11日 10:16:49】格式

文章目录1、前提2、操作3、碎碎念4、更新 2023年04月13日1、前提 下载某某输入法&#xff0c;输入“sj” 会自动显示【2023-04-11 09:57:01 】这样的格式&#xff0c;微软自带的输入法是显示【09点57分】的格式&#xff0c;但是由于个人工作学习需要&#xff0c;所以前者的键入…

FreeRTOS 任务调度及相关函数详解(二)

文章目录一、任务创建函数 xTaskCreate()二、任务初始化函数 prvInitialiseNewTask()三、任务堆栈初始化函数 pxPortInitialiseStack()四、添加任务到就绪列表 prvAddNewTaskToReadyList()五、任务删除 vTaskDelete()六、任务挂起 vTaskSuspend()七、任务恢复 vTaskResume()一、…

shadow机械手臂系统

机械手臂系统 Shadow机械手臂系统是由美国Shadow Robot Company开发的一款高精度机械手臂系统&#xff0c;主要用于工业自动化、医疗器械、科学研究等领域。Shadow机械手臂系统采用了多自由度的设计&#xff0c;可以实现高精度的三维运动和灵活的操作&#xff0c;其控制系统还支…

ds18b20-温度传感器-linux驱动-混杂设备

文章目录ds18b20读取温度数据步骤ds18b20时序图&#xff1a;初始化时序DS18B20初始化时序的步骤&#xff1a;读/写时序DS18B20写步骤&#xff1a;DS18B20读步骤&#xff1a;DS18B20驱动实现结果如下&#xff1a;参考&#xff1a;ds18b20读取温度数据步骤 初始化&#xff1a;将…