阅读 45

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


Java网络编程: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:分手!
复制代码

路漫漫其修远兮,吾必将上下求索~

如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧,hahah~

文章分类
后端