Java网络编程(一)网络的基本认知

前言

这是一个信息化的时代,在生活中,网络通信无处不在。比如发送短信,邮件,视频通话等。
以邮件为例子:
在这里插入图片描述
收件人: 相当于网络编程的ip地址+端口号,定位到某一个具体的地方!只有找对地方才可以成功发送对吧?
内容: 相当于网络编程中的数据包。也就是具体发送的内容。
内容语言: 相当于是网络协议,比方说我发个英语写的内容给你,不懂英语的人也看不懂内容。双方约定好的格式,就是协议,你懂我懂大家都懂!
发送人: 证明是谁发送的,跟收件人是相对的~

一、IP

ip地址:inetAddress
公网: 一般如果是 大网IP 的话,你的ip地址肯定是唯一的!
例如我的百度云服务器地址:
在这里插入图片描述

局域网内: 一般每个局域网都有自己的子网IP,就是一段连续的IP地址,可以由网络管理员手工配置。一般都是192.168.×.× 这个格式的,主要还是看分配,只要不重复即可~
在这里插入图片描述
ip的分类:

  • ipv4/ipv6
    • IPV4: 127.0.0.1,四个字节组成。0 ~ 255, 42亿~;30亿都在北美,亚洲4亿。2001年就用尽了;
      在这里插入图片描述

    • IPV6: fe80::755f:fc6c:2ebc:b6e6%18,128位。8个无符号整数!
      在这里插入图片描述
      这里显示不全,大概规则是:

2001:0bb2:aaaa:0015:0000:0000:1aaa:1312

有兴趣的可以去这篇文章看看哦:点击跳转

  • ABCD类网址:
    在这里插入图片描述
    看上面的图应该就明白了,图画的丑,见谅~

域名:
域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。以上摘自百度百科
通俗的讲就是:ip地址不好记呀!好的域名大家瞄一眼就记住了呀!
比如:www.baidu.com
要知道一个好的渔民可是比北上广的房子还要贵哦,我要是能穿越回去二十年钱,我就把阿里巴巴京东啥的域名全部注册一遍,哈哈,发财了白日梦!

java中获取ip地址:
InetAddress:类的主要作用是封装IP及DNS,因为这个类没有构造器,所以我们要用他的一些方法来获得对象。

public class Test01 {
    public static void main(String[] args) throws UnknownHostException {
        //使用InetAddress来获取
        InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
        System.out.println("inetAddress:"+inetAddress);

        //localhost和127.0.0.1是一样的
        InetAddress inetAddress1 = InetAddress.getByName("localhost");
        System.out.println("inetAddress1:"+inetAddress1);

        //getLocalHost方法获取本机ip地址
        InetAddress inetAddress2 = InetAddress.getLocalHost();
        System.out.println("inetAddress2:"+inetAddress2);

        //查询网站ip地址,这个稍微慢点,因为需要链接
        InetAddress inetAddress3 = InetAddress.getByName("www.baidu.com");
        System.out.println("inetAddress3:"+inetAddress3);

        //常用方法
        System.out.println(inetAddress.getCanonicalHostName());//规范的名字
        System.out.println(inetAddress.getHostAddress());  //ip
        System.out.println(inetAddress.getHostName()); //域名,或者自己电脑的名字

    }
}

执行结果如下:
在这里插入图片描述

二、port(端口号)

端口表示一个计算机上面的一个进程,每个进程都有一个自己的端口号。
在这里插入图片描述

  • 不同的进程有不同的端口号,用来区分进程!
  • 被规定0 ~ 065535
  • 不同协议可以一样。TCP,UDP:65535 * 2 ,单个协议下,端口号不能冲突
  • 端口分类
    • 公有端口0 ~ 1023
    • HTTP:80
    • HTTPS:443
    • FTP:21
    • Telent:23
  • 程序注册端口:1024 ~ 49151,分配给用户或者程序
    • Tomcat:8080
    • MySQL:3306
    • Oracle:1512
  • 动态、私有:49152 ~ 65535

代码示例:
InetSocketAddress类主要作用是封装端口 他是在在InetAddress基础上加端口,但它是有构造器的。具体的一些方法可以去帮助文档查看。

public class Test02 {
    public static void main(String[] args) {

        InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
        System.out.println(socketAddress);

        //常用方法
        System.out.println(socketAddress.getAddress());
        System.out.println(socketAddress.getHostName());
        System.out.println(socketAddress.getPort());
    }
}

执行结果如下:
在这里插入图片描述

三、通信协议

协议=约定
网络通信协议: 速率,传输码率,传输控制……
TCP/IP协议簇:实际上是一组协议,看图说话:
在这里插入图片描述
TCP/UDP区别:

  • TCP:用户传输协议
    • 打电话
    • 三次握手 四次挥手
    • 客户端、服务端
    • 传输完成,释放连接,效率低
  • UDP:用户数据报协议
    • 不连接,不稳定
    • 客户端、服务端:没有明确的界限,两者可以随意变换
    • 不管有没有准备好,都可以发给你…你要不要,不要你说了算,我想给你必须要,丢不丢也不关我的事儿哦~
    • DDOS:洪水攻击!(饱和攻击)

上面的为啥叫TCP/IP协议簇?因为这两货最出名。。。。

重点: 三次握手,四次挥手如何理解:
老规矩,对比可以让我们加深理解,先看官方解释:

  • 官方解释:

    • 三次握手在这里插入图片描述
    • 四次挥手:在这里插入图片描述
      说实话我看着头也疼。
  • 大大丁大大理解版本:

    • 三次握手:
      最少需要三次,保证稳定连接!
      ①A:你瞅啥?
      ②B:瞅你咋地?
      ③A:干一场!

    • 四次挥手
      情人节版本:
      ①A:分手吧!
      ②B:真的要分手吗?
      ③B:(确认一次)真的真的要分手吗?
      ④A:分手!

Java注解和反射扩展:Java网络编程学习汇总

路漫漫其修远兮,吾必将上下求索~
如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧**转载请注明出处哦**

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值