package Ntework;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
* 网络编程(非网页编程)
*
* 通讯协议
* 计算机网络中实现通信必须有一些约定即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等制定标准.
*
* 通信接口
* 为了使两个节点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换.
* 接口包括两部分:
* 硬件装置:实现节点之间的信息传送;
* 软件装置:规定双方进行通信的约定协议;
*
* 网络分层
* 由于节点之间联系很复杂,在指定协议时,把复杂成份分解成一些简单的成份,在将他们复合起来.最常用的复合方式就是层次方式,即同层间可以通信,上一层可以调用下一层,而与在下一层不发生关系.
*
* OSI参考模型:开放系统互连参考模型(Open System Interconnect)
* 7层协议 TCP/IP协议集
* 应用层---
* 表示层 |->应用层Telnet/FTP/SMTP/DNS/HTTP以及其他应用协议
* 会话层---
* 传输层--->传输层TCP/UDP
* 网络层--->网络层IP/ARP/RARP/ICMP
* 数据链路层|
* 物理层---->网络接口 各种通信网络接口(以太网等)(物理网络)
*
* 数据封装
* Data Encapsulation是指将协议数据单元(PDU)封装在一组协议头和协议尾中的过程.
* 在OSI七层参考模型中,每层主要负责与其它机器上的对等层进行通信.该过程是在协议数据单元(PDU)中实现的,其中每层的PDU一般由本层的协议头,协议尾和数据封装构成.
* 由于用户传输的数据一般都比较大,有的可以达到MB字节,一次性发送出去十分困难,于是就需要把数据分成许多片段,在按照一定的次序发送出去.这个过程就是需要对数据进行封装
*
* 发送方数据处理的方式是从高层到底层,逐层进行数据封装
*
* 数据拆封
* Data dismantling是指将收到的数据进行拆包,每一层只把对该层有意义的数据拿走,或者说每一层只能处理发送方同等层的数据,然后把其余的部分传递给上一层,这就是对等层通信的概念.
*
* 接收方数据处理的方式是从底层到高层,逐层进行数据解封装
*
* IP地址
* 用来标识网络中的一个通信实体的地址.通信实体可以是计算机/路由器等.比如互联网的每个服务器都要有自己的IP地址,而每个局域网的计算机要通信也要配置IP地址.路由器是连接两个或多个网络的网络设备.
*
* IP地址分类
* IPV4:32位地址,以点分十进制表示,192.168.0.1
* IPV6:128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制表示,数之间用冒号(:)分开,如:3ffe:3201:1401:1280:c8ff:fe4d:db39:1984
*
* 特殊的IP
* 127.0.0.1 本机地址
* 192.168.0.0-192.168.255.255 私有地址,属于非注册地址,专门为组织机构内部使用.
*
* InetAddress
* 封装计算机IP地址,没有端口
* 使用getLocalHost方法创建InetAddress对象
* 两个成员方法:
* 1.getHostAddress:返回地址
* 2.getHostName:返回计算机名
* @author pmc
*
*/
public class txtTest {
public static void main(String[] args) throws UnknownHostException {
//使用getLocalHost方法创建InetAddress对象
InetAddress addr=InetAddress.getLocalHost();
//获取IP地址
System.out.print(addr.getHostAddress()+"\t");
//获取计算机名
System.out.println(addr.getHostName());
//根据域名得到InetAddress对象
addr=InetAddress.getByName("www.baidu.com");
System.out.print(addr.getHostAddress()+"\t");
System.out.println(addr.getHostName());
//根据IP得到InetAddress对象
addr=InetAddress.getByName("222.222.222.46");
System.out.print(addr.getHostAddress()+"\t");
System.out.println(addr.getHostName());
}
}