☁️ 网络的概念
- 网络是指通过电缆、无线电波或者其他方法连接在一起的一系列节点的集合。在计算机科学和信息技术领域,网络特指计算机网络,它是一组相互连接的、自治的计算机系统。
📐 结构
-
🏢 边缘部分
- 连接网络的计算机、手机、服务器等
-
🔗 核心部分
- 路由器、交换机等设备
- 负责数据传输和路由
-
🌐 接入网络
- 将用户设备连接到核心网络
- 包括家庭网络、企业网络等
-
🔗 网络拓扑
- 星形、环形、总线形等节点布局
-
📶 协议层次
- 遵循
OSI
模型或TCP/IP
模型
- 遵循
🔬 原理
-
📦 数据封装和分层传输
- 遵循
TCP/IP
协议栈 - 数据封装成特定格式的数据包
- 遵循
-
🔄 路由和转发
- 路由器决定数据包路径
- 交换机在局部环境中转发
-
🌐 地址和标识
- 网络设备有唯一的
IP
地址
- 网络设备有唯一的
-
🛠️ 错误控制和流量控制
- 错误检测和纠正
- 控制数据传输速率,避免拥塞
-
🔄 交互协议
-
HTTP
、FTP
等定义客户端与服务器交互规则
-
-
🔒 网络安全
- 加密、身份验证、访问控制
⚠️ 注意: 网络的安全性是一个持续发展的领域,随着技术的进步,新的安全措施和协议不断被开发出来以应对新的挑战。
💻 网络通信协议及接口
- 网络通信协议和接口是计算机网络中数据传输的基础,它们规定了如何在不同设备和服务之间传递信息。
🔗 网络通信协议
-
🌐 应用层
-
HTTP
:用于浏览网页。 -
HTTPS
:安全的网页浏览。 -
FTP
:文件传输。 -
SMTP
:发送邮件。 -
POP3
/IMAP
:接收邮件。
-
-
🛰️ 传输层
-
TCP
:可靠的连接。 -
UDP
:快速传输。
-
-
🌍 网络层
-
IP
:寻址和路由。 -
ICMP
:网络诊断。
-
-
🔌 链路层
-
Ethernet
:局域网数据传输。 -
PPP
:点对点连接。
-
🔌 网络接口
-
🌐 物理接口
- RJ45:有线连接。
- 无线网卡:无线连接。
-
🖧 软件接口
- 网络 API:如
Winsock
。 - SDK:开发网络服务。
- 网络 API:如
-
🛠️ 设备接口
- 交换机和路由器管理。
- 设备间通信:如
SNMP
。
⚠️ 注意: 网络协议和接口的选择取决于应用需求、网络环境和安全考虑。随着技术的发展,这些协议和接口也在不断进化。
📡 IP 协议
-
IP
(Internet Protocol
)是一种用于在网络中发送数据包的协议,是互联网的基础通信协议之一。它定义了数据包的地址标签、传输机制和路由选择。
🚩 IP 协议的特点
-
📌 地址分配
- 每个设备分配一个唯一的
IP
地址 - 地址用于识别网络中的设备
- 每个设备分配一个唯一的
-
🔄 数据包传输
- 数据分成小块,称为数据包
- 每个数据包包含源和目的
IP
地址
-
🌍 路由
-
IP
路由器将数据包从源传送到目的地 - 路由器使用路由表来确定最佳路径
-
-
🛠️ 不可靠性
-
IP
不保证数据包的可靠传输 - 不保证数据包的顺序、完整性或不重复
-
📐 IP 协议的版本
-
IPv4
- 32位地址,形式如
192.168.0.1
- 地址空间限制,最多约 43 亿个地址
- 32位地址,形式如
-
IPv6
- 128位地址,形式如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
- 提供几乎无限的地址空间
- 128位地址,形式如
🔬 IP 协议的原理
-
📦 数据封装
-
IP
数据包包含头部和数据部分 - 头部包含控制信息,如版本、长度、
IP
地址等
-
-
🔄 分片和重组
- 大数据包在传输时可能被分成更小的片段
- 接收端将这些片段重组为原始数据包
-
🛠️ 错误检测
-
IP
头部包含校验和,用于错误检测 - 不提供错误修正机制
-
⚠️ 注意: IPv4
地址的耗尽导致了 IPv6
的开发,后者提供了更先进的特性,如自动配置、端到端连接、改进的安全性等。随着互联网的发展,IPv6
正在逐渐取代 IPv4
。
🌐 TCP (TCP(Transmission Control Protocol))
TCP 是一种在计算机网络中用于可靠数据传输的协议。它是一种面向连接的协议,确保数据在发送和接收之间的可靠性和有序性。
-
🔗 建立连接:
- 🅰️ 第一次握手(SYN): 客户端发送一个请求,称为
SYN
(同步序列号)包,指示其想要建立连接。这个包包含一个初始的序列号。 - 🅱️ 第二次握手(SYN-ACK): 服务器收到客户端的请求后,确认并发送一个
SYN-ACK
包作为响应。这个包表示服务器同意建立连接,并包含服务器的初始序列号。 - 🅾️ 第三次握手(ACK): 客户端收到服务器的
SYN-ACK
包后,发送一个ACK
(确认)包,表示连接已建立。此时,双方都知道彼此已准备好发送数据。
- 🅰️ 第一次握手(SYN): 客户端发送一个请求,称为
-
🔄 数据传输:
- 一旦连接建立,数据传输就可以开始。数据被分割成小的数据段(segment),每个数据段都有一个序列号,以便接收端能够按正确的顺序重新组装数据。
- TCP 还提供流量控制和拥塞控制,以确保网络上的性能和稳定性。
-
✅ 数据确认和重传:
- 一旦接收端收到数据段,它会发送一个确认(
ACK
)给发送端,指示已成功接收。如果发送端在一定时间内未收到确认,它会认为数据丢失,然后重新发送该数据段。
- 一旦接收端收到数据段,它会发送一个确认(
-
🚫 连接终止:
- 🅰️ 第一次挥手(FIN): 一方发送一个
FIN
包,表示它不再发送数据。 - 🅱️ 第二次挥手(ACK): 另一方收到
FIN
后,发送一个ACK
包作为确认。 - 🅾️ 第三次挥手(FIN): 另一方也发送一个
FIN
包,表示它的数据发送已完成。 - ❗ 第四次挥手(ACK): 第一方收到
FIN
后,发送最后一个ACK
包作为确认。连接现在已经终止。
- 🅰️ 第一次挥手(FIN): 一方发送一个
⚠️ 注意: TCP 在网络上确保了数据的可靠性和完整性。
⚡️ UDP (UDP(User Datagram Protocol))
UDP 是一种在计算机网络中用于数据传输的简单协议。与 TCP
相比,UDP 的特点是无连接性、无序性和不可靠性,这使其更加轻量级。
🚀 UDP 传输过程:
UDP 的数据传输过程相对简单,不涉及复杂的握手或连接终止过程。
- 📝 构建数据报: 发送端根据需要构建UDP数据报。
- 📩 发送数据报: 数据报被直接发送到目的IP地址。
- 📥 接收数据报: 接收端收到数据报,并根据需要进行处理。
- ❌ 无确认: 接收端不会发送任何确认。
⚠️ 注意: 由于没有确认机制,发送端无法知道数据报是否已成功到达接收端。
📢 特点:
-
📭 无连接性:
- 📌 UDP 不需要建立连接。
- 📌 数据报可以独立发送。
- 📌 发送端可以随时发送数据报到接收端。
-
📝 数据报格式:
- 🔴 源端口号: 标识数据报来源。
- 🔴 目标端口号: 标识数据报的目的地。
- 🔴 长度: 指示数据报的大小。
- 🔴 校验和: 用于检测传输错误。
- 🔴 数据: 实际要传输的内容。
-
🔄 无序性:
- 📌 数据报的传输没有固定顺序。
- 📌 数据报可以以任意顺序到达。
-
❌ 不可靠性:
- 📌 UDP 不发送确认消息。
- 📌 丢失的数据报不会被重传。
-
🎮 应用场景:
- 📌 实时音频和视频流。
- 📌 在线游戏。
- 📌 VoIP 通话等。
⚠️ 注意: 由于 UDP 的不可靠性,某些应用可能需要在应用层实现自己的确认和重传机制。
🔄 TCP 和 UDP 的区别
TCP 和 UDP 是两种不同的传输层协议,具有不同的特点和用途。
-
🔄 连接性:
- TCP: 是一种面向连接的协议。
- UDP: 是一种无连接的协议。
-
✅ 可靠性:
- TCP: 提供了可靠的数据传输。
- UDP: 数据的可靠性较低。
-
🔄 有序性:
- TCP: 确保数据有序。
- UDP: 数据报可以以任意顺序到达接收端。
-
🚀 开销和效率:
- TCP: 提供可靠性和有序性,但有较高的开销。
- UDP: 是一种轻量级的协议,没有连接的建立和断开过程。
⚠️ 注意: 选择使用 TCP 还是 UDP 取决于应用程序的需求和优先级。
🌌 HTTP & HTTPS
🔗 这两种协议都用于计算机网络间的数据传输。它们主要应用于客户端(如Web浏览器)与服务器之间,传输超文本(如网页)和其他资源,从而使用户能够全球范围地浏览互联网内容。以下是它们的特点和工作流程:
🔄 HTTP & HTTPS 特点
-
🛡️ 安全性:
- HTTP: 数据以明文形式发送,不安全。
- HTTPS: 数据经过加密,安全,基于SSL/TLS实现。
-
📜 证书和身份验证:
- HTTP: 不需要身份验证。
- HTTPS: 使用数字证书来验证服务器的身份。
-
🚪 通信端口:
- HTTP: 默认使用端口80。
- HTTPS: 默认使用端口443。
-
🚀 性能:
- HTTP: 无加密,传输快速。
- HTTPS: 数据传输有加密过程,相对稍慢。
-
🔍 搜索引擎排名:
- HTTP: 在SEO中可能排名较低。
- HTTPS: 更受搜索引擎青睐。
⚠️ 注意: 大多数现代网站已转向使用HTTPS,因为它提供更高的数据保护。
🔄 HTTP & HTTPS 请求到服务器的过程
🔗 无论是HTTP还是HTTPS,请求到服务器的基本过程都相似,但HTTPS有额外的加密和身份验证步骤:
- 🌐 DNS解析: 通过DNS将服务器域名转为IP地址。
- 🤝 建立TCP连接: 使用
TCP
与服务器建立连接。 - 🛡️ TLS握手 (仅HTTPS): 安全握手过程,包括身份验证和密钥交换。
- 🚀 构建HTTP请求: 客户端创建请求。
- 📩 发送请求: 使用
HTTP
或加密的HTTPS
发送到服务器。 - 🖥️ 服务器处理请求: 服务器解析并处理请求。
- 📤 发送响应: 服务器发送响应给客户端。
- 🖱️ 客户端接收和处理响应: 客户端解析响应内容。
- 🔌 关闭连接: 双方关闭连接。
⚠️ 注意: 实际请求可能受到缓存、负载均衡和其他因素的影响,使得过程变得更加复杂。
📧 SMTP (Simple Mail Transfer Protocol)
-
🔹
SMTP
是电子邮件的主要发送协议。 -
🔹 它工作在应用层,与
TCP
层协同工作,通常使用端口25
。 -
🔹 主要特点:
- 🔸 快速: 能够快速地传递消息。
- 🔸 可靠: 确保邮件送达。
- 🔸 方向性: 仅用于发送邮件,不涉及接收。
-
🔹 SMTP的工作过程涉及多个步骤:
-
连接建立:
-
🔸 客户端建立与SMTP服务器的
TCP
连接。 -
🔸 服务器返回一个220状态码,表示服务就绪。
-
-
握手:
-
🔸 客户端发送
HELO
命令,介绍自己。 -
🔸 服务器确认握手。
-
-
邮件传输:
-
🔸 客户端使用
MAIL FROM
命令指定发件人。 -
🔸 使用
RCPT TO
命令指定收件人。 -
🔸 使用
DATA
命令发送邮件正文。
-
-
结束:
- 🔸 使用
QUIT
命令结束会话。
- 🔸 使用
-
⚠️ 注意: SMTP
仅用于发送邮件。为接收邮件,通常使用IMAP
或POP3
。
📁 FTP (File Transfer Protocol)
-
🔹
FTP
是用于在计算机网络上进行文件传输的协议。 -
🔹 它可以用于上传和下载文件,以及管理远程文件和目录。
-
🔹 主要特点:
- 🔸 双向传输: 可以上传和下载文件。
- 🔸 明文传输: 默认情况下不加密,可能存在安全隐患。
- 🔸 目录访问: 允许浏览和管理远程文件和目录。
-
🔹 FTP的工作过程涉及多个步骤:
-
连接建立:
-
🔸 客户端建立与FTP服务器的
TCP
连接。 -
🔸 通常使用端口
21
。
-
-
登录:
-
🔸 客户端提供用户名和密码登录。
-
🔸 匿名登录也是可能的。
-
-
命令交互:
-
🔸 客户端和服务器交换命令和响应。
-
🔸 包括文件上传、下载、列表获取等。
-
-
数据传输:
- 🔸 文件数据在不同的
TCP
连接上进行传输。
- 🔸 文件数据在不同的
-
断开连接:
- 🔸 一旦文件传输完成,连接会断开。
-
⚠️ 注意: FTP
是明文协议,存在安全隐患。使用SFTP
或FTPS
增加安全性。
🔒 SSH (Secure Shell)
-
🔹
SSH
是一个用于安全地进行远程登录和数据传输的协议。 -
🔹 通过加密技术,
SSH
确保数据在传输过程中的隐私和完整性。 -
🔹 主要特点:
- 🔸 加密: 使用强加密技术保护数据。
- 🔸 身份验证: 支持多种身份验证方法。
- 🔸 通用性: 除了命令执行,还支持文件传输等功能。
-
🔹 SSH的工作过程涉及多个步骤:
-
连接建立:
-
🔸 客户端建立与SSH服务器的
TCP
连接。 -
🔸 通常使用端口
22
。
-
-
握手:
-
🔸 客户端和服务器交换初始化消息。
-
🔸 开始密钥交换和认证。
-
-
身份验证:
- 🔸 客户端提供密钥、密码或其他方法进行身份验证。
-
命令执行:
-
🔸 用户在远程主机上执行命令。
-
🔸 所有操作都在加密通道中进行。
-
-
断开连接:
- 🔸 一旦任务完成,连接会断开。
-
⚠️ 注意: SSH
提供了一个安全的方式来执行远程命令和文件传输。
📋 DNS (Domain Name System)
-
🔹
DNS
是互联网的电话簿。 -
🔹 它将人类可读的域名转换为机器可读的IP地址。
-
🔹 主要特点:
- 🔸 快速: 通过缓存技术实现快速的域名解析。
- 🔸 分层: 使用分层的查询系统。
- 🔸 分布式: 全球有多个DNS服务器。
-
🔹 DNS的工作过程涉及多个步骤:
-
用户请求:
-
🔸 用户在浏览器中输入域名。
-
🔸 电脑会询问本地
DNS
缓存。
-
-
本地DNS服务器查询:
- 🔸 如果本地缓存中没有结果,查询将转发到本地
DNS
服务器。
- 🔸 如果本地缓存中没有结果,查询将转发到本地
-
根服务器查询:
- 🔸 如果本地
DNS
服务器没有记录,它会查询根服务器。
- 🔸 如果本地
-
顶级域名服务器查询:
- 🔸 根服务器将指向相关的顶级域名服务器。
-
权威名称服务器查询:
- 🔸 顶级域名服务器将指向权威名称服务器,它知道确切的IP地址。
-
获取IP地址:
- 🔸 权威名称服务器返回IP地址给本地
DNS
服务器,然后返回给用户的计算机。
- 🔸 权威名称服务器返回IP地址给本地
-
浏览器请求:
- 🔸 浏览器使用IP地址请求网站内容。
-
⚠️ 注意: DNS
查询可能涉及多个服务器,但通常非常快速,因为许多结果都被缓存。
📨 IMAP (Internet Message Access Protocol)
-
🔹
IMAP
是一种电子邮件获取协议。 -
🔹 它允许用户在多个设备上查看和管理同一邮箱。
-
🔹 主要特点:
- 🔸 同步: 允许在多个设备上同步邮件。
- 🔸 保留邮件: 服务器上的邮件不会被自动删除。
- 🔸 灵活性: 支持邮件的部分下载,如仅获取邮件头。
-
🔹 IMAP的工作过程涉及多个步骤:
-
连接建立:
-
🔸 客户端建立与
IMAP
服务器的TCP
连接。 -
🔸 通常使用端口
143
或993
(SSL/TLS)。
-
-
身份验证:
- 🔸 客户端提供用户名和密码登录。
-
选择邮箱:
- 🔸 客户端选择要查看的邮箱,如收件箱。
-
获取邮件:
- 🔸 客户端获取邮件列表或邮件内容。
-
断开连接:
- 🔸 一旦邮件获取完成,连接会断开。
-
⚠️ 注意: 与POP3
相比,IMAP
更适合在多个设备上访问邮件。
📬 POP3 (Post Office Protocol 3)
-
🔹
POP3
是一种电子邮件获取协议。 -
🔹 它将邮件下载到本地并可能从服务器上删除它们。
-
🔹 主要特点:
- 🔸 简单: 设计简单,易于实现。
- 🔸 本地存储: 下载邮件后,通常从服务器上删除。
- 🔸 单一设备: 更适合单一设备上的邮件访问。
-
🔹 POP3的工作过程涉及多个步骤:
-
连接建立:
-
🔸 客户端建立与
POP3
服务器的TCP
连接。 -
🔸 通常使用端口
110
或995
(SSL/TLS)。
-
-
身份验证:
- 🔸 客户端提供用户名和密码登录。
-
获取邮件:
- 🔸 客户端获取邮件列表或邮件内容。
-
断开连接:
- 🔸 一旦邮件获取完成,连接会断开。
-
⚠️ 注意: 与IMAP
相比,POP3
是一种更简单的邮件获取协议,但可能不适合多设备使用。
🏮 AJAX (Asynchronous JavaScript and XML)
-
🔹
AJAX
是一种在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。 -
🔹 主要特点:
- 🔸 异步: 允许后台与服务器通信,不干扰页面的当前状态。
- 🔸 轻量: 只更新部分页面,而不是整个页面。
- 🔸 无刷新: 页面无需刷新即可获取新数据。
-
🔹 AJAX的工作过程涉及多个步骤:
-
发起请求:
- 🔸 通过JavaScript发起异步请求。
-
服务器处理:
- 🔸 服务器处理收到的请求。
-
服务器响应:
- 🔸 服务器返回数据(通常是
XML
或JSON
格式)。
- 🔸 服务器返回数据(通常是
-
更新网页:文章来源:https://www.toymoban.com/news/detail-645052.html
- 🔸 使用JavaScript和DOM更新网页部分。
-
⚠️ 注意: AJAX
使网页可以快速、平滑地更新,提高用户体验。文章来源地址https://www.toymoban.com/news/detail-645052.html
到了这里,关于Java-网络编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!