Java的网络程序都建立在TCP/IP协议基础上,致力于实现应用层。传输层向应用层提供了套接字,Socket接口,socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接,以及进行数据的传输。
站在应用层的角度,两个进程之间的一次通信过程从建立连接开始,接着交换数据i,到断开连接结束,套接字可以看做是通信线路量多的收发器,进程通过套接字来收发数据。
在Java中,有三种套接字:Java.net.Socket
Java.net.ServerSocket
Java.net.DataGramSocket
其中Socket和ServerSocket类都建立在TCP协议基础上,DatagramSocket类建立在UDP基础上。Java网络程序都采用C/S通信模式。
注:
Java网络程序位于TCP/IP参考模型的网络传输层。
TCP、UDP都是TCP/IP传输层的协议。
假如一个进程已经占用TCP的80端口,它还能占用UDP的80端口。
HTTP服务一般占用TCP的80端口。
由上面可以看出,Socket处于传输层,往服务端发送时会发头信息。而Url类将Socket封装,处于应用层,将Socket传输的数据拆包,只提取有用信息,不再提取表头信息。
当Url解析端口出现-1时,比如解析http://www.baidu.com时,则会使用默认的80端口。
那么何为80端口呢?
80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,此为上网冲浪使用次数最多的协议,主要用于WWW(World Wide Web)即万维网传输信息的协议。可以通过HTTP地址(即常说的“网址”)加“:80”来访问网站,因为浏览网页服务默认的端口号都是80,因此只需输入网址即可,不用输入“:80”了。
网络连接小知识:当要连接http://www.baidu.com时,首先去到本地C:\\Windows\System32\drivers\etc\目录下的hosts文件查找其对应的IP地址,如果hosts文件中不存在,则会到DNS服务器中查找。DNS服务器返回IP地址给客户端,客户端再通过IP地址连接到网站上。
因此如果要提高速度,可以先在hosts文件中配置http://www.baidu.com的IP地址。还有另外两个应用:①屏蔽危险网站,给这些网站对应IP地址都写成本地主机地址存入到hosts文件中,这样访问这些危险网站就无法连接。②防止破解软件更新使破解无效。