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

发布时间:2026/7/24 19:52:11

网络编程(一):概述、通信三要素
一、前言接下来开启网络编程的章节首先从理解网络编程、了解通信三要素开始。二、网络编程概述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/7/24 19:42:11

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

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

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

2026/7/24 19:42:11

如何免费解锁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/7/24 19:42:11

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

默认情况下,你直接在浏览器里输入 http://127.0.0.1:8384/ 是打不开的。

默认情况下,你直接在浏览器里输入 http://127.0.0.1:8384/ 是打不开的。

2026/7/24 20:42:13

默认情况下,你直接在浏览器里输入 为什么打不开? 从日志中可以看到这一行:GUI and API listening on 127.0.0.1:8384为了系统安全,Syncthing 默认只监听 127.0.0.1(即本地回环地址)。这意味着只有在 176 服…

鸣潮画质优化终极指南:WaveTools工具箱完全解析

鸣潮画质优化终极指南:WaveTools工具箱完全解析

2026/7/24 20:42:13

鸣潮画质优化终极指南:WaveTools工具箱完全解析 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》默认画质不够清晰、帧率不够流畅而烦恼吗?想要让高端显卡充分发挥性能…

【Rust中级教程】1.13. 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、`repr`属性

【Rust中级教程】1.13. 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、`repr`属性

2026/7/24 20:42:13

1.13 内存中的类型 Pt.1:对齐(Alignment)、布局(Layout)、repr属性 1.13.1. 类型的基本职责 每个Rust值都有类型,而类型的职责在于告诉你如何解释内存中的比特位(bits)。 例如:0b10111101这串比特(bits)本身并没有意义,但是&am…

终极文档下载工具指南:一键免费下载30+文库平台的完整教程

终极文档下载工具指南:一键免费下载30+文库平台的完整教程

2026/7/24 20:42:13

终极文档下载工具指南:一键免费下载30文库平台的完整教程 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…

没有无限的货币就无法维持无限的上涨。

没有无限的货币就无法维持无限的上涨。

2026/7/24 20:42:13

您的直觉非常敏锐,直接切中了金融市场中最具体、最具有物质约束力的一个核心要素——流动性(货币总量)的物理边界。 在物理学中,没有无限的能量,就无法维持无限的运动;在金融学中,没有无限的货币…

5分钟零门槛搭建你的AI股票分析助手:daily_stock_analysis终极指南

5分钟零门槛搭建你的AI股票分析助手:daily_stock_analysis终极指南

2026/7/24 20:32:13

5分钟零门槛搭建你的AI股票分析助手:daily_stock_analysis终极指南 你是否曾经为复杂的股票分析感到头疼?面对海量的行情数据、技术指标和新闻资讯,普通投资者往往无从下手。好消息是,现在有一款完全免费的AI股票分析工具——dai…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/24 4:17:29

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/24 19:29:25

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

2026/7/24 0:01:07

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

2026/7/24 0:01:07

srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

2026/7/24 0:01:07

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…