网络编程 01:计算机网络概述,网络的作用,网络通信的要素,以及网络通信协议与分层模型

一、概述

记录时间 [2024-12-13]

本文讲述网络编程相关知识,例如,什么是计算机网络,网络有什么作用,网络通信的要素是什么,以及网络通信协议与分层模型。

网页编程 / 网络编程区别:

  • 网页编程:Javaweb,B/S

  • 网络编程:TCP/IP,C/S

关于创作纪念日

表面风平浪静,内里波涛汹涌。这便是目前的状态吧。

宁可一思进,不可一思停。256 纪念日快乐。

里程碑专区



二、计算机网络

1. 什么是计算机网络

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

  • 连接:地理位置不同的、具有独立功能的多台计算机及其外部设备;
  • 管理和协调:网络操作系统、网络管理软件及网络通信协议
  • 目的:实现资源共享和信息传递。

于是乎,网络的诞生,加上现代科技的迅速发展,缩小了地球上的时空距离,国际交往日益频繁便利,因而整个地球就如同是茫茫宇宙中的一个小村落。我们亲切地称之为——地球村


2. 网络的目的

在网络没有出现之前,我们会使用无线电台、收音机这些工具来获取信息。

而网络的目的(或者说作用),在于更便捷地传播交流信息,如数据交换,通信等。


3. 先决条件

那么,想要达到这个效果,需要具备什么条件呢?

定位

  • 如何准确定位网络上的一台主机或多台主机?
  • IP:Port,定位到这个计算机上的某个资源。

信息传递

  • 找到了这个主机,如何传输数据呢?
  • 如何接收其他主机发来的消息呢?


三、网络通信的要素

1. 网络中的包

网络中的包 package,可以类比现实中的包、包裹、以及信件等。

在契诃夫的《凡卡》中,凡卡给爷爷写了一封信。然而,由于没有正确填写收件地址,他所有的诉说和期待都石沉大海。

所以,我们想要寄出一封信,且这封信会被收件人收到,需要同时具备收件人的信息和地址,必要时还要提供自己的地址。

同样地,在网络中发包(发消息),也需要提供这些信息。


2. 如何实现网络通信

如何实现网络通信?首先得知道通信双方的地址,还要基于特定的规则。

通信双方的地址

  • IP + 端口号
  • 例如,192.168.16.124:5900
  • 通过 IP 和端口,可以定位到某台计算机上的某个具体的应用。

基于特定的规则

  • 网络通信的协议
  • 例如,TCPUDP,HTTP,FTP,SMTP 等。

在 Java 网络编程中,万物皆对象,在 Java 中有网络相关的包,如 java.net。通过这些包,可以实现网络通信。

在这里插入图片描述



四、网络通信协议

通信协议是为进行数字通信的电子设备之间设立的一组规则,这些规则定义了如何传输信息。

通信协议确保所有连接到网络上的设备能够互相理解并正确地交换数据。它们规定了数据格式、编码、信号电平、传输速度、同步方式、错误检测与纠正、流量控制等。

网络通信协议是用于在网络中不同节点之间传输数据的一套规则和标准。网络通信协议通常按照分层模型来组织,每一层负责特定的功能。最常用的分层模型是 OSI 七层模型TCP/IP 四层模型。(OSI,Open Systems Interconnection,开放系统互连)


1. 分层模型

最常用的分层模型是 OSI 七层模型和 TCP/IP 四层模型。

以下是二者的对比,以及每层对应的网络协议。

在这里插入图片描述


2. 常见的协议

常见的网络通信协议中,TCP 和 UDP 是传输层的协议,IP 是网络层的协议。

  • TCP:传输控制协议
  • UDP:用户数据报协议
  • IP:互联网协议

TCP/IP 协议簇是一组协议。


TCP 和 UDP 对比

TCP:就像打电话,需要两者建立连接后,才能进行通话。

  • 是一种稳定可靠的连接;
  • 遵循 三次握手,四次挥手
  • 有明确的客户端和服务端;
  • 要先建立连接,然后传输信息;信息传输完成后,才能释放连接,效率较低。

UDP:就像发短信,只要给对方发送短信即可,不需要管对方有没有收到。

  • 不需要建立连接,同时不稳定;
  • 客户端和服务端没有明确的界限,谁都可以是客户端或服务端;
  • 不管对方有没有准备好,都可以给它发信息;
  • 例子:DDoS 攻击。

DDoS 攻击是一种网络攻击形式,攻击者可能会控制一个由多台计算机组成的网络(僵尸网络,botnet)。这些计算机可能位于全球各地,并且通常是在用户不知情的情况下被恶意软件感染。

攻击者可以通过远程控制这些机器,同时向目标服务器发送请求,导致服务器过载,进而使其离线或严重减慢响应速度。



参考资料

狂神说 - 网络编程:https://www.bilibili.com/video/BV1LJ411z7vY

Java 8 帮助文档:https://docs.oracle.com/javase/8/docs/api/

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

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

相关文章

亚信安全DeepSecurity完成与超云超融合软件兼容性互认

