一、网络编程概述
定义:可以让设备中的程序(指的是安装在设备上的各种应用程序,例如手机上的App、电脑上的软件等。)与网络上其他设备中的程序进行数据交互(实现网络通信的)。
客户端(Client)是指发起网络请求的一方,通常是嵌入在用户设备中的应用程序或者浏览器。客户端负责向服务端发送请求,并接收来自服务端的响应。例如,我们使用的浏览器就是典型的客户端,用于向服务端请求网页并显示在用户界面上。
服务端(Server)是指接收客户端请求并提供服务的一方,通常是运行在服务器上的应用程序。服务端接收客户端的请求,进行相应的处理,并将结果返回给客户端。例如,在浏览器中请求网页时,浏览器会将请求发送到服务端,然后服务端响应并返回相应的网页内容。
在这个角度上,我们的电脑既可以是客户端,也可以是服务端,具体取决于其在某个特定场景下的使用角色。例如,当我们使用浏览器访问网页时,电脑是客户端;而当我们在电脑上搭建一个网站并提供服务给其他用户时,电脑就扮演了服务端的角色。
通信的基本架构主要有两种形式:一种是CS架构(Client 客户端/Server服务端)、一种是BS架构(Brower 浏览器/Server服务端)。
-
CS架构的特点:CS架构需要用户在自己的电脑或者手机上安装客户端软件,然后由客户端软件通过网络连接服务器程序,由服务器把数据发给客户端,客户端就可以在页面上看到各种数据了。
-
BS架构的特点:BS架构不需要开发客户端软件,用户只需要通过浏览器输入网址就可以直接从服务器获取数据,并由服务器将数据返回给浏览器,用户在页面上就可以看到各种数据了。
对比:
CS架构通常较为灵活,支持复杂的交互和处理能力。
而BS架构则更加便捷,无需安装和更新,适用于跨平台的Web应用。
二、网络编程三要素
分别是IP地址、端口号、通信协议
当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域。
-
IP地址:表示设备在网络中的地址,是网络中设备的唯一标识
-
端口号:应用程序在设备中唯一的标识
-
协议:连接和数据在网络中传输的规则。
如下图所示:假设现在要从一台电脑中的微信上,发一句“你瞅啥?”到其他电脑的微信上,流程如下
1.先通过ip地址找到对方的电脑
2.再通过端口号找到对方的电脑上的应用程序
3.按照双方约定好的规则发送、接收数据
2.1 IP地址
接下来,我们详细介绍一下IP地址。IP(Ineternet Protocol)全称互联网协议地址,是分配给网络设备的唯一表示。IP地址分为:IPV4地址、IPV6地址
IPV4地址由32个比特位(4个字节)组成,如果下图所示,但是由于采用二进制太不容易阅读了,于是就将每8位看成一组,把每一组用十进制表示(叫做点分十进制表示法)。所以就有了我们经常看到的IP地址形式,如:192.168.1.66
如果想查看本机的IP地址,可以在命令行窗口,输入ipconfig
命令查看,如下图所示
经过不断的发展,现在越来越多的设备需要联网,IPV4地址已经不够用了,所以扩展出来了IPV6地址。
IPV6采用128位二进制数据来表示(16个字节),号称可以为地球上的每一粒沙子编一个IP地址,
IPV6比较长,为了方便阅读,每16位编成一组,每组采用十六进制数据表示,然后用冒号隔开(称为冒分十六进制表示法),如下图所示
我们在命令行窗口输入ipconfig
命令,同样可以看到ipv6地址,如下图所示
现在的网络设备,一般IPV4和IPV6地址都是支持的。
公网IP地址和私网IP地址可以重复,因为它们是在不同的网络范围中使用的。
公网IP地址是由互联网服务提供商(ISP)分配给你的网络设备,用于在全球范围内唯一标识你的设备或网络。公网IP地址是全球唯一的。
私网IP地址是用于在家庭、企业或组织内部的局域网中使用的IP地址。私网IP地址范围是根据互联网工程任务组(IETF)定义的保留地址范围分配的,以确保在全球范围内的网络中不冲突。
由于私网IP地址只在局域网内部使用,并不直接在Internet上访问,所以私网IP地址可以在不同的局域网中重复使用,而不会发生冲突。但是,如果一个局域网连接到Internet,并且使用了私网IP地址,需要通过网络地址转换(NAT)来让私网IP地址与公网IP地址进行映射,以便与公网通信。
我们在浏览器上访问某一个网站时,就需要在浏览器的地址栏输入网址,这个网址的专业说法叫做域名。
域名和IP其实是一一对应的,由运营商来管理域名和IP的对应关系。我们在浏览器上敲一个域名时,首先由运营商的域名解析服务,把域名转换为ip地址,再通过IP地址去访问对应的服务器设备。
关于IP地址,还有一个特殊的地址需要我们记住一下。就是我们在学习阶段进行测试时,经常会自己给自己消息,需要用到一个本地回送地址:127.0.0.1
ipconfig: 查看本机的ip地址
ping 域名/ip 检测当前电脑与指定的ip是否连通
ping命令出现以下的提示,说明网络是通过的
2.2 InetAddress类
我们在开发网络通信程序的时候,可能有时候会获取本机的IP地址,以及测试与其他地址是否连通,这个时候就可以使用InetAddress类来完成。下面学习几个InetAddress的方法。
InetAddress类是Java中的一个类,它用于表示Internet协议(IP)地址。它提供了一些方法来获取和操作IP地址,包括获取主机名、IP地址字符串表示形式的转换、解析域名等功能。