【Java网络编程】计算机网络基础概念

就目前而言,多数网络编程的系列的文章都在围绕着计算机网络体系进行阐述,但其中太多理论概念,对于大部分开发者而言,用途甚微。因此,在本系列中则会以实际开发者的工作为核心,从Java程序员的角度出发,详细解读Java的网络编程核心内容。

一、计算机网络的“前世今生”与基础概念

   先来看看维基百科对于 计算机网络 这个名词的解释:

计算机网络是指将位于不同地理位置,但具有独立功能的多台设备,通过通信设备和线路连接起来,在网络操作系统,网络管理软件、网络通信协议的协调管理下,实现资源共享和信息传递的计算机系统。

简单来说,计算机网络就是用于满足不同机器之间通信、共享的一种系统。

其实一开始计算机网络是用于军事化目的的,因美国军方需要一种多节点的通信技术,确保在其一部分节点被摧毁后,也能够确保通信依旧正常,因此组建了一个部门ARPA并在1966年完成了ARPANET(阿帕网)项目,该项目也是最早的计算机网络之一。
当然,后续随着科技不断进步,各种网络相关的技术百家争鸣,出现了各式各样的网络技术,但同时也带来了很大的局限性,例如:不同的计算机网络之间并不能相互通信、不同操作系统之间无法通信、覆盖范围及其有限等。因此,ARPA需要一种技术将不同的计算机局域网互联,最终ARPA组织创建了一个新的项目被称为internetwork因特网,也被称为“互联网”。

   在internetwork项目的研发过程中,1974年,Robert E. Kahn以及Vinton G. Cerf两位教授正式提出了新的传输协议:TCP/IP协议,用于满足不同计算机网络之间的互联通信,ARPA1982年接受TCP/IP选定为Internet主要的计算机通信系统,作为因特网通信的“基石”。

1.1、计算机网络的组成

从组成上而言,计算机网络主要由主机、协议、传输介质以及软件四部分组成。

  • 主机:可以是手机、电脑、服务器、电子手表等任意计算机硬件。
  • 协议:各类定义归法的网络通信协议,如TCP/IP、IPX/SPX、AppleTalk等。
  • 传输介质:传输数据的通道,可以是实体铜线、电缆、光纤,也可以是无形的电磁波空间介质。
  • 软件:涵盖所有联网的应用,如QQ、微信、支付宝、淘宝、京东等各类软件。

1.2、计算机网络的功能组成

计算机网络体系主要提供的两个核心功能就在于:

  • 资源共享:资源子网实现。
  • 数据通信:通信子网实现。

资源子网以及通信子网也对应着OSI中的上三层和下三层。

   不过如果学习过计算机网络课程的小伙伴应该都知道,其实计算机网络是一个复杂而庞大的系统,由软件、驱动、硬件、线路等多部门共同组成,但对于这些理论性内容不再阐述,有兴趣的可以自行了解。

1.3、网络分层与OSI七层模型的由来

   计算机网络是个非常复杂的系统,由于最初各个计算机网络体系结构不同,导致双方网络之间无法互通,因此,20世纪90年代,ISO国际标准化推出了OSI模型打算制定计算机网络体系标准。

简单来说就类似于国内的普通话,因为不同省份的方言不同,导致不同地方的人交流起来并不方便,因此定义了“普通话”这一标准,所有人都遵循该标准进行交流沟通。

   但由ISO组织制定的OSI网络七层模型结构并没有得到广泛应用,实际中应用最广泛的是TCP/IP体系结构。换句话说,OSI七层模型只是理论上官方制定的国际标准,而TCP/IP体系结构才是事实上的国际标准。

