Java-网络编程


☁️ 网络的概念


  • 网络是指通过电缆、无线电波或者其他方法连接在一起的一系列节点的集合。在计算机科学和信息技术领域,网络特指计算机网络,它是一组相互连接的、自治的计算机系统。
    在这里插入图片描述

📐 结构

  • 🏢 边缘部分

    • 连接网络的计算机、手机、服务器等
  • 🔗 核心部分

    • 路由器、交换机等设备
    • 负责数据传输和路由
  • 🌐 接入网络

    • 将用户设备连接到核心网络
    • 包括家庭网络、企业网络等
  • 🔗 网络拓扑

    • 星形、环形、总线形等节点布局
  • 📶 协议层次

    • 遵循 OSI 模型或 TCP/IP 模型

🔬 原理

  • 📦 数据封装和分层传输

    • 遵循 TCP/IP 协议栈
    • 数据封装成特定格式的数据包
  • 🔄 路由和转发

    • 路由器决定数据包路径
    • 交换机在局部环境中转发
  • 🌐 地址和标识

    • 网络设备有唯一的 IP 地址
  • 🛠️ 错误控制和流量控制

    • 错误检测和纠正
    • 控制数据传输速率,避免拥塞
  • 🔄 交互协议

    • HTTPFTP 等定义客户端与服务器交互规则
  • 🔒 网络安全

    • 加密、身份验证、访问控制

⚠️ 注意: 网络的安全性是一个持续发展的领域,随着技术的进步,新的安全措施和协议不断被开发出来以应对新的挑战。


💻 网络通信协议及接口

  • 网络通信协议和接口是计算机网络中数据传输的基础,它们规定了如何在不同设备和服务之间传递信息。
    在这里插入图片描述在这里插入图片描述

🔗 网络通信协议

  • 🌐 应用层

    • HTTP:用于浏览网页。
    • HTTPS:安全的网页浏览。
    • FTP:文件传输。
    • SMTP:发送邮件。
    • POP3/IMAP:接收邮件。
  • 🛰️ 传输层

    • TCP:可靠的连接。
    • UDP:快速传输。
  • 🌍 网络层

    • IP:寻址和路由。
    • ICMP:网络诊断。
  • 🔌 链路层

    • Ethernet:局域网数据传输。
    • PPP:点对点连接。

🔌 网络接口

  • 🌐 物理接口

    • RJ45:有线连接。
    • 无线网卡:无线连接。
  • 🖧 软件接口

    • 网络 API:如 Winsock
    • SDK:开发网络服务。
  • 🛠️ 设备接口

    • 交换机和路由器管理。
    • 设备间通信:如 SNMP

⚠️ 注意: 网络协议和接口的选择取决于应用需求、网络环境和安全考虑。随着技术的发展,这些协议和接口也在不断进化。


📡 IP 协议

  • IPInternet Protocol)是一种用于在网络中发送数据包的协议,是互联网的基础通信协议之一。它定义了数据包的地址标签、传输机制和路由选择。
    在这里插入图片描述

🚩 IP 协议的特点

  • 📌 地址分配

    • 每个设备分配一个唯一的 IP 地址
    • 地址用于识别网络中的设备
  • 🔄 数据包传输

    • 数据分成小块,称为数据包
    • 每个数据包包含源和目的 IP 地址
  • 🌍 路由

    • IP 路由器将数据包从源传送到目的地
    • 路由器使用路由表来确定最佳路径
  • 🛠️ 不可靠性

    • IP 不保证数据包的可靠传输
    • 不保证数据包的顺序、完整性或不重复

📐 IP 协议的版本

  • IPv4

    • 32位地址,形式如 192.168.0.1
    • 地址空间限制,最多约 43 亿个地址
  • IPv6

    • 128位地址,形式如 2001:0db8:85a3:0000:0000:8a2e:0370:7334
    • 提供几乎无限的地址空间

