当前位置: 首页 > news >正文

网络程序设计基础概述

文章目录

  • 前言
  • 一、网络程序设计基础
  • 二、网络协议
    • 1.IP协议
    • 2.TCP与UDP协议
  • 三、端口与套接字
  • 总结

前言

        网络程序设计编写的是与其他计算机进行通信的程序代码。Java将网络程序所需要的东西封装成了不同的类。开发者只需要创建这些类的对象,调用相应的方法,即使不具备网络知识,也可以进行网络通信程序的开发。


一、局域网与因特网

        局域网(Local Area Network,简称LAN)是在相对较小的地理范围内,由计算机和其他网络设备互联而成的网络。

        局域网通常在家庭、学校、办公室或者建筑物内部使用,用于在其中共享资源、传输数据和实现通信。局域网的范围通常限制在几百米到几千米之间。使用的网络技术可以包括以太网、Wi-Fi、蓝牙等。局域网可以连接多台计算机,让它们可以共享文件、打印机、互联网连接等,提供高效的数据传输和信息交换。通过路由器这种工具,我们才能从局域网访问到广域网。

        广域网(Wide Area Network,简称WAN)是一种广泛分布在较大地理范围内的计算机网络。广域网可以连接不同地区、不同城市甚至不同国家的计算机和网络设备,允许它们之间进行通信和数据交换。

        广域网通常使用公共的通信线路,如电话线、光纤、无线电等,以连接远距离的终端设备。广域网的目的是提供高速、可靠和安全的数据传输,使得远距离的用户和机构能够进行远程办公、数据共享和资源访问等操作。广域网广泛应用于企业、政府机构、教育机构和互联网服务提供商等领域。

        因特网是一种全球性的计算机网络系统,通过各种通信协议(包括TCP/IP协议)连接全球各地的计算机和网络设备,是由无数个LAN和WAN组成的。

        因特网允许人们共享信息、数据和资源,并提供了大量的在线服务,如电子邮件、文件传输、在线搜索、社交媒体等。因特网的发展和普及已经改变了人们的生活方式和工作方式,成为现代社会不可或缺的一部分。

        若想深入了解局域网、广域网、Wifi和WLAN的联系和区别,可以点击下方博客链接,这个up主(物联网老王)的博客更加清晰:

一文读懂局域网、广域网、WLAN、WiFi的联系与区别

二、网络协议

        网络协议规定了计算机之间连接的物理、机械、电气等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容。以下简单介绍几个常用的网络协议。  

1.IP协议

        Internet Protocol,简称IP,是一种网络协议,被称为IP协议。Internet网络采用的协议是TCP/IP协议。

        值得注意的是,此处的TCP/IP协议并非指TCP协议和IP协议是同一个协议,TCP协议负责在网络上建立可靠的连接和进行数据传输,而IP协议负责实现网络间的数据路由和寻址。

        Internet网络依靠TCP/IP协议,在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统间的互联。Internet网络上数以计亿的主机都被分配了Internet地址,也就是IP地址(IP地址一般情况下用户无法更改)。

        目前IP地址的格式为IPv4(例如:192.168.0.1):

        IPv4(Internet Protocol version 4)是网络协议的第四个版本,是目前广泛使用的互联网协议之一。它定义了网络中数据包的传输方式和地址分配方式。IPv4使用32位的地址格式,共有4个8位的字段组成(例如:192.168.0.1),每个字段用十进制表示,范围为0-255。这样的可分配的IP地址格式可以表示大约42亿个。

        由于互联网的快速发展以及IP地址的有限性,IPv4的地址资源逐渐枯竭。为了解决这个问题,IPv6(Internet Protocol version 6)被推出,并逐渐取代了IPv4的使用,使用16个字节来表示IP地址。

        TCP/IP模式是一种层次结构,共分四层,分别为应用层、传输层、互联网层和网络层。各层实现特定的功能,提供特定的服务和访问接口,并且各自具有相对的独立性。

  1. 应用层 (Application Layer):应用层提供网络应用程序与网络协议之间的接口,用于实现用户应用的功能。它可以包含多种协议,如HTTP、FTP、SMTP等,用于实现不同的应用程序和服务。

  2. 传输层 (Transport Layer):传输层负责在网络中的不同主机之间提供端到端的可靠传输。它使用TCP或UDP协议,为上层应用提供数据传输的服务。TCP协议提供可靠的、有序的数据传输,而UDP协议则提供不可靠的、无连接的数据传输。

  3. 互联网层 (Internet Layer):互联网层负责处理网络中的数据包的传输和路由。它使用IP协议,将数据包从源主机发送到目标主机,通过路由选择算法确定最佳传输路径,使数据能够在网络上正确地传递。

  4. 网络接口层 (Network Interface Layer):网络接口层负责处理与物理网络介质的通信,包括网卡、驱动程序和物理连接。它将上层的数据包转化为适合物理网络传输的格式,并将接收到的物理层数据包交给上层处理。

