跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

网络应用层编程入门

网络应用层编程涉及通信路径、协议类型及服务接口。通信路径包括单工、半双工和全双工。丢包由信号干扰或拥塞引起。协议分为 UDP(不可靠、数据包)和 TCP(可靠、字节流)。服务接口通过 Socket 文件与 API 实现,如 Java 中的 DatagramSocket 和 DatagramPacket。

RefactorPro发布于 2026/3/16更新于 2026/6/2639 浏览
网络应用层编程入门

文章配图

文章配图

一、操作位置

写的代码 100% 都是应用层,网络操作并不是跟随数据包随层部署执行的,而是始终站全局能跃层部署执行的。

二、通信路径

1. 单工

一条单向固定通道,永远只能某向通信。

2. 半双工

一条双向互通通道,一时间只能在进行一向通信。

3. 全双工

两条互逆的单向固定通道,可以同时进行双向通信。

三、丢包现象

物理信号干扰篡改、设备转发上限或接收方处理不过来的数据转接拥塞丢弃造成数据混乱就是丢包。

四、协议类型

1. UDP

面向 DatagramPacket 的通信。

1.1 单位

面向数据包 Packet 单位。

1.2 存储

四元组:源 + 目的 IP,源 + 目的端口号存储在 DatagramPacket 对象里面。

1.3 操作者

DatagramPacket 操作它包对象里面存储的通信标识。

1.4 不可靠
1.4.1 信号干扰时

UDP 头部的校验和计算发现丢包后结束丢弃数据包。

1.4.2 转接拥塞时

UDP 无视数据转接时的拥塞状态始终以恒定速率发包不管丢弃。

2. TCP

面向 Socket 的通信。

2.1 单位

面向字节流 Stream 单位。

2.2 存储

五元组:源 + 目的 IP,源 + 目的端口号,协议号、序列号、对方接收窗口大小存储在内核内存中的 TCB 结构体里面。

2.3 操作者

Socket 存的文件描述符 fd 交由内核操作对应 TCB 里面存储的通信标识。

2.4 可靠
2.4.1 信号干扰时

TCP 头部的校验和计算发现丢包后接收方丢弃数据包、不发回复 ACK 直到发送方等待超时后重发新包。

2.4.2 转接拥塞时

TCP 会缩小发送窗口来降低发送速率以减少丢弃。

五、服务接口

网络协议栈中,下层都会为上层提供服务接口。

1. Socket 文件

操作系统把传输层及以下层的硬件抽象成 Socket 文件,传输层把 Socket 文件交应用层,给针对指向。

1.1 DatagramPacket

DatagramPacket 是网卡接手的压缩五层网络数据的快递包裹,里面填写有:

源 IP本机站点地址
目的 IP对机站点地址
源端口本机存储单类货物间的入门号
目的端口对机存储单类货物间的入门号
1.2 DatagramSocket

DatagramSocket 是运输货物系统,在构造时搭起在源端口号的本机货物房间。

2. Socket API

操作系统把传输层及以下层的内核操作封装成 Socket API,传输层把 Socket API 交应用层,给指挥执行:

应用层代码调用 Socket API 时会触发程序中断,执行权限从应用层的用户态转变成操作系统的内核态执行传输层及以下层的内核操作。

2.1 DatagramSocket API
2.1.1 搭起房间
2.1.1.1 服务器

能看见自己主机端口分布的服务器适合自定义选择端口号搭起,在指定源端口搭起本机货物房间开启运输货物系统。

2.1.1.2 客户端

未探明用户主机端口分布的客户端适合由操作系统随机分配空闲端口号搭起,在随机空闲源端口搭起本机货物房间开启运输货物系统。

2.1.2 接收包裹

运输系统接收二进制数据覆进网卡数据包,接收为空则进入阻塞等待。

2.1.3 发送包裹

运输系统发送网卡数据包里的二进制数据。

2.2 DatagramPacket API
2.2.1 制造包裹

