网络编程核心基础

今天我们来了解一些网络编程核心基础。本文将会介绍IP,端口,IO 模型,通信框架四个部分的入门基础。

1.IP

IP可以通俗地理解为机器在网络中的地址。它是分配给网络中每台主机 / 设备的唯一标识 ,用于在网络中定位设备。它的格式分为IPv4(32位)和IPv6(128位)两种,IPv6 是为了解决 IPv4 地址容量小,地址枯竭的问题而诞生的。数据在网络中传输时,通过目标 IP 确定要发送到哪台设备,通过源 IP确定数据来自哪台设备。

2.端口

在网络通信中,IP 地址 的作用是定位网络中的某一台设备,而端口 的核心意义,是定位这台设备上的某一个网络应用程序。它是区分设备不同网络程序的逻辑标识,用 16位整数表示,范围是0~65535 。这些端口又分为知名端口(0~1023)和动态端口(1024~65535),知名端口是预留给系统核心服务的,比如 HTTP 用 80,HTTPS 用 443。我们在编程中一般使用动态端口。

3.IO 模型

IO(Input/Output) 即输入输出,网络 IO 指程序与网络之间的数据读写过程。IO 模型决定了程序如何处理 "等待数据" 和 "读写数据" 这两个核心步骤,直接影响程序的并发性能。 下面我们介绍3种较常见的 IO 模型。

  • 阻塞 IO(BIO):程序发起 IO 请求后,一直等待数据就绪,期间不能做其他事,实现简单 ,但并发能力差,一个连接占用一个线程 ,适合连接数少、对并发要求低的场景,比如简单的客户端 - 服务器聊天程序。
  • 非阻塞 IO(NIO):程序发起 IO 请求后,立即返回结果,可循环查询数据是否就绪,不阻塞线程,可处理多个连接。
  • 异步 IO(AIO):程序发起 IO 请求后直接返回,内核完成数据读写后再通知程序完全异步,性能最优,但相应的实现复杂,依赖操作系统支持。

4.通信框架

通信框架是封装了网络编程底层细节的工具库 / 组件,开发者无需关注 socket 建立、IO 模型选择、数据编解码等底层操作,只需调用框架提供的 API 即可实现通信。我们来看三种主流网络通信架构。

  • C/S:分为客户端(Client) 与**服务器(Server)**两个角色。客户端是安装在用户设备上的程序,负责和用户交互;服务器是部署在远程机房的高性能设备,负责处理核心业务逻辑。比如说微信App就是客户端,服务器就是服务端,你发消息时客户端把数据传给服务器,服务器再把消息送给对方客户端------这便完成了你与好友间的通信。
  • B/S:它可以看成是C/S 架构的一种 "特殊简化版"。它的 "客户端" 是通用浏览器(Browser),浏览器负责解析 HTML/CSS/JS,展示界面并和用户交互,这样就不需要再单独开发客户端程序了。
  • P/P:这是一种"去中心化"结构,网络中的所有设备(称为 Peer,节点 )地位平等,没有固定的 "服务器" 和 "客户端" 之分。每个节点既可以请求 其他节点的资源(充当客户端),也可以提供自己的资源(充当服务器)。数据直接在节点之间传输,无需经过中间服务器转发。蓝牙传输文件就是一个例子。
相关推荐
Sinclair18 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
Rockbean2 天前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪2 天前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩2 天前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰3 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅3 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒3 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五3 天前
Nginx 高性能Web服务器笔记
服务器·nginx
失重外太空啦3 天前
Tomcat
java·服务器·tomcat