Java 网络

本文介绍了Java网络通信的基础,包括网络通信的三个要素:地址、端口号和网络协议。详细讲解了OSI七层模型的各层功能,如物理层、数据链路层、网络层、传输层等。特别强调了TCP/IP协议簇,对比了TCP和UDP的特点。此外,还阐述了IP地址的类型,如IPv4和IPv6,以及域名系统的工作原理,最后提到了端口号的分类和常见用途。
摘要由CSDN通过智能技术生成
  •  网路通信的三个要素:

  (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
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值