网络编程核心基础

今天我们来了解一些网络编程核心基础。本文将会介绍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,节点 )地位平等,没有固定的 "服务器" 和 "客户端" 之分。每个节点既可以请求 其他节点的资源(充当客户端),也可以提供自己的资源(充当服务器)。数据直接在节点之间传输,无需经过中间服务器转发。蓝牙传输文件就是一个例子。
相关推荐
热心市民R先生13 小时前
对象字典(OD)、服务数据对象(SDO)、过程数据对象(PDO)(三)
服务器·信息与通信
Source.Liu13 小时前
【Ubuntu】关机重启命令
linux·运维·ubuntu
智能运维指南13 小时前
国产DevOps平台技术架构与实践解析——基于信创场景的适配与落地
运维·架构·devops·devops平台·研发效能平台
Hi2024021713 小时前
如何在Docker容器里“克隆自己”
运维·docker·容器
serve the people13 小时前
IP 信用(IP Reputation/IP Credit)全解:定义、评分与实战应用
运维·网络·tcp/ip
0思必得013 小时前
[Web自动化] 爬虫URL去重
运维·爬虫·python·selenium·自动化
软件供应链安全指南13 小时前
权威认证加持!云鲨RASP v4.0:信通院认可的应用内生安全防御标杆
网络·安全
jdyzzy13 小时前
2小时,我搭建了一套可追踪的任务管理流程
运维·devops·项目统计表
我和我导针锋相队13 小时前
在撰写项目书时,如何在有限的篇幅里平衡呈现“问题链”“合作证据链”和“创新落地计划”,避免内容冗余又能清晰传递核心信息?
大数据·运维·人工智能