网络编程 JAVA

一.网络编程

1. 什么是网络编程?

        网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。

2.  三个基本要素
        ①IP 地址:定位网络中某台计算机
                IP 地址用于唯一标识网络中的每一台计算机。在 Internet 上,使用 IPv4 或 IPv6 地址来表示 IP 地址
        ②端口号port:定位计算机上的某个进程(某个应用)
        ③通信协议:通过IP地址和端口号定位后,如何保证数据可靠高效的传输,这就需要依靠通信协议了。

用 IP 找对设备,用端口找对程序,用协议管好数据传输

二. IPv4 与 IPv6 地址长度笔记

三. 网络通信协议

    在计算机网络中,连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。

1.TCP

TCP 是 传输控制协议(Transmission Control Protocol) 的缩写,是互联网中最核心的协议之一,属于 TCP/IP 协议族的重要组成部分。

        它的主要作用是在网络中两台设备之间建立可靠的、面向连接的数据传输通道,确保数据能完整、有序地送达。

TCP 的核心特点:

  • 面向连接:通信前必须通过 “三次握手” 建立连接,通信结束后通过 “四次挥手” 断开连接,类似打电话前先拨号确认对方接听。
  • 可靠传输:如果数据传输中丢失或出错,TCP 会自动重传,并按顺序重组数据,保证接收方收到完整、正确的信息。
  • 流量控制:根据接收方的处理能力调整发送速度,避免对方因数据过多而处理不过来。

        我们日常使用的很多服务(如浏览网页的 HTTP/HTTPS、发送邮件、文件传输等)都依赖 TCP 协议来保证数据传输的可靠性。

2.UDP 

        UDP 是 用户数据报协议(User Datagram Protocol) 的缩写,也是 TCP/IP 协议族中重要的传输层协议,与 TCP 并列但特点截然不同。

UDP 的核心特点:

  • 无连接:通信前不需要建立连接(比如 “三次握手”),直接发送数据,类似写信时直接投递,不需要提前确认对方是否准备好。
  • 不可靠传输:不保证数据一定送达,也不保证接收顺序,若数据丢失或出错,不会自动重传。
  • 传输速度快:由于省去了连接建立、确认、重传等流程,开销小,延迟低。

3.FTP

        FTP 是 文件传输协议(File Transfer Protocol) 的缩写,是专门用于在网络中实现文件传输的标准协议。

        它的核心功能是让客户端(本地设备)与服务器(远程设备)之间进行文件的上传(从本地传到服务器)、下载(从服务器传到本地),以及对服务器上的文件 / 目录进行查看、创建、删除、重命名等管理操作。

        不过,FTP 的一大局限是 默认采用明文传输(包括用户名、密码和文件内容),安全性较低,容易被第三方窃听。因此,现在更多使用基于加密的替代方案,比如 SFTP(SSH 文件传输协议)或 FTPS(基于 SSL/TLS 的 FTP),来提升文件传输的安全性。

        常见用途包括网站管理员上传网页文件到服务器、从特定资源服务器下载软件或资料等。

四 . OSI模型

通信子网的核心功能

通信子网是计算机网络中负责数据传输、交换和路由的部分(由路由器、交换机、通信链路等硬件组成),其核心任务是:

  • 在源主机和目标主机之间建立数据传输路径;
  • 确保数据准确、高效地从一端传递到另一端;
  • 应对网络拥堵、故障等问题,维持传输的稳定性。

物理层、 利用传输介质数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输。   比特流

数据链路层、数据链路层在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以“帧”为单位的数据包,并采用差错控制与流量控制方法,使 有差错的物理线路 变成 无差错的数据链路。

网络层、为数据在节点之间传输创建逻辑链路,通过路由选择算法分组通过通信子网选择最适当的路径,以及实现拥塞控制、网络互连等功能。

传输层、根据通信子网的特性最佳的利用网络资源,并以可靠和经济的方式,为两个端系统(源站 和 目的站)的会话层之间,提供建立、维护和取消传输连接的功能,负责可靠地传输数据。它是计算机通信体系结构中关键的一层。在这一层,信息的传送单位是报文。   

  

会话层、负责维扩两个结点之间的传输连接,以便确保点到点传输不中断,以及管理数据交换等功能

