103-Java网络编程:网络三要素:IP及其类InetAddress、端口、协议

网络编程

一、什么是网络编程?

  • 网络编程可以让程序与网络上的其他设备中的程序进行数据交互。

    在这里插入图片描述



二、网络通信基本模式

  • 常见的通信模式有如下2种形式:
    • Client-Server(CS)
    • Browser-Server(BS)

1、Client-Server(CS)

在这里插入图片描述


2、Browser-Server(BS)(以后学习的重心)

在这里插入图片描述



三、关于网络编程需要学会什么?

1、网络通信的三要素
  • 一个消息发送给对方需要哪些关键因素。

2、UDP通信
  • 消息直接发送给对象,不确认对方是否在线,不做消息确认。

3、TCP通信
  • 基于可靠传输的方式进行的通信模式。
  • 解决不同场景的通信需求。

4、即时通信
  • 如何实现即时通信,具体是如何实现的。

5、模拟BS系统
  • Web系统是如何支持访问到网页的,具体是如何与服务器通信的。



四、实现网络编程关键的三要素

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


1、IP地址
  • 设备在网络中的地址,是唯一的标识。
  • IP(Internet Protocol):全称“互联网协议地址”,是分配给上网设备的唯一标识。
  • 常见的IP分类为:IPv4、IPv6。

(1)IPv4
  • 非常常用的。

在这里插入图片描述


(2)PIv6
  • IPv6:128位(16个字节),号称可以为地球每一粒沙子编号。
  • IPv6分成8个整数,每个整数用四个十六进制位表示,数之间用冒号“ : ”分开。

在这里插入图片描述


(3)IP地址基本寻路

在这里插入图片描述


(4)IP地址形式
  • 公网地址、私网地址(局域网使用)。
    • 公网地址:在全球任何地方都可以互联。
    • 私网地址:在同一个区域内才可以互联。
  • 192.168.开头的就是常见的局域网地址,范围即为192.168.0.0–192.168.255.255,专门为组织机构内部使用。
    • 为什么要区分公网地址、私网地址?
      • 为了节约IP地址,提高不同通信场景的需求。

(5)IP常用命令
  • ipconfig:查看本机IP地址

    在这里插入图片描述



  • ping IP地址:检查网络是否连通

    在这里插入图片描述


(6)特殊IP地址
  • 本机IP:127.0.0.1或者localhost(称为回送地址或本地回环地址,只会寻找当前所在本机)。

  • ping自己当然是互通的啦!!

    在这里插入图片描述



总结

1、说说网络通信至少需要几个要素?

  • IP地址、端口、协议

2、IP地址是做什么的,具体有几种?

  • 定位网络上的设备的,有IPv4、IPv6两种地址

3、如何查看本机IP地址,如何看是否与对方互通?

  • ipconfig:查看本机IP地址
  • ping 对方IP地址:检查是否与对方互通

4、本机IP是是谁?

  • 127.0.0.1或localhost

(7)IP地址操作类-InetAddress
  • 此类表示Internet协议(IP)地址

1. API
方法名称说明
public static InetAddress getLocalHost()返回本主机的地址对象
public static InetAddress getByName(String host)得到指定主机的IP地址对象,参数是域名或者IP地址
public String getHostName()获取此IP地址的主机名
public String getHostAddress()返回IP地址字符串
public boolean isReachable(int timeout)在指定毫秒内连通该IP地址对应的主机,连通返回true
package com.app.d1_inetaddress;

import java.net.InetAddress;

/**
    目标:IP操作类:InetAddress的API使用
 */
public class InetAddressDemo1 {
    public static void main(String[] args) throws Exception {
        // 1、获取本机的IP对象
        InetAddress ip1 = InetAddress.getLocalHost();
        // 获取本机的主机名、IP地址
        System.out.println("本机主机名:" + ip1.getHostName());
        System.out.println("本机IP地址:" + ip1.getHostAddress());

        // 2、获取域名的IP对象
        InetAddress ip2 = InetAddress.getByName("www.baidu.com");
        // 获取该域名的主机名、IP地址
        System.out.println("域名www.baidu.com的主机名:" + ip2.getHostName());
        System.out.println("域名www.baidu.com的IP地址:" + ip2.getHostAddress());

        // 3、获取公网的IP对象
        InetAddress ip3 = InetAddress.getByName("163.177.151.110");
        // 获取该域名的主机名、IP地址
        System.out.println("公网163.177.151.110的主机名:" + ip3.getHostName());
        System.out.println("公网163.177.151.110的IP地址:" + ip3.getHostAddress());

        // 4、判断是否连通:ping 5秒之内测试是否可通,通则返回true
        System.out.println("ping 163.177.151.110(公网)在5秒内是否连通:" + ip3.isReachable(5000));
    }
}
本机主机名:DESKTOP-OPKV6ET
本机IP地址:192.168.40.1
域名www.baidu.com的主机名:www.baidu.com
域名www.baidu.com的IP地址:163.177.151.109
公网163.177.151.110的主机名:163.177.151.110
公网163.177.151.110的IP地址:163.177.151.110
ping 163.177.151.110(公网)在5秒内是否连通:true

