1.网络的概念
计算机网络通过通信介质、通过设备和网络以及网络传输协议将分散在不同地点的端口连接,实现资源共享和数据传输的系统。
通信设备:信号塔、路由器、交换机
传输介质:光纤、电缆、光波、双绞线
传输协议:TCP/IP
**网络编程:**编写程序代码将联网的两个或者多个设备(计算机)直接进行连接的过程
OSI:(Open System Interconnection)网络开发互联协议
2. 计算机网络体系分层结构
OSI和TCP/IP分别对网络体系进行了划分,他们的划分还是存在一些区别的,并且每一层的作用和功能都如图所示。OSI 参考模型注重“通信协议必要的功能是什么”,而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序”。
3.TCP/IP协议
从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群。
互联网进行通信时,需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族。因此,互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议。
下图为TCP/IP协议群每一层我们应该有的一些功能
4.数据传输的过程
TCP的socket编程
C/S -> client/server过程
socket(套接字)主要是客户端使用,用来和服务端建立连接,进行消息交互
serverSocket 主要是服务端使用,用来绑定端口并接受客户端
5.Socket编程
实现一个简单的TCP的socket编程:服务端与客户端收发消息(单线程,一次性消息)
服务端:
public class TCPServer {
public static void main(String[] args) throws IOException {
//创建ServerSocket实例
ServerSocket serverSocket = new ServerSocket();
//绑定bind端口
serverSocket.bind(new InetSocketAddress(6666));
System.out.println("服务器端绑定端口6666启动...");
//等待客户端连接
Socket socket = serverSocket.accept();
//读写操作
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = bufferedReader.readLine();
System.out.println("客户端消息:"+msg);
//关闭socket
serverSocket.close();
socket.close();
System.out.println("端口关闭");
}
}
客户端:
public class TCPClient {
public static void main(String[] args) throws IOException {
//创建客户端实例
Socket socket = new Socket();
//连接服务器
socket.connect(new InetSocketAddress(6666));
//IO操作 读取服务端发送的消息
OutputStream outputStream = socket.getOutputStream();
outputStream.write("hello World\n".getBytes());
outputStream.flush();
//读写操作
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String msg = bufferedReader.readLine();
System.out.println("客户端消息:"+msg);
//关闭socket
socket.close(); //关闭和客户端口的连接
System.out.println("端口关闭...");
}
}
结果: