网络编程三要素

网络编程三要素:

A:IP地址 B:端口 C:协议

举例:

​ 我想和林青霞说话了。肿么办?

​ A:我要找到林青霞。

​ B:对她说话,要对耳朵说。

​ C:我说什么呢?"I Love You"

但是,她没学过英语,听不懂。我没必要说英语,说汉语就可以了:我爱你

(1)IP地址

网络中计算机的唯一标识。计算机只能识别二进制的数据,所以我们的IP地址应该是一个二进制的数据。但是呢,我们配置的IP地址确不是二进制的,

为什么呢?

IP:192.168.1.100

换算:11000000 10101000 00000001 01100100

假如真是:11000000 10101000 00000001 01100100的话。

我们如果每次再上课的时候要配置该IP地址,记忆起来就比较的麻烦。

所以,为了方便表示IP地址,我们就把IP地址的每一个字节上的数据换算成十进制,然后用.分开来表示:"点分十进制"

P地址的组成

网络号段+主机号段

  1. A类:第一号段为网络号段+后三段的主机号段

一个网络号:256 * 256 * 256 = 16777216

  1. B类:前二号段为网络号段+后二段的主机号段

一个网络号:256 * 256 = 65536

  1. C类:前三号段为网络号段+后一段的主机号段

一个网络号:256

IP地址的分类

  1. A类 1.0.0.1---127.255.255.254

    (1)10.X.X.X是私有地址(私有地址就是在互联网上不使用,而被用在局域网络中的地址)

    (2)127.X.X.X是保留地址,用做循环测试用的。

  2. B类 128.0.0.1---191.255.255.254

172.16.0.0---172.31.255.255是私有地址。169.254.X.X是保留地址。

  1. C类 192.0.0.1---223.255.255.254

192.168.X.X是私有地址

  1. D类 224.0.0.1---239.255.255.254
  2. E类 240.0.0.1---247.255.255.254

两个DOS命令:

ipconfig 查看本机ip地址

ping 后面跟ip地址。测试本机与指定的ip地址间的通信是否有问题

特殊的IP地址:

127.0.0.1 回环地址(表示本机 localhost)

x.x.x.255 广播地址

x.x.x.0 网络地址

在Java中的类

java.lang.Object

继承者 java.net.InetAddress

public class InetAddress extends Object implements Serializable

InetAddress类速查速记:

概述:

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,
通过这个标识号来指定要接受数据的计算机和识别发送的计算机,
在TCP/IP协议中,这个标识号就是IP地址。
那么,我们如果获取和操作IP地址呢?
为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用。

构造方法:(无)

  • 此类没有构造方法,是通过静态方法getByName()*获取对象的*
* public static InetAddress getByName(String host):
 *  根据主机名或者IP地址的字符串表示得到IP地址对象
* 如果一个类没有构造方法:
 * A:成员全部是静态的(Math,Arrays,Collections)
 * B:单例设计模式(Runtime)
 * C:类中有静态方法返回该类的对象(InetAddress)
 *      class Demo {
 *          private Demo(){}
 * 
 *          public static Demo getXxx() {
 *              return new Demo();
 *          }
 *      }

成员方法:(除了上面那个以外的)

* 看InetAddress的成员方法:
 * public String getHostName():获取InetAddress对象的主机名
 * public String getHostAddress():获取InetAddress对象的IP地址
        // public static InetAddress getByName(String host)
        InetAddress address1 = InetAddress.getByName("liuyi");
        InetAddress address = InetAddress.getByName("192.168.12.63");
        // 获取两个东西:主机名,IP地址
        String name = address.getHostName();
        String ip = address.getHostAddress();
        System.out.println(name + "---" + ip);

InetAddress类:

演示1:

package cn.itcast_01;
import java.net.InetAddress;
import java.net.UnknownHostException;
/*
 * 如果一个类没有构造方法:
 * A:成员全部是静态的(Math,Arrays,Collections)
 * B:单例设计模式(Runtime)
 * C:类中有静态方法返回该类的对象(InetAddress)
 *      class Demo {
 *          private Demo(){}
 *
 *          public static Demo getXxx() {
 *              return new Demo();
 *          }
 *      }
 * 
 * 看InetAddress的成员方法:
 * public static InetAddress getByName(String host):根据主机名或者IP地址的字符串表示得到IP地址对象
 */
public class InetAddressDemo {
    public static void main(String[] args) throws UnknownHostException {
        // public static InetAddress getByName(String host)
        // InetAddress address = InetAddress.getByName("liuyi");
        // InetAddress address = InetAddress.getByName("192.168.12.92");
        InetAddress address = InetAddress.getByName("192.168.12.63");
        // 获取两个东西:主机名,IP地址
        // public String getHostName()
        String name = address.getHostName();
        // public String getHostAddress()
        String ip = address.getHostAddress();
        System.out.println(name + "---" + ip);
    }

(2)端口号

  • 端口表示计算机上正在运行的一个程序进程的标识

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

  • 有效端口:0 ~ 65535,其中 0 ~ 1024系统使用或保留端口。

  • 端口分类

    • 公有端口 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 "8000" # 查看指定端口
tasklist|findstr "29292" # 查看指定端口的进程
Ctrl + Shift + ESC # 可以在任务进程中查看

(3)协议

TCP/IP协议

TCP udp 对比

  • TCP :打电话(类比)

    • 连接,稳定、
    • 三次握手,四次挥手
    • 客户端、服务端
    • 传输完成,四方连接,效率低
  • udp:发短信(类比)

    • 无连接,数据不安全不稳定,****速度快
    • 不区分客户端与服务端
    • 发送数据结束时无需释放资源从而速度快
    • DDOS:洪水攻击!(饱和攻击)
posted @ 2021-01-07 16:05  淋尘  阅读(149)  评论(0)    收藏  举报