网络编程核心基础

今天我们来了解一些网络编程核心基础。本文将会介绍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,节点 )地位平等,没有固定的 "服务器" 和 "客户端" 之分。每个节点既可以请求 其他节点的资源(充当客户端),也可以提供自己的资源(充当服务器)。数据直接在节点之间传输,无需经过中间服务器转发。蓝牙传输文件就是一个例子。
相关推荐
姜鱼问生6 小时前
Nginx 缓存命中率监控:从 X-Cache-Status 到实时统计
运维·nginx·缓存
Apipi*7 小时前
30天速通Linux 第六章信号及信号处理
linux·运维·信号处理
不像程序员的程序媛7 小时前
检测网络的命令mtr详解
网络
天启HTTP8 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
运维行者_8 小时前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时8 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
hz5678910 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC10 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
优橙教育10 小时前
零基础学AI应用开发要多久?3个月能到什么水平
服务器·开发语言·网络·php
IT研究所10 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微