JavaEE|网络原理·上

news2024/9/24 2:32:01

文章目录

    • 一、网络发展史
      • 1.独立模式
      • 2.网络互联
      • 3.局域网(LAN)
      • 4.广域网(WAN)
      • 局域网组网的方式
        • ①基于网线直连
        • ②基于集线器(hub)组建
        • ③基于交换机(switch)组建
        • ④基于交换机和路由器组建
    • 二、网络通信基础
      • 1.ip地址与端口号
      • 2.协议与协议分层
      • 3.常见的协议分层模型——OSI&TCP/IP
        • OSI七层模型
        • TCP/IP五层模型
      • 4.客户端与服务器
      • 5.请求与响应
      • 6.封装与分用
        • 网络设备所在分层
        • 概念
        • 关于不同协议层的数据包
      • 7.实例:两台主机之间的网络通信流程

一、网络发展史

1.独立模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V2g3Hetd-1676687583227)(F:\typora插图\image-20230216203404227.png)]

2.网络互联

ps:与计算机相同,计算机网络也是打仗打来的,即由军用逐渐过渡到商业上边的。

网络互联就是将多台计算机连接在一起,完成数据共享。而网络互联的本质又是网络数据传输,故网络互联又叫做网络通信。

而根据网络互联规模的不同,我们又分为了局域网和广域网。

3.局域网(LAN)

局域网即LAN(Local Area Network),是一种局部组建的私有网络。又因为局域网内的主机间可以方便的进行网络通信,而局域网与局域网之间没有相互连接的情况下是无法相互通信的,故又称为内网

组建局域网的方式有很多,在讨论完网络的发展史之后我们进行总结说明。

4.广域网(WAN)

广域网即WAN(Wide Area Network),是通过路由器将多个局域网连接起来,在物理上组成了很大的网络,所以称为广域网,也称公网。广域网内的局域网都属于子网

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ByNoEmaw-1676687583229)(F:\typora插图\image-20230216205248205.png)]

注意:需要特别说明的是,局域网和广域网只是一个相对的概念。例如,中国的网络对于全中国各个省份的局域网而言,就是广域网,而把中国网络放进全球而言,它又是一个局域网了。

局域网组网的方式

组网:就是主机直接连接主机。

多主机进行组网抽象模型一般有星型、总线型、环形、树形。

而下边我们主要讨论的是,实际生活中组建具体需要怎么做。

①基于网线直连

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dGb1fjzA-1676687583230)(F:\typora插图\image-20230216210331237.png)]

②基于集线器(hub)组建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AIykZoFR-1676687583230)(F:\typora插图\image-20230216210651507.png)]

③基于交换机(switch)组建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnvrpxcU-1676687583231)(F:\typora插图\image-20230216210706580.png)]

④基于交换机和路由器组建

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9U8b2c3Z-1676687583232)(F:\typora插图\image-20230216211021679.png)]

二、网络通信基础

对于网络,我们必须掌握下边的概念/流程!

1.ip地址与端口号

(一)定义

ip地址:主要用来表示网络主机、其他网络设备(如路由器)的网络地址

端口号:可以表示主机中发送数据、接收数据的进程

对于它们的理解:ip地址用于定位主机的网络位置,端口号用于定位主机中的进程。就好比我们收发快递,ip地址就相当于我们的收件地址,端口号就相当于我们的手机号码,通过这两项收件人的身份可以被唯一确定。

(二)格式

  • ip地址格式:ip地址是一个32位的二进制数,这也是它在网络通信中真实的模样。而为了方便我们查看,我们将其分割成4个“8位二进制数”(即4个字节,每个部分表示的范围为0~255(无符号)),也就是大名鼎鼎的“点分十进制”。

例如:01100100.00000100.00000101.00000110 转换为点分十进制就是100.4.5.6。

  • 端口号格式:端口号是0~65535范围的数字。在网络通信中,进程可以通过绑定一个端口号。来发送及接收网络数据。

一般而言,OS会预留出一些数字给特定的程序,所以我们在指定时一般会避开这些端口号。(具体是哪些,暂时还没有去考究)

(三)注意事项