Process finished with exit code 0


总结

1、IP地址的代表类是谁?

  • InetAddress类

2、如何获取本机IP对象?

  • 使用getLocalHost()方法:返回本机IP对象

3、如何判断与该IP地址对象是否互通?

  • 使用isReachable()方法:在指定毫秒内连通该IP的主机,通则返回true


2、端口
  • 应用程序在设备中唯一的标识。

(1)端口号
  • 端口号:标识正在计算机设备上运行的进程(程序),被规定为一个16位的二进制,范围是0~65535。

(2)端口类型
  • 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)。
  • 注册端口:1024~49151,分配给用户进程或某些应用程序(如:Tomcat占用8080,MySQL占用3306)。
  • 动态端口:49152~65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。

注意:我们自己开发的程序选择注册端口,且一个设备中不能出现两个程序的端口号一样,否则出错

在这里插入图片描述


总结

1、端口号的作用是啥?

  • 唯一标识正在计算机设备上运行的进程(程序)

2、一个设备中,能否出现2个应用程序的端口号一样,为什么?

  • 不可以,如果一样会出现端口冲突错误!!


3、协议
  • 数据在网络中传输的规则,常见的协议有UDP协议和TCP协议。

(1)通信协议
  • 连接和通信数据的规则被称为网络通信协议。

    在这里插入图片描述


(2)网络通信协议有两套参考模型
  • OSI参考模型(理论上):世界互联协议标准,全国通信规范,由于此模型过于理想化,未能在因特网上进行广泛推广。
  • TCP/IP参考模型(或TCP/IP协议)(实际开发使用):事实上的国际标准。
OSI参考模型TCP/IP参考模型各层对应面向操作
应用层
表示层
会话层
应用层HTTP、FTP、DNS、SMTP…应用程序需要关注的:浏览器、邮箱。
程序员一般在这一层开发
传输层传输层TCP、UDP选择使用的TCP、UDP协议。
网络层网络层IP、ICMP…封装源和目标IP,进行路径选择。
数据链路层
物理层
数据链路层+物理层物理寻址 、比特流…物理设备中传输

(3)传输层的2个常见协议
  • TCP(Transmission Control Protocol):传输控制协议。
  • UDP(User Datagram Protocol):用户数据报协议。

1. TCP协议特点
  • 使用TCP协议,必须双方先建立连接,它是一种 面向连接可靠通信 协议。

  • 传输前,采用 “三次握手” 方式建立连接,所以是可靠的。

    • TCP三次握手建立连接

      在这里插入图片描述

      在这里插入图片描述



    • TCP四次挥手断开连接

      在这里插入图片描述

      在这里插入图片描述

  • 在连接中可进行大数据量的传输。

  • 连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。


TCP协议通信场景
  • 对信息安全要求较高的场景,例如:文件下载、金融等数据通信。


2. UDP协议
  • UDP是一种 无连接不可靠传输 的协议。
  • 将数据源IP、目的地IP和端口封装成数据包,不需要建立连接。
  • 每个数据包的大小限制在64KB内。
  • 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
  • 可以广播发送,发送数据结束时无需释放资源,开销小,速度快。

UDP协议通信场景
  • 语音通话,视频会话等。


总结

1、通信协议是什么?

  • 计算机网络中,连接和通信数据的规则被称为网络通信协议

2、TCP通信协议的特点是啥?

  • 面向连接的可靠通信协议
  • 传输前,采用“三次握手”方式建立连接,点对点的通信,所以可靠
  • 在连接中可进行大数据量的传输
  • 通信效率较低

3、UDP协议的特点是啥?

  • 用户数据报协议
  • UDP是面向无连接,不可靠的传输的通信协议
  • 速度快,有大小限制一次最多发送64K,数据不安全,易丢失数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值