网络编程核心基础

今天我们来了解一些网络编程核心基础。本文将会介绍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,节点 )地位平等,没有固定的 "服务器" 和 "客户端" 之分。每个节点既可以请求 其他节点的资源(充当客户端),也可以提供自己的资源(充当服务器)。数据直接在节点之间传输,无需经过中间服务器转发。蓝牙传输文件就是一个例子。
相关推荐
SelectDB16 小时前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
zzzzzz3102 天前
9K Star 炸裂开源!这个 C 语言写的代码知识图谱,把 Linux 内核索引压缩到了 3 分钟
linux·服务器·sql
XIAOHEZIcode2 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质6 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
小宇宙Zz6 天前
Maven依赖冲突
java·服务器·maven
Inhand陈工6 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
网络研究院6 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展