(1)在ip地址中有一类特殊的ip——127.*,叫做环回(loop back)ip,通常都是127.0.0.1。用于测试本机到本机之间的网络通信。

既然是网络通信,为什么要本机到本机??这是因为对于开发网络通信的程序(即网络编程)而言,常见的开发方式就是本机到本机之间的网络通信。此时系统内部为了性能,不会再走网络的方式进行传输。

而对于这种常见的网络编程手段而言,解决了如何定位网络的主机的问题,我们还要解决传输到目的机器后,哪个进程来接收这个数据?这就需要端口号来标识。

(2)两个不同的进程不能同时绑定一个端口号,但是一个继承可以绑定多个端口号。例如同一个进程可以绑定启动端口和收发数据的端口。

2.协议与协议分层

上边的ip地址和端口号解决了网络通信中的发送方和接收方的问题,那么问题又来了,网络通信是基于二进制0/1进行传输的,怎么告诉对方发送的数据是什么样的呢?到底什么内容?是什么格式?……基于此(网络数据传输),我们需要使用协议来规定双方的数据格式。

(一)协议的概念

协议即网络协议,网络协议是网络通信(即网络数据传输)经过的所有的网络设备都必须遵循的一组约定、规则

简言之,协议就是对网络数据传输过程中发送方和接收方在数据格式上的限制

协议的三要素:语法、语义、时序

①语法:即数据与控制信息的结构或格式。相当于我们打电话时使用的语言。

②语义:即需要发出何种控制信息,完成何种动作与做出何种响应。相当于一方谈及一个话题,另一方不能不理,必须给予回应。

③时序:事件实现顺序的详细说明。相当于一方问了好几个问题,另一方要一一回应,与现实不同的是,这里回应的顺序是有要求的。

协议(protocol)最终体现在网络上传输数据包的格式

(二)协议的作用

避免“语言不通”而导致的无法沟通,即为了顺利通信交流。

(三)网络通信五元组

在TCP/IP协议中,用五元组来标识一个网络通信。他们分别是源ip、源端口、目的ip、目的端口号、协议号

其中源ip就是表示发送数据的主机,源端口号就是表示发送数据的主机的具体的进程,目的ip表示接收数据主机,目的端口表示接收数据的主机的具体的进程,

(四)协议分层的概念

将原本的通信协议拆分成小的模块,一层一层的,层与层之间又有定义好的转换规则,这个过程就叫做协议分层。

(五)协议分层的作用

  1. 通过封装,降低学习、使用和维护成本。
  2. 可以灵活针对某一层协议进行替换

这句话展开怎么理解呢?

网络通信比较复杂,需求场景复杂,实现的功能也会比较复杂,如果协议太复杂,学习成本太高,效率就会不尽任意。

所以针对复杂的大协议,拆分成了若干相对简单的小协议,对每层小协议再进行封装,每层封装之间又有定义好的转换规则,之后再进行组合,发现组合起来跟这个最终的大协议起到的作用是相同的。

分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接

对于使用方来说,并不关心提供方是如何实现的,只需要使用接口即可
对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可

3.常见的协议分层模型——OSI&TCP/IP

OSI七层模型

OSI即Open System Interconnection,开放系统互联

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dMMTUsPS-1676687583232)(F:\typora插图\image-20230218092946859.png)]

说明:由于OSI七层模型复杂不实用,只在实验室存在过,最终没有落地商用,我们实际使用的协议分层也不是这个,所以我们这里只是介绍,重点放在后边的TCP/IP协议。

TCP/IP五层模型

TCP/IP协议其实是通过OSI演变过来的,TCP/IP是一组协议的代名词,他还包括很多协议,组成了TCP/IP协议族。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z7ekLL8o-1676687583233)(F:\typora插图\image-20230218094106034.png)]

又因为物理层属于纯硬件,与程序员关系不大,所以四层TCP/IP协议栈的说法也不错。

4.客户端与服务器

客户端和服务器的概念是相对的。

主动发送请求的一方叫做客户端,接收请求的一方叫做服务器。

5.请求与响应

请求:请求就是客户端的向服务器发送的消息。

响应:响应就是服务器根据客户端的请求返回的消息。

6.封装与分用

