Day8( 网络编程( ip 端口 通信协议))

网络编程

1.1概述

  • 信件:
    在这里插入图片描述
  • 计算机网络:“计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议(类比语言类别,普通话等)的管理和协调下,实现资源共享和信息传递的计算机系统。”
  • 网络编程的目的:
    无线电台……传播交流信息,数据交换,通信
  • 想要达到这个效果需要:
    1.如何准确定位网络上的一台主机?
    192.168.16.124:端口,定位到这个计算机上的某个资源
    2.找到了这个主机,如何传输数据?

javaweb:网页编程 B/S
网络编程:TCP/IP C/S

1.2网络通信的要素

如何实现网络通信?
通信双方的地址:

  • ip

  • 端口号
    通信规则
    网络参考模型:在这里插入图片描述
    传输层:TCP UDP

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

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

  • 找到主机后如何进行通信
    2.网络编程中的要素

  • IP和端口号

  • 网络通信协议
    3.万物皆对象

1.3 IP

基础知识:

ip地址:InetAddress

  • 唯一定位一台网络上计算机
  • 127.0.0.1:本机 localhost
  • ip地址的分类
    ~IPV4/IPV6:
    -------IPV4: 12.0.0.1 由4个字节组成。 2011年用尽。
    -------IPV6: 128位。 8个无符号整数。
    ~公网(互联网)/私网(局域网)
    -------ABCD类地址
    在这里插入图片描述
    -------192.168.xx.xx,专门给机构内部使用的
  • 域名:记忆ip问题
    ABCD类地址就是:0——255之间不断二分.
    |--------------------A-------------------|----------B---------|----C----|–D--|在这里插入图片描述

测试ip代码

//测试ip
public class TestInetAddress {
    public static void main(String[] args) {
     try {
         //查询本机地址
         InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");  //InetAddress没有构造方法 需要通过静态方法来调用
         System.out.println(inetAddress1);

         InetAddress inetAddress3 = InetAddress.getByName("localhost");
         System.out.println(inetAddress3);

         InetAddress inetAddress4 = InetAddress.getLocalHost();
         System.out.println(inetAddress4);


        //查询网站IP地址
         InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
         System.out.println(inetAddress2);

         //常用方法
         System.out.println(inetAddress2.getAddress());
         System.out.println(inetAddress2.getCanonicalHostName());//规范的名字
         System.out.println(inetAddress2.getHostAddress());  //ip
         System.out.println(inetAddress2.getHostName());    //域名,或者自己电脑的名字
         
     }catch (UnknownHostException e){
         e.printStackTrace();
     }
    }
}

1.4 端口port

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

  • 不同的进程有不同的端口号
  • 被规定 0-65535
  • TCP,UDP 单个协议下,端口号不能冲突
  • 端口分类:
    1.公有端口 0-1023
    -HTTP: 80
    -HTTPS: 443
    -FTP:21
    -Telent:23
    2.程序注册端口 1024-49151,分配给用户或程序
    -Tomcat:8080
    -MySQL:3306
    -Oracle:1521
    3.动态/私有:49152-65535
    常用dos命令
netstat-ano                  #查看所有端口
netstat-ano|findstr"5900"    #查看指定端口
tasklist|findstr"8696"       #查看端口的进程
Ctrl+Shift+ESC              #打开任务管理器

端口测试代码

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

1.5 通信协议

协议:约定,比如我们讲的普通话
**网络通信协议:**速率,传输码率,代码结构,传输控制……
太复杂了–>大事化小:分层

TCP/IP协议簇(实际上是一组协议)

重要:

  • TCP:用户传输协议
  • UDP:用户数据报协议
    出名的协议:
  • TCP:
  • IP:网络互连协议
协议名称 连接特征对比 结构 传输情景
TCP 连接,稳定(比如电话):三次握手,四次挥手 客户端和服务端分开 传输完成,释放连接,效率低
UDP 不连接,不稳定(比如短信) 客户端和服务端没有明确的界限 不管有没有准备好都可以发给你

注:三次握手,四次挥手:
在这里插入图片描述

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试
应支付0元
点击重新获取
扫码支付

支付成功即可阅读