网络编程学习笔记
@拉勾训练营的程序🐒一枚 - Java就业7期
分层模型
- OSI(Open System Interconnect)网络模型是ISO组织定义的一个计算机互联的标准模型,注意它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护。这个模型从上到下依次是:
- 应用层,提供应用程序之间的通信;
- 表示层:处理数据格式,加解密等等;
- 会话层:负责建立和维护会话;
- 传输层:负责提供端到端的可靠传输;
- 网络层:负责根据目标地址选择路由来传输数据;
- 链路层和物理层负责把数据进行分片并且真正通过物理网络传输,例如,无线网、光纤等。
- 常用协议
- IP协议是一个分组交换,它不保证可靠传输。而TCP协议是传输控制协议,它是面向连接的协议,支持可靠传输和双向通信。TCP协议是建立在IP协议之上的,简单地说,IP协议只负责发数据包,不保证顺序和正确性,而TCP协议负责控制数据包传输,它在传输数据之前需要先建立连接,建立连接后才能传输数据,传输完后还需要断开连接。TCP协议之所以能保证数据的可靠传输,是通过接收确认、超时重传这些机制实现的。并且,TCP协议允许双向通信,即通信双方可以同时发送和接收数据。TCP协议也是应用最广泛的协议,许多高级协议都是建立在TCP协议之上的,例如HTTP、SMTP等。
- UDP协议(User Datagram Protocol)是一种数据报文协议,它是无连接协议,不保证可靠传输。因为UDP协议在通信前不需要建立连接,因此它的传输效率比TCP高,而且UDP协议比TCP协议要简单得多。选择UDP协议时,传输的数据通常是能容忍丢失的,例如,一些语音视频通信的应用会选择UDP协议。
CS模型(Client + Server)
- TCP流程
- 服务器端
Java中通过SocketServer这个类来实现服务器的搭建。
int port = 8080; //指定端口
ServerSocket server = new ServerSocket(port); //实例化ServerSocket类对象
Socket socket = server.accept(); //进行侦听
//添加输入输出流读取发送信息
//输入流读取信息,接收信息
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //得到socket的输入
String message = reader.readLine();
//进行数据的回发
PrintStream ps = new PrintStream(socket.getOutputStream()); //获取输//出流回发数据
ps.println(str);
ps.flush();
//端口输入输出流的关闭
reader.close();
socket.close();
server.close();
- 客户端
//Java中通过Socket套接字来实现客户端
String host = “127.0.0.1"; //指定服务器IP
int port = 8080; //指定端口
Socket client = new Socket(host, port); // 实例化Socket对象
//发送数据
PrintStream ps = new PrintStream(client.getOutputStream());
ps.println(“Hello From Client”);
//接收数据
BufferedReader reader =
new BufferedReader(new InputStreamReader(socket.getInputStream())); //得到socket的输入