网络编程(一):概述、通信三要素
2026/7/24 19:52:08 网站建设 项目流程

一、前言

接下来开启网络编程的章节,首先从理解网络编程、了解通信三要素开始。

二、网络编程概述

1.什么是网络编程

可以让设备上的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。也就是让不同设备上的程序,通过网络互相收发数据。

2.通信的基本架构

基本的通信架构有两种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)

-CS架构

Client客户端:需要专门下载安装在电脑/手机上的软件,例如:QQ、微信PC版、网易云音乐等

Server服务端:放在远程服务器,存数据、处理逻辑,一直运行

其一整个工作流程是,你先把软件安装在本地,打开软件主动连接远程服务器,大部分的画面、交互功能都在你本地软件里完成,服务器只负责传数据。

其优点是流畅、功能强、离线还能简单用,缺点是每台设备都要安装、更新,换电脑还得重新下载安装。

-BS架构

Browser浏览器:不用装专门软件,电脑/手机自带浏览器就行,例如:淘宝网页、教务系统等

Server服务端:同CS架构的Server服务端,放在远程服务器,存数据、处理逻辑,一直运行

其一整个工作流程是,不用安装任何软件,打开浏览器输入网址,所有页面、功能全从服务器实时加载,操作请求全部发给后端服务器处理。

其优点是不用安装,打开网页就能用,更新只需要改服务器,所有人同步更新,缺点是断网基本用不了,复杂大功能会有点卡顿。

无论是CS架构,还是BS架构的软件都要依赖网络编程!

三、通信三要素

网络通信的关键三要素:

-IP地址:设备在网络中的地址,是唯一的标识,即设备在网络中的“身份证号码”

-端口:应用程序在设备中唯一的标识,即应用程序在设备中的“身份证号码”

-协议:连接和数据在网络中传输的规则

如何配合实现基本通信:

发送方设备依靠IP地址定位到目标主机,通过端口号精准找到主机上运行的对应程序,再遵循约定好的通信协议规范数据传输格式与交互规则,三者配合完成两台设备指定程序间的数据收发通信。

1.IP地址

IP(Internet 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占用80,FTP占用21)

-注册端口:1024~49151,分配给用户进程或某些应用程序

-动态端口:49152~65535,之所以被称为动态端口,是因为它一般不固定分配某种进程,而是动态分配

注意❗:我们自己开发的程序一般选择使用注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错!!!

3.协议

通信协议:网络上通信的设备,实现规定的连接规则,以及传输数据的规则被称为网络通信协议

开放式网络互联标准:OSI网络参考模型:全球网络互联标准

TCP/IP网络模型:事实上的国际标准

OSI网络参考模型TCP/IP网络模型各层对应面向操作
应用层应用层HTTP、FTP、SMTP...

应用程序需要关注的:浏览器,邮箱。

程序员一般在这一层开发

表示层
会话层
传输层传输层UDP、TCP...选择使用的TCP,UDP协议
网络层网络层IP...封装源和目标IP
数据链路层数据链路层+物理比特流...物理设备中传输
物理层

传输层的2个通信协议:

-UDP(User Datagram Protocol):用户数据报协议

-TCP(Transmission 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关闭申请,因此必须多一步挥手。

四、总结

以上便是网络编程的基本概念理解,接下来将正式进入网络编程的章节。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询