• IP协议


    IP协议:

    Internet是由无数台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,

    这个地址就叫做IP(Internet Protocol的简写)地址,即用Internet协议语言表示的地址。IP的存储是使用二进制存储。

    端口:同一台计算机进程的标识。

    端口范围:

    0~65535是我们可以使用的端口范围。

    0~1024 一般是系统进程端口,不建议使用。

    1024~65535 是我们可以使用使用的端口。

    注:尽量不要和系统进程或者和已经打开的程序端口重复,否则会出现端口被占用的问题。

    协议就是不同计算机通信的规则。

    HTTP: 超文本传输协议。同时HTTP 是无处状态,无连接的,非常灵活快速简单的协议。

    HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP允

    许传输任意类型的数据对象。无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面

    的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。无连接的含义是限制每次连接只处理一个请求

    ,服务器处理完客户的请求,并收到客户的应答后马上断开连接。采用这种方式可以节省传输时间。

    FTP:文件传输协议。

    FTP的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。

    FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以用

    FTP客户端通过FTP协议访问位于FTP服务器上的资源。

    TCP:传输控制协议。

    TCP主要面向连接的协议,一般都是用来文件上传、文件下载。数据传输量没有限制,并且数据安全可靠。

    缺点:就是速度比较慢。

    UDP:用户数据报协议。

    UDP主要面向无连接,一般是用来发短信、群聊等。UDP的数据传输量有限制,最好不要超过64K,但是UDP传输数据速度快。

    缺点:数据不安全,很容易丢失。传输数据之前必须打包处理

    IP分为网络区段号和主机段号:

    IP地址分类

    A类地址: 第一段为网络区段号,后面三段为主机段号 256 * 256 * 256 = 16777216 国家 政府 军方

    B类地址: 前两段为网络区段号,后面两段为主机段号 256 * 256 = 65536 学校 公司

    C类地址: 前三段为网络区段号,后面一段为主机段号 256 家用 网吧

    特殊地址:

    127.0.0.1 : 本机地址/回环地址 == localhost == 192.168.1.112

    192.168.x.x : 表示私有地址 (这个地址不能够在互联网上使用,只能够在局域网中使用)

    x.x.x.25: 表示广播地址

    掌握2个命令:

    ipconfig: 查看本机网络配置

    ping ip地址: 测试是否能够和目标ip进行正常的发送和接收数据包

    下面是Java类 InetAddress方法示例:

     

    public class IpDemo {
      public static void main(String[] args) throws UnknownHostException {
      byte[] bys = {(byte) 192,(byte) 168,1,118};
      InetAddress ip = InetAddress.getByAddress(bys);
      System.out.println(ip);
      System.out.println(InetAddress.getByName("192.168.1.118"));
      System.out.println(InetAddress.getByName("www.xxx.com"));
      System.out.println(InetAddress.getLocalHost());
      System.out.println(InetAddress.getLoopbackAddress());
    
      InetAddress address = InetAddress.getByName("本地主机");
      System.out.println(address.getHostAddress());
      System.out.println(address.getHostName());
      System.out.println(address.isLoopbackAddress());
      System.out.println(ip.getHostName());
      System.out.println(ip.getHostAddress());
      }
    
    }

    下面是一个模拟客户端发送数据到服务器端的示例代码:

    package com.sxx.cn;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class KeHuDuan {
    //客户端示例
      public static void main(String[] args) throws IOException {
      //创建IP对象
      InetAddress ia = InetAddress.getByName("192.168.1.118");
      int clientPort = 10001;
      //使用 DatagramSocket方法 创建Socket对象 
      DatagramSocket ds = new DatagramSocket(clientPort,ia);
      //创建你发送的数据
      String data = "啊!西湖的水我的泪!啊啊~";
      //打包数据
      byte[] b = data.getBytes();
      int length = b.length;
      //发送地址
      InetAddress sIp = InetAddress.getByName("192.168.1.118");
      int s = 1818;
      DatagramPacket dp = new DatagramPacket(b, length, sIp, s);
      //调研socket 的方法发送数据包
      ds.send(dp);
      //因为是IO流所以需要释放资源
      ds.close();
      }
    
    }

    服务器端示例:

    package com.sxx.cn;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class DomeServer {
    
      public static void main(String[] args) throws Exception {
      //使用 DatagramSocket方法创建Socket接收对象
      DatagramSocket ds = new DatagramSocket(1818, InetAddress.getByName("192.168.1.118"));
      //创建一个空数组来进行拆箱
      byte[] buf = new byte[150];
      DatagramPacket dp = new DatagramPacket(buf,buf.length);
      ds.receive(dp);
      //进行解析
      byte[] data = dp.getData();
      String clientIp = dp.getAddress().getHostAddress();
      int clientport = dp.getPort();
      int length = dp.getLength();
      String result = new String(data, 0, length);
      System.out.println("来自:" + clientIp + "端口号:" + clientport + "的数据:" + result);
      //释放资源
      ds.close();
      }
    
    }
  • 相关阅读:
    【Linux学习七】软件安装
    【Linux学习六】用户管理
    【Linux学习五】文本处理
    【Linux学习四】正则表达式
    【Linux学习三】VI/VIM全屏文本编辑器
    【Linux学习二】文件系统
    【Linux学习一】命令查看与帮助
    【安装虚拟机四】设置快照和克隆
    【安装虚拟机三】设置Linux IP地址
    SpringBoot之定时任务详解
  • 原文地址:https://www.cnblogs.com/qinchangchuan/p/10859324.html
Copyright © 2020-2023  润新知