PS:国际标准化组织提出的OSI模型未得到广泛应用的原因:
①制定时太过理想化,未考虑实际的应用场景。
②拆分过于精细化,实现起来过于复杂,运行效率并不高。
OSI体系的制定周期过长,导致按其标准生产的设备无法及时投入市场抢占份额。
OSI体系因为分层过多,设计也不合理,有些相同的功能在多个层次重复出现。

   但因为TCP/IP体系中的最后一层没有制定规范的标准,所以对于学习计算机网络完善体系时会缺失一部分,所以又提出了一种折中方案,也就是综合OSI以及TCP/IP两个体系的优缺点,提出了一种五层结构的原理体系,因此在接触计算机网络体系时,通常都会存在三种分层结构:

  • 法定标准体系:OSI七层结构。
  • 实际应用体系:TCP/IP四层结构。
  • 原理教学体系:五层结构。

二、OSI七层网络模型与TCP/IP协议簇

   计算机网络体系采用的是分层结构,每个层次之间互不干扰,上层不需要关心下层的具体实现,下层只需要为上层提供服务即可。

ISO组织定义的国际标准OSI模型中,是七层网络模型。
在实际应用最广泛的TCP/IP模型中,是四层网络模型。
当然,在计算机网络教学中,也提出了五层网络模型。

但无论多少层网络模型,其实本质上都是在叙述相同的内容,只不过拆分的精细度不同而已,三种网络模型对应如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用Java和RabbitMQ实现延迟队列?

前言 今天我们使用Java和RabbitMQ实现消息队列的延迟功能。 前期准备,需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和RabbitMQ实现消息队列?-CSDN博客 今天讲的是依赖RabbitMQ的延迟插件实现…

(React生命周期)前端八股文修炼Day8

一 React的生命周期有哪些 React组件的生命周期可以分为三个主要阶段:挂载(Mounting)、更新(Updating)和卸载(Unmounting)。React类组件的生命周期方法允许你在组件的不同阶段执行代码。 挂载…

多线程4

死锁 想获取到第二把锁,就需要执行完第一层大括号,想要执行完第一层大括号,就要先获取到第二层的锁。 synchronized (counter2){ synchronized (counter2){} } 例子:t2先启动,t2进行加锁后一定成功,但是如果t2进行二…

[AI in sec]-039 DNS隐蔽信道的检测-特征构建

DNS隐蔽信道是什么 DCC是指利用DNS数据包中的可定义字段秘密传递信息的通道。其中,“DNS 协议”是目前网络上使用的标准域名解析协议;“可定义字段”是DNS 数据包中的 QNAME 字段、RDATA 字段及RawUDP字段。利用DNS数据包可以构建2种信道:存储信道及时间信道。DCC可以被用于…

【GameFi】 Brilliantcrypto点火活动

活动:https://app.galxe.com/quest/brilliantcrypto/GCt8wthq2J Brilliantcrypto点火活动正在Galxe上进行 🎉 活动时间:2024/04/06 12:00 ~ 2024/05/04 12:00 奖励总价值1200美元的MATIC 完成任务並在Brilliantcrypto Galxe Space上赚取积分。…

[dvwa] Command Injection

命令注入 0x01 low 没有过滤,直接利用 127.0.0.1 && ip a 函数 php_uname(mode) 动态地检查服务器的操作系统 ‘s’:操作系统名称 ‘n’:网络主机名 ‘r’:操作系统发行版本号 ‘v’:操作系统版本 ‘m’&…

CleanMyMac有必要购买吗?有哪些功能

作为一位产品营销专家,对各类软件产品的功能和特点都有深入的研究,对于CleanMyMac这款产品也有深入了解。CleanMyMac是一款专为Mac用户设计的系统清理与优化软件,旨在帮助用户解决Mac电脑使用过程中的各种问题,让电脑恢复如新的状…

12、最小覆盖子串

如何想到这个解法 问题的特点: 首先,认识到这是一个关于子串的问题,而且需要考虑子串的最小长度。这提示我们可能需要使用一种方式来逐步探索不同的子串。滑动窗口的适用性:滑动窗口是处理子串问题的常用技巧,特别是当…

【系统架构师】-软件架构设计

1、软件架构的概念 架构的本质 1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象。 2、软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。 架构的作用 1、软件架构是项目干系人进行交流的手段。 2、软件架构是可传递和可复用的模型…

