目录
一:计算机网络
是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
二:网络编程
就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。
三:网络模型
计算机网络之间以何种规则进行通信,就是网络模型研究问题。
网络模型一般是指
OSI(Open System Interconnection开放系统互连)参考模型
TCP/IP参考模型(HTTP/HTTPS)
四:网络通信三要素
1:ip
网络中设备的标识,不易记忆,可用主机名
2:端口号
用于标识进程的逻辑地址,不同进程的标识不同
3:协议
通讯的规则 常见协议:TCP,UDP
五:ip
1:概念
InetAddress(网络中计算机唯一的标识,存储形式为二进制)
2:组成
(1:IP地址 = 网络号码+主机地址
(2:A类IP地址:第一段号码为网络号码,剩下的三段号码为本地计算机的号码(1.0.0.1---127.255.255.254)
(1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址) (2)127.X.X.X是保留地址,用做循环测试用的。
(3:B类IP地址:前二段号码为网络号码,剩下的二段号码为本地计算机的号码(128.0.0.1---191.255.255.254)172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留地址。
(4:C类IP地址:前三段号码为网络号码,剩下的一段号码为本地计算机的号码(192.0.0.1---223.255.255.254)192.168.X.X是私有地址
(5:特殊地址:
127.0.0.1 回环地址,可用于测试本机的网络是否有问题. ping 127.0.0.1
DOS命令 ipconfig:查看本机IP地址
ping +主机名或者ip地址测试是否连通
xxx.xxx.xxx.0 网络地址
xxx.xxx.xxx.255 广播地址
3:InetAddress类的使用
没有构造方法可以通过方法返回InetAddress类对象
getAllByName(String host)
给定主机的名称,根据系统上配置的名称服务返回其IP地址数组。
getByAddress(String host, byte[] addr)
根据提供的主机名和IP地址创建InetAddress。
getByName(String host)
确定主机名称的IP地址。
import java.net.InetAddress;
import java.net.UnknownHostException;
public class day34 {
public static void main(String[] args) {
try {
InetAddress localhost = InetAddress.getByName("localhost");//获得当前主机的 InetAddress对象
String hostName = localhost.getHostName();//获得主机名
String hostAddress = localhost.getHostAddress();//获得主机ip
System.out.println(hostName);
System.out.println(hostAddress);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
六:端口号
用于标识进程的逻辑地址,不同进程的标识
物理端口 网卡口
逻辑端口 我们指的就是逻辑端口
(1::每个网络程序都会至少有一个逻辑端口:
(2:B:用于标识进程的逻辑地址,不同进程的标识
(3:C:有效端口:0~65535,其中0~1024系统使用或保留端口。
通过netstat -ano可以查看端口号
七:传输协议
1:UDP协议
将数据源和目的封装成数据包中,不需要建立连接;每个数据报包的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快。
2:TCP协议
建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低。
八:Socket
1:概念
Socket套接字:网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。
即:Socket(把要发送的东西打包)ip地址+端口号
2:Socket原理机制
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。