网络
1. IP地址:
1). IP网络中每台主机都必须有一个惟一的IP地址;
2). IP地址是一个逻辑地址;
3). 因特网上的IP地址具有全球唯一性;
4). 32位,4个字节,常用十进制的格式表示,例如:192.168.0.200
2. TCP是Transfer Control Protocol的简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的
数据流。发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是
server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方
都可以进行发送或接收操作
3. TCP是一个基于连接的协议,它能够提供两台计算机之间的可靠的数据流。HTTP、FTP、Telnet等应用都需要这种可靠的通信通道
4. UDP是User Datagram Protocol的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以
任何可能的路径传往目的地,因此,能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的
5. UDP是从一台计算机向另一台计算机发送称为数据报的独立数据包的协议,该协议并不保证数据报是否能正确地到达目的地。它是一个
非面向连接的协议
6. TCP和UDP的比较:
1). 使用UDP时,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。对于TCP协议,由于它是一个面向连接的
协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中多了一个连接建立的时间
2). 使用UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。TCP没有这方面的限制,一旦连接建立起来,双方的
socket就可以按统一的格式传输大量的数据。
3). UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。TCP是一个可靠的协议,它确保接收方完全正确地获取
发送方所发送的全部数据
4). TCP在网络通信上有极强的生命力,例如远程连接(Telnet)和文件传输(FTP)都需要不定长度的数据被可靠地传输。相比之下UDP操作
简单,而且仅需要较少的监护,因此通常用于局域网高可靠性的分散系统中client/server应用程序
7. 既然有了保证可靠传输的TCP协议,为什么还要非可靠传输的UDP协议呢?
1). 可靠的传输是要付出代价的,对数据内容正确性的检验必然占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高
2). 在许多应用中并不需要保证严格的传输可靠性,比如视频会议系统,并不要求音频视频数据绝对的正确,只要保证连贯性就可以了,这种情况
下显然使用UDP会更合理一些
8. 在互联网上传输的数据都包含有用来识别目的地的IP地址和端口号。IP地址用来标识网络上的计算机,而端口号用来指明该计算机上的应用程序
9. 端口使用一个16位的数字来表示,它的范围是0~65535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。
10. 端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与某端口建立连接(binding)后,传输层传给该端口的
数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。
11. Java支持TCP和UDP协议族。TCP用于网络的可靠的流式输入/输出。UDP支持更简单的、快速的、点对点的数据报模式
URL
1. URL(Uniform Resource Locator)是统一资源定位符的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种
网络资源,比如最常见的WWW,FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。
2. 一个URL 包括两个主要部分:
1). 协议标识符:HTTP,FTP,File等
2). 资源名字:主机名,文件名,端口号,引用
例如:http://java.sun.com:80/docs/books/tutorial/index.html#DOWN
3. 在Java程序中,可以创建表示URL地址的URL对象。URL对象表示一个绝对URL地址,但URL对象可用绝对URL、相对URL和部分URL。例如:
new URL("http://www.gamelan.com/pages/");
new URL("http", "www.gamelan.com", 80,"pages/index.network.html")
4. 获得URL对象的各个属性: getProtocol ; getHost ; getPort ; getFile ; getRef
5. 为获得URL的实际比特或内容信息,用它的openConnection( )方法从它创建一个URLConnection对象,如下:url.openConnection()与
调用URL对象相关,它返回一个URLConnection对象。它可能引发IOException异常
6. URLConnection是访问远程资源属性的一般用途的类。如果你建立了与远程服务器之间的连接,你可以在传输它到本地之前用URLConnection
来检察远程对象的属性。这些属性由HTTP协议规范定义并且仅对用HTTP协议的URL对象有意义
InetAddress
1. InetAddress类用来封装我们前面讨论的数字式的IP地址和该地址的域名。你通过一个IP主机名与这个类发生作用,IP主机名比它的IP地址用起来
更简便更容易理解。
2. InetAddress 类内部隐藏了地址数字。
3. InetAddress 类没有明显的构造函数。为生成一个InetAddress对象,必须运用一个可用的 工厂方法。对于InetAddress,三个方法:
getLocalHost():仅返回象征本地主机的InetAddress
getByName():返回一个传给它的主机名的InetAddress。
getAllByName():在Internet上,用一个名称来代表多个机器是常有的事。getAllByName( )工厂方法返回代表由一个特殊名称分解的所有地址
的InetAddresses类数组。在不能把名称分解成至少一个地址时,它将引发一个Unknown HostException异常。
Socket:
1. Socket是连接运行在网络上的两个程序间的双向通讯的端点
2. 使用Socket进行网络通讯的过程:
1). 服务器程序将一个套接字绑定到一个特定的端口,并通过此套接字等待和监听客户的连接请求。
2). 客户程序根据服务器程序所在的主机名和端口号发出连接请求。
3). 如果一切正常,服务器接受连接请求。并获得一个新的绑定到不同端口地址的套接字。
4). 客户和服务器通过读、写套接字进行通讯。
3. 使用 ServerSocket 和 Socket 实现服务器端和客户端的Socket通信总结:
1). 建立Socket连接
2). 获得输入/输出流
3). 读/写数据
4). 关闭输入/输出流
5). 关闭Socket
4. 服务器端的程序需要为每一个与客户机连接的socket建立一个线程,来解决同时通信的问题。
UDP:
1. 数据报(UDP)是网上传输的独立数据包 ,数据报是否能正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
2. DatagramSocket类利用UDP协议来实现客户与服务器的Socket.
3. send():发送数据报 ; receive(): 接收数据报
DNS,全称Domain Name System,即域名解析系统。DNS帮助用户在互联网上寻找路径。
在互联网上的每一个计算机都拥有一个唯一的地址,称作“IP地址”(即互联网协议地址)。
由于IP地址(为一串数字)不方便记忆,DNS允许用户使用一串常见的字母(即“域名”)取代。