1. 络基础概念?
什么是计算机 络:?
把分布在不同地理区域的计算机与专门的外部设备用通讯线路互连成一个规模大,功能强的 络系统,从而使众多的计算机可以方便地互相传递信息,共享硬盘,软件,数据信息等资源。?
络通信协议及接口?
络通信协议:计算机 络中实现通信必须有一些约定即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等制定标准。?
络通信接口:为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能够进行信息交换,接口包括两部分:硬件装置:实现结点之间的信息传送,软件装置:规定双方进行通信的约定协议。?
通信协议分层的思想:?
由于结点之间联系很复杂,在制定协议时,把复杂成分分解成一些简单的成分,在将它们复合起来。最常用的复合方式就是层次方式,即同层间可以通信,上一层可以调用下一层,而与在下一层不发生关系,各层互不影响,利于系统的开发和扩展。?
通信协议的分层规定:把用户应用程序作为最高层,把物理通信线路最为最底层,将其间的协议处理分为若干层,规定每层处理的任务,也规定每层的接口标准。?
参考模型:?
OSI参考模型:应用层,表示层,会话层,传输层, 络层,数据链路层,物理层?
TCP/IP参考模型:应用层 传输层, 络层,物理+数据链路层?
数据封装,数据拆封?
IP协议?
IP(Internet Protocol)协议是 际层的主要协议,支持 间互连的数据 通信、提供只要功能有:无连接数据 传送,数据 路由选择和差错控制?
贡献:每个机器都有自己独一无二的IP地址?
IP地址本身占4个字节,每一个地址占一个字节,每一位最多表示255,其中有一位(A类 ),二位(B类 ),三位(C类 ),所谓一位二位就像是移动电话 码的前3位,如126为IBM所有,126.xxx.xxx.xxx的所有地址均归IBM所有?。
子 掩码(subnet mask)是每个使用互联 的人必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。子 掩码——屏蔽一个IP地址的 络部分的“全1”比特模式。对于A类地址来说,默认的子 掩码是255.0.0.0;对于B类地址来说默认的子 掩码是255.255.0.0;对于C类地址来说默认的子 掩码是255.255.255.0。利用子 掩码可以把大的 络划分成子 ,即VLSM(可变长子 掩码),也可以把小的 络归并成大的 络即超 。?
关(Gateway)又称 间连接器、协议转换器。 关在 络层以上实现 络互连,是最复杂的 络互连设备,仅用于两个高层协议不同的 络互连。 关既可以用于广域 互连,也可以用于局域 互连。 关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间, 关是一个翻译器。与 桥只是简单地传达信息不同, 关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。?
TCP协议?
TCP(transmission control protocol)是专门设计用于在不可靠的因特 上提供可靠的,端到端的字节流通信的协议。它是一种面对连接的协议,TCP连接是字节流而非 文流。( 文(message)是 络中交换与传输的数据单元,即站点一次性要发送的数据块。 文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。)?
UDP(user data protocol)?
UDP向应用程序提供了一种发送封装的原始IP数据 的方法,并且发送时无需建立连接。是一种不可靠的连接。?
2.Socket??
两个java应用程序可通过一个双向的 络通信连接实现数据交换,这个双向链路的一端称为一个socket。?
socket通常用来实现client-server连接,java.net包中定义的两个类socket和serversocket,分别用来实现双向连接的client和server端,建立连接时所需的寻址信息为远程计算机的IP地址和端口 (port number 2个字节,TCP端口和UDP端口各65536个,用1024以上的,1024以下的系统调用)??
运行了Server后在运行Client会打印出hello serve!?
该程序中所用的ReadUTF方法是阻塞式的,在其运行时别的Client不能连接到Server上,例如,让Client睡眠30秒在写入hello Server,与此同时在运行一个Client,该Client就不能连接到Server上。
结果是:Hello,/127.0.0.1port#63210 bye-bye!??
双机之间单次通信:
-
public class TestSocketClient {
- public static void main(String[] args) {
- InputStream is = null;
- OutputStream os = null;
- try {
- Socket socket = new Socket("localhost", 5888);
- is = socket.getInputStream();
- os = socket.getOutputStream();
- DataInputStream dis = new DataInputStream(is);
- DataOutputStream dos = new DataOutputStream(os);
- dos.writeUTF("hey");
- String s = null;
- if ((s = dis.readUTF()) != null) ;
- System.out.println(s);
-
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!