day17

网络编程

TCP两方需要连接

UDP只管发送不管接收

 

javaweb:网页编程 B/S

网络编程:TCP/IP C/S

要素

如何实现网络通信?

通信双方地址:

  • ip

  • 端口号

  • 192.168.16.124:5900

规则:网络通信的协议

TCP/IP参考模型

 

小结:

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

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

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

  2. 网络编程中的要素

    • IP和端口号 IP

    • 网络通信协议 UDP TCP

IP

ip地址:InetAddress

  • 唯一定为一台网络上的计算机

  • 127.0.0.1 本机localhost

  • ip地址分类

    • IP地址分类IPV4/IPV6

      • IPV4 127.0.01 4个字节 0~255,42亿 30亿都在北美,亚洲4亿

      • IPV6 fe80::9925:45ef:8556:6511%5 128位,8个无符号整数

        • 2001:0bb2:aaaa:0015:0000:0000:1aaa:1312

    • 公网(互联网)-私网(局域网)

      • 192.168.xx.xx专门给组织内部使用的

      • ABCD类地址

  • 域名:记忆IP问题

package com.yan.lesson01;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class TestInetAddress {
   public static void main(String[] args) {
       try {
           //查询本机地址
           InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
           System.out.println(inetAddress1);
           InetAddress inetAddress3 = InetAddress.getByName("localhost");
           System.out.println(inetAddress3);
           InetAddress inetAddress4 = InetAddress.getLocalHost();
           System.out.println(inetAddress4);

           //查询网站地址
           InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
           System.out.println(inetAddress2);
      } catch (UnknownHostException e) {
           e.printStackTrace();
      }
  }
}

端口

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

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

  • 端口被规定为0-65535

  • TCP、UDP 65535*2 tcp:80,udp:80单个协议端口号不能冲突

  • 端口分类

    • 共有端口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 "5900" //查看指定的端口
      tasklist|finder "8696"
      package com.yan.lesson01;

      import java.net.InetSocketAddress;

      public class TestInetSocketAddress {
         public static void main(String[] args) {
             InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1", 8080);
             System.out.println(socketAddress);
             InetSocketAddress socketAddress1 = new InetSocketAddress("localhost", 8080);
             System.out.println(socketAddress1);
             System.out.println(socketAddress.getAddress());
             System.out.println(socketAddress.getHostName());//地址
             System.out.println(socketAddress.getPort());//返回端口
        }
      }

通信协议

协议:约定

网络通信协议:速率,传输码率,代码结构,传输控制。。。。

TCP/IP协议簇(一组协议):

  • TCP: 用户传输协议

  • UDP:用户数据报协议

出名的协议:

  • TCP:

  • IP:网络互连协议

TCP UDP对比:

tcp:

  • 连接,稳定

  • 三次握手 四次挥手

    • A:你瞅啥,B:瞅你咋的,A:干一场(建立连接最少需要三次连接)

    • A:我要断开,B:我知道你要断开了,B:你真的断开了吗,A:我真的断开了

  • 客户端 服务端

  • 传输完成 释放连接 效率低

udp:

  • 不连接 不稳定

  • 客户端 服务端:没有明确的界限

  • 不管有没有准备好,都可以发给你

  • 导弹攻击

  • DDOS:洪水攻击!(饱和攻击)