2.TCP与UDP协议

        TCP协议和UDP协议都是互联网协议族中的两种传输层协议。

先说这两个协议的区别:

        TCP协议:可靠,能反馈数据是否送达;低效,需要创建连接请求,然后才能传输数据。

        UDP协议:不可靠,不能反馈数据是否送达;高效,不要创建请求,直接散播数据。

       (1)TCP协议(传输控制协议)

        TCP协议是一种以固接连线为基础的协议,它能提供稳定的数据传送。TCP协议可以保证数据从一端传送到另一端,数据能确实送达,并且抵达的数据的排列顺序和送出时的顺序相同。

        因此,TCP协议适合数据传送可靠性要求高的场合。例如微信私聊,一方发送信息,另一方同时且完整地收到了对方的信息。TCP协议就是一对一传输数据,并且需要双方各自同意发送和接收。

       (2)UDP协议(用户数据报协议)

        UDP协议是无连接通信协议,不能保证数据的可靠传输,但可以同时对若干个对象发送数据,或者是接收若干个源的数据。UDP协议以独立发送数据包的方式进行。UDP协议就像一个广播喇叭,同时广播到挨家挨户,至于每户里是否家里有人收听到广播,就不能完全保证了。

        UDP协议适合一些对于数据传输准确性要求不高,但对传输速度和时效性要求高的网站。例如,在线影片观看,会议厅群发消息等。UDP协议就像一个喇叭,可以同时发送给多个对象,对象各自是否受到数据看自身的代码。

        一般防火墙和路由器会设置成不允许UDP数据包传输,防止未经授权的访问和攻击。因此若遇到UDP连接方面的问题,应该先确认所在网络是否允许UDP协议。   

三、端口与套接字

        (1)端口

        端口就是所有数据通过此处对内、对外传输到指定计算机上的连接(有物理上的)。

        网络程序设计中的端口(port)并非真实的物理端口,而是一个假想的接口。端口的设置名被规定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP服务一般使用21端口。若一台计算机提供了HTTP、FTP等多种服务,那么客户机会通过不同的端口来确定连接到服务器上的哪项服务上。

        通常,0~1023之间的端口数应用于一些知名的网络服务和应用。用户的普通网络应用程序应该使用1024以上的端口数,依次来避免端口号与另一个应用或者所用端口冲突。

        (2)套接字

        网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字也是一个假想的连接装置,就像连接电器和电线的插座。Java将套接字(Socket)抽象化为类,开发者只要创建Socket类对象,使用套接字即可允许不同的应用程序在不同的计算机之间进行数据传输和通信。

具体来说,套接字的作用包括:

  1. 实现网络通信:套接字提供了一种机制,使得不同计算机上的应用程序能够通过网络进行通信。它通过定义一套标准的接口,使得应用程序能够通过套接字发送和接收数据。

  2. 封装传输层协议:套接字封装了传输层协议(如TCP或UDP),提供了一种方便的编程接口,使得应用程序可以直接调用相关的套接字接口函数,而无需关注底层传输层协议的细节。

  3. 提供连接服务:通过套接字,应用程序可以建立连接并进行数据的可靠传输。TCP套接字提供了面向连接的服务,确保数据的有序和可靠传输;而UDP套接字则提供了无连接的服务,适用于实时性要求较高的场景。

  4. 支持多种应用层协议:套接字支持多种应用层协议,如HTTP、FTP、SMTP等。通过套接字,应用程序可以选择合适的应用层协议来进行数据传输。


总结

        以上就是对网络程序设计的简单概述,介绍了学习java设计网络程序的基础概念,为我们深入实践网络程序做一个小铺垫。有补充或者指正的内容,欢迎在评论区中留言。

相关文章:

网络程序设计基础概述

文章目录 前言一、网络程序设计基础二、网络协议 1.IP协议2.TCP与UDP协议三、端口与套接字总结 前言 网络程序设计编写的是与其他计算机进行通信的程序代码。Java将网络程序所需要的东西封装成了不同的类。开发者只需要创建这些类的对象,调用相应的方法,…...

MySQL:数据库用户

数据库用户 在关系型数据库管理系统中,数据库用户(USER)是指具有特定权限和访问权限的登录账户。每个用户都有自己的用户名和密码,以便系统可以通过认证来识别他们的身份。数据库用户可以登录数据库,在其中执行各种类…...