🔬 IP 协议的原理

  • 📦 数据封装

    • IP 数据包包含头部和数据部分
    • 头部包含控制信息,如版本、长度、IP 地址等
  • 🔄 分片和重组

    • 大数据包在传输时可能被分成更小的片段
    • 接收端将这些片段重组为原始数据包
  • 🛠️ 错误检测

    • IP 头部包含校验和,用于错误检测
    • 不提供错误修正机制

⚠️ 注意: IPv4 地址的耗尽导致了 IPv6 的开发,后者提供了更先进的特性,如自动配置、端到端连接、改进的安全性等。随着互联网的发展,IPv6 正在逐渐取代 IPv4


🌐 TCP (TCP(Transmission Control Protocol))

TCP 是一种在计算机网络中用于可靠数据传输的协议。它是一种面向连接的协议,确保数据在发送和接收之间的可靠性和有序性。

  • 🔗 建立连接:

    • 🅰️ 第一次握手(SYN): 客户端发送一个请求,称为SYN(同步序列号)包,指示其想要建立连接。这个包包含一个初始的序列号。
    • 🅱️ 第二次握手(SYN-ACK): 服务器收到客户端的请求后,确认并发送一个SYN-ACK包作为响应。这个包表示服务器同意建立连接,并包含服务器的初始序列号。
    • 🅾️ 第三次握手(ACK): 客户端收到服务器的SYN-ACK包后,发送一个ACK(确认)包,表示连接已建立。此时,双方都知道彼此已准备好发送数据。
  • 🔄 数据传输:

    • 一旦连接建立,数据传输就可以开始。数据被分割成小的数据段(segment),每个数据段都有一个序列号,以便接收端能够按正确的顺序重新组装数据。
    • TCP 还提供流量控制和拥塞控制,以确保网络上的性能和稳定性。
  • 数据确认和重传:

    • 一旦接收端收到数据段,它会发送一个确认(ACK)给发送端,指示已成功接收。如果发送端在一定时间内未收到确认,它会认为数据丢失,然后重新发送该数据段。
  • 🚫 连接终止:

    • 🅰️ 第一次挥手(FIN): 一方发送一个FIN包,表示它不再发送数据。
    • 🅱️ 第二次挥手(ACK): 另一方收到FIN后,发送一个ACK包作为确认。
    • 🅾️ 第三次挥手(FIN): 另一方也发送一个FIN包,表示它的数据发送已完成。
    • 第四次挥手(ACK): 第一方收到FIN后,发送最后一个ACK包作为确认。连接现在已经终止。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

⚠️ 注意: TCP 在网络上确保了数据的可靠性和完整性。


⚡️ UDP (UDP(User Datagram Protocol))

UDP 是一种在计算机网络中用于数据传输的简单协议。与 TCP 相比,UDP 的特点是无连接性、无序性和不可靠性,这使其更加轻量级。


🚀 UDP 传输过程:
UDP 的数据传输过程相对简单,不涉及复杂的握手或连接终止过程。

  1. 📝 构建数据报: 发送端根据需要构建UDP数据报。
  2. 📩 发送数据报: 数据报被直接发送到目的IP地址。
  3. 📥 接收数据报: 接收端收到数据报,并根据需要进行处理。
  4. 无确认: 接收端不会发送任何确认。

⚠️ 注意: 由于没有确认机制,发送端无法知道数据报是否已成功到达接收端。


📢 特点:

  • 📭 无连接性:

    • 📌 UDP 不需要建立连接。
    • 📌 数据报可以独立发送。
    • 📌 发送端可以随时发送数据报到接收端。
  • 📝 数据报格式:

    • 🔴 源端口号: 标识数据报来源。
    • 🔴 目标端口号: 标识数据报的目的地。
    • 🔴 长度: 指示数据报的大小。
    • 🔴 校验和: 用于检测传输错误。
    • 🔴 数据: 实际要传输的内容。
  • 🔄 无序性:

    • 📌 数据报的传输没有固定顺序。
    • 📌 数据报可以以任意顺序到达。
  • 不可靠性:

    • 📌 UDP 不发送确认消息。
    • 📌 丢失的数据报不会被重传。
  • 🎮 应用场景:

    • 📌 实时音频和视频流。
    • 📌 在线游戏。
    • 📌 VoIP 通话等。

