一、网络:使用光纤,网线, WIF1等传输介质,将位于不同地址的计算机连接到一起 局域网 城域网 广域网(互联网)
二、地址;计算机在网络上,什么东西是它的地址?ip地址, ip地址就是计算机在网络上的唯一绝对地址 (相当干人居住的房子的地址)
三、计算机上面可以安装非常多的应用软件,那么如何区分这些软件?
需要通过端口号来区分,端口号,就相当于房子中开的门
1、端口号在计算机里面有2个字节那么大,因此端口号的取值范围: 0--65535共65536个 但是1024以下的端口号,通常是计算机内置软件端口 类似干现实生活中的电话号码 20 110 119...,
2、1024以上的,我们都可以用,并且为了避免重复性,推荐大家端口号定义的越大越好,
3、多个软件之间,使如果用同一种通讯协议,那么软件之间,端口号不允许重复 但是不同协议,端口号可以重复
四、资源定位URL:统一资源定位符http://127.0.0.1:80/stusvstem/user/1 URI:统一资源修饰符 user/1
五、数据的传输
1,计算机之间底层通过传输0101010101001110这样的数据进行通讯,但是通讯时,如果识别有效数据,还是需要不同的协议才能完成,不然就会造成:鸡同鸭讲的效果,
协议中,常见的底层协议: TCP/IP UDP
TCP/IP: 非常类似于打电话 它是一种面向连接的协议 它的特点:安全可靠 但是效率相对于UDP而言,较为低下 -请求响应模式
UDP:类似于发短信,类似于广播 它是一种非面向连接的协议 它的特点:不可靠,安全性较低 但是它的效率较高,
2、数据在进行传输时,需要经讨一系列的封装和拆分的过程
1)、数据的封装
2)、数据的拆分
采用了分层的思想,来完成对层次的解耦,以及各层的职责分离,让各层能够更合理的分工合作 --OSI7层模型
六、客户端与服务器
C/s Client/Server (胖客户端) 它的特点:需要安装,需要升级
B/S Browser/Server (瘦客户端) 它的特点:不需要安装,也不需要更新,服务器更新之后,打开浏览器,自动更新
七、传输层的传输方式
需要解决到达计算机的OSI七层模型中的0101010100000这种二进制数据,如何才能到达我们的应用软件
传输层的作用:就是建立一个数据传輸通道,将来自于OSI七层模式中下三层的数据,传輸到我们应用程序中来,
这个数据传输通道,我们把它称之为Socket套接字, 实际上,就类似于现实生活中的传送履带,只不过它的特点是可以双向传输
作为传输层来讲,只有2种传输协议 TCP, UDP
TCP/IP
使用的是流套接字(Stream Socket)
流套接字将TCP作为其端对端协议,提供了一个可信赖的字节流服务。一个TCP/IP流套接字代表了TCP连接的一端。
一个TCP/IP 套接字由一个IP地址、一个端对端协议(TCP或UDP协议)以及一个端口号唯一确定。
一、使用类
Socket类 ServerSocket类
TCP/IP协议也是目前因特网范围内运行的唯一一种协议。图18.2表示了TCP/IP分层模型与OSI模型的对比图。
TCP/IP分层模型的四个协议层分别完成以下的功能:
二、建立连接步骤
当使用套接字在两台计算机之间建立TCP连接时,发生了如图所示的如下步骤:
1. 服务器初始化一个ServerSocket对象,指示通讯将要发生在哪个端口号上。
2. 服务器调用ServerSocket类的accept()方法。该方法会一直等待,直到一个客户端连接到服务器上的指定端口。
3.在服务器等待的同时,客户端实例化一个Socket对象,指定要连接的服务器名和端口号。
4. Socket类的构造器试图将客户端连接到指定的服务器和端口号。如果通讯建立了,客户端现在就有一个能够与服务器进行通讯的Socket对象。
5. 在服务器端,accept()方法返回一个将要连接到客户端套接字的服务器新套接字的引用。
在连接建立后,通讯可以通过使用I/O流发生。每个套接字都有一个OutputStream和一个InputStream。客户端的OutputStream连接到服务器的InputStream,同时客户端的InputStream连接到服务器的OutputStream。TCP是一个双向的通讯协议,所以数据可以同时通过两个流发生。
套接字流是低级I/O流InputStream和OutputStream。因此,它们可以与缓冲流、过滤流以及其它高级流连接在一起,从而可以执行任何类型的高级I/O。
UDP
使用数据报套接字(Datagram Socket)
数据报套接字使用UDP协议,提供了一个“尽力而为”的数据报服务,应用程序可以通过它发送最长65500字节的信息。
不是面向连接的协议,它是以数据为中心的协议,它的特点:数据的可靠性较差 数据容易丢失 但是它的效率高
用户报文协议(UDP)是用于将二进制数据从一台计算机发送到另一台计算的非连接协议。这里,数据被称为数据报包,它包含了数据将要发送到的目标服务器和端口号。消息的发送者使用数据报套接字发送包,接受者使用数据报套接字接收消息。
当消息被发送时,接受者并不需要是可用的。同样,当消息接收时,发送者也不需要是可用的。
一:使用类
类DatagramSocket 类DatagramPacket
二:步骤
客户端
1、创建客户端 DatagramSocket 类 + 端口 (指定:我的数据从哪个端口出去)
2、准备数据 只不过这些数据,需要装配到字节数组中去
3、将数据打包 DatagramPacket + 服务器地址及端口号 来完成打包
4、发送
5、释放资源
发送报文包
发送数据报包需要如下步骤:
1. 创建一个足够大的字节数组,用于存储要发送的包数据,用该数据填充数组。
2. 创建一个新的DatagramPacket 对象,用于存储上面的字节数组,以及服务器名和接收者的端口号。
3. DatagramSocket被实例化,它被指定套接字要绑定到本地主机的哪个端口。
4. DatagramSocket类的send()方法被调用,传入DatagramPacket对象。
服务器端
1、创建服务端 DatagramSocket类 + 端口(指定:我从哪个端口获取数据)
2、准备接收数据 同样需要定义一个字节数组 封装DataGramPacket
3、接收数据
4、分析数据
5、释放资源
接受报文包
接收数据报包需要执行如下步骤:
1. 创建一个足够大的字节数组,用于存储要接收的包的数据。
2. 使用该字节数组实例化一个DatagramPacket对象。
3. DatagramSocket被实例化,它被指定该套接字要绑定到的本地主机上的一个端口。
4. 调用DatagramSocket类的receive()方法,将DatagramPacket对象传入该方法。这将导致执行线程阻塞,直到接收到一个数据报包或者发生了超时。
在receive()方法返回后,新包刚传送成功。如果发生了超时,receive()方法不会返回,而是抛出一个异常。DatagramPacket类的getData()方法可以用于接收包含该包数据的字节数组。
URL类与URLConnection类
URL(Uniform Resource Locator)代表统一资源定位,代表万维网上的一个资源,例如一个网页或者一个FTP目录。
一个URL实际上是一类URI(Uniform Resource Identifier,统一资源标识符)。URI标识一个资源,但是不包括如何访问该资源的信息。URL标识一个资源以及访问该资源的协议。URI在java中使用java.net.URI类代表。
一个URL可以分为如下几个部分:
|
协议://主机:端口/路径?查询字符串#锚点引用 |
这里,路径也称为文件名,主机也称为授权。协议包含HTTP、HTTPS、FTP和File。
java.net.URL类代表一个URL。URL类有如下几个构造器用于创建URL:
URL类中有很多方法用于访问URL的不同部分,常用的方法如下:
使用URL类的openConnection()方法,可以连接到一个URL,并与资源进行通讯。openConnection()方法返回一个java.net.URLConnection,URLConnection是一个抽象类,其子类代表不同类型的URLConnection。例如,如果我们连接到一个HTTP协议的URL,那么openConnection()方法就返回一个HttpURLConnection对象。如果连接到一个代表JAR额外连接的URL,那么openConnection()方法就返回一个JarURLConnection对象。
URLConnection类有多个用于设置或者判断连接信息的方法,包括:
URLConnection类还包含了一些访问连接头信息的方法,让我们可以判断URL内容的类型和长度、最后更改的日子、内容编码等等。