一、什么是计算机网络
分布在不同地域的计算机,
通过硬件等网络设备使用通信线路互相连接形成的一个网格系统。
计算机网络,
可以很方便的进行 信息的传递
,
资源的共享
!
二、计算机的IP地址
IP地址是计算机在互联网中的唯一标识(公网中)。
本机IP:127.0.0.1/localhost
IP地址分类:
Ipv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d的形式,其中a,b,c,d都是0-255之间的十进制整数,最多可以表示42亿个。
IPv6:采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
三、域名
域名可以简单的理解为IP地址的别名,更方便记忆,当输入域名时,计算机会访问 域名解析商,然后得到ip地址,再进行访问。
四、端口号
端口号的范围 0-65535
之间 . *****
与ip地址很相似
, IP
地址是计算机在网络中的唯一标识
.
端口号是计算机中 程序的标识 .
用于在一台计算机中区分不同的应用程序
端口号在使用时 ,
应尽量避免
0-1024
之间的端口号
,
因为已经被一些知名的软件 和
windows
操作系统所占用了。
五、通信协议
是计算机与计算机之间交流的标准 .
是对数据的 传输速率,
传入接口
,
步骤控制 出错控制 等等 制定的一套标准
!
常用的通信协议:
1. http协议 :
超文本传输协议
. 80
端口号
2. https协议:
安全的超文本传输协议
443
端口号
3. ftp协议:
文件传输协议
21
端口号
4. TCP(Transmission Control Protocol)协议:
传输控制协议,是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑链接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。
三次握手:
在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证链接的可靠。
第一次握手,客户端向服务器端发出链接请求,等待服务器确认;
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了链接请求;
第三次握手,客户端再次向服务器端发送确认信息,确认链接。
完成三次握手,链接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向链接的特性,TCP协议可以保证传输数据的安全,应用广泛,例如:下载文件、浏览网站等。
OSI网络模型:
指的是从一台计算机的软件中,将数据发送到另一台计算机的软件中的过程。
七层网络模型:应用层 / 表现层 / 会话层 / 传输层 / 网络层 / 数据链路层 / 物理层
5. UDP(User Datagram Protocol)协议:
数据报协议,面向无连接的协议,传输数据时,不需要建立链接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送,数据包大小限制在64k以内,是不可靠协议,因为无连接,所以传输速度快,容易丢失数据,常应用于视频会议、QQ聊天等。
六、编程程序的分类
B/S 程序:浏览器与服务器的程序
C/S 程序:客户端与服务器程序
七、TCP协议的C/S程序
需要使用到两个类,来编写TCP协议:
1、ServerSocket 搭建服务器
创建服务器,创建完毕后,会绑定一个端口号,然后此服务器可以等待客户端连接。
每连接一个客户端,服务器就会得到一个新的Socket对象,用于跟客户端进行通信。
package com.h.exe;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @author s
* @version 1.0
* @date 2022-02-11 9:24
*/
public class Demo {
public static void main(String[] args) throws IOException {
// 搭建服务端
ServerSocket server = new ServerSocket(55565);
System.out.println("服务端启动了!");
// 等待客户端链接
Socket socket = server.accept();
System.out.println("一个客户端链接了!");
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("欢迎你链接服务端");
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("服务器接收到客户端的回复:"+text);
System.out.println("服务器程序执行结束!");
}
}
2、Socket 搭建客户端
两方使用socket(套接字,通信端点)进行交流。
package com.h.exe;
import java.io.*;
import java.net.Socket;
/**
* @author s
* @version 1.0
* @date 2022-02-11 9:40
*/
public class ClientDemo {
public static void main(String[] args) throws IOException {
// 搭建客户端
Socket socket = new Socket("127.0.0.1",55565);
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("客户端接到了消息:"+text);
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("服务器,你好!");
}
}
八、Socket相关类和API
close();
getInputStream();
getOutputStream();
getPort();
isClose();
...