【JavaEE初阶】网络原理

devtools/2024/9/30 1:48:36/

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

⽹络互连

IP地址

端口号

协议

协议分层

优势

TCP/IP 五层网络模型

数据在网络通信中的整体流程 封装和分用

封装

分用


⽹络互连

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

⽹络互连:将多台计算机连接在⼀起,完成数据共享。 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹

局域网:把几台电脑连接在一起,就构成了局域网

路由器上面的口,数目比较有限,就引入了交换机(对路由器的端口进行了扩展)

广域网:通过路由器,将多个局域⽹连接起来,在物理上组成很⼤范围的⽹络,就形成了⼴域⽹。⼴域⽹内部 的局域⽹都属于其⼦⽹。

IP地址

IP地址描述了一台主机,在互联网上所处的位置,使用32位整数("点分十进制",为了方便人阅读)来表示

端口号

区分当前主机上的指定的应用程序(进程)

一个主机上,使用网络的程序有很多个,通过端口号区分当前主机收到的数据是 交给那个程序来处理使用, 端口号同样也是一个整数,是一个2个字节的整数(范围:0->65535,但是0->1023这些端口都是有特殊含义的,我们自己写代码时,一般使用剩下的)

协议

网络中最核心的概念.

协议是进行一切通信的基础

通信至少要有两个主机,让发送方发的数据,接收方能够理解,双方需要按照同样的规则来构造/解析数据,协议 就是在约定通信双方交互数据的规则

如何进行网络通信问题 转为了 如何设计网络通信协议

协议分层

如果使用一个协议约定所有的网络通信细节,这个协议就会非常庞大,复杂.所以把这个协议拆分成了多个小协议,每个小协议专注解决一个/一类问题,再让这些协议相互配合.

并且约定好协议之间不能相互交互(只有相邻层之间才行),上层协议调用下层协议,下层协议给上层提供服务

优势

  • 降低了使用成本,使用某个协议时,不需要关注其他协议的实现细节
  • 降低整个体系的耦合性,灵活的变更某个层次的协议

TCP/IP 五层网络模型

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇

TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求

分为应用层 ,传输层 ,网络层 ,数据链路层 ,物理层

  1. 应⽤层:负责应⽤程序间沟通,如简单电⼦邮件传输(SMTP)、⽂件传输协议(FTP)、⽹络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。(程序员能够干预到的)
  2. 传输层:负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机。
  3. ⽹络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。
  4. 数据链路层:负责设备之间的数据帧的传送和识别。例如⽹卡设备的驱动、帧同步(就是说从⽹线上 检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就⾃动重发)、数据差错校验等⼯作。 有以太⽹、令牌环⽹,⽆线LAN等标准。交换机(Switch)⼯作在数据链路层。
  5. 物理层:负责光/电信号的传递⽅式。⽐如现在以太⽹通⽤的⽹线(双绞线)、早期以太⽹采⽤的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi⽆线⽹使⽤电磁波等都属于物理层的概念。物理 层的能⼒决定了最⼤传输速率、传输距离、抗⼲扰性等。集线器(Hub)⼯作在物理层。 
  • 应用层:关注传输的数据用来干啥
  • 传输层:主要关注网络通信中"起点和终点",并不关心通信的中间细节
  • 网络层:进行网络通信的路径规划,网络层还需要负责地址管理
  • 数据链路层:在针对上述规划好的路径,进行具体的实施
  • 物理层:描述了硬件设备(网线这样的设备)需要满足什么条件(传输数据的硬件基础设施),相当于"公路","铁路","航线"

OSI七层网络协议(这种划分只是存在于教科书里,并没有真正的被采用)

物理层我们考虑的⽐较少。因此很多时候也可以称为TCP/IP四层模型。

驱动程序是硬件厂商配套提供的

网络设备所在的分层(站在经典的模型上讨论的)

  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四 层;
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层;
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
  • 对于集线器(将网线进行分叉,现在几乎见不到了),它只实现了物理层;

真实情况下,交换机,也可能是工作在网络层,甚至是 传输层/应用层

路由器,也可能是工作在数据链路层,也可能在传输层或应用层

数据在网络通信中的整体流程 封装和分用

封装

计算机网络中的封装 其实就是 字符串拼接

  1. 假设通过QQ发送一个hello给另一个人,hello这个内容从输入框读取到,构造成一个"应用数据包"(应用层的网络协议就描述了这个数据包的构造,此协议往往是开发该程序的程序员 自行定义的)
  2. QQ就会调用操作系统提供的API(传输层给应用层 提供的类似于"发送数据"的API), 然后应用程序就会把已准备好的 应用层数据包 作为参数传进来,此时应用层数据包就到了系统内核里(进入了传输层的代码部分)
  3. 再将该应用层数据包进一步 封装成一个传输层数据包,由于传输层有多种协议(最主流的是TCP和UDP,这两个协议给应用层提供了两种不同的API,应用层代码使用哪组API,就使用哪个协议)
  4. 继续调用 网络层 提供给传输层的api,把数据进一步交给网络层(传输层和网络层都是系统内核里已经实现好的),网络层也有多种协议(其中最主要的就是IPv4协议,简称IP协议),IP协议会把上述 传输层数据包 构造成 网络层数据包  
  5. 网络层 继续调用数据链路层的api,把数据交给数据链路层进一步包装,数据链路层的常见协议,以太网
  6. 上述得到的数据进一步交给物理层(硬件设备),网卡会针对上述的二进制数据进行真正的传输操作,把0101这样的序列转为光信号/电信号/电磁波.....

  • 序列化:把结构化的数据 => 二进制字符串
  • 反序列化: 把二进制字符串 => 结构化数据

分用

分用其实是 封装的"逆向工作"

  1. 接收方的 物理层 收到光电信号 并还原成二进制字符串
  2. 将该数据交给 数据链路层,以太网拿到这个数据包并进行解析(拿出这里的报头 和载荷,根据报头中的信息决定这个数据包是 丢弃,转发还是 自己保留(向上解析))
  3. 网络层拿到解析好的数据包,IP协议对这个数据包进行解析(取出IP报头 和载荷,同样根据报头信息确认丢弃,转发或保留)
  4. 传输层的UDP协议也要针对数据包进行解析(取出UDP报头和载荷,此处需要把载荷进一步交给应用层协议(应用程序),并且依赖UDP报头中的"端口号"来区分不同的进程)
  5. 数据到达应用程序,程序对上述数据进行反序列化,针对这里的数据进行进一步的逻辑(将消息显示在界面上,播放提示音,显示弹窗等等)

中间过程的交换机和路由器也会涉及到 封装和分用

  • 交换机 封装分用到数据链路层就可以决定数据是丢弃还是继续转发,不再继续分用
  • 路由器 封装分用到网络 同样可以决定数据是丢弃还是继续转发,不再继续分用

通常认为网络通信的速度比 硬盘的更慢,但比人的反应更快


http://www.ppmy.cn/devtools/118993.html

相关文章

Linux风险应对策略:保障系统安全的有效措施

Linux作为一种开源操作系统,因其稳定性和安全性被广泛应用于服务器、嵌入式系统和个人电脑等多个领域。然而,随着网络攻击手段的不断演变,Linux系统也面临着各种安全风险。本文将探讨Linux系统的主要风险及其应对策略,帮助用户提升…

python request库的使用

安装和使用 requests库支持python3.8,注意版本 pip install requests 在项目中引用时如下: import requests访问网站 request访问网站一般用get和post两种方式 get requests库提供了get方法,可以用get方式访问网站,相当于在浏览…

揭秘ChatGPT背后的魔法:三阶段训练打造智能对话模型应用

1. 引言 随着自然语言处理技术的快速发展,基于深度学习的大规模预训练模型成为了人工智能领域的重要里程碑。这些大模型能够在广泛的数据上学习,并在不同任务中展现出出色的表现。2022年底释出的ChatGPT正是这种大规模预训练模型的代表性应用&#xff0…

9月27日,每日信息差

第一、中国科学家团队在干细胞治疗领域取得重要突破,通过化学重编程技术成功制备出胰岛细胞,并用于移植治疗一名 1 型糖尿病患者,实现了临床功能性治愈。相关研究成果已发表在国际权威期刊《细胞》上。 第二、交通运输部公路局局长周荣峰在国…

Ubuntu 上安装 Miniconda

一、下载 Miniconda 打开终端。访问 Anaconda 官方仓库下载页面https://repo.anaconda.com/miniconda/选择Miniconda3-py310_24.7.1-0-Linux-x86_64.sh,进行下载。文件名当中的py310_24.7.1表示,在 conda 的默认的 base 环境中的 Python 版本是3.10&…

【linux】gcc makefile

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.gcc如何完成02.gcc选项03.函数库与动静态链接静态链接动态链接库文件特点和用途动态链接版本和兼容性 04.makefile自动推导 01.gcc如何完成 预处理(进行宏替换) 预处理功能主要…

我能禁止使用某协议的ip禁止访问我的资源吗

是的,你可以禁止使用某个协议的IP地址访问你的资源。这种操作通常涉及网络防火墙、服务器配置或应用程序设置,具体方法取决于你的网络环境和使用的技术。以下是一些常见的实现方法: 1. 使用防火墙 大多数防火墙(硬件或软件&…

皮带机、配电室巡检机器人联合方案 轨道巡检、挂轨机器人、室内轮式、室外轮式、井下机器人

项目背景 背景综述 某某煤矿铁路专用线配套工程配置有巡检机器人系统,巡检机器人系统与现有机器人巡检系统完全兼容,同时开放免费通用接口能无缝接入矿一体化调度平台。巡检机器人系统安装位置如下:201带式输送机、202带式输送机、203带式输送…