要理解好清楚这对概念,我们就需要对网络设备所在的分层有所了解。

网络设备所在分层

  • 一台主机的操作系统内核实现了从传输层到物理层的内容,也相当于TCP/IP中的应用层
  • 一台路由器实现了从网络层到物理层,也相当于TCP/IP五层模型中的下三层(网络层+数据链路层+物理层)
  • 一台交换机实现了从数据链路层到物理层 ,也相当于TCP/IP五层模型中的下两层(数据链路层和物理层)
  • 一台集线器只实现了物理层

注:这里的路由器和交换机说的是传统意义上的(二层交换机、三层路由器)

概念

封装:应用层数据通过协议栈发送到网络上时,每层协议都要加上一个数据首部,称为封装。首部信息中包含了类似首部长度、载荷长度等相关信息。

分用:数据包发送到目的主机上后,会再逐层“剥掉”这些头部,根据这些头部进行解析,经过各层的合作下,最终得到正确的信息。

关于不同协议层的数据包

传输层:段(segment)

网络层:数据报(datagram)

链路层:帧(frame)

包(packet)

这里知道有这几个叫法,一般情况下不细分,用到再说。

7.实例:两台主机之间的网络通信流程

假设我们要发qq消息给另一个人,那么我们就是发送方,对方就是接收方,基于此,我们进行分析。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ra8FkhUM-1676687583233)(F:\typora插图\image-20230218102957484.png)]

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Winform控件开发(14)——NotifyIcon(史上最全)

