一、网络目的
让你设备上的数据和其他设备上进行共享,使用网络能够把多方链接在一起,然后可以进行数据传递。
网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信。
二、IP地址的作用
用来标记唯一一台电脑
1. Linux查看IP地址
输入命令ifconfig
2. Window查看IP地址
快捷键win+R打开运行,输入cmd,然后输入命令ipconfig
3. Linux下关闭网卡
Ctrl+A:快速回到行首
Ctrl+E:快速回到行尾
(1)关闭网卡
(2)开启网卡
三、IP地址分类
IPV4个数:256*256*256*256(瓜分完了,不够用)
IPV6:
每一个IP地址包括两部分:网络地址和主机地址
1. A类IP地址
一个A类IP地址由1字节的网络地址(网络号)和3字节主机地址(主机号)组成,网络地址的最高位必须是“0”。
- 地址范围:1.0.0.1 - 126.255.255.254
- 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
- 可用的A类网络有126个,每个网络能容纳16777214个主机。
2. B类IP地址
一个B类IP地址由2个字节的网络地址(网络号)和2个字节的主机地址(主机号)组成,网络地址的最高位必须是“10”。
- 地址范围:128.1.0.1 - 191.255.255.254
- 二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
- 可用的B类网络有16384个,每个网络能容纳65534个主机。
3. C类地址
一个C类IP地址由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”。
- 范围:192.0.1.1 - 223.255.255.254
- 二进制表示为:11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
- C类网络可达2097152个,每个网络能容纳254个主机。
4. D类地址用于多点广播
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。
多点广播地址用来一次寻址一组计算机,地址范围224.0.0.1 - 239.255.255.254。
5. E类IP地址
以“1111”开始,为将来使用保留。E类地址保留,仅作实验和开发用。
6. 私有ip
在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就是属于私网IP,不在公网中使用的,它们的范围是:
- 10.0.0.0 ~ 10.255.255.255
- 172.16.0.0 ~ 172.31.255.255
- 192.168.0.0 ~ 192.168.255.255
四、端口
1. 什么是端口?
提出问题:当两台电脑上同时运行多个程序时,通过IP地址数据可以到达,但该给电脑中哪个程序呢?
计算机通过IP地址找到目标设备后,还需要用端口号区分设备上不同的软件服务。例如:
- 浏览网页:默认用80端口(HTTP)或443端口(HTTPS)
- 发邮件:用25端口(SMTP)
- 下载文件:用21端口(FTP)
网络端口的作用可以理解为计算机的“门牌号”。就像一栋大楼有很多房间(服务),每个房间有唯一的门牌号(端口号),方便快递员(数据)准确找到对应的房间。
如果一个程序需要收发网络数据,那么就需要有这样的端口在Linux系统中,端口可以有65536(2的16次方)个之多!既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号。
2. 端口号
端口是通过端口号来标记的,端口号只有整数,范围是从0到65535。
注意:端口号不一样的*nix系统不一样,还可以手动修改。
3. 端口是怎样分配的
端口号不是随意使用的,而是按照一定的规定进行分配
(1)知名端口(0-1023)
众所周知的端口,范围-到1023。由国际组织IANA统一管理,专门分配给最常用的网络服务:
- 80端口:网页服务(HTTP)→ 相当于"官方网站入口"
- 443端口:加密网页(HTTPS)→ 类似"银行VIP通道"
- 22端口:安全远程登录(SSH)→ 类似"机房管理专用门"
(2)注册端口(1024-49151)
企业可向IANA申请注册专用端口,比如:
- 3306端口:MySQL数据库
- 3389端口:Windows远程桌面
- 5432端口:PostgreSQL数据
(3) 动态端口
动态端口的范围是从1024到65535
之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
动态分配是指当一个系统程序或应用程序程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。
当这个程序关闭时,同时也释放了所占用的端口号。
(4)怎样查看端口号
Linux 系统:
- 使用
netstat
命令:如netstat -tulnp
可以查看所有监听中的 TCP 和 UDP 端口,并显示对应的进程 ID 和程序名称。若只想查看特定端口,如 22 端口的使用情况,可使用netstat -tnlp | grep ":22"
4。 - 使用
ss
命令:ss
是netstat
的现代替代品,性能更优,常用ss -tuln
查看端口,若查看特定端口,如查看端口号 22 的使用情况,可使用ss -tnlp | grep ":22"
4。 - 使用
lsof
命令:lsof -i:<端口号>
可以列出使用该端口的进程信息,如lsof -i:80
可查看使用 80 端口的进程。
Windows 系统:
使用命令提示符(CMD)
netstat
命令:打开命令提示符,输入netstat -ano
,可列出所有网络连接和监听端口,显示本地地址、外部地址、状态以及对应的进程 ID。若只想查看正在监听的端口,可使用netstat -anl
。要以数字格式显示地址和端口信息,可使用netstat -n
5。tasklist
命令配合netstat
:先使用netstat -ano
找到占用特定端口的进程 ID,再使用tasklist /fi "pid eq <进程ID>"
查看对应的进程名称和详细信息。
使用任务管理器:
- 打开任务管理器,切换到 “性能” 选项卡,点击 “资源监视器”,在 “网络” 选项卡中可以查看正在使用的端口以及对应的进程。
五、Socket介绍
1. 不同电脑上的进程如何通信
首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!
在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中是行不通的。
起始TCP/IP协议协议族帮我们解决了这个问题,网络层的IP地址可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中应用进程。
这样利用ip地址 + 协议 + 端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。
2. 什么是Socket?
socket(简称套接字)是进程间通信的一种方式,其他进程间通信的~主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的例如我们每天浏览网页、QQ 聊天、收发emai 等等。
3. 创建Socket
在python中,使用socket模块的函数socket就可以完成:
import socket
socket.socket(AdressFamily,Type)
总结:所以说会了socket直白来讲,你接下来编写的程序,你就可以完成网络功能
创建一个TCP Socket
import socket # 导入 Python 内置的 socket 模块,用于网络编程
# 创建 TCP 套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# - socket.AF_INET:指定使用 IPv4 地址族(常见的网络地址类型)。
# - socket.SOCK_STREAM:指定使用 TCP 协议,特点是面向连接、可靠传输,数据无丢失、按序到达。
# ...这里是使用套接字的功能(省略)...
# 实际使用中,会在此处添加绑定地址端口(bind)、监听(listen)、接受连接(accept)、收发数据(send/recv)等逻辑。
创建一个UDP Socket
import socket # 导入 socket 模块
# 创建 UDP 套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# - socket.AF_INET:同样指定 IPv4 地址族。
# - socket.SOCK_DGRAM:指定使用 UDP 协议,特点是无连接、不可靠传输,适合对实时性要求高但允许少量丢包的场景(如视频直播、游戏通信)。
# ...这里是使用套接字的功能(省略)...
# 实际使用中,会在此处添加绑定地址端口(bind)、收发数据(sendto/recvfrom)等逻辑。
s.close() # 关闭 UDP 套接字,释放资源。