用TensorFlow训练自己的第一个模型

现在学AI的一个优势就是:前人栽树后人乘凉,很多资料都已完善,而且有很多很棒的开源作品可以学习,感谢大佬们 项目 项目源码地址 视频教程地址 我在大佬的基础上基于此模型还加上了根据特征值缓存进行快速识别的方法,…...

MySQL数据库入门基础知识 【1】推荐

数据库就是储存和管理数据的仓库,对数据进行增删改查操作,其本质是一个软件。 首先数据有两种,一种是关系型数据库,另一种是非关系型数据库。 关系型数据库是以表的形式来存储数据,表和表之间可以有很多复杂的关系&a…...

Anaconda下的 jupyter notebook安装及使用

安装 打开Anaconda Powershell Prompt或Anconda Prompt 输入命令conda install jupyter notebook进行安装 启动 切换到工作目录,输入命令jupyter notebook等待浏览器打开网页 命令行启动jupyter notebook的链接复制到浏览器同样可以打开jupyter notebook 在Ancon…...

C语言初阶(11)

1.结构体定义 结构体就是一群数据类型的集合体。这些数据类型被称为成员变量。结构的成员可以是标量、数组、指针,甚至是其他结构体。 2.结构体的声明和结构体变量命名与初始化 结构体声明由以下结构组成 struct stu {char name[12];int age; }; 结构体命名有两…...

Unity获取Animator动画播放完成事件

整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一:Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…...

git submodule 使用

在Git中,子模块(submodule)是一种将一个Git仓库作为另一个Git仓库的子目录嵌入的方式。这使得主仓库能够跟踪和管理对外部依赖的更改。 添加子模块 初始化父仓库:如果你还没有创建父仓库,先创建它。 添加子模块&…...

【Jenkins未授权访问漏洞 】

默认情况下 Jenkins面板中用户可以选择执行脚本界面来操作一些系统层命令,攻击者可通过未授权访问漏洞或者暴力破解用户密码等进入后台管理服务,通过脚本执行界面从而获取服务器权限。 第一步:使用fofa语句搜索 搜索语句: port&…...

前端处理 Excel 文件

引入XLSX XLSX 是一个流行的 JavaScript 库,用于处理 Excel 文件(包括 .xls 和 .xlsx 格式)。它可以在 Node.js 环境和浏览器中运行,提供了丰富的 API 来读取、写入、修改 Excel 文件。当你使用 import * as XLSX from xlsx; 这行…...

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束

(vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束 需求:按勾选的顺序给后端传值 难点:在 Element UI 的 el-cascader 组件中,默认的行为是根据数据的层级结构来显示选项,用户的选择也会基于这种层级结构,el-…...

Redis进阶(四):哨兵

为了解决主节点故障,需要人工操作切换主从的情况;因此需要一种方法可以自动化的切换:哨兵的引入大大改变这种情况。 哨兵的基本概念 自动切换主从节点 哨兵架构 1、当一个哨兵节点发现主节点挂了的时候,还需要其他节点也去检测一…...

蓝屏事件:网络安全的启示

“微软蓝屏”事件暴露了网络安全哪些问题? 近日,一次由微软视窗系统软件更新引发的全球性“微软蓝屏”事件,不仅成为科技领域的热点新闻,更是一次对全球IT基础设施韧性与安全性的深刻检验。这次事件,源于美国电脑安全技…...

技术方案评审原则

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言技术方案评审原则1.理论突破阶段2.技术突破阶段3.工程化阶段自动驾驶行业的技术方案分析前言 认知有限,望大家多多包涵,有什么问题也希望能够与大…...

117页PPT埃森哲-物流行业信息化整体规划方案

一、埃森哲-物流行业信息化整体规划方案 资料下载方式,请看每张图片右下角信息 埃森哲在物流行业信息化整体规划项目中的核心内容,旨在帮助物流企业通过信息技术的应用实现业务流程的优化、运营效率的提升以及市场竞争力的增强。以下是埃森哲在此类项目…...

百度网盘不下载怎么直接打印文件?

在数字化时代,百度网盘作为我们存储和分享文件的重要工具,承载了大量的文档、图片和资料。然而,当需要打印这些文件时,很多用户会面临一个共同的问题:不想下载到本地再打印,既占用空间又浪费时间。那么&…...

设置了 robots.txt 禁止爬虫抓取,为什么还是能被百度搜索出来

虽然设置了 robots.txt 禁止爬虫抓取,但网页仍可能被百度搜索出来,主要有以下几个原因: robots.txt 只是一种建议性协议,并非强制性[2]。虽然大多数搜索引擎会遵守 robots.txt 的规则,但并不是所有爬虫都会严格遵守。 …...

DedeCMS-V5.7.82-UTF8织梦管理系统漏洞

将靶场环境放到www目录下——访问/dedecms/uploads 安装程序 - 织梦内容管理系统 V5.7 UTF8SP2 同意协议——继续 继续 配置后——点击继续 进入后台 登录后台——填写用户名密码。 方法一:上传shell文件 后台——核心——附件管理——上传新文件。 访问/dedecms…...

【Python】字符串练习题及代码示例

1、使用while循环实现对字符串中每个字符进行输出。 代码示例: 2、请将代码实现如下进制的转换。 (1)v1675,请将v1转换为二进制。 代码: 注意:将十进制数转换为二进制数的方法是:bin(a),a是整型&#x…...

fluent动网格profile udf 注意事项

案例一: ((profile_name transient 2 0) ....第一行 (time 0 15.0) ....第二行 (v_x 1.2 1.2)) …...

【doghead】mac构建 2: player 端 clion构建

准备工作 【doghead】mac构建 1 【doghead】mac: clion2024.1启动崩溃 mbp的 uv 构建ok zhangbin@zhangbin-mbp-2  ~/tet/Fargo/zhb-bifrost/Bifrost-202403/worker/third_party/libuv   main clion使用lldb cmake构建 更...

论网络流(最大流篇)--新手入门超详解--包教包会

论网络流--新手入门超详解--包教包会 1 前言2 什么是最大流3最大流问题的求解(1)问题转化--增广路的引入(2)走回头路--EK算法(3)EK的弊端(4)化图为树--DINIC算法 4后记 1 前言 网络…...

环境搭建:全面详尽的 MongoDB Shell MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主)