前言: 先看个气泡提示框的效果: 代码如下: 在一个button中注册click事件,当我们点击button1时,就能显示气泡 private void button1_Click(object sender, EventArgs e){notifyIcon1.Visible = true;notifyIcon1

【论文速递】ICLR2018 - 用于小样本语义分割的条件网络

【论文速递】ICLR2018 - 用于小样本语义分割的条件网络 【论文原文】:CONDITIONAL NETWORKS FOR FEW-SHOT SEMANTIC SEGMENTATION(Workshop track - ICLR 2018) 【作者信息】:Kate Rakelly Evan Shelhamer Trevor Darrell Alexe…

PyTorch - Conv2d 和 MaxPool2d

文章目录Conv2d计算Conv2d 函数解析代码示例MaxPool2d计算函数说明卷积过程动画Transposed convolution animationsTransposed convolution animations参考视频:土堆说 卷积计算 https://www.bilibili.com/video/BV1hE411t7RN 关于 torch.nn 和 torch.nn.function t…

Reverse入门[不断记录]

文章目录前言一、[SWPUCTF 2021 新生赛]re1二、[SWPUCTF 2021 新生赛]re2三、[GFCTF 2021]wordy[花指令]四、[NSSRound#3 Team]jump_by_jump[花指令]五、[NSSRound#3 Team]jump_by_jump_revenge[花指令]前言 心血来潮,想接触点Reverse,感受下Reverse&am…

网络编程(一)

网络编程 文章目录网络编程前置概念1- 字节序高低地址与高低字节高低地址:高低字节字节序大端小端例子代码判断当前机器是大端还是小端为何要有字节序字节序转换函数需要字节序转换的时机例子一例子二2- IP地址转换函数早期(不用管)举例现在与字节序转换函数相比:**…

模块化热更思路

title: 模块化热更思路 categories: Others tags: [热更, 模块化, 分包] date: 2023-02-18 01:04:57 comments: false mathjax: true toc: true 模块化热更 浅浅的记录一下访问破 200w (But, I don’t care about this.) 前篇 只谈思路, 不贴实现代码. 需求 游戏类型属于合集…

Linux(十三)设计模式——单例模式

设计模式——针对典型场景所设计出来的特别的处理方案 单例模式:一个类只能实例化一个对象(所以叫单例) 场景: 1、资源角度:资源在内存中只占有一份 2、数据角度:如果只有一个对象,那么该对象在…

2019蓝桥杯真题质数(填空题) C语言/C++

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5…… 请你计算第 2019 个质数是多少? 运行限制 最大运行时间:1s 最大运行内存: 128M…

Mac下安装Tomcat以及IDEA中的配置

安装brew 打开终端输入以下命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 搜索tomcat版本,输入以下命令: brew search tomcat 安装自己想要的版本,例…

JDK版本区别

1. 泛型 ArrayList listnew ArrayList()------>ArrayList<Integer>listnew ArrayList<Integer>(); 2 自动装箱/拆箱 nt ilist.get(0).parseInt();-------->int ilist.get(0);原始类型与对应的包装类不用显式转换 3 for-each i0;i<a.length;i------------&…

解析从Linux零拷贝深入了解Linux-I/O(上)

本文将从文件传输场景以及零拷贝技术深究 Linux I/O 的发展过程、优化手段以及实际应用。前言 存储器是计算机的核心部件之一&#xff0c;在完全理想的状态下&#xff0c;存储器应该要同时具备以下三种特性&#xff1a; 速度足够快&#xff1a;存储器的存取速度应当快于 CPU …

JWT安全漏洞以及常见攻击方式

前言 随着web应用的日渐复杂化&#xff0c;某些场景下&#xff0c;仅使用Cookie、Session等常见的身份鉴别方式无法满足业务的需要&#xff0c;JWT也就应运而生&#xff0c;JWT可以有效的解决分布式场景下的身份鉴别问题&#xff0c;并且会规避掉一些安全问题&#xff0c;如CO…

python+vue微信小程序的线上服装店系统

服装行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,服装行业也在发生着变化,单就服饰这一方面,利用手机购物正在逐步进入人们的生活。传统的购物方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方向。手机线上服装…

JavaEE|套接字编程之UDP数据报

文章目录一、DatagramSocket API构造方法常用方法二、DatagramPacket API构造方法常用方法E1:回显服务器的实现E2:带有业务逻辑的请求发送一、DatagramSocket API 在操作系统中&#xff0c;把socket对象当成了一个文件处理。等价于是文件描述符表上的一项。 普通的文件&#xf…

vbs简单语法及简单案例

文章目录一、简单语法1、变量2、输入3、输出4、选择语句5、循环二、用记事本编译中文乱码问题三、制作一个简单vbs脚本表白一、简单语法 1、变量 语法&#xff1a; dim 变量名例&#xff1a; dim a,b a1 b2 msgbox ab运行&#xff1a; 2、输入 语法&#xff1a;InputBox(…

【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)

一、邻居管理存在状态 1、NUD_NONE&#xff1a; 初始状态。当一个新的路由缓存条目被创建时&#xff0c;arp_bind_neighbour()函数被调用.如果找不到相匹配的ARP缓存条目, neigh_alloc()将创建一个新的ARP缓存条目并设置状态为NUD_NONE. 2、NUD_INCOMPLETE&#xff1a;未完成状…

设计模式之适配器模式与桥接模式详解和应用

目录1 适配器模式1.1 定义1.2 应用场景1.3 适配器角色1.4 类适配器1.5 对象适配器1.5 接口适配器1.6 实战1.7 源码1.8 适配器与装饰器的对比1.9 适配器模式的优缺点1.10 总结2 桥接模式2.1 原理解析2.2 角色2.3 通用写法2.4 应用场景2.5 业务场景中的运用2.6 源码2.7 桥接模式优…

指针笔记(指针数组和指向数组的指针,数组中a和a的区别等)

指针数组和指向数组的指针 int *p[4]和int (*p)[4]有何区别&#xff1f; 前者是一个指针数组&#xff0c;数组大小为4&#xff0c;每一个元素都是一个指向int的指针 后者是指向int[4]类型数组的指针 以上代码若运行会报如下错误 main函数中定义的a数组本质是一个指向int[2]的…

内网渗透(三十八)之横向移动篇-pass the key 密钥传递攻击(PTK)横向攻击

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

从0到1一步一步玩转openEuler--18 openEuler 管理服务-简介

文章目录18 管理服务简介18.1 概念介绍18 管理服务简介 systemd是在Linux下&#xff0c;与SysV和LSB初始化脚本兼容的系统和服务管理器。systemd使用socket和D-Bus来开启服务&#xff0c;提供基于守护进程的按需启动策略&#xff0c;支持快照和系统状态恢复&#xff0c;维护挂…