网络编程(一):概述、通信三要素
一、前言接下来开启网络编程的章节首先从理解网络编程、了解通信三要素开始。二、网络编程概述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关闭申请因此必须多一步挥手。四、总结以上便是网络编程的基本概念理解接下来将正式进入网络编程的章节。

相关新闻

CPU Cgroup:怎么限制容器 CPU,又怎么正确统计容器 CPU 开销?

CPU Cgroup:怎么限制容器 CPU,又怎么正确统计容器 CPU 开销?

CPU Cgroup:怎么限制容器 CPU,又怎么正确统计容器 CPU 开销?实验环境:Ubuntu 24.04.4 LTS / 内核 6.8.0-106-generic / Cgroup v2(unified hierarchy)/ 华为云 FlexusX 实例 8 vCPU 16GB / Docker 29.1.3引…

2026/7/24 19:52:28阅读更多 →
抖音下载器终极指南:3分钟掌握批量下载去水印技巧

抖音下载器终极指南:3分钟掌握批量下载去水印技巧

抖音下载器终极指南:3分钟掌握批量下载去水印技巧 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. …

2026/7/24 19:52:28阅读更多 →
物理信息神经网络(PINN)原理与应用实践指南

物理信息神经网络(PINN)原理与应用实践指南

1. 物理信息神经网络(PINN)概述物理信息神经网络(Physics-Informed Neural Networks, PINN)是近年来科学机器学习领域最具突破性的方法之一。这种技术巧妙地将物理规律以微分方程的形式嵌入神经网络训练过程,使得模型不…

2026/7/24 19:52:28阅读更多 →
HR看到AI证书,会怎么判断它的价值?

HR看到AI证书,会怎么判断它的价值?

人工智能持续融入各行各业,越来越多求职者在简历中附上AI相关证书,但证书能否为求职加分,评判权掌握在HR与业务部门手中。前程无忧2026应届生招聘调研显示,81.3%人力资源从业者筛选简历时,会优先判断证书与目标岗位的匹…

2026/7/24 23:53:15阅读更多 →
一次看懂 SAP S/4HANA 的 Release、FPS 与 SPS,升级节奏、测试范围与项目决策

一次看懂 SAP S/4HANA 的 Release、FPS 与 SPS,升级节奏、测试范围与项目决策

项目群里经常会出现这样的消息,生产系统当前运行在 SAP S/4HANA 2023 FPS01,Basis 团队计划在下一个维护窗口更新到 SAP S/4HANA 2023 SPS05,请业务、开发和接口团队评估影响。 消息看起来只有几个版本编号,背后的工作量却可能相差几个月。 有人把所有版本变化都称为升级…

2026/7/24 23:53:15阅读更多 →
YOLOv26在商场智能监控中的高效应用与优化

YOLOv26在商场智能监控中的高效应用与优化

1. 项目概述:YOLOv26在商场安全监控中的革新应用商场作为人流密集的公共场所,安全监控系统面临着实时性、准确性和复杂场景适应性的三重挑战。传统监控系统主要依赖人工轮巡和简单移动侦测,误报率高且响应滞后。我们团队基于最新发布的YOLOv2…

2026/7/24 23:53:15阅读更多 →
如何轻松备份CSDN博客:免费工具快速上手指南

如何轻松备份CSDN博客:免费工具快速上手指南

如何轻松备份CSDN博客:免费工具快速上手指南 【免费下载链接】CSDNBlogDownloader 项目地址: https://gitcode.com/gh_mirrors/cs/CSDNBlogDownloader 你是否曾担心自己辛苦撰写的CSDN技术文章会因网络问题而丢失?或者想要整理某个技术专家的博客…

2026/7/24 23:53:15阅读更多 →
5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南

5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南

5分钟实现Windows与iPhone无缝文件传输:AirDropPlus完整指南 【免费下载链接】AirDropPlus Effortless file transfer and clipboard sync between Windows and iOS — powered by Python and Apple Shortcuts. 项目地址: https://gitcode.com/gh_mirrors/ai/AirD…

2026/7/24 23:53:15阅读更多 →
微信单向好友检测工具:5分钟快速清理无效社交关系

微信单向好友检测工具:5分钟快速清理无效社交关系

微信单向好友检测工具:5分钟快速清理无效社交关系 【免费下载链接】WechatRealFriends 微信好友关系一键检测,基于微信ipad协议,看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends 你…

2026/7/24 23:51:15阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/24 0:58:53阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 0:58:53阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 0:58:53阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:06阅读更多 →
【LeetCode 54】螺旋矩阵

【LeetCode 54】螺旋矩阵

问题描述: 解法: 1、模拟(参考自【LeetCode 54】螺旋矩阵-CSDN博客) int *spiralOrder(int **matrix, int matrixSize, int *matrixColSize, int *returnSize) {static const int dirs[4][2] {{0, 1}, {1, 0}, {0, -1}, {-1, …

2026/7/24 0:00:06阅读更多 →
2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

2026 WAIC:模型隐身、智能体疯野,厂商竞赛聚焦办公场景与商业闭环

知春路不相信模型领先今年WAIC大会,昔日AI六小龙来了五家,分别是Kimi、阶跃星辰、Minimax、百川智能、零一万物。连放弃基模的百川和零一万物都来了,唯一缺席的竟是近几个月来风光无限的智谱。(DeepSeek一直不参加)WAI…

2026/7/24 0:00:06阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/24 23:01:03阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/24 19:00:40阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/24 19:00:40阅读更多 →