现在的位置: 首页 > 综合 > 正文

java中的网络入门1(J2SE入门18)

2012年12月06日 ⁄ 综合 ⁄ 共 3139字 ⁄ 字号 评论关闭

网络基础知识
 
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。
计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,必须遵循一定的协议。目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。
IP地址:计算机在网络中唯一标识,相对于internetIP为逻辑地址。

A类地址 

A类地址第1字节为网络地址,其它3个字节为主机地址。另外第1个字节的最高位固定为0。 
A类地址范围:1.0.0.1126.155.255.254。 
A类地址中的私有地址和保留地址: 
10.0.0.010.255.255.255是私有地址(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。 
127.0.0.0127.255.255.255是保留地址,用做循环测试用的。 

B类地址 

B类地址第1字节和第2字节为网络地址,其它2个字节为主机地址。另外第1个字节的前两位固定为10。 
B类地址范围:128.0.0.1191.255.255.254。 
B类地址的私有地址和保留地址 
172.16.0.0172.31.255.255是私有地址 
169.254.0.0169.254.255.255是保留地址。如果你的IP地址是自动获取IP地址,而你在网络上又没有找到可用的DHCP服务器,这时你将会从169.254.0.0169.254.255.255中临得获得一个IP地址。 

C类地址 

C类地址第1字节、第2字节和第3个字节为网络地址,第4个个字节为主机地址。另外第1个字节的前三位固定为110。 
C类地址范围:192.0.0.1223.255.255.254。 
C类地址中的私有地址: 
192.168.0.0192.168.255.255是私有地址。 

D类地址 

D类地址不分网络地址和主机地址,它的第1个字节的前四位固定为1110。 
D类地址范围:224.0.0.1239.255.255.254 

Mac地址:每个网卡专用地址,也是唯一的。
端口(port):应用程序(进程)的标识(网络通信程序)OS中可以有655362^16)个端口,进程通过端口交换数据。连线的时候需要输入IP也需要输入端口信息。
计算机通信实际上的主机之间的进程通信,进程的通信就需要在端口进行联系。
192.168.0.23:21
协议:为了进行网络中的数据交换(通信)而建立的规则、标准或约定,协议是为了保证通信的安全。
不同层的协议是完全不同的。

网络层:寻址、路由(指如何到达地址的过程)
传输层:端口连接
TCP模型:应用层/传输层/网络层/网络接口
层与层之间是单向依赖关系,上层依赖于下层,下层不依赖于上层,层与层之间的连接是虚连接。对等层之间建立协议。
端口是一种抽象的软件结构,与协议相关:TCP23端口和UDT23端口为两个不同的概念。
端口应该用1024以上的端口,以下的端口都已经设定功能。

TCP/IP模型

Application
(FTP,HTTP,TELNET,POP3,SMPT)
Transport
(TCP,UDP)
Network
(IP,ICMP,ARP,RARP)
Link
(Device driver,.)

注:
IP:寻址和路由
ARPAddress Resolution Protocol)地址解析协议:将IP地址转换成Mac地址
RARPReflect Address Resolution Protocol)反相地址解析协议:与上相反
ICMPInternet Control Message Protocol)检测链路连接状况。利用此协议的工具:ping , traceroute

TCP Socket

TCPTranfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。
1) 服务器分配一个端口号,服务器使用accept()方法等待客户端的信号,信号一到打开socket连接,从socket中取得OutputStreamInputStream
2)客户端提供主机地址和端口号使用socket端口建立连接,得到OutputStreamInputStream

TCP/IP的传输层协议

建立TCP服务器端

一般,我们把服务器端写成是分发Socket的,也就是总是在运行,
创建一个TCP服务器端程序的步骤:
    1). 创建一个ServerSocket
    2). ServerSocket接受客户连接请求
    3). 创建一个服务线程处理新的连接
    4). 服务线程中,从socket中获得I/O
    5). I/O流进行读写操作,完成与客户的交互
    6). 关闭I/O
    7). 关闭Socket
ServerSocket server = new ServerSocket(post) 
Socket connection = server.accept(); 
ObjectInputStream put=new ObjectInputStream(connection.getInputStream()); 
ObjectOutputStreamo put=newObjectOutputStream(connection.getOutputStream());   
处理输入和输出流; 
关闭流和socket。 
典型的服务器端。import java.io.*;
import java.net.*;

public class Server1 {
    public static void main(String[] argsthrows Exception {
        ServerSocket ss = new ServerSocket(9000);
        while (true{
            Socket s = ss.accept();// 获得一个Socket对象。
            Thread t = new Thread1(s);// 分发Socket。
            t.start();
        }
    }
}
class Thread1 extends Thread {
    Socket s;

    public Thread1(Socket s) {
        this.= s;
    }

    public void run() {
        try {
            OutputStream o = s.getOutputStream();
            PrintWriter out = new PrintWriter(o);
            out.println("Hello Client");
            out.flush();
            s.close();
        } catch (IOException e{
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

抱歉!评论已关闭.