近日,亚信安全与超云数字技术集团有限公司(以下简称“超云”)联合宣布,亚信安全成功完成与超云超融合软件的产品兼容性互认证。经严格测试,亚信安全云主机安全DeepSecurity与超云FS5000增强型融合系统(简称…

【工业机器视觉】基于深度学习的水表盘读数识别(3-数据标注与转换)

【工业机器视觉】基于深度学习的仪表盘识读(2)-CSDN博客 数据标注 标注扩展 Labelme 和 LabelImg 都是用于创建机器学习和计算机视觉项目所需标注数据的工具。它们都允许用户通过图形界面手动标注图像,但各自有其特点和适用场景。 Labelme…

【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章: 《基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》 的…

ubuntu20.04复现 Leg-KILO

这里写目录标题 opencv版本问题下载3.2.0源代码进入解压后的目录创建构建目录运行 CMake 配置 配置时指定一个独立的安装目录,例如 /opt/opencv-3.2:出错: 使用多线程编译错误1: stdlib.h: 没有那个文件或目录错误2:er…

kubeadm部署1.20集群版

部署说明 步骤1~4 master和node都需执行步骤 5.1 三台master都执行,步骤 5.2 随便一台机器执行步骤5.3根据需要选择部署etcd;堆叠etcd更简单部署更快,外部etcd部署麻烦方便管理;步骤5.4 根据选择部署的etcd方式选择k8…

【电力负荷预测实例】采用新英格兰2024年最新电力负荷数据的XGBoost电力负荷预测模型

与小编上篇文章介绍的基于BPNN神经网络的电力负荷预测相比较,两种模型的负荷预测方法各有优势,神经网络能够自动提取特征并处理非线性关系,而XGBoost则具有预测精度高、运行速率快和可解释性强的特点。在实际应用中,可以根据具体需…

6_Sass 选择器函数 --[CSS预处理]

Sass 提供了一系列的选择器函数,用于操作和组合CSS选择器。这些函数可以帮助你更灵活地创建样式规则,并且可以减少重复代码。以下是几个常用的选择器函数及其用法: 1. selector-append($selector1, $selector2...) selector-append($select…

List【Redis对象篇】

🏆 作者简介:席万里 ⚡ 个人网站: 文章目录 LIst1.简介2.使用场景3.常用操作1.写操作2.读操作 4.底层实现5.压缩列表的优化1.ZIPLIST结构2.ziplist更新数据3.LISTPACK优化 6.总结(重点) LIst 1.简介 Redis List是一组…

心情追忆- SEO优化提升用户发现率

之前,我独自一人开发了一个名为“心情追忆”的小程序,旨在帮助用户记录日常的心情变化及重要时刻。我从项目的构思、设计、前端(小程序)开发、后端搭建到最终部署。经过一个月的努力,通过群聊分享等方式,用…

.NET 技术系列 | 通过CreatePipe函数创建管道

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

springboot425滑雪场管理系统(论文+源码)_kaic

摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定滑雪场管理系统的总体功能模块。然后,详…

Dubbo的应用及注册和SPI机制

Dubbo的应用及注册和SPI机制 Dubbo 的服务注册中应用级注册优化 Dubbo 的注册中心 Dubbo 支持很多种注册中心,支持的主流注册中心包括:ZooKeeper、Nacos、Redis Dubbo 需要引入注册中心依赖,并且配置注册中心地址,这里以 ZooK…

【从零开始入门unity游戏开发之——C#篇05】转义字符、@处理多行文本或者不使用转义字符、随机数

文章目录 一、转义字符1、什么是转义字符?2、常见的转义字符3、总结 二、使用处理多行文本或者不使用转义字符1、多行字符串2、不使用转义字符 三、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSin…

【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)

发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了! 文字部分:实现网络节点下,某个节点下的其…

Windows环境基于ecplise的spring boot框架新建spring start project

SpringToolSuite4 新建项目实例 前言Windows基于ecplise 工具的spring boot 架构 前言 使用Spring boot 框架向前端传输数据 Windows基于ecplise 工具的spring boot 架构 spring-tool-suite-4官网下载链接spring tool,下载太慢的话可以使用迅雷加速,右…

Mave下载、安装以及idea(2024)进行配置

目录 Maven简介 Maven下载 配置环境变量 配置本地仓库 在idea环境配置Maven 使用Maven创建工程 创建一个普通的java工程 创建一个Web项目 Maven简介 Maven是一个跨平台的项目管理工具,也是Apache组织中的一个成功的开源项目。它主要服务于基于Java的项目构…

MySQL八股文

MySQL 自己学习过程中的MySQL八股笔记。 主要来源于 小林coding 牛客MySQL面试八股文背诵版 以及b站和其他的网上资料。 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言–结构化查询语言(SQL&…

TMS320C55x DSP芯片结构和CPU外围电路

第2章 DSP芯片结构和CPU外围电路 文章目录 第2章 DSP芯片结构和CPU外围电路TMS320C55x处理器的特点TMS320c55x CPU单元指令缓冲(Instruction Buffer Unit) I单元程序流程(Program Flow Unit) P单元地址数据(Address-data Flow Unit) A单元数据计算(Data Computation Unit) D单元…

docker 相关操作

1. 以下是一些常见的 Docker 命令&#xff1a; docker --version显示安装的 Docker 版本。 docker pull <image_name>从 Docker Hub 或其他镜像仓库下载镜像。 docker build -t <image_name> <path>从指定路径的 Dockerfile 构建 Docker 镜像。 docker i…

WinRAR 创建自解压文件 自定义标题 自定义图标 添加桌面快捷方式

一、创建自解压文件 自定义标题 自定义图标 1、利用Winrar压缩你要压缩的文件夹"【游戏运行必备组件】.rar",选择压缩格式是【rar格式】&#xff0c;选择创【建自解压格式…】 2、点击【高级】&#xff0c;选择【自解压文件选项】 3、自定义解压界面【窗口标题】、…