网络概念:由点和线构成,表示诸多对象间的相互联系。
为实现资源共享和信息传递,通过通信线路连接起来的若干主机(Host)。
常见计算机网络:
- 互联网:(Internet)点与点相连。
- 万维网:(WWW – World Wide Web)端与端相连。
- 物联网:( IoT - Internet of things) 物与物相连。
- 网络编程:让计算机与计算机之间建立连接、进行通信。
OSI(Open System Interconnect),即开放式系统互联。
该体系结构标准定义了网络互联的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)。
- 第七层:应用层负责文件访问和管理、可靠运输服务、远程操作服务。(HTTP、FTP、SMTP)。
- 第六层:表示层负责定义转换数据格式及加密,允许选择以二进制或ASCII格式传输。
- 第五层:会话层负责使应用建立和维持会话,使通信在失效时继续恢复通信。(断点续传)。
- 第四层:传输层负责是否选择差错恢复协议、数据流重用、错误顺序重排。(TCP、UDP)。
- 第三层:网络层负责定义了能够标识所有网络节点的逻辑地址。(IP地址)。
- 第二层:链路层在物理层上,通过规程或协议(差错控制)来控制传输数据的正确性。(MAC)。
- 第一层:物理层为设备之间的数据通信提供传输信号和物理介质。(双绞线、光导纤维)。
TCP/IP模型是因特网使用的参考模型,基于TCP/IP的参考模型将协议分成四个层次。
该模型中最重要的两个协议是TCP和IP协议。
每层功能:第四层:应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。
第三层:传输层负责传送文本数据,主要协议是TCP、UDP协议。
第二层:网络层负责分配地址和传送二进制数据,主要协议是IP协议。
第一层:接口层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等。
TCP协议:Transmission Control Protocol 传输控制协议:
- 是一种面向连接的、可靠的、基于字节流的传输层通信协议。数据大小无限制。建立连接的过程需要三次握手,断开连接的过程需要四次挥手。
UDP协议:User Datagram Protocol 用户数据报协议:
- 是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,每个包的大小64KB。
public class Demo1 {
public static void main(String[] args) throws Exception{
//1创建本机IP地址对象
//1.1getLocalhost()方法
InetAddress ia1=InetAddress.getLocalHost();
System.out.println("ip地址:"+ia1.getHostAddress()+" 主机名:"+ia1.getHostName());
//1.2getByName("ip地址");
InetAddress ia2=InetAddress.getByName("192.168.0.103");
System.out.println("ip地址:"+ia2.getHostAddress()+" 主机名:"+ia2.getHostName());
//1.3getByName("127.0.0.1");
InetAddress ia3=InetAddress.getByName("127.0.0.1");
System.out.println("ip地址:"+ia3.getHostAddress()+" 主机名:"+ia3.getHostName());
//1.4getByName("localhost");
InetAddress ia4=InetAddress.getByName("localhost");
System.out.println("ip地址:"+ia4.getHostAddress()+" 主机名:"+ia4.getHostName());
//2创建局域网IP地址对象
InetAddress ia5=InetAddress.getByName("192.168.0.104");
System.out.println("ip地址:"+ia5.getHostAddress()+" 主机名:"+ia5.getHostName());
System.out.println("2秒钟是否可达:"+ia5.isReachable(2000));
//3创建外网IP地址对象
InetAddress ia6=InetAddress.getByName("www.baidu.com");
System.out.println("ip地址:"+ia6.getHostAddress()+" 主机名:"+ia6.getHostName());
System.out.println("2秒钟是否可达:"+ia6.isReachable(2000));
System.out.println("--------------");
InetAddress[] ias=InetAddress.getAllByName("www.baidu.com");
for (InetAddress inetAddress : ias) {
System.out.println(inetAddress.getHostAddress());
}
}
}
开发步骤:
- 建立通信连接(会话):
- 创建ServerSocket,指定端口号。
- 调用accept等待客户端接入。
- 客户端请求服务器:
- 创建Socket,指定服务器IP + 端口号。
- 使用输出流,发送请求数据给服务器。
- 使用输入流,接收响应数据到客户端(等待)
- 服务器响应客户端。
- 使用输入流,接收请求数据到服务器(等待)。
- 使用输出流,发送响应数据给客户端。