Java EE 网络之网络初识

文章目录

  • 1. 网络发展史
    • 1.1 独立模式
    • 1.2 网络互连
    • 1.3 局域网 LAN
    • 1.4 广域网 WAN
  • 2. 网络通信基础
    • 2.1 IP 地址
    • 2.2 端口号
    • 2.3 认识协议
    • 2.4 五元组
    • 2.5 协议分层
      • 2.5.1 什么是协议分层
      • 2.5.2 分层的作用
      • 2.5.3 OSI七层协议
      • 2.5.4 TCP/IP五层协议
      • 2.5.5 网络设备所在分层
    • 2.6 分装和分用

1. 网络发展史

1.1 独立模式

独立模式:计算机之间相互独立

1.2 网络互连

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。

网络互连:将多台计算机连接在⼀起,完成数据共享。

数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为⽹络通信。

根据网络互连的规模不同,可以划分为局域网和广域网

1.3 局域网 LAN

局域网,即 Local Area Network,简称LAN。
Local 即标识了局域网是本地,局部组建的⼀种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网组建网络的方式有很多种:
1)基于网线直连
2)基于集线器组建
3)基于交换机组建
4)基于交换机和路由器组建

1.4 广域网 WAN

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

2. 网络通信基础

网络互联的目的是进行网络通信,也是网络数据传输,更具体一点,是网络主机中的不同进程间,基于网络传输数据

那么,在组建的网络中,如何砍断到底是从那太主机传来的呢?

接下来我们就认识一下通信的基础知识

2.1 IP 地址

概念:
IP 地址,描述了一个设备,在网络上的地址
简单说,IP地址用于定位主机的⽹络地址


格式:

IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节)
如 01100100.00000100.00000101.00000110

通常⽤“点分⼗进制”的⽅式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的⼗进制整数)
如:100.4.5.6

2.2 端口号

概念:
在网络通信中,IP地址⽤于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。

简单说:端口号⽤于区分知己上不同的应用程序


格式:
端口号是0~65535范围的数字(两个字节),在网络通信中,进程可以通过绑定⼀个端口号,来发送及接收网络数据

不同的程序就可以关联/绑定到不同的端口号
一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口


0 一般不使用

1 - 1023 这个范围的端口,系统留作特殊用途,我们一般写的长须不应该占用
这是知名端口号,留给一些比较创建的服务器程序使用
22 -> ssh
23 -> telnet
80 -> http
443 -> https


实际的通信过程中,IP 的 端口 往往是“一对”

类似发送快递时,不光需要指定收货地址(IP地址),还需要指定收货⼈(端口号)

在这里插入图片描述

2.3 认识协议

网络 本质是通过 光/电 信号来传输数据
比如,低电平表示 1,高电平表示 0;高平光信号表示 1,低频光信号表示 0

协议就是一种约定,约定了通信双方按照啥样的方式来传递数据

协议,就只是单纯的约定,并不会很复杂的
由于网络通信的世界中,遇到的场景/问题往往比较棘手,确实有一些网络协议是比较复杂的

2.4 五元组

五元组是一次通信过程中必不可少的信息

  1. 源IP:标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识⽬的主机
  4. 目的端口号:标识⽬的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双⽅约定的数据格式

2.5 协议分层

2.5.1 什么是协议分层

在平时写代码中,如果一个代码越写越多,越写越复杂,往往需要把代码给拆分成多个部分

拆分之后能够更好的理解

网络通信的场景会比较复杂,有很多问题需要通过协议来进行解决
如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大,非常复杂就不利于人们去学习和理解.
相比之下,也可以把大的协议,拆分成多个小的协议,让每个小的协议只专注于做一小块事情
使每个小的协议,都不会太复杂 ( 化繁为简 )

由于网络通信实在太复杂,拆分就拆出来太多的小的协议,这么多小的协议也就不好管理了,就需要对协议进行分层了

所谓分层,就是按照协议的定位/作用 进行分类
并且约定了不同层次之间的“调用关系”
“上层协议,调用下层协议”
“下层协议给上层协议提供支持”
此时,这么多协议就不容易混乱