构造五层压缩的网卡数据包,指定字节数组起始 + 长度部分为应用层数据包、目的 IP、目的端口号。

2.2.2 提取包裹
2.2.2.1 应用层数据包

网卡数据包获取里面的字节数组形式的应用层数据包。

2.2.2.2 应用层数据包的字节长度

网卡数据包获取里面的字节数组形式的应用层数据包的字节长度。

2.2.2.3 源 IP

网卡数据包获取里面的源 IP。

2.2.2.4 目的 IP

网卡数据包获取里面的目的 IP。

2.2.2.5 源端口

网卡数据包获取里面的源端口。

2.2.2.6 目的端口

网卡数据包获取里面的目的端口。

2.2.2.7 目的 IP+ 目的端口

网卡数据包获取里面的目的 IP+ 目的端口。

转化

  1. String->InetAddress:将 String 字符串转为 InetAddress IP 地址。
  2. InetAddress->String:将 InetAddress IP 地址转为 String 字符串。

文章配图

目录

  1. 一、操作位置
  2. 二、通信路径
  3. 1. 单工
  4. 2. 半双工
  5. 3. 全双工
  6. 三、丢包现象
  7. 四、协议类型
  8. 1. UDP
  9. 1.1 单位
  10. 1.2 存储
  11. 1.3 操作者
  12. 1.4 不可靠
  13. 1.4.1 信号干扰时
  14. 1.4.2 转接拥塞时
  15. 2. TCP
  16. 2.1 单位
  17. 2.2 存储
  18. 2.3 操作者
  19. 2.4 可靠
  20. 2.4.1 信号干扰时
  21. 2.4.2 转接拥塞时
  22. 五、服务接口
  23. 1. Socket 文件
  24. 1.1 DatagramPacket
  25. 1.2 DatagramSocket
  26. 2. Socket API
  27. 2.1 DatagramSocket API
  28. 2.1.1 搭起房间
  29. 2.1.1.1 服务器
  30. 2.1.1.2 客户端
  31. 2.1.2 接收包裹
  32. 2.1.3 发送包裹
  33. 2.2 DatagramPacket API
  34. 2.2.1 制造包裹
  35. 2.2.2 提取包裹
  36. 2.2.2.1 应用层数据包
  37. 2.2.2.2 应用层数据包的字节长度
  38. 2.2.2.3 源 IP
  39. 2.2.2.4 目的 IP
  40. 2.2.2.5 源端口
  41. 2.2.2.6 目的端口
  42. 2.2.2.7 目的 IP+ 目的端口
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 国产 AI 大模型进入“群模时代”:技术突破与产业落地
  • Java 后端 Web API 开发实战指南
  • Web 版 IM 聊天信息加密的三种实战方案
  • RTX 4090 加速国产 AIGC 视频生成:腾讯混元与阿里通义万相开源模型
  • 机器人技术:深入理解 MIT 电机混合控制模式
  • Linux 初探:历史溯源与常用指令速览
  • 量化、算子融合与内存映射:C 语言实现边缘 AI 推理实战
  • FPGA 摄像头采集与 HDMI 显示实战:OV5640 驱动及 Verilog 实现
  • FPGA 基础知识:Xilinx Clocking Wizard IP 核完全指南
  • FPGA 电机控制:3 大技术难点与工程实践
  • Java Web 开发环境搭建:IDEA 与 Tomcat 安装部署指南
  • 前端地图开发基础:服务类型、坐标系与 SDK 选型
  • HTML input type 属性全解析与实战避坑指南
  • 线性回归实战:Java 连接 KingbaseES 进行模型训练与评估
  • Python 异步编程与协程实战指南
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • 大模型 Token 与上下文窗口详解
  • Claude Code 与 OpenClaw 实战指南:从初始化到自动化工作流
  • 基于Java的供应链预测性分析引擎构建
  • TikTok 数据抓取实战:基于 Python 的无认证方案

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online