ESP32S3网络编程学习笔记(1)—— Wi-Fi扫描实验

前言 (1)如果有嵌入式企业需要招聘湖南区域日常实习生,任何区域的暑假Linux驱动/单片机/RTOS的实习岗位,可C站直接私聊,或者邮件:zhangyixu02gmail.com,此消息至2025年1月1日前均有效 &#xff…

深澜计费管理系统 任意文件读取漏洞复现

0x01 产品简介 深澜计费管理系统是是一套完善的领先的具有复杂生物型特征的弹性认证计费系统。系统主要由 AAA 认证计费平台、系统运营维护管理平台、用户及策略管理平台、用户自助服务平台、智能客户端模块、消息推送模块、数据统计模块组成。目前在全球为超过 2500 家客户提…

Elastic AI Assistant for Observability 和 Microsoft Azure OpenAI 入门

作者:来自 Elastic Jonathan Simon 最近,Elastic 宣布 AI 观测助手现已正式向所有 Elastic 用户开放。该 AI 观测助手为 Elastic 观测提供了一种新工具,提供了大型语言模型(LLM)连接的聊天和上下文洞察,以解…

node res.end返回json格式数据

使用 Node.js 内置 http 模块的createServer()方法创建一个新的HTTP服务器并返回json数据,代码如下: const http require(http);const hostname 127.0.0.1; const port 3000;const data [{ name: 测试1号, index: 0 },{ name: 测试2号, index: 1 },…

优秀企业都在用的企微知识库,再不搭建就晚了!

每个团队都在寻找让工作效率提升的方法。如果你想知道哪些团队能够高效地完成任务,而另一些却步履维艰,那么答案可能就是“企业微信知识库”。见过很多团队都在使用它,而且效果非常显著。如果你还没有搭建属于自己的企微知识库,可…

1.c++入门(命名空间、缺省参数、函数重载、引用、内联函数、for循环、auto关键字、指针空值nullptr)

1.c的第一个程序 // 方法一 #include<iostream>// namespace为命名空间的关键字&#xff0c;std为空间名&#xff1b; C标准库的东西放进std命名空间 using namespace std; int main() {cout << "hello world" << endl;return 0; }// 方法二 #in…

Python标准数据类型—字符串常用方法

在Python中&#xff0c;字符串是一种常见的数据类型&#xff0c;用于表示文本信息。Python提供了许多内置方法来处理字符串&#xff0c;使得对文本的操作变得非常方便。在本篇博客中&#xff0c;我们将介绍一些常用的字符串方法&#xff0c;帮助您更好地理解和利用字符串。 &a…

基于java web的超市管理系统

摘要 随着社会经济的不断发展&#xff0c;人们的生活水平不断提高。越来越多的零售行业得到了快速的发展&#xff0c;以最常见的超市最为明显。零售行业繁荣的背后也随之带来了许多行业隐患&#xff0c;越来越激烈的行业竞争不断的要求经营者更加高要求的管理超市内部的整个供…

4.7学习总结

java学习 一.Stream流 (一.)概念: Stream将要处理的元素集合看作一种流&#xff0c;在流的过程中&#xff0c;借助Stream API对流中的元素进行操作&#xff0c;比如&#xff1a;筛选、排序、聚合等。Stream流是对集合&#xff08;Collection&#xff09;对象功能的增强&…

算法 第34天 贪心3

1005 K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k &#xff0c;按以下方法修改该数组&#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后&#xff0c;返回数组 可能…

JavaEE——手把手教你实现简单的 servlet 项目

文章目录 一、什么是 Servlet二、创建一个简单的 Servlet 程序1. 创建项目2.引入依赖3. 创建目录4.编写代码5. 打包程序6. 部署7.验证整体过程总结 三、使用 Smart Tomcat 插件简化项目创建四、创建项目时可能遇到的几个问题。 一、什么是 Servlet Servlet 是一种实现 动态页面…