Java自学笔记之网络编程

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 Java自学笔记之网络编程,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

网络编程

地球村概念

概述

计算机网络

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程的目的

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。

想要达到此效果的做法

  1. 准确的定位网络上的主机
  2. 传输数据

网络通信的要素

通信双方的地址:

  • ip
  • 端口号

规则:网络通信的协议

TCP/IP参考模型
在这里插入图片描述

主要:传输层:TCP、UDP

小结:

  1. 网络编程的两个主要问题
    • 准确定位到网络上的主机
    • 找到主机之后如何建立通信
  2. 网络编程的要素
    • ip和端口号
    • 网络通信协议
  3. 万物皆对象

IP

ip地址:InetAddress

  • 唯一定位一台网络计算机

  • 本地localhost

  • IP地址分类

    • ipv4/ipv6

      • IPV4:192.168.31.198 4个字节组成
      • IPV6:fe80::b45e:357b:db83:fdec%11 128位,8个无符号整数
    • 公网(互联网)-私网(局域网)

      • ABCD类

        • A类网络的IP地址范围为:1.0.0.1-126.255.255.254;

          B类网络的IP地址范围为:128.1.0.1-191.255.255.254;

          C类网络的IP地址范围为:192.0.1.1-223.255.255.254

          C类之外D类

      • 192.168.31.198 局域网,专门给组织内部使用

  • 域名:记忆IP问题

    • IP
public class TestInetAddress {
    public static void main(String[] args) throws UnknownHostException {
        //查询网站IP的地址
        InetAddress inetAddress = InetAddress.getByName("www.baidu.com");
        System.out.println(inetAddress);
        //查询本机的IP地址
        InetAddress localHost = InetAddress.getLocalHost();
        System.out.println(localHost);
        //常用方法
        System.out.println(inetAddress.getAddress());
        System.out.println(inetAddress.getCanonicalHostName());//规范的名字
        System.out.println(inetAddress.getHostName());//域名,或者自己电脑的名字
        System.out.println(inetAddress.getHostAddress());//IP
    }
}

在这里插入图片描述

端口

端口表示计算机上一个程序的进程

  • 不同的进程有不同的端口号,用以区分软件

  • 被规定0~65535

  • TCP/UDP:单个协议下,端口号不能冲突

  • 端口分类

    • 公有端口 0~1023
      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口:1024~49151,分配用户或者程序
      • Tomcat:8080
      • MySQL:3306
      • Oracle:1521
    • 动态/私有端口:49152~65535
    netstat -ano#查看所有的端口
    netstat -ano|findstr "端口号"#查看指定的端口号
    tasklist|findstr "端口号"#查看指定端口的进程
    
//socketaddress:套接字地址
public class TsetInetSocketAddress {
    public static void main(String[] args) {
        InetSocketAddress inetSocketAddress = new InetSocketAddress("localhost", 8080);
        System.out.println(inetSocketAddress);
        System.out.println(inetSocketAddress.getAddress());//IP
        System.out.println(inetSocketAddress.getHostName());//域名
        System.out.println(inetSocketAddress.getPort());//端口号
    }
}

在这里插入图片描述

如果需要将一台电脑的程序和另一台电脑的程序建立连接则:

  1. 先获取到目标电脑的ip地址(找到这台电脑)
  2. 获取到目标电脑上面目标程序的端口号(找到这个程序)
  3. 建立连接

通信协议

网络通信协议:是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络提供通信支持,是一种网络通用语言。

TCP/IP协议

  • TCP:用户传输协议
  • UDP:用户数据报协议
  • IP:网络互联协议

TCP/IP四层概念模型:应用层、传输层、网络层、数据链路层

TCP、UDP对比

TCP:

  • 连接,稳定
  • 三次握手 四次挥手
三次握手:最少需要三次以保证稳定连接
A:连吗?
B:连
A:那我连上了

四次挥手:二次确认
A:我要断开了。
B:好的我知道了。
B:你断开了吗?
A:嗯我断开了
  • 客户端、服务端
  • 传输完成—>释放连接(效率低)

UDP:

  • 不连接、不稳定
  • 客户端、服务端:无明确的界限
  • 不管有没有准备好,都可以进行传输
  • eg:导弹

TCP

需要三次以保证稳定连接
A:连吗?
B:连
A:那我连上了

四次挥手:二次确认
A:我要断开了。
B:好的我知道了。
B:你断开了吗?
A:嗯我断开了


- 客户端、服务端
- 传输完成—>释放连接(效率低)

UDP:

- 不连接、不稳定
- 客户端、服务端:无明确的界限
- 不管有没有准备好,都可以进行传输
- eg:导弹




 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/147379.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!