子曰:“温故而知新,可以为师矣。”
网络基础知识
两台计算机通过网络进行通信的必备条件:
1、两台计算机要有唯一的标识—IP地址
2、协议
3、相应的端口号。不同的应用程序间的通信,我们需要使用端口号来区分。
TCP/IP 是目前世界上应用最为广泛的协议,是以TCP和IP为基础的不同层次上多个协议的集合,也称:TCP/IP协议族或TCP/IP协议栈。
TCP:Transmission Control Protocal 传输控制协议
IP:Internet Protocal 互联网协议
TCP/IP的5层模型
1、物理层: 网线等
2、数据链路层:TCP/IP软件的最底层,负责接收IP数据包并通过网络发送或者从网络上接收物理帧,抽出IP数据报,交给IP层。
3、网络层: 是TCP/IP协议族中非常关键的一层,主要定义了IP地址格式,IP协议就是一个网络层协议。
4、传输层: 这一层主要是提供应用程序间的通信,TCP/IP协议族在这一层的协议有 TCP和UDP。
5、应用层: TCP/IP协议族在这一层有很多的协议来支持不同的应用,常见的有:访问万维网(www.)用到的http协议、ftp文件传输协议、smtp简单邮件发送协议、dns域名解析协议、telnet远程登录协议等
端口
1、用来区分不同的应用程序
2、端口号范围为0~65535,其中0~1023为系统保留(如http、ftp等)
3、IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础
4、需记住的端口号:http:80; ftp:21; telnet:23;
JAVA中的网络支持
针对网络通信的不同层次,Java提供的网络功能有4大类
1、InetAddress:用于标识网络上的硬件资源
2、URL:统一资源定位符,通过url可以之间读取或写入网络上的数据
3、Sockets:使用TCP协议实现网络通信的Socket相关类
4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信
Socket通信模型
InetAddress类
InetAddress类用于标识网络上的硬件资源,即互联网协议(IP)地址
使用方法:
InetAddress address = InetAddress.getLocalHost();
address.getHostAddress(); //ip地址
address.getHostName(); //计算机名
URL
URL(Unoform Resource Locator)统一资源定位符,标识Internet上某一资源的地址
URL由两部分组成:协议名称和资源名称,中间用冒号隔开。
在java.net包中,提供了URL类来表示URL
try{
//创建一个URL实例
URL baidu = new URL("http://www.baidu.com");
//?后面表示参数,#后面表示锚点
URL url = new URL(baidu, "/index.html?username=tom#test");
System.out.println("协议:"+url.getProtocol()); //http
System.out.println("主机:"+url.getHost()); //www.baidu.com
System.out.println("端口:"+url.getProt()); //如果未指定端口号,则使用默认的端口号,此时getProt()方法返回值为-1
System.out.println("文件路径:"+url.getPath());//index.html
System.out.println("文件名:"+url.getFile());//index.html?username=tom
System.out.println("相对路径:"+url.getRef());//test
System.out.println("查询字符串:"+url.getQuery());//username<