网络通信概述
- 网络的特点:让设备与设备之间的数据进行共享
使用网络的目的 - 为了联通多方让偶进行通信用的,即把数据从一方传递到另一方。
- 为了让在不同的电脑上运行的软件,之前能够互相传递数据,就需要借助网络的功能
小总结:
- 使用网络能够把多方链接在一起,然后进行数据传递
- 所谓网络编程就是,让在不同的电脑上的软件能够进行数据传递,就是进程之间的通信
IP地址
概念: 地址就是用来标记地点的
例如:
IP地址: 192.168.1.1
目的:用来标记网络上的一台电脑
ip地址: 用来标记网络中的一台主机, 例如 192.168.1.1, 且在本地局域网中是唯一的
linux中开启和关闭网卡
1. 查看IP地址: ifconfig
2. 开启网卡:sudo ifconfig 网卡名(ens33) down
3. 关闭网卡: sudo ifconfig 网卡名(ens33) up
ip地址分类:
ip地址分为ipv4和ipv6:
ipv4: 由4组数组构成,且每组数组的最大值为255, 且最大数量为255 ** 4
ipv6:未来趋势,数量远比ipv4多
ip地址包括两部分: 网络地址和主机地址
- A类IP地址:由1个字节的网络地址和3个字节的主机地址组成,可用A类网络有126个,每个网络能容纳1677214个主机
- B类IP地址:由2个字节的网络地址和2个字节的主机地址组成,可用B类网络有16384个,每个网络能容纳65534个主机
- C类IP地址:由3个字节的网络地址和1个字节的主机地址组成.一般用于小型网络
端口
ip地址是用来区分主机的,而端口用来区分程序。
例如:
一台主机向另一台主机发送信息时,首先会附带目的IP地址用来选中主机,
然后加上端口号用来选中程序,最后将信息发送出去
dest_ip(目的ip): 192.168.1.1 (寻找主机)
dest_port(目的端口): 7788 # 寻找端口程序
src_ip(源IP): 192.168.1.2 # 发送方的主机IP地址
src_port(源端口): 4567 # 发送方的端口号
content(发送内容): hello # 发送方所发送的内容
端口分类
端口就好比一个房子的门,是出入这件房子的必经之路。
如果一个程序需要收发数据,那么就需要有这样的端口,
在Linux系统中,端口可以有65536(2 ** 16),端口分为知名端口和动态端口
知名端口
在0~1023范围内的端口号称为知名端口,这些端口有着特殊的功能,不能随意使用。
- 80端口是分配给HTTP服务
- 22端口是分配给SSH服务
- 21端口是分配给FTP服务
动态端口
动态端口的范围是1024~65535
之所以称为动态端口,是因为他一般不固定非陪某种服务,而是动态分配。
动态分配是指当一个系统程序或应用程序需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供他使用。当程序关闭时,同时也就释放了所占用的端口号
怎样查看端口号
- 在Windows中: netstat -an
- linux: lsof -i [tcp/udp]:2425
小总结
端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如HTTP(万维网服务)、FTP(文件传输)
、SMTP(电子邮件)等。这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?
显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过‘IP地址+端口号’来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器是,WWW服务器使用"80"
端口与你的电脑通信,但你的电脑则可能使用‘3457’这样的端口