网络编程(一):概述、通信三要素

发布时间:2026/9/25 16:19:06

网络编程(一):概述、通信三要素
一、前言接下来开启网络编程的章节首先从理解网络编程、了解通信三要素开始。二、网络编程概述1.什么是网络编程可以让设备上的程序与网络上其他设备中的程序进行数据交互实现网络通信的。也就是让不同设备上的程序通过网络互相收发数据。2.通信的基本架构基本的通信架构有两种形式CS架构Client客户端/Server服务端、BS架构Browser浏览器/Server服务端-CS架构Client客户端需要专门下载安装在电脑/手机上的软件例如QQ、微信PC版、网易云音乐等Server服务端放在远程服务器存数据、处理逻辑一直运行其一整个工作流程是你先把软件安装在本地打开软件主动连接远程服务器大部分的画面、交互功能都在你本地软件里完成服务器只负责传数据。其优点是流畅、功能强、离线还能简单用缺点是每台设备都要安装、更新换电脑还得重新下载安装。-BS架构Browser浏览器不用装专门软件电脑/手机自带浏览器就行例如淘宝网页、教务系统等Server服务端同CS架构的Server服务端放在远程服务器存数据、处理逻辑一直运行其一整个工作流程是不用安装任何软件打开浏览器输入网址所有页面、功能全从服务器实时加载操作请求全部发给后端服务器处理。其优点是不用安装打开网页就能用更新只需要改服务器所有人同步更新缺点是断网基本用不了复杂大功能会有点卡顿。无论是CS架构还是BS架构的软件都要依赖网络编程三、通信三要素网络通信的关键三要素-IP地址设备在网络中的地址是唯一的标识即设备在网络中的“身份证号码”-端口应用程序在设备中唯一的标识即应用程序在设备中的“身份证号码”-协议连接和数据在网络中传输的规则如何配合实现基本通信发送方设备依靠IP地址定位到目标主机通过端口号精准找到主机上运行的对应程序再遵循约定好的通信协议规范数据传输格式与交互规则三者配合完成两台设备指定程序间的数据收发通信。1.IP地址IPInternet Protocol全称“互联网协议地址”是分配给上网设备的唯一标志IP地址有两种形式IPv4、IPv6-IPv4有32位二进制组成是我们现在常用的网络地址由四段0-255数字组成如192.168.1.1现对于全网设备已经不够用-IPv6共128位号称可以为地球每一粒沙子编号IPv6是新一代地址协议用字母数字分段书写拥有海量地址分为八段表示每段每四位编码成一个十六进制位表示数之间用冒号隔开如2001:0db8:0000:0023:0008:0800:200c:417a如何查看IP地址打开命令提示符输入命令ipconfig回车即可查看IP地址IP域名IP是电脑设备在网络里纯数字门牌号难记且数字枯燥域名就是给IP起的好记别名如www.baidu.com访问网站时会通过DNS域名解析服务器把输入的域名自动翻译成对应的IP地址再根据IP找到目标服务器省去记忆复杂数字地址的麻烦。公网IP是可以通过连接互联网的IP地址内网IP也叫局域网IP只能组织机构内部使用192.168.开头的就是常见的局域网地址范围即为192.168.0.0—192.168.255.255专门为组织机构内部使用特殊IP地址127.0.0.1、localhost代表本机IP只会寻找当前所在的本机IP常用命令-ipconfig查看本机IP地址-ping IP地址检查网络是否连通ipconfig已经演示过了接下来演示检查网络是否连通、InetAddress代表IP地址InetAddress的常用方法如下名称说明public static InetAddress getLocalHost()获取本机IP会以一个inetAddress的对象返回public static InetAddress getByName(String host)根据IP地址或者域名返回一个inetAddress对象public String getHostName()获取IP地址对象对应的主机名public String getHostAddress()获取该IP地址对象中的IP地址信息public boolean isReachable(int timeout)在指定毫秒内判断主机与该IP对应的主机是否能连通2.端口号端口标记正在计算机设备上运行的应用程序的被规定为一个16位的二进制范围是0~65535分类-周知端口0~1023被预先定义的知名应用占用如HTTP占用80FTP占用21-注册端口1024~49151分配给用户进程或某些应用程序-动态端口49152~65535之所以被称为动态端口是因为它一般不固定分配某种进程而是动态分配注意❗我们自己开发的程序一般选择使用注册端口且一个设备中不能出现两个程序的端口号一样否则出错3.协议通信协议网络上通信的设备实现规定的连接规则以及传输数据的规则被称为网络通信协议开放式网络互联标准OSI网络参考模型全球网络互联标准TCP/IP网络模型事实上的国际标准OSI网络参考模型TCP/IP网络模型各层对应面向操作应用层应用层HTTP、FTP、SMTP...应用程序需要关注的浏览器邮箱。程序员一般在这一层开发表示层会话层传输层传输层UDP、TCP...选择使用的TCPUDP协议网络层网络层IP...封装源和目标IP数据链路层数据链路层物理比特流...物理设备中传输物理层传输层的2个通信协议:-UDPUser Datagram Protocol用户数据报协议-TCPTransmission Control Protocol传输控制协议UDP协议-特点无连接、不可靠通信-通信双方不用提前建立连接发送方直接把数据包包括自己的IP、程序端口目的地IP、程序端口和数据扔出去不确定对方有没有收到、不保证顺序、丢包也不会重传。-简单理解寄明信片写好地址直接投递不知道对方收没收到信件可能丢失、顺序错乱-典型场景直播、语音通话、游戏联机可以接受少量丢包优先保证流畅TCP协议-特点面向连接、可靠通信-通信前双方必须先完成三次握手建立专属通道传输过程会确认数据是否收到、自动重传丢失数据、整理乱序报文通信结束后通过四次挥手断开连接。-简单理解打电话拨号接通建立连接说话互相确认听见内容不会丢失、顺序不会乱通话结束挂断-典型场景文件下载、网页访问等要求数据完整不能缺失TCP协议三次握手建立可靠连接-可靠连接确定通信双方收发信息都是正常无问题的全双工-三次握手·客户端向服务器端发出连接请求·服务器端返回一个响应·客户端再次发出确认信息连接建立-为什么三次握手建立连接假设A客户端要打给B服务器端·第一次握手A喂你能听见我说话吗A发送请求证明A具备发送能力·第二次握手B我听到了你能听见我的声音吗B收到消息同时反问证明B能收、也能发·第三次握手A可以听到A收到B的回应证明A能收到B的消息如果只有两次握手A发消息→B回复。此时B单方面认为连接成功开始持续分配资源等待A传输。假如网络拥堵A的旧请求延迟抵达服务器B响应建立连接但A早就放弃这条请求不会发送任何数据。服务器白白占用端口、内存资源造成资源浪费。TCP协议四次挥手断开连接-目的确保双方数据的收发都已经完成-四次挥手·客户端发出断开连接请求·服务器端返回一个响应稍等·服务器将最后的数据处理完毕后返回一个响应确认断开·客户端发出正式确认断开连接-简单举例·第一次挥手A说“我说完了准备挂电话”·第二次挥手B回复“收到你要挂断的请求”·第三次挥手B说完所有内容告知A“我这边也说完了可以挂断”·第四次挥手A回复“收到正式挂断”为什么是四次挥手而不是三次前两次挥手只是确认客户端不再发数据但服务端可能还有积压数据要传输不能直接断连服务端要等自身数据全部发送完毕才能发出自己的FIN关闭申请因此必须多一步挥手。四、总结以上便是网络编程的基本概念理解接下来将正式进入网络编程的章节。

