【网络编程】-- 01 概述、IP

网络编程

1 概述

1.1 计算机网络

(连接分散计算机设备以实现信息传递的系统)

计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

1.2 网络编程目的

…传播交流信息…数据交换…通信…

1.3 条件

  1. 如何准确定位网络上的一台主机? ------ 192.168.16.124:端口 --> 定位至此计算机上的某个资源(app)

  2. 如何传输数据?

javaweb:网页编程 B/S架构

网络编程:TCP/IP C/S架构

1.4 网络通信要素

如何实现网络通信?

  • 通信双方的地址:

    • IP地址
    • 端口号
  • 规则(网络通信协议):

    • http
    • ftp
    • smtp
    • tcp
    • udp
    • TCP/IP 参考模型

    图1

    本章内容主要学习传输层的TCP与UDP协议

【小结】

  • 网络编程的两个主要问题
    • 如何准确定位网络上的一台或多台主机
    • 找到主机之后,如何传输数据(进行通信)?
  • 网络编程中的要素
    • IP和端口号
    • 网络通信协议

2 IP

Class InetAddress

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

  • 127.0.0.1:本机 英文名:localhost

  • IP地址的分类

    • IP地址分类IPv4/IPv6

      • IPv4:例如127.0.0.1,四个字节(32位)组成;每个字节由0~255的数字;约等于2^32个(42亿)网络地址:30亿在北美,亚洲只有4亿;2011年已用尽

      • IPv6:例如fe80::c975:a83:ce2d:74c8%7,128位长,由8个无符号整数(八个字节)组成

        • IPv6地址冒分格式为:

          X : X : X : X : X : X : X : X (8组)

        • 常用的完整16进制表示方式:

          nnnn : nnnn : nnnn : nnnn : nnnn : nnnn : nnnn : nnnn (其中n为09、AF任意一个数值)

        • IPv6地址是可以进行缩写表示的,例如冒号分隔的每组数值前面的0可以省略不写

        • 冒号分隔的一组或连续几组全0数值,可以用双冒号表示(一个IP地址最多只可出现一次::缩写)

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

      • 192.168.xx.xx一般是局域网,专门用于组织内部
      • ABCD类IP地址
  • 域名:解决IP问题

练习:

package com.duo.lesson01;

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Arrays;

//测试IP
public class InetAddressTest {

    public static void main(String[] args) {
        try {
            //查询本机IP地址:3种方式
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress1);

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

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

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

            //一些常用方法
            System.out.println(Arrays.toString(inetAddress4.getAddress()));
            System.out.println(inetAddress4.getCanonicalHostName());  //获取“规范的名字”
            System.out.println(inetAddress4.getHostAddress());  //获取IP
            System.out.println(inetAddress4.getHostName());  //获取域名

        } catch (UnknownHostException e) {
            throw new RuntimeException();
        }
    }
}

运行结果:

图2


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/226168.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SmartChart:一站式数据可视化解决方案

在当今的数据驱动的世界中,数据可视化已经成为了一个重要的工具,它可以帮助我们理解复杂的数据集,并从中提取有价值的信息。SmartChart就是这样一个强大的数据可视化工具,它提供了一站式的数据可视化解决方案,无论你是…

(十五)Flask覆写wsgi_app函数实现自定义中间件

中间件 一、剖析: 在前面讲session部分提到过:请求一进来,Flask会自动调用应用程序对象【Flask(__name__)】的__call__方法,这个方法负责处理请求并返回响应(其实如下图:其内部就是wsgi_app方法&#xff…

【重磅来袭!!!工程师必备初始化建工程软件】

重磅来袭!!!工程师必备初始化软件 每个工程建立前,你是否为了要建立各种文件夹而烦恼?你是否为了因为工程每次文件夹不统一找不到文件而烦扰?来咯,Project Initial V1_0软件只需输入工程名称&am…

安装you-get(mac)

1、首先要有python环境 2、更新pip python -m pip install --upgrade pip 3、安装you-get pip install you-get;

keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

目录 keep-alive 使用 keep-alive 的示例代码: 手动清除组件缓存的示例代码: keep-alive 组件有以下几个优点: keep-alive 的原理: 使用 keep-alive 组件,你可以包裹需要缓存的组件,然后这些组件在切…

基于ssm安徽新华学院实验中心管理系统论文

摘 要 本安徽新华学院实验中心管理系统的设计目标是实现安徽新华学院实验中心的信息化管理,提高管理效率,使得安徽新华学院实验中心管理工作规范化、科学化、高效化。 本文重点阐述了安徽新华学院实验中心管理系统的开发过程,以实际运用为开…

Pytest+Allure生成自动化测试报告!

前言 在自动化测试中,有unittestHTMLTestRunner自动化测试报告,但是生成的测试报告不够美观详细,今天我们来学习一下PytestAllure生成自动化测试报告。 一:安装python中的allure依赖库 在dos窗口中,输入下面三个命令…

AntDesignBlazor示例——创建查询条件

本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考。 示例代码仓库:https://gitee.com/known/AntDesignDemo 1. 学习目标 重构项目文件结构添加日期查询条件实现查询业务逻辑 2. 重构项目结构 在实现列表查询条件功…

【PCB设计】嘉立创EDA器件3D模型导入AD的方法

嘉立创EDA器件3D模型导入AD的方法 一、嘉立创EDA导出3D模型二、CAD编辑3D模型三、AD中加载3D模型 一、嘉立创EDA导出3D模型 在嘉立创EDA中找到对应的元器件,并生成PCB,选择导出3D文件 导出元件step模型 二、CAD编辑3D模型 用FreeCAD打开模型 删除…

JAVA全栈开发 MySql详解

一、数据库 1.数据储存在哪里? 硬盘、网盘、U盘、光盘、内存(临时存储) 数据持久化 使用文件来进行存储,数据库也是一种文件,像excel ,xml 这些都可以进行数据的存储,但大量数据操作&#x…

学习设计模式的一个好网址

常用设计模式有哪些? (refactoringguru.cn)https://refactoringguru.cn/design-patterns

elasticsearch-head 启动教程

D:\elasticsearch-head-master>grunt server ‘grunt’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 npm install -g grunt-clinpm install

经历需求放缓,裁员1.7万人后,亚马逊股票还值得投资吗?

来源:猛兽财经 作者:猛兽财经 亚马逊再次实现增长 尽管在疫情期间,很多电子商务公司都发展的很迅猛,但根据Statista的数据,亚马逊(AMZN)依然保持着对竞争对手的碾压,亚马逊目前约占美国电子商务市场总份额…

全志XR806蓝牙透传(单向)测试

评测三 蓝牙透传(单向) 有时无线透传在无法布线时有很方便的效用,不妨试试蓝牙透传,效果如下: 具体是无线数据->串口数据,串口数据->无线数据,目前前者实现了,后者还有些问题未解决, 实现…

每日一练:插入排序

1. 概念及原理 插入排序是一种简单直观的排序算法,其基本思想是将一个元素插入到已经排序好的部分,然后不断地重复这个过程,直到整个数组有序。下面是插入排序的算法原理: 初始状态: 数组被分为已排序和未排序两个部分…

2、RocketMQ源码分析(二)

RocketMQ的底层通信模块remoting remoting是RocketMQ的底层通信模块,RocketMQ底层通讯是使用Netty来实现的。本文通过对remoting源码进行分析,来说明remoting如何实现高性能通信的。 二、Remoting 通信模块结构 remoting 的网络通信是基于 Netty 实现&…

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含pytho、JS工程源码)+数据集+模型(四)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 模块实现1. 数据预处理2. 创建模型并编译3. 模型训练及保存1)模型训练2)模型保存 4. 上传结果1)…

刷题学习记录(文件上传)

[GXYCTF 2019]BabyUpload 知识点&#xff1a;文件上传.htaccessMIME绕过 题目直接给题目标签提示文件上传的类型 思路&#xff1a;先上传.htaccess文件&#xff0c;在上传木马文件&#xff0c;最后蚁剑连接 上传.htaccess文件 再上传一个没有<?的shell 但是要把image/pn…

生态学、种间关系、进化

这里写自定义目录标题 参考资料种间关系Lynn Margulis共生体在进化过程中形成了一种互帮互助的机制 捕食&#xff1a;收割理论 进化思想史 参考资料 Symbiotic Communications: Where Marconi Meets Darwin 普通生态学(孙儒泳)高等教育出版社1998普通生态学(尚玉昌)北京大学出…

AUTOSAR 入门

前言 AUTOSAR是什么Vector DaVinci 工具功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…