一、网络概述
网络:相互连接的计算机,用来交换数据和共享资源。
计算机网络旨在实现数据通信;数据形式:文本 、图片、声音和音频。
按照地理覆盖范围,计算机网络分为局域网、城域网和广域网。
(1)局域网:局限在小的地理区域内或单独的建筑物内,被用于连接办公室、实验室或工厂里的个人计算机和工作站。
(2)城域网:覆盖城市或城镇内的广大地理区域,是在一个区域内建立的计算机通讯网。
(3)广域网:是在一个更广泛的地理范围内所建立的计算机通讯网,范围超过一个城市或国家以至全球,因而对通信的要求及复杂性都比较高;
ois参考模型
应用层 | 网络服务和最终用户的借口 |
表示层 | 数据的表示、安全、和压缩 |
会话层 | 建立、管理和终止会话 |
传输层 | 定义传输数据的协议端口号,流量控制和差错恢复 |
网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 |
数据链路层 | 建立逻辑连接,进行硬件地址寻址,差错校验等 |
物理层 | 建立、维护、断开物理连接 |
1、ip地址
IP地址:用户来唯一标识网络中的每一台计算机,分为网络地址和主机地址;
IPv4组成:4个8位的二进制组成,每8为之间用“.”隔开例如:11000000.10101000.00000010.00010100。由于二进制不好记所且可读性差,通常把二进制转换成十进制。例如:196.168.2.20 。又称为点分十进制。
IPv6组成:8个16位的无符号整数组成,每个整数用4个十六进制数表示。
IP地址分类:
A类 | 1~126 | 第一组数表示网络地址,其余三位表示主机地址 |
B类 | 128~191 | 前二组数表示网络地址,其余两位表示主机地址 |
C类 | 192~223 | 前三组数表示网络地址,最后一位表示主机地址 |
D类 | 224~239 | 不分主机地址和网络地址,用于组播通信 |
E类 | 240~254 | 不分主机地址和网络地址,用于科学研究 |
2、端口
定义:每台主机都有若干个端口,用于收发数据时区分该数据发给哪个进程或者从哪个进程发出的。
范围:0~65535;
在一台计算机内两个进程不能同时使用一个端口。
3、服务器
邮件服务器
web服务器:
(1)microsoft IIS
(2)Apache服务器
(3)Tomcat服务器
4、网络协议
TCP/IP协议族:互联网最基本的协议,他不依赖于任何计算机硬件和操作系统,提供开放的协议标准。目前绝大多数网络操作系统都提供对TCP/IP协议族的支持。TCP/IP协议族包括:IP协议、TCP协议、udp协议和ARC协议等;
TCP协议:传输控制协议,TCP是一种面向连接的、可靠地、基于字节流的传输层通信协议:TCP要求通信双方必须在建立连接之后才开始通信,通信双方可以同时进行数据传输,他是全双工的,从而保证了数据的正确传输;
UDP协议:用户数据报协议,无连接协议,在传输数据之前,客户端和服务器不建立和维护连接。主要作用是把网络通信的数据压缩为数据报的形式。
二、scoket编程
public class SocketO {
//客户端
public static void main(String[] args) {
Socket socket =null;
InputStream is=null;
OutputStream os=null;
BufferedReader br =null;
try {
socket = new Socket("localhost", 8800);
is =socket.getInputStream();//客户端输入,
os=socket.getOutputStream();//客户端输出,服务器接收;
//想输出流写入信息,发送客户端登录信息;
String info ="用户名:tom;密码:123456;";
os.write(info.getBytes());
socket.shutdownOutput();
br =new BufferedReader(new InputStreamReader(is));
String temp=null;
while ((temp=br.readLine())!=null) {
System.out.println("我是客户端:服务器的响应为"+temp);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if (br!=null) {
br.close();
}
if (is!=null) {
is.close();
}
if (os!=null) {
os.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class ServerScoketO {
//服务器
public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket socket=null;
InputStream is=null;
OutputStream os =null;
BufferedReader br=null;
try {
serverSocket= new ServerSocket(8800);
socket= serverSocket.accept();
is= socket.getInputStream();
os = socket.getOutputStream();
br=new BufferedReader(new InputStreamReader(is));
String info =null;
while ((info=br.readLine())!=null) {
System.out.println("我是服务器,客户的登录信息为:"+info);
}
String temp="欢迎您,登录成功!";
os.write(temp.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if (os!=null) {
os.close();
}
if (br!=null) {
br.close();
}
if (is!=null) {
is.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}