JavaEE 初阶篇-深入了解网络通信相关的基本概念(三次握手建立连接、四次挥手断开连接)

4.0 网络通信三要素 - 端口

4.1 分类

5.0 网络通信三要素 - 协议

5.1 OSI 网络参考模型

5.2 TCP/IP 网络模型

5.3 UDP 协议

5.4 TCP 协议

5.4.1 三次握手来确认双方建立连接

5.4.2 传输数据可靠性

5.4.3 四次挥手断开连接


1.0 网络通信概述

网络通信是指不同计算机之间通过网络传输数据和信息的过程。在网络通信中,数据可以通过各种协议和技术进行传输,例如 TCP、UDP、HTTP、FTP 等。

1.1 基本的通信架构

基本的通信架构有两种形式:CS 架构(Client 客户端/ Server 服务端)、BS 架构(Browser 浏览器/ Server 服务端)。

1)在 CS 架构中,客户端负责向服务器发送请求,并接收服务器的响应。服务器负责处理客户端的请求,执行相应的业务逻辑,并返回结果给客户端。与 BS 比较明显的比较。CS 模式下,客户端与服务端都需要程序员开发实现,用户端需要下载安装客户端软件。

传统的桌面应用程序通常采用 CS 架构,如邮件客户端、文件传输工具等。

2)在 BS 架构中,客户端通过 Web 浏览器访问 Web 应用程序,Web 服务器处理客户端的请求并返回 HTML、CSS、JavaScript 等前端资源,客户端在浏览器中渲染显示。与 CS 比较,BS 模式下的浏览器不需要程序员开发实现,程序员只需要开发实现服务端,而用户只用下载安装浏览器即可。

BS 架构具有跨平台性和易于部署的特点,用户只需通过浏览器访问 Web 应用程序,无需安装额外的客户端软件。

2.0 网络通信三要素

1)IP:设备在网络中的地址,是唯一的标识。

2)端口号:应用程序在设备中唯一的标识。

3)协议:连接和数据在网络中传输的规则。

3.0 网络通信三要素 - IP 地址

IP 地址用于在网络中唯一标识设备,类似于世界上每个人都有唯一的身份证号码。IP 地址允许设备在互联网上相互通信和交换数据,实现数据的传输和网络连接。

3.1 查询 IP 地址

在打开命令框:输出

ipconfig

3.2 IP 地址由谁供应?

IP 地址的供应主要由互联网服务提供商负责。ISPs 是连接用户到互联网的服务提供商,他们会从区域互联网注册管理机构或其他上级 ISP 处获取一定数量的公共 IP 地址资源,然后将这些 IP 地址分配给他们的客户。

3.3 IP 域名

IP 地址和 IP 域名是互联网中用于标识和定位网络资源的两种不同的标识方式。IP 地址是互联网上设备的唯一标识符,而 IP 域名是用于更方便地记忆和访问网络资源的人类可读标识。例如:example.com 是一个域名,www.example.com 是其子域名。

IP 域名和 IP 地址之间存在映射关系,域名系统(DNS)负责将域名解析为对应的 IP 地址,从而实现互联网资源的访问。当用户在浏览器中输入一个域名时,浏览器会向 DNS 服务器发送请求,获取该域名对应的 IP 地址,然后通过 IP 地址找到并访问相应的网络资源。

总的来说,IP 地址是互联网上设备的标识符,而域名是用来方便访问网络资源的人类可读标识,二者通过 DNS 进行映射和交换。

3.4 IP 分类

IPv4(Internet Protocol version 4)是目前广泛使用的 IP 地址标准,采用 32 位地址,通常以点分十进制表示,如 192.168.1.1。

IPv6(Internet Protocol version 6)是下一代 IP 地址标准,采用 128 位地址,以冒号分隔的八组十六进制数表示,如 2001:0db8:85a3:0000:0000:8a2e:0370:7334 。(号称可以为地球每一粒沙子编号)

公有 IP 地址(公网):公有 IP 地址是全球唯一的 IP 地址,用于在互联网上进行通信。公有 IP 地址由互联网服务提供商(ISP)分配。

私有 IP 地址(内网):私有 IP 地址用于内部网络中,不直接暴露在互联网上,通常在局域网内部使用。私有 IP 地址范围包括 192.168.0.0/16 。192.168 开头的就是常见的局域网。

特殊 IP 地址:127.0.0.1 代表本机 IP ,只会寻找当前所在的主机。

3.5 IP 常用命令

ipconfig:查看本机 IP 地址。

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

查看本机 IP 地址:

结果:

检查网络是否连通:

3.6 InetAddress 类

代表 IP 地址。

InetAddress 的常用方法如下:

1)public static InetAddress getLocalHost():是一个静态方法,通过类名直接获取本机 IP 对象,会以一个 InetAddress 的对象返回。

    public static void main(String[] args) throws UnknownHostException {
        //获取本机的 IP 对象
        InetAddress address = InetAddress.getLocalHost();
    }

2)public static InetAddress getByName(String host):根据地址或者域名,返回 InetAddress 对象。

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