⚠️ 注意: 由于 UDP 的不可靠性,某些应用可能需要在应用层实现自己的确认和重传机制。


🔄 TCP 和 UDP 的区别
TCP 和 UDP 是两种不同的传输层协议,具有不同的特点和用途。

  • 🔄 连接性:

    • TCP: 是一种面向连接的协议。
    • UDP: 是一种无连接的协议。
  • 可靠性:

    • TCP: 提供了可靠的数据传输。
    • UDP: 数据的可靠性较低。
  • 🔄 有序性:

    • TCP: 确保数据有序。
    • UDP: 数据报可以以任意顺序到达接收端。
  • 🚀 开销和效率:

    • TCP: 提供可靠性和有序性,但有较高的开销。
    • UDP: 是一种轻量级的协议,没有连接的建立和断开过程。

⚠️ 注意: 选择使用 TCP 还是 UDP 取决于应用程序的需求和优先级。


🌌 HTTP & HTTPS

🔗 这两种协议都用于计算机网络间的数据传输。它们主要应用于客户端(如Web浏览器)与服务器之间,传输超文本(如网页)和其他资源,从而使用户能够全球范围地浏览互联网内容。以下是它们的特点和工作流程:


🔄 HTTP & HTTPS 特点

  1. 🛡️ 安全性:

    • HTTP: 数据以明文形式发送,不安全。
    • HTTPS: 数据经过加密,安全,基于SSL/TLS实现。
  2. 📜 证书和身份验证:

    • HTTP: 不需要身份验证。
    • HTTPS: 使用数字证书来验证服务器的身份。
  3. 🚪 通信端口:

    • HTTP: 默认使用端口80。
    • HTTPS: 默认使用端口443。
  4. 🚀 性能:

    • HTTP: 无加密,传输快速。
    • HTTPS: 数据传输有加密过程,相对稍慢。
  5. 🔍 搜索引擎排名:

    • HTTP: 在SEO中可能排名较低。
    • HTTPS: 更受搜索引擎青睐。

⚠️ 注意: 大多数现代网站已转向使用HTTPS,因为它提供更高的数据保护。


🔄 HTTP & HTTPS 请求到服务器的过程

🔗 无论是HTTP还是HTTPS,请求到服务器的基本过程都相似,但HTTPS有额外的加密和身份验证步骤:

  1. 🌐 DNS解析: 通过DNS将服务器域名转为IP地址。
  2. 🤝 建立TCP连接: 使用TCP与服务器建立连接。
  3. 🛡️ TLS握手 (仅HTTPS): 安全握手过程,包括身份验证和密钥交换。
  4. 🚀 构建HTTP请求: 客户端创建请求。
  5. 📩 发送请求: 使用HTTP或加密的HTTPS发送到服务器。
  6. 🖥️ 服务器处理请求: 服务器解析并处理请求。
  7. 📤 发送响应: 服务器发送响应给客户端。
  8. 🖱️ 客户端接收和处理响应: 客户端解析响应内容。
  9. 🔌 关闭连接: 双方关闭连接。

⚠️ 注意: 实际请求可能受到缓存、负载均衡和其他因素的影响,使得过程变得更加复杂。