2.5.2 分层的作用

  1. 协议分层之后,上层和下层 彼此之间就进行了封装
    使用上层协议,不必过多关注下层
    使用下层协议,不必过多关注上层
    大大降低了使用者的使用成本
    在这里插入图片描述
  2. 每一层协议都可以根据需要灵活替换
    在这里插入图片描述

2.5.3 OSI七层协议

仅仅出现在教科书中
OSI:即Open System Interconnection,开放系统互连
• OSI 七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层
• OSI 七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传输
在这里插入图片描述
在这里插入图片描述

2.5.4 TCP/IP五层协议

是 OSI 七层模型的简化版本
在这里插入图片描述
下面四层叫法可能有差异,但是具体还是一样的

  1. 物理层:描述的是网络通信的硬件设备
    好比 基础设施:公路、铁路
    比如使用的网线,光纤是什么规格
  2. 数据链路层:两个相邻节点之间的数据传输情况
  3. 网络层:进行路径规划
  4. 传输层:关注起点和终点
  5. 应用层:应用程序 如何使用这个数据(程序员最需要关注的一点)

有些资料会说“TCP/IP 四层协议”
是因为这里没有算物理层
(物理层偏硬件,我们大部分关注的是软件)


在这里插入图片描述
在这图的侧面,是这五层在操作系统中的应用

  1. 应用层,就是对应到应用程序(我们代码写的软件)
  2. 操作系统的内核(传输层和网络层)
    这里的内容是线程的,不需要手动写
  3. 驱动程序 + 硬件

2.5.5 网络设备所在分层

• 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
• 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层
• 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
(交换机的作用,是针对路由器的端口进行扩展,路由器上的端口可能有限,不够用)
• 对于集线器,它只实现了物理层
(在物理层,把网线一分为二)

注意 我们这⾥说的是传统意义上的交换机和路由器,也称为⼆层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)

随着现在⽹络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器
甚至说一些高端的交换机,也有路由器公共
另一方面,路由器见换机可能还会支持一些更复杂的操作,甚至可能会在传输层或者应用层

2.6 分装和分用

分装和分用,描述了网络通信过程中,基本的数据传输流程


举个栗子:
考虑 A 通过 QQ 把 hello 传递给 B

发送方:

  1. 应用层
    QQ 应用程序,QQ 就会把用户输入的“hello”,打包成一个应用层的数据报(这个数据报的格式,只有QQ 的程序员知道)
    假如:
    在这里插入图片描述
    在这里插入图片描述
    这四个字段,使用‘,’来分割
    这里就构成了一个简单的应用层数据报(字符串拼接)
    上述描述的规则,就是此处我们约定的应用层协议
    具体是用几个字段,字段的顺序如何,使用什么符号分隔
    都是可以灵活调整的.
    (应用层协议,往往是根据具体的场景,具体的需要,由程序员自主决定的)
    这样就可以把应用层数据报,通过操作系统的 api ,把数据交个 传输层
  2. 传输层
    就要对刚才的应用层数据,在进行打包,编程传输层的数据报
    这里的打包过程,本质上还是“字符串拼接”
    把刚才的应用层数据,基础上拼接上传输层的报头
    (传输层典型的协议,TCP,UDP)
    在这里插入图片描述
    一个数据报 = 报头 + 载荷(也是字符串的拼接)
    UDP 报头其实是一组二进制数据
    UDP 报头中最关键的信息就是“源端口” 和 “目的端口
    进行封装的过程,就是给数据增加更多的“辅助信息”的过程
    传输层数据报搞好了之后,这个数据又会进一步的交给网络层
  3. 网络层
    网络层最重要的协议,是 IP 协议
    在这里插入图片描述
    IP 报头里面包含很多重要的属性,其中最重要的属性就是 源 IP 和 目的 IP
    网络层的数据打包好了之后,继续把数据交给“数据链路层”再来进一步打包
  4. 数据链路层
    最重要的是 以太网
    在这里插入图片描述
    以太网报头中,包含的最重要的信息就是 源 mac 地址,目的 mac 地址
    这两个地址也是用来描述一个设备在网络上的地址的
    再把这个数据交给物理层
  5. 物理层
    把上述数据,转换成 2 进制 的 0 1 序列
    通过光信号/电信号进行传输

