网络编程
1. 软件结构
- C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。
- B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。
B/S和C/S的区别:
- 硬件环境不同,C/S通常是建立在专用的网络上,小范围的网络环境。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行;
- C/结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强;
- B/S结构维护升级比较简单,而C/S结构维护升级相对困难;
2. 网络通信协议
2.1. 定义:通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则。它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。
2.2. TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是 Internet最基本、最广泛的协议。
应用层:用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层。(HTTP,FTP)
传输层:是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享。(TCP,UDP)
网络层:主要负责网络中数据包的传送。(IP)
网络访问层:主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理。(底层网络定义协议)
物理层 | 连接器与网络的规格 |
---|---|
数据链路层 | 负责物理层面上的互联的、节点间的通信传输 |
网络层 | 地址管理和路由选择(决定哪个路由传递给目标地址) |
传输层 | 唯一负责总体的数据传输和数据控制的一层(TCP,UDP) |
会话层 | 负责建立和断开通信连接(决定何时连接,何时结束以及连接时间) |
表示层 | 将应用处理的信息,比如图片文字等,转换为适合网络传输的格式 |
应用层 | 为应用程序提供服务并规定应用程序中通信相关的细节(比如协议之类的) |
2.3. 协议分类:
UDP:用户数据报协议(User Datagram Protocol)。UDP是无连接通信协议,即在数据传输时,数据的发送 端和接收端不建立逻辑连接。特点:数据被限制在64kb以内,超出这个范围就不能发送了。
TCP:传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手
如下图”。TCP的客户端和服务器实现:
//服务端建立
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class demo {
public static void main(String[] args) throws Exception {
System.out.println("服务端启动 , 等待连接 .... ");
// 1.创建 ServerSocket对象,绑定端口,开始等待连接
ServerSocket ss = new ServerSocket(8080);
// 2.接收连接 accept 方法, 返回 socket 对象.
Socket server = ss.accept();
// 3.通过socket 获取输入流
InputStream is = server.getInputStream();
// 4.1 创建字节数组
byte[] b = new byte[1024];
// 4.2 据读取到字节数组中.
int len = is.read(b);
// 4.3 解析数组,打印字符串信息
String msg = new String(b, 0, len);
System.out.println(msg);
//5.关闭资源.
is.close();
//6.关闭连接
server.close();
}
}
//客户端建立
import java.net.Socket;
public class demo2 {
public static void main(String[] args) throws Exception{
System.out.println("客户端 发送数据");
// 1.创建 Socket ( ip , port ) , 确定连接到哪里.
Socket client = new Socket("localhost", 8080);
// 2.获取流对象 . 输出流
OutputStream os = client.getOutputStream();
// 3.写出数据.
os.write("你好么? tcp ,我来了".getBytes());
// 4. 关闭资源 .
os.close();
client.close();
}
}
3. 网络编程三要素
-
协议:计算机网络通信必须遵守的规则。
-
IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。IP为:192.168.31.159的形式,这种形式叫做“点分十进制”。
-
端口号:用两个字节表示的整数,它的取值范围是0~65535。
利用 协议 + IP地址 + 端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互。