相关新闻

4种能力:用TMSpeech重构你的音频信息处理工作流

4种能力:用TMSpeech重构你的音频信息处理工作流

2026/9/21 18:32:42

4种能力:用TMSpeech重构你的音频信息处理工作流 【免费下载链接】TMSpeech 腾讯会议摸鱼工具 项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech 当会议进行到第45分钟,你的注意力开始涣散,突然被点名回答问题——这种职场尴尬时…

如何免费解锁AMD Ryzen处理器终极性能?SMUDebugTool完整指南

如何免费解锁AMD Ryzen处理器终极性能?SMUDebugTool完整指南

2026/9/4 9:09:13

如何免费解锁AMD Ryzen处理器终极性能?SMUDebugTool完整指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…

番茄小说下载器完整指南:轻松下载番茄小说实现离线阅读

番茄小说下载器完整指南:轻松下载番茄小说实现离线阅读

2026/9/3 13:40:40

番茄小说下载器完整指南:轻松下载番茄小说实现离线阅读 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款功能强大的开源工具,专为番…

CANN/GE ACL数据集缓冲区添加函数

CANN/GE ACL数据集缓冲区添加函数

2026/9/25 10:06:33

aclmdlAddDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

用ffmpeg高效批量调整图片尺寸的实战指南

用ffmpeg高效批量调整图片尺寸的实战指南

2026/9/25 9:40:47

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱

2026/9/25 10:06:21

Transformers 音频特征提取工具库 audio_utils 全解析:从 Mel 刻度换算到对数 Mel 频谱 【免费下载链接】transformers 🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and mu…

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南

2026/9/25 9:53:52

RustFS 多节点集群重启与滚动升级实战:Readiness、Quorum 与 Degraded 模式完全指南 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system sup…

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

Java Integer缓存揭秘:128陷阱原理、避坑与面试全解

2026/9/25 8:58:17

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据

2026/9/25 10:00:17

RustFS Scanner 数据用量发布权威性决策:配额准入如何获得可用的权威依据 【免费下载链接】rustfs 🚀2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting mi…

远程协作的工作台整理

远程协作的工作台整理

2026/9/24 16:02:49

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/25 9:41:47

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/25 4:22:14

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…