📧 SMTP (Simple Mail Transfer Protocol)

  • 🔹 SMTP是电子邮件的主要发送协议。

  • 🔹 它工作在应用层,与TCP层协同工作,通常使用端口25

  • 🔹 主要特点:

    • 🔸 快速: 能够快速地传递消息。
    • 🔸 可靠: 确保邮件送达。
    • 🔸 方向性: 仅用于发送邮件,不涉及接收。
  • 🔹 SMTP的工作过程涉及多个步骤:

    1. 连接建立:

      • 🔸 客户端建立与SMTP服务器的TCP连接。

      • 🔸 服务器返回一个220状态码,表示服务就绪。

    2. 握手:

      • 🔸 客户端发送HELO命令,介绍自己。

      • 🔸 服务器确认握手。

    3. 邮件传输:

      • 🔸 客户端使用MAIL FROM命令指定发件人。

      • 🔸 使用RCPT TO命令指定收件人。

      • 🔸 使用DATA命令发送邮件正文。

    4. 结束:

      • 🔸 使用QUIT命令结束会话。

⚠️ 注意: SMTP仅用于发送邮件。为接收邮件,通常使用IMAPPOP3


📁 FTP (File Transfer Protocol)

  • 🔹 FTP是用于在计算机网络上进行文件传输的协议。

  • 🔹 它可以用于上传和下载文件,以及管理远程文件和目录。

  • 🔹 主要特点:

    • 🔸 双向传输: 可以上传和下载文件。
    • 🔸 明文传输: 默认情况下不加密,可能存在安全隐患。
    • 🔸 目录访问: 允许浏览和管理远程文件和目录。
  • 🔹 FTP的工作过程涉及多个步骤:

    1. 连接建立:

      • 🔸 客户端建立与FTP服务器的TCP连接。

      • 🔸 通常使用端口21

    2. 登录:

      • 🔸 客户端提供用户名和密码登录。

      • 🔸 匿名登录也是可能的。

    3. 命令交互:

      • 🔸 客户端和服务器交换命令和响应。

      • 🔸 包括文件上传、下载、列表获取等。

    4. 数据传输:

      • 🔸 文件数据在不同的TCP连接上进行传输。
    5. 断开连接:

      • 🔸 一旦文件传输完成,连接会断开。

⚠️ 注意: FTP是明文协议,存在安全隐患。使用SFTPFTPS增加安全性。


🔒 SSH (Secure Shell)

  • 🔹 SSH是一个用于安全地进行远程登录和数据传输的协议。

  • 🔹 通过加密技术,SSH确保数据在传输过程中的隐私和完整性。

  • 🔹 主要特点:

    • 🔸 加密: 使用强加密技术保护数据。
    • 🔸 身份验证: 支持多种身份验证方法。
    • 🔸 通用性: 除了命令执行,还支持文件传输等功能。
  • 🔹 SSH的工作过程涉及多个步骤:

    1. 连接建立:

      • 🔸 客户端建立与SSH服务器的TCP连接。

      • 🔸 通常使用端口22

    2. 握手:

      • 🔸 客户端和服务器交换初始化消息。

      • 🔸 开始密钥交换和认证。

    3. 身份验证:

      • 🔸 客户端提供密钥、密码或其他方法进行身份验证。
    4. 命令执行:

      • 🔸 用户在远程主机上执行命令。

      • 🔸 所有操作都在加密通道中进行。

    5. 断开连接:

      • 🔸 一旦任务完成,连接会断开。

⚠️ 注意: SSH提供了一个安全的方式来执行远程命令和文件传输。