表示层  处理在两个通信系统中交换信息的表示方法,主要包括数据格式变换、数据加密与解密、数据压缩与恢复等功能。

应用层  确定进程之间通信的性质以满足用户需要以及提供网络与用户应用软件之间的接口服务

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

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

相关文章

UE5中的cesium

官方Fab地址(https://www.fab.com/zh-cn/),每月可下载免费素材 在UE5中添加插件cesium for unreal, 知识点一:服务器部署.b3dm地形数据 通过在线链接访问数据目录tileset.json,在cesium for unreal添加空白…

持续优化小程序排名,稳定获取搜索流量

一、建立动态关键词管理机制周期性关键词迭代每月通过平台搜索分析工具(如微信小程序后台)抓取用户搜索词趋势,淘汰搜索量下降的关键词,补充行业热点词与长尾需求词。按 “核心词 季节 / 场景词” 动态调整名称与简介&#xff08…

MyBatis 进阶:连接池、动态 SQL 与多表关联查询

MyBatis 作为一款灵活的持久层框架,除了基础的 CRUD 操作,还提供了连接池管理、动态 SQL 以及多表关联查询等高级特性。本文将从连接池原理出发,深入讲解动态 SQL 的常用标签,并通过实例演示一对多、多对多等复杂关联查询的实现&a…

反射型跨站点脚本(XSS)漏洞中网络安全防火墙(WAF)被绕过进行内容植入与远程劫持机制分析

在一次安全测试中&#xff0c;我发现目标站点在错误处理页面对用户输入的查询参数名未做任何转义&#xff0c;当参数名中包含 <script> 标签时&#xff0c;页面会原样渲染并执行其中的 JavaScript。本文将从实战角度&#xff0c;详细讲解如何定位该反射型 XSS 漏洞、通过…

RAG实战指南 Day 15:多语言与领域特定嵌入技术

【RAG实战指南 Day 15】多语言与领域特定嵌入技术 引言 欢迎来到"RAG实战指南"系列的第15天&#xff01;今天我们将深入探讨多语言与领域特定嵌入技术——这是构建全球化、专业化RAG系统的关键技术。在现实业务场景中&#xff0c;我们经常需要处理多种语言的文档&a…

无铅PCB和无卤pcb有什么区别?

在电子制造领域&#xff0c;环保法规的升级催生了多种特殊工艺的PCB产品。其中&#xff0c;无铅PCB与无卤PCB作为两大主流方向&#xff0c;虽同属绿色制造范畴&#xff0c;却在技术路径与应用场景上存在本质差异。环保指向的根本区别无铅PCB的核心在于焊接材料的革新。传统PCB采…

基于51单片机的贪吃蛇游戏Protues仿真设计

目录 1 系统设计目的 2 系统实现功能 3 系统硬件设计 3.1系统设计框图 3.2 液晶显示模块LCD12864 3.3 按键输入模块 3.4 时钟电路和复位电路 4 系统软件设计 4.1系统软件流程 4.2 游戏引擎模块程序设计 4.3 显示模块程序设计 4.4 输入处理模块程序设计 5 系统仿真…

HTML+CSS

一、HTML相关内容- <img> 标签&#xff1a;- 用于在网页中嵌入图像&#xff0c; src 属性指定图像的路径&#xff0c;可以是绝对路径&#xff08;如 D:\Git\java115_java116\课堂代码\前端代码\pic\cat.jpg &#xff09;、相对路径&#xff08;如 ./pic/cat.jpg &#x…

基于 Gitlab、Jenkins与Jenkins分布式、SonarQube 、Nexus 的 CiCd 全流程打造

前言 在当今数字化飞速发展的时代&#xff0c;软件开发与交付的效率和质量成为了企业竞争的关键要素。为了满足市场对软件快速迭代和高质量交付的需求&#xff0c;越来越多的企业开始探索和实践持续集成与持续交付&#xff08;CI/CD&#xff09;的开发模式。而 GitLab、Jenkin…

[密码学实战]密评相关题库解析

[密码学实战]密评相关题库解析 一、背景 依据《密码法》第二十二条&#xff0c;关键信息基础设施&#xff08;关基&#xff09;运营者必须开展商用密码应用安全性评估&#xff0c;且需定期进行&#xff08;不少于每年一次&#xff09;。 二、核心解析 2.1 测评标准框架&#x…

谷歌开源库gflags详细说明

目录 一.gflags 介绍 二.gflags安装 三.gflags使用 1.包含头文件 2.定义参数 3.访问参数 4.不同文件访问参数 5.初始化所有参数 6.运行参数设置 7.配置文件的使用 8.特殊参数标识 四.总结 一.gflags 介绍 gflags 是 Google 开发的一个开源库&#xff0c;用于 C 应用…

Python爬虫实战:研究XlsxWriter 库相关技术

1. 研究背景与意义 1.1 网络爬虫技术价值 网络爬虫作为数据采集的核心工具,在金融、医疗、教育等领域发挥关键作用。据 Statista 数据显示,2025 年全球大数据市场规模预计达 3250 亿美元,高效的数据获取能力成为企业核心竞争力。Python 以其 80% 的市场占有率成为爬虫开发首…

ThreadLocal内部结构深度解析(Ⅰ)

目录 使用ThreadLocal 例子 内部结构分析 源码解析 图示详解 ThreadLocal是Java中一个非常重要且常用的线程局部变量工具类&#xff0c;它使得每个线程可以独立地持有自己的变量副本&#xff0c;而不是共享变量&#xff0c;解决了多线程环境下变量共享的线程安全问题。下面我…

Python 数据挖掘之数据探索

在数据挖掘的流程中&#xff0c;数据探索是非常关键的第一步&#xff0c;它能帮助我们深入了解数据的特点&#xff0c;为后续的预处理和模型构建打下坚实的基础。我们主要围绕四个方面展开&#xff1a;数据对象与特征、数据统计描述、数据可视化以及相关性和相似性度量。一、数…

高并发点赞场景Synchronized、AtomicLong、LongAdder 和 LongAccumulator性能分析

在高并发点赞场景中&#xff0c;我们需要一个高效、线程安全的计数器来记录点赞数。synchronized、AtomicLong、LongAdder 和 LongAccumulator 都是 Java 中用于实现原子操作的类&#xff0c;但它们的性能在高并发下差异显著。性能主要取决于线程竞争程度&#xff1a;竞争越高&…

postgreSQL的sql语句

目录 一&#xff1a;前提准备1.postgreSQL的安装可以参考我下面一片文章&#xff1a; 二&#xff1a;SQL语句 1.相同点&#xff1a;支持标准sql类型 2.参考详细学习地址&#xff1a; 3.postgresql与mysql的不同点 一&#xff1a;前提准备 1.postgreSQL的安装可以参考我下面…

vue3 JavaScript 数据累加 reduce

在Vue 3中&#xff0c;你可以使用JavaScript的reduce方法来处理数据累加。reduce方法通常用在数组上&#xff0c;它将数组中的每个元素通过一个累加器函数&#xff08;accumulator&#xff09;从左到右累积&#xff0c;最终生成一个单一的值。这在计算总和、累加值等场景中非常…

史上最清楚!读者,写者问题(操作系统os)

读者-写者问题是另一个里程碑式的同步互斥问题。它比生产者-消费者更复杂&#xff0c;因为它引入了不对称的访问权限&#xff1a;读者和读者之间是共享的&#xff0c;但写者和任何人&#xff08;包括读者和其他写者&#xff09;之间都是互斥的。我们用一个生动的比喻来解析这个…

使用Starrocks替换Clickhouse的理由

背景 Starrocks和clickhouse都是非常优秀的OLAP数据库&#xff0c;那么什么情况下使用clickhouse&#xff0c;什么场景下使用starrocks呢&#xff0c;本文就简单列举一下他们的优缺点 理由 首先两者都是列存储&#xff0c;并且都实现了列压缩&#xff0c;所以从存储中两者的压缩…

Mybatis 两级缓存可能导致的问题

Mybatis 两级缓存可能导致的问题两级缓存简介一级缓存 localCache效果开关二级缓存两级缓存可能导致的问题分布式环境下查询到过期数据事务隔离级别失效读已提交失效读未提交失效总结两级缓存简介 一级缓存 localCache 效果 一级缓存是 session 或者说事务级别的&#xff0c…