环境搭建:全面详尽的 MongoDB Shell & MongoDB Server介绍、安装、验证与配置指南(以 Windows 系统为主) MongoDB 是一个基于文档的 NoSQL 数据库,以其高性能、灵活性和可扩展性而受到广泛欢迎。本文将带您完成 MongoDB 的安装…...

使用 OpenSearch 的 K-NN 向量搜索来增强搜索功能

使用 OpenSearch 的 K-NN 向量搜索来增强搜索功能 许多应用程序都依赖于提供精确且相关的搜索结果的能力。尽管传统关系数据库的全文搜索功能在某些情况下已经足够,但这些数据库在从文本中提取语义含义或搜索结构化程度较低的数据方面可能会出现不足。在这篇博文中&…...

Less-2(闭合)

我们使用第一关的测试方法尝试一下,打咩 直接看源码&#xff0c;看到&#xff0c;尝试一下闭合 <?php ini_set("display_errors", 0); $str $_GET["keyword"]; echo "<h2 aligncenter>没有找到和".htmlspecialchars($str)."相…...

mysql介绍

MySQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;广泛用于存储和管理数据。它支持多种操作系统&#xff0c;如Linux、Windows、MacOS等。MySQL的特点包括&#xff1a; 1.开源免费&#xff1a;MySQL是开源的&#xff0c;可以免费使用和分发。 2…...

【ROS学习】ROS中 use_sim_time 参数的含义与作用

文章目录 写在前面一、背景描述二、 use_sim_time 参数的含义与作用三、举例说明1. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **.bag 2. 不设置use_sim_time (也即 use_sim_time false)&#xff0c;播放数据集使用rosbag play **…...

python-查找元素3(赛氪OJ)

[题目描述] 有n个不同的数&#xff0c;从小到大排成一列。现在告诉你其中的一个数x&#xff0c;x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入&#xff1a; 输入共两行第一行为两个整数n、x。第二行为n个整数&#xff0c;代表a[i]。输出&#x…...

苹果 Safari 的隐私保护与广告追踪问题 :技术进展与挑战

隐私保护的进展与挑战 近年来&#xff0c;浏览器行业在隐私保护技术方面取得了显著进展&#xff0c;尤其是在广告追踪领域。谷歌的 Chrome 浏览器推广了隐私沙盒&#xff0c;通过将用户可能感兴趣的主题分类并推送给广告商。Mozilla Firefox 和 Meta Facebook 则推出了一种名为…...

pytest之fixture

Pytest 中 Fixture 的 yield 用法 在软件测试中&#xff0c;设置和清理测试环境是一个重要的环节。Pytest 作为一个功能强大的测试框架&#xff0c;通过 Fixture 机制简化了这一过程。特别是yield语句的使用&#xff0c;使得 Fixture 能够在测试前进行设置&#xff0c;并在测试…...