- 网路通信的三个要素:
(1)地址:
IP地址,定位到一台设备
(2)端口号
定位到一个应用程序(进程)
(3)网络协议
对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
通俗的讲:保证如何准确的到达对方那里,能够正确的解析出数据出来。
OSI(Open System Interconnection)开放系统互连参考模型。
它把计算机网络分成物理层、数据链路层、网络层、传输层、会话层、表示层、应用层等七层。
物理层:建立、维护、断开物理连接
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP、IGMP、IP(IPV4 IPV6)、ARP、RARP。
传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP、UDP。
会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话
表示层:数据的表示、安全、压缩。格式有:JPEG、ASCll、DECOIC、加密格式等
应用层:网络服务与最终用户的一个接口。协议有:HTTP、FTP、SMTP、DNS、TELNET、HTTPS、POP3等等。
最早确定的,也是最重要的是TCP/IP协议。把这些协议家族称为TCP/IP协议簇。
(1)主机-网路层:硬件层面
(2)网络层:例如IP寻址
(3)传输层:协议有:TCP、UDP。
(4)应用层:程序员面对的
TCP:(Transmission Control Protocol,传输控制协议)面向连接的,可靠的,基于字节流的,适用于大数据量的传输的协议。
UDP:(User Datagram Protocol,用户数据报协议)非面向连接,不可靠的,基于用户数据报(报文),只能支持最多64k以内的数据的发送。
- IP地址:
IPV4:32位,4个整数,每一个整数是1个字节(无符号)0~255
例如:192.168.30.142
IPV6:
128 位无符号数字,8个16进制值
例如:1080:0:0:0:8:800:200C:417A
特殊的IP:
127.0.0.1 本地回传IP
224.0.0.0至239.255.255.255 广播IP地址
....
域名:
用人比较方便记忆和识别的单词来代表IP地址
例如:www.atguigu.com
www.jd.com
www.taobao.com
www.baidu.com
....
域名--》域名解析器-->IP地址
域名:
一级域名:.com商业
.cn 中国
.org 组织,机构,非盈利型
.gov政府
.edu教育
....
域名需要注册
- 端口号:
[0,65535]之间无符号 2个字节
(1)公认端口(Well-Known Ports)范围从0到1023
http: 80 ftp:21 SMTP:25
(2)注册端口(Registered Ports):端口号从1024到49151。
例如:Tomcat(8080),JBOSS(8080),Oracle(1521),MySQL(3306),SQL Server(1433),QQ(1080)。
(3)动态/私有端口(Dynamic and/Private Ports):端口的范围从49152到65535,这些端口号一般不固定分配给某个服务。
/*
* java.net.InetAddress:用来包装IP地址对象的
* InetAddress有两个子类:Inet4Address 、Inet6Address
*
* (1)InetAddress.getLocalHost()
* (2)InetAddress.getByName("www.baidu.com")
* (3)InetAddress.getByAddress(addr)
*
* 如果后面的API中,要接收IP的形参类型是InetAddress的话,就可以刚才的方法来创建对象
*/
public class TestInetAddress {
@Test
public void test03() throws UnknownHostException{
byte[] addr = {(byte)192,(byte)168,30,(byte)142};
InetAddress ben = InetAddress.getByAddress(addr);
System.out.println(ben);
}
@Test
public void test02() throws UnknownHostException{
InetAddress bai = InetAddress.getByName("www.baidu.com");
System.out.println(bai);
}
@Test
public void test01() throws UnknownHostException{
InetAddress ben = InetAddress.getLocalHost();
System.out.println(ben);//Irene-PC/192.168.30.142
}
}