public class demo2 {
    public static void main(String[] args) throws UnknownHostException {
        //根据IP或者域名来获取该IP地址的对象
        InetAddress address1 = InetAddress.getByName("127.0.0.1");
        InetAddress address2 = InetAddress.getByName("www.baibu.com");
    }
}

3)public String getHostName():获取该 IP 地址对象对应主机名。

import java.net.InetAddress;
import java.net.UnknownHostException;
public class demo1 {
    public static void main(String[] args) throws UnknownHostException {
        //获取本机的 IP 对象
        InetAddress address = InetAddress.getLocalHost();
        //通过IP地址对象来获取到主机名称
        String name = address.getHostName();
        System.out.println(name);
    }
}

运行结果:

4)public String getHostAddress():获取该 IP 地址对象中的 IP 地址信息。

该操作与通过命令框中输入:ipconfig 来查找本机地址是一样的效果。

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

public class demo3 {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress address = InetAddress.getLocalHost();
        String ip = address.getHostAddress();
        System.out.println(ip);
    }
}

运行结果:

5)public boolean isReachable(int timeout):在指定毫秒内,判断主机与该 IP 对于的主机是否能连接。

该操作与在命令框中输入:ping IP 地址是一样的效果。

import java.io.IOException;
import java.net.InetAddress;

public class demo4 {
    public static void main(String[] args) throws IOException {
        InetAddress address = InetAddress.getByName("www.baidu.com");
        //判断在8秒内是否与百度建立联系
        boolean b = address.isReachable(8000);
        System.out.println(b);
    }
}

运行结果:

4.0 网络通信三要素 - 端口

标记正在计算机设备上运行的应用程序的,被规定为一个 16 位的二进制,范围是 0~65535 。

4.1 分类

1)周知端口:0 - 1023,被预先定义的知名应用占用(如:HTTP 占用 80,FTP 占用 211)

2)注册端口:1024 - 49151,分配给用户进程或某些应用程序。

3)动态端口:49152 - 65535,之所以被称为动态端口,是因为它不一般固定分配某种进程,而是动态分配。

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

5.0 网络通信三要素 - 协议

网络上通信的设备,事先规定的连接规则,以及传输数据的规则被称为网络通信协议。

5.1 OSI 网络参考模型

网络参考模型是国际标准化组织制定的用于定义和标准化计算机网络体系结构的框架。该模型将计算机网络通信过程分解为七个不同的层次,每个层次负责特定的功能,并定义了各层之间的接口和通信方式,以促进不同厂商设备之间的互操作性。

以下是 OSI 网络参考模型的七个层次:

  1. 物理层(Physical Layer):负责定义传输介质的物理特性,如电压、频率等,以及数据的传输和接收方式。
  2. 数据链路层(Data Link Layer):负责在直接相连的节点之间传输数据,通过帧(Frame)来管理数据传输,检测和纠正传输错误。
  3. 网络层(Network Layer):负责在网络中寻址、路由和转发数据包,实现不同网络之间的通信。
  4. 传输层(Transport Layer):负责端到端的数据传输,提供可靠的数据传输服务,如错误检测、流量控制和拥塞控制。
  5. 会话层(Session Layer):负责建立、管理和终止会话(Session)连接,确保数据传输的顺序和完整性。
  6. 表示层(Presentation Layer):负责数据的格式转换、加密解密、压缩解压缩等,以确保不同系统之间的数据格式兼容性。
  7. 应用层(Application Layer):提供用户与网络应用之间的接口,包括各种网络服务和应用程序,如 HTTP、FTP、SMTP 等。

每个层次都有特定的功能和责任,并通过定义标准接口和协议来实现不同层次之间的通信和协作。OSI 模型提供了一种通用的框架,帮助理解和设计计算机网络体系结构,促进不同厂商设备之间的互操作性。

大致流程:

5.2 TCP/IP 网络模型

事实上的国际标准。

TCP/IP 网络模型是另一种常用的网络参考模型,由互联网工程任务组开发。它包含四个层次分别是:

  1. 应用层:与 OSI 模型的应用层类似,负责应用程序之间的通信和数据交换。在 TCP/IP 模型中,应用层包括各种应用层协议,如 HTTP、FTP、SMTP 等。
  2. 传输层:在 TCP/IP 模型中,传输层主要包括两个协议:传输控制协议(TCP)和用户数据报协议(UDP)。TCP 提供可靠的、面向连接的数据传输,而 UDP 提供无连接的数据传输。
  3. 网络层:网络层在 TCP/IP 模型中对应于 OSI 模型的网络层,负责数据包的路由和转发。在TCP/IP 模型中,主要使用 Internet 协议(IP)来实现网络层功能。
  4. 网络接口层:网络接口层对应于 OSI 模型的数据链路层和物理层,负责定义硬件设备与网络之间的接口标准,以及数据的传输和接收。

5.3 UDP 协议

用户数据报协议。

特点:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

82084756)]

[外链图片转存中…(img-bjUlvd0j-1715882084756)]

[外链图片转存中…(img-t1bqg6le-1715882084757)]

[外链图片转存中…(img-o7crtPsZ-1715882084757)]

[外链图片转存中…(img-4VIJIOVx-1715882084757)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值