Java基础-网络编程-网络简介

4 篇文章 0 订阅

网络编程

1.1、概述

现在的世界,可以实现你在家里(海口)发送一个消息,很短的时间内,在印度的阿老师们就能够收到。这就是一个常见的网络使用的例子。

地球村的概念提出,更加完美的诠释了网络的效应。

在上世纪,最常用的通讯方式,还是信件。以下是信件的简式结构:

在这里插入图片描述

计算机网络:

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

网络编程的目的:

类比于无线电台,用于进行传播交流信息。进行数据交换,通信。

需要达到的效果,成果是什么:

1.如何准确定位网络上的一台主机?

  • 通过端口号来进行。Eg:192.167.7.7

2.找到了主机,如何进行数据传递?

  • ……

1.2、网络通信要素

随便举个例子,人工智能中的智能汽车。

目前适用于工程,码头等人少的地方,少数地方在尝试上路。由于伦理道德问题,难以大规模上路。网络通信的内容是很复杂,繁多的。

怎样实现网络通信?

通信双方的地址:

  • IP

  • 端口

  • 局域网地址等……

规则?网络通信协议
以TCP/IP协议为例:

在这里插入图片描述

我们重点学习传输层(TCP,UDP协议),以其为主题,进行讲解。

小结:

1.网络编程中有两个主要问题:

  • 如何准确的定位到网络上的一台或多台主机。

打开CMD,直接输入“ping + 目标网址”进行地址跳跃查询。

在这里插入图片描述

  • 找到主机后如何进行通信。

2.网络编程中的要素:

  • IP和端口号。

  • 网络通信协议。

3.Java中万物皆对象,使用何种对象进行信息传输?

1.3、IP地址

Java中如何进行IP地址的获取?

使用“InetAddress”关键词。

  • IP的作用:唯一定位一台网络上的计算机。

  • 特殊IP地址的记忆:127.0.0.1:本机地址,又称为localhost。

  • IP地址的分类:

一、IPV4/IPV6

​ 1.IPV4:127.0.0.1,由4个字节居中,每个字节的大小为0到255,约有42亿个地址。其中约有30亿在北美,4亿在亚洲。在2011年地址已用尽。

​ 2.IPV6:fe70::5477:2017:d5ac:7958%7,由128位,8个无符号整数组成。具有更多的地址数,可满足地球上每一粒沙子分配一个地址。

二、公网(互联网)/私网(局域网)

​ 1.ABCD类地址:

在这里插入图片描述

​ 2.192.168.XX.XX,等,专供某些组织使用。

  • 域名:方便记忆的IP地址问题。

在阿里云上可以搜查你感兴趣的IP地址的价格。

代码测试:

package com.edwin.lesson1;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
 * @author EdwinD
 * @create 2020.08.20 下午 01:24
 * @desc 测试Ip地址。
 **/
public class TextInetAddress {
    public static void main(String[] args) {
        try {
//            查询本机地址
//            方法一:
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress1);
//            方法二:
            InetAddress inetAddress2 = InetAddress.getByName("localhost");
            System.out.println(inetAddress2);
//            方法三:
            InetAddress inetAddress3 = InetAddress.getLocalHost();
            System.out.println(inetAddress3);

//            查询百度的地址
            InetAddress inetAddress4 = InetAddress.getByName("www.baidu.com");
            System.out.println(inetAddress4);

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

        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}

输出效果:

在这里插入图片描述

1.4、端口

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

IP和端口号好比一个大楼和里面一个个房间。

  • 不同的进程有不同的端口号。用来区分软件。

  • 范围规定:0—65535。

  • 分为TCP和UDP两个,都是65535个。两个协议下,端口号不能够重复。

  • 端口分类:

​ 1.共有端口:0—1023

  • HTTP:80

  • HTTPS:443

  • FTP:21

  • Telent:23

​ 2.程序注册端口:1024—49151,用于分配给用于或者程序。

  • Tomcat:8080

  • Mysql:3306

  • Oracle:1521

​ 3.动态、私有:49152—65535

netstat -ano;#查看所有的端口

在这里插入图片描述

netstat -ano|findstr "XXXX";#查看指定的XXXX端口号

在这里插入图片描述

tasklist|findstr "XXXX";#查找某个端口的进程

在这里插入图片描述

代码:

package com.edwin.lesson1;

import java.net.InetSocketAddress;

/**
 * @author EdwinD
 * @create 2020.08.20 下午 03:11
 * @desc 套接字
 **/
public class TestInetSocketAddress {
    public static void main(String[] args) {
        InetSocketAddress socketAddress1 = new InetSocketAddress("127.0.0.1", 8080);
        System.out.println(socketAddress1);

        InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 8080);
        System.out.println(socketAddress2);

        System.out.println(socketAddress1.getAddress());
        System.out.println(socketAddress1.getHostName());
        System.out.println(socketAddress1.getPort()  );
    }
}

输出:

在这里插入图片描述

运行原理:

在这里插入图片描述

1.5、通信协议

所谓协议,就是一些约定,用于大家一起更好地使用一些东西。就比如中国人的官方语言是普通话。

**网络通信协议:**针对网络的一些规定。一些特殊单位:速率,传输码率,代码结构,传输控制等……

但是这些协议错综复杂,十分难顶。

因此,有了一个“大事化小”的方法:分层。

这其中,最重要的协议是:TCP/IP协议簇

在这里插入图片描述

其中重要的:

  • TCP:用户传输协议

  • UDP:用户数据报协议

其中出名的协议:

  • TCP:

  • IP:网络连接协议

TCP和UDP对比
1.TCP:

  • 建立连接,稳定。

  • “三次握手”连接和“四次挥手”断开。

//三次握手:至少进行3次,才能保障连接。
A:你愁啥?
B:瞅你咋地?
A:干你丫的!

三次握手:

在这里插入图片描述

//四次挥手:至少进行4此,才能保障断开。
A:我要走了。
B:你真的要走了吗?
B:你真的真的要走了吗?
A:我真的真的要走了。

四次挥手:

在这里插入图片描述

  • 客户端、服务端界限明朗。

2.UDP:

  • 不连接,不稳定。

  • 客户端、服务端的界限不明朗。

  • 不论对方是否准备好,都可以给对方发消息。

  • DDOS:洪水攻击,一次性发送大量的数据,进行饱和攻击。

路漫漫其修远兮,吾将上下而求索。

参考文献

《【狂神说Java】网络编程实战讲解》
视频链接

2020.08.24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值