网络通讯协议现在有许多,现在运用最广泛的是TPC/IP协议
(传输控制协议与因特网互联协议)
它包括TCP协议(Transmission Control Protocol),IP协议(Internet Protocol),UDP协议(User Datagram Protocol),ICMP协议(Internet Cntrol Massage Protocol)和其他一些协议的协议组(注:Protocol是协议的意思)
TPC/IP协议的运用四层是应用层,传输层,网络层,链路层
应用层:主要负责应用程序的协议,如HTTP,FTP
传输层:主要使网络程序进行协议,在进行网络通讯时,可以采用TCP协议,也可以使用UDP协议
网络层:是整个TPC/IP协议的核心,它主要将传输的数据进行分组,将分组数据发送到目标计算机或者程序
链路层:用于定义物理传输通道,通常是对于某些网络连接设备的启动驱动协议,例如针对光纤,双绞线提供的驱动
IP地址和端口号
ip地址可以唯一标识一台计算机,ip地址的广泛使用版本是IPv4,是用4个字节大小的二进制来表示,由于不便于记忆,所以会将IP地址以十进制的方式表示,现在IPv6产生了,所拥有的容量是IPv4的8*10^28倍,解决了IP地址枯竭的问题
通过IP地址可以连接到指定的计算机,但是想要访问计算机的某个应用程序,就需要指定端口号,端口号的取值范围是0~65535(2^16),其中0到1023个端口是用于一些特殊的应用和服务,剩下的端口自己可以随边玩
InetAddress
InetAddress类用于封装一个IP地址,并提供一系列与IP地址相关的方法
1.InetAddress getBytyName(String host);//参数Host用于指定主机,该方法用于在给定主机名情况下确定主的IP
2. InetAddress getLocalHost();//创建一个表示本地主机的InetAddress对象
3.String getHostName(); //得到IP地址的主机名,如果是本机则是计算机名,不是本机则是主机名如果没有域名则是IP地址
4.boolean isReachable(int timeout); //判定指定时间内地址能否到达
5.String getHostAddress() ; //得到字符串的原始IP地址
例子:
import java.net.InetAddress;
public class emp{
public static void mian(String [] args){
InetAddress localAddress InetAddress.getLocalHost();
InetAddress remoteAddress = InetAddress.getByteName("www.itcast.cn");
System.out.println("本机的ip地址:"+localAddress.getHostAddress());
System.out.println("itcast的ip地址:"+remoteAddress.getHostAddress());
System.out.println("3秒是否可达:"+reoteAddress.isReachabke(3000));
System.out.println("itcast的主机名为:"+remoteAddress.getHostName());
}
}
结果是:
本机的ip地址是:192.168.1.177
itcast的IP地址是:211.100.51.212
3秒是否可达:true
itcast的主机名为:www.itcast.cn
需要注意的是:getHostName()方法用于得到某个主机的域名,如果创建的InetAddress对象是用主机名创建的,则将该主机名返回;否则,将根据IP地址反向查找对应的主机名,如果找到,则将其返回,否则返回IP地址
UDP与TCP协议
UDP是用户数据报协议
TCP是传输控制协议
UDP是无连接通信协议,即在数据传输时,数据的发送端与接收端不建立逻辑连接。简单来说就是,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发送信息,同样的接收端在接收到数据时,也不会向发送端反馈是否收到数据
UDP协议消耗资源小,通信效率高,一般用于音频,视屏,普通数据传输等,这种情况一般丢失一两个数据包对于接受结果没有什么影响,对于特别重要的数据时,就不能使用UDP进行传输
TCP传输是面向连接的通信协议,即在传输数据前先在发送端和接受端建立逻辑连接,然后再传输数据,他提供了两台计算机之间可靠无差错的数据传输;在使用TCP传输的时候必须明确客户端与服务器端,每次连接的创建都要经过"三次握手",第一次,客户端服务器端创建请求连接,第二次服务器端向客户端发送一个响应,说明自己已经接受到连接请求,第三次客户端再次服务器发送确认信息,确认连接