从上层协议到下层协议,层层给数据报添加报头
这个过程称为:封装

数据发送出去之后,就会经过一系列的交换机和路由器进行转发
A 和 B 一般来说不是直接网线连接的,中间还要经过很多的交换机/路由器设备进行转发

当数据到达 B 这里之后,B 就要针对上述数据进行“分用”
(针对上述数据进行层层的解析)

接收方:

  1. 物理层
    拿到光电信号 之后 转化为二进制数据,进一步得到以太网数据报
    这个数据要交给数据链路层对应的协议处理

  2. 数据链路层
    通过以太网协议,针对以太网数据报进行解析
    这个解析过程就会解析出 报头 和 报尾,以及中间的载荷
    把载荷部分,进一步的再交给网络层的协议来处理
    在这里插入图片描述

  3. 网络层
    IP 协议,再进一步的准对网络层数据报进行解析,去掉报头,拿到载荷,再进一把载荷数据交个上层(传输层)
    在这里插入图片描述

  4. 传输层
    此处使用 UDP 协议,针对这个数据报进行解析,拿到载荷,去掉报头,把载荷数据进一步的交给上层(应用层)
    根据端口号来区分把数据交个哪个应用程序
    在这里插入图片描述

  5. 应用层
    把上述数据根据端口号,交给 QQ 这个程序
    在这里插入图片描述
    QQ 这个程序就要进一步解析这里的数据,这个解析过程也就是按照前面程序员自定义的应用层协议来展开的
    此时,取出 hello 最终显示到界面上即可

数据报在网络中间还会经历一定的转发过程

如果经过路由器:就会封装分用到网络层
路由器解析到网络层,拿到 IP 地址,决定进一步如何传输
下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装

如果经过交换机:就会封装分用到数据链路层

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

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

相关文章

Leetcode的AC指南 —— 链表:24. 两两交换链表中的节点

摘要: Leetcode的AC指南 —— 链表:24. 两两交换链表中的节点。题目介绍:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能…

【OpenHarmony 北向应用开发】ArkTS语言入门(构建应用页面)

ArkTS语言入门 在学习ArkTS语言之前,我们首先需要一个能够编译并运行该语言的工具 DevEco Studio。 了解ArkTS ArkTS是OpenHarmony优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继…

【MyBatis-Plus】常用的插件介绍(乐观锁、逻辑删除、分页)

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于MyBatis-Plus的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.为什么要使用MyBatis-Plus中的插…

【C语言】随机数生成详解,手把手教你,保姆级!!!

目录 rand函数 srand函数 time函数 设置随机数范围 拓展--猜数字游戏 总结 rand函数 C语⾔提供了⼀个函数叫 rand,这函数是可以⽣成随机数的,函数原型如下所⽰ int rand (void); rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAN…

Linux(操作系统)面经——part 1(持续更新中......)

1、说一说常用的 Linux 命令 mkdir创建文件夹,touch创建文件,mv移动文件内容或改名 rm-r 文件名:删除文件 cp拷贝:cp 文件1 文件2,cp-r跨目录拷贝 cp-r 路径1 路径2 vi 插入 :wqb保存退出 :q!强制退出…

【Axure教程】区间评分条

区间评分条是一种图形化的表示工具,用于展示某一范围内的数值或分数,并将其划分成不同的区间。这种评分条通常用于直观地显示数据的分布或某个指标的表现。常用于产品评价、调查和反馈、学术评价、健康评估、绩效评估、满意度调查等场景。 所以今天作者…

DOM树和DOM对象与JS关系的深入研究

const和let使用说明 var不好用,我们如果用变量都是用let,如果用常量乃是不变的量,我们用const,见let const知变量是否可变。比如一个常量在整个程序不会变,但是你用let,是可以的。但是let最好与内部变量改…

《洛谷深入浅出进阶篇》简单数据结构

本篇文章内容如下,请耐心观看,将持续更新。 简单数组 简单栈 简单队列 简单链表 简单二叉树 简单集合 图的基本概念 二叉堆 线段树 树状数组与字典树 线段树进阶 简单数组: STL可变数组 vector " 我们首先要知道这个容器有什…

Java多线程编程学习

1 线程的概念 多线程是指同一个程序同时存在多个“执行体”,它们可以同时工作 1.1 进程的概念 一次程序的每一次运行都叫做进程(一个进程可以包含多个线程 1.2 线程的概念 多线程是指一个程序中多段代码同时并发进行 1.3 主线程的概念 JavaMain中的线程就…

Python语言学习笔记之十(字符串处理)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 字符串处理:以实现字符串的分割、替换、格式化、大小写转换,Python字符串处理是指对Py…

人工智能知识蒸馏:模型精简与迁移的奇妙之旅

导言 在人工智能领域,知识蒸馏作为一种模型精简和知识迁移的技术手段,逐渐成为提高模型效能和适应更广泛场景的关键工具。知识蒸馏是近年来在深度学习领域备受瞩目的技术,其通过将大模型的知识传递给小模型,旨在实现模型的轻量化与…

docker-compose Install gitea

gitea 前言 Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,他都能够高效而轻松的帮助团队和开发者。包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。 Gitea 最初是从 Gogs 分支而来…

交友网站的设计与实现(源码+数据库+论文+开题报告+说明文档)

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

TSINGSEE青犀基于opencv的安全帽/反光衣/工作服AI检测算法自动识别及应用

安全帽/反光衣/工作服自动识别检测算法可以通过opencvyolo网络对现场画面中人员穿戴着装进行实时分析检测,判断人员是否穿着反光衣/安全帽。在应用场景中,安全帽/反光衣/工作服检测应用十分重要,通过对人员的规范着装进行实时监测与预警&…

CloudFlare 优选ip 和 优选域名的获取方法

1.CloudFlare优选IP网站:【链接直达】 2.CloudFlare 优选IP工具:【开源软件】 3.CloudFlare 优选域名:【GitHub开源工具】 4.CF优选域名推荐: time.cloudflare.com shopify.com time.is icook.hk icook.tw ip.sb japan.com malaysia.com rus…

YOLOV8:最新探测物体状态综合指南

YLOLV8是最新的以YOO为基础的物体检测模型,提供最先进的性能。 利用前几部《yolo》,yolov8更快速更准确,同时为训练模式提供统一的框架 物体检测实例分割影像分类 到编写本文件时,许多功能还没有被添加到超催化剂YLOLV8存储库中。这包括训练有素的模型的一整套导…

Axure元件的介绍使用以及登录界面和个人简历的绘制

目录 一、Axure元件介绍 1.1 简介 1.2 特点 1.3 元件操作 二、基本元件的使用 2.1 矩形和圆形 2.2 图片 2.2.1 图片元件特点 2.2.2 具体操作 2.3 占位符 2.3.1 使用规范方法举例 2.4 文本元件 2.4.1 图示 2.5 热区 2.5.1 图示 2.5.2 热区辅助页面排版 2.6 线段…

Redis7--基础篇8(集群cluster)

1. 集群(cluster)介绍 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集 的一部分,这就是Redis的集群,其作用是提供在多个…

2023人物专访【中国新时代艺坛楷模】徐大龙盆景艺术专题报道

随着社会经济的发展和人们审美观念的改变,苏派盆景艺术以其精湛的技艺和独特的艺术魅力,又成为了中外盆景界的一大亮点。今天来聊聊江南盆景艺术专家徐大龙先生。 徐大龙,江苏常州人,「复兴之路,强国有我」50位爱国奉献…

web(HTML之表单练习)

使用HTML实现该界面: 要求如下: 用户名为文本框,名称为 UserName,长度为 15,最大字符数为 20。 密码为密码框,名称为 UserPass,长度为 15,最大字符数为 20。 性别为两个单选按钮&a…