📋 DNS (Domain Name System)

  • 🔹 DNS是互联网的电话簿。

  • 🔹 它将人类可读的域名转换为机器可读的IP地址。

  • 🔹 主要特点:

    • 🔸 快速: 通过缓存技术实现快速的域名解析。
    • 🔸 分层: 使用分层的查询系统。
    • 🔸 分布式: 全球有多个DNS服务器。
  • 🔹 DNS的工作过程涉及多个步骤:

    1. 用户请求:

      • 🔸 用户在浏览器中输入域名。

      • 🔸 电脑会询问本地DNS缓存。

    2. 本地DNS服务器查询:

      • 🔸 如果本地缓存中没有结果,查询将转发到本地DNS服务器。
    3. 根服务器查询:

      • 🔸 如果本地DNS服务器没有记录,它会查询根服务器。
    4. 顶级域名服务器查询:

      • 🔸 根服务器将指向相关的顶级域名服务器。
    5. 权威名称服务器查询:

      • 🔸 顶级域名服务器将指向权威名称服务器,它知道确切的IP地址。
    6. 获取IP地址:

      • 🔸 权威名称服务器返回IP地址给本地DNS服务器,然后返回给用户的计算机。
    7. 浏览器请求:

      • 🔸 浏览器使用IP地址请求网站内容。

⚠️ 注意: DNS查询可能涉及多个服务器,但通常非常快速,因为许多结果都被缓存。


📨 IMAP (Internet Message Access Protocol)

  • 🔹 IMAP是一种电子邮件获取协议。

  • 🔹 它允许用户在多个设备上查看和管理同一邮箱。

  • 🔹 主要特点:

    • 🔸 同步: 允许在多个设备上同步邮件。
    • 🔸 保留邮件: 服务器上的邮件不会被自动删除。
    • 🔸 灵活性: 支持邮件的部分下载,如仅获取邮件头。
  • 🔹 IMAP的工作过程涉及多个步骤:

    1. 连接建立:

      • 🔸 客户端建立与IMAP服务器的TCP连接。

      • 🔸 通常使用端口143993(SSL/TLS)。

    2. 身份验证:

      • 🔸 客户端提供用户名和密码登录。
    3. 选择邮箱:

      • 🔸 客户端选择要查看的邮箱,如收件箱。
    4. 获取邮件:

      • 🔸 客户端获取邮件列表或邮件内容。
    5. 断开连接:

      • 🔸 一旦邮件获取完成,连接会断开。

⚠️ 注意: 与POP3相比,IMAP更适合在多个设备上访问邮件。


📬 POP3 (Post Office Protocol 3)

  • 🔹 POP3是一种电子邮件获取协议。

  • 🔹 它将邮件下载到本地并可能从服务器上删除它们。

  • 🔹 主要特点:

    • 🔸 简单: 设计简单,易于实现。
    • 🔸 本地存储: 下载邮件后,通常从服务器上删除。
    • 🔸 单一设备: 更适合单一设备上的邮件访问。
  • 🔹 POP3的工作过程涉及多个步骤:

    1. 连接建立:

      • 🔸 客户端建立与POP3服务器的TCP连接。

      • 🔸 通常使用端口110995(SSL/TLS)。

    2. 身份验证:

      • 🔸 客户端提供用户名和密码登录。
    3. 获取邮件:

      • 🔸 客户端获取邮件列表或邮件内容。
    4. 断开连接:

      • 🔸 一旦邮件获取完成,连接会断开。

⚠️ 注意: 与IMAP相比,POP3是一种更简单的邮件获取协议,但可能不适合多设备使用。


🏮 AJAX (Asynchronous JavaScript and XML)

  • 🔹 AJAX是一种在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。

  • 🔹 主要特点:

    • 🔸 异步: 允许后台与服务器通信,不干扰页面的当前状态。
    • 🔸 轻量: 只更新部分页面,而不是整个页面。
    • 🔸 无刷新: 页面无需刷新即可获取新数据。
  • 🔹 AJAX的工作过程涉及多个步骤:

    1. 发起请求:

      • 🔸 通过JavaScript发起异步请求。
    2. 服务器处理:

      • 🔸 服务器处理收到的请求。
    3. 服务器响应:

      • 🔸 服务器返回数据(通常是XMLJSON格式)。
    4. 更新网页:

      • 🔸 使用JavaScript和DOM更新网页部分。

⚠️ 注意: AJAX使网页可以快速、平滑地更新,提高用户体验。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueerba126

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值