计算机网络网络层笔记
互联网提供的两种服务
1.虚电路服务
2.数据报服务
需要记住的是现在只用第二种也就是数据报服务
网际协议IP
物理层的中断系统:转发器(hub)
链路层的中断系统:交换机
网络层的中断系统:路由器
网络层以上:网关
如上图所示,网关是用来访问其他的网段的一个接口,网关的地址一般都是网段地址的第一个地址
ip协议的介绍
ip协议是TCP/IP协议中的的最最主要的协议之一,当然还有其他的四个协议
ARP:
RARP(现在基本已经弃用)
ICMP:一般是用来报告网络中的故障的
IGMP:
都是下面的IPv4协议栈的

IP地址
层次化IP地址
简单来说就是将ip地址划分为网络段和主机段,这样当其他的网段向本网段发送地址的时候就不用知道具体的每个主机的IP地址,只需要将数据帧发送到相应的网络段就行了
下面的这张图片是子网掩码的重要部分
下面的是CIDR,就是将IP地址划分为网络段和主机地址段
所以从上面的图片中可以清晰的看到
0-126的是A类地址,这里不用127的原因是127表示的环回地址,用来表示自己127.0.0.1
128-192的是B类地址,196.25.0.28表示当没有人分配地址的时候计算机自己给自己分配地址
192-255的是C类地址
还有一些私网地址
子网掩码是用来对比是否在同一个网段的重要部分,通过子网掩码就可以划分不同的网段
简单的例题
题目是将左边的框框拖到右边来得到相应的网段,关于主机的那两个都很简单,只要做计算就行,
但是主要是看路由器的那两个,注意两个路由器之间是点到点连接的,所以知道/30就行,也就是4个子网(两个不可用,两个给路由用),所以就可以轻易看出169的那个是可行的
超网
这里的例子指的是,如果在一个网段内规定的是C类网络,但是一个网段中有400台主机,那么这个时候就需要给网关设置连个地址,来进行A和B之间的数据传输,但是因为本身就有交换机的存在所以本来就可以通过交换机来交换数据,而不用网关,而超网就解决了这样的一个问题
就是将这个子网掩码向前移动一位
IP地址和MAC地址
首先思考一个问题,就是既然MAC地址是全球都不一样的,那么是不是就可以通过直接用MAC地址来实现数据传播呢
显然不行,因为如果直接用MAC地址传播必须要用广播,这样不仅大大降低了效率,而且不安全,所以要用IP地址
下面的这个是A到B传输的过程,IP地址只是标记了最终的目标,而MAC地址决定了下一跳给谁
ARP协议
ARP的主要作用就是将IP地址解析成为MAC地址
就是当我的主机需要发消息的时候,就必须发送一个广播来确定对应IP地址的MAC地址,然后ARP就会将这个地址记下来,方便以后的访问
那么既然有广播就会有网络安全问题,别人可以利用广播的这个漏洞实现抓包
ARP欺骗应用
当主机们想要发送消息到路由的时候,由于ARP协议开始都要广播来确定路由器的MAC地址,所以这个时候骗子主机又可以欺骗这个主机来告诉主机骗子主机的MAC地址就是路由的地址,这样就可以让所有的主机都经过骗子主机,这样不仅仅可以截获信息,还能限制流量
还有一系列的由ARP导致的问题
逆向ARP(RARP)
逆向ARP就是将MAC地址解析成IP地址
IP数据报
注意IP数据报的首部长度是固定的20字节
生存时间:TTL,当TTL变成0了就会自动消失
网络畅通的条件
数据路由 路由器在不同的网段转发数据包
网络畅通的条件 能去能回
沿途的路由必须知道目标网络的下一跳给哪个接口,回来的时候也一样,必须都相互知道
静态路由
必须管理员手动设置路由器的查询表才能通

动态路由RIP(最早)
周期性广播:每隔30秒告诉邻居自己的信息,并且只留最短的路径信息
以跳数为单位:计算经过了几个路由器,这种设置的坏处就是没有考虑贷带宽
配置Rip的时候只看是哪一类地址,RIP协议不会管你的什么子网划分,它自动给你分配好了根据你的网络类型
路由例子
其中路由能够知道直接相连的地址,所以
(pc0)>>ping 172.16.0.1
通
但是
(pc0)>>ping 172.16.0.2
不通
因为路由器2和PC0不是直连的,所以不知道怎么走,这个时候就要手动添加路由表得到走的方向
计算机的网关就是默认路由
就是当计算机不知道你的数据要发送到哪里的时候就会直接发送给网关
计算机上面最好只设置一个网关,不然会因为负载均衡导致一系列的有规律的丢包现象
负载均衡
配置路由表让Router3出去的时候经过Router1到Router2
配置Router2的路由表让到Router3的路由表经过Router4
就可以实现负载均衡
最长前缀匹配
ICMP协议
作用:探测网络有没有故障
询问报文:就是数据报发出去的时候用到的
差错报告报文:就是返回信息的时候得到的消息
|
|--------------改变路由(重定向):
如果PC1设置的网关是Router2,那么要发送给Router1的话就只能通过Router2发送,这样就会导致重复发送,那么重定向就会自动选择最优路径
结构
OSPF协议
和RIP都是动态路由协议
相比于RIP,OSPF不是仅仅传递给邻居,而是传递给全部配置了OSPF配置的路由
度量值:带宽 而RIP是跳数
支持多区域
试探式计算,用迪杰斯特拉算法
触发式更新,就是没有事情的时候不更细,当路由器坏掉的时候或者更新的时候自己会更新
那如果由的路由故障了怎么办呢,就是通过hello来互相确认建在
三个表
邻居表 hello
链路状态表
计算路由表
仅仅支持二级结构,不支持三级结构
外部网关BGP协议

是不同区域之间的最段路径的选择

VPN的功能
有一些保留的私网地址有:
10.----
172.6-172.31
192.168(我们学校用的)
VPN的原理就是如图所示
当我们访问RAS(图中)RAS服务器的时候,服务器会分配给我们一个私网地址,10.0.0.8
接着,加入我们要访问私网内部的地址,肯定要表明本身的IP地址和目的的IP地址
但是对于私网地址我们是不可能可以访问到的,所以我们要对数据进行封装,让本身的数据发送到RAS服务器,让服务器转发我们的数据报
当服务器接受到数据的时候,就将外面一层的IP地址数据去除
这就是为什么我们每次使用校园网的时候都要登录,就是要接入到这个服务器,不然所有人都可以直接连接了
我们平时使用的VPN翻墙也是这个原理,就是在外网搭建了一个服务器,然后我们通过这个服务器来向国外发送和接受数据,所以我们就能够访问外网
VPN中的全局设置就是让我们的所有的流量都经过刚刚VPN连接的服务器,这就是为什么我们连接开着VPN还能访问国内的网站的原因
最后还需要记住的是:使用VPN拨号时候相当于将自己的计算机搬到了那个服务器所在的内部地址
上图是隧道技术,可以让两个部门的服务器相通(应该可以这样解释吧),然后这个样就可以在本地直接访问别的部门的电脑
NAT和 PAT技术
访问的方式是:10.21的地址在经过服务器的时候变成111
然后将数据包的源地址改成111,发送给198,198发送回来的时候就直接将目标地址改成111,然后服务器再将111修改成私网的地址10.21,这样就可以有效传输地址了
新的问题
服务器是通过端口来返回数据的,现在有一个问题就是如果两台计算机发出去的端口都是一样的话,那么服务器应该发给哪台计算机呢
这里服务器的解决方法就是将端口号也进行一个打包,可能用一个哈希之类的,比如两个1234分别封装成4000和4001,这样就可以实现同一端口的访问那么这个配置端口地址转化的技术就叫PAT
端口号所属的层级:
- 端口号属于传输层(Transport Layer)
- 在OSI七层模型中是第4层
- 在TCP/IP四层模型中也是第4层
- 主要的传输层协议是TCP和UDP
端口号的作用:
- 进程识别
- 用于区分同一台计算机上的不同网络应用程序
- 实现数据包准确投递到指定的应用程序
- 允许一台计算机同时运行多个网络应用
- 端口号范围
- 总范围:0-65535(16位数字)
- 知名端口:0-1023(需要管理员权限)
- HTTP:80
- HTTPS:443
- FTP:21
- SSH:22
- DNS:53
- 注册端口:1024-49151
- 动态端口:49152-65535
举个生活中的例子: 想象一栋大楼(计算机):
- 大楼的地址就像IP地址
- 房间号就像端口号
- 不同的租户(应用程序)住在不同的房间(端口)
- 快递员(数据包)需要同时知道大楼地址(IP)和房间号(端口)才能准确送达
数据封装过程中的端口号:
应用层: HTTP数据 传输层: [源端口|目标端口|TCP头部|HTTP数据] 网络层: [IP头部|[源端口|目标端口|TCP头部|HTTP数据]] 数据链路层:[MAC头部|[IP头部|[源端口|目标端口|TCP头部|HTTP数据]]|MAC尾部]
常见应用示例:
- 网页浏览
- 浏览器发起请求时会随机分配一个源端口(如54321)
- 访问网站使用目标端口80(HTTP)或443(HTTPS)
- 在线游戏
- 游戏客户端使用特定的端口与服务器通信
- 服务器通过端口号区分不同的玩家连接
- 远程控制
- SSH服务使用22端口
- 远程桌面协议(RDP)使用3389端口
使用端口的注意事项:
- 安全性
- 防火墙可以基于端口号控制访问
- 未使用的端口应该关闭以减少攻击面
- 重要服务建议修改默认端口
- 端口冲突
- 同一个端口同一时间只能被一个程序使用
- 启动程序时可能遇到端口被占用的错误
- 需要更改配置或终止占用进程
- NAT穿透
- 在使用NAT时,可能需要进行端口映射
- 某些P2P应用可能需要特殊的穿透技术
NAT端口映射
NAT映射技术是将服务器的端口映射到服务器内的计算机的端口,这样就可以通过访问公网地址,来访问私网地址
相关文章:

计算机网络网络层笔记
互联网提供的两种服务 1.虚电路服务 2.数据报服务 需要记住的是现在只用第二种也就是数据报服务 网际协议IP 物理层的中断系统:转发器(hub) 链路层的中断系统:交换机 网络层的中断系统:路由器 网络层以上:网关 如上图所示,网关是用来访问其他的网段的一个接口,网关的地…...

长亭那个检测能力超强的 WAF,出免费版啦
告诉你们一个震撼人心的消息,那个检测能力超强的 WAF——长亭雷池,他推出免费社区版啦,体验地址见文末。 八年前我刚从学校毕业,在腾讯做安全研究,看到宇森在 BlackHat 上演讲的议题 《永别了,SQL 注入》 …...
rabbitMQ RabbitTemplate 发送消息
消息发送确认机制 消息发送确认机制:消息由producer发送后,确认其是否到达broker,又是否被exchange转发至对应queue的机制 该机制分为两部分:producer---broker,exchange---queue 前者的实现依靠ConfirmCallback机制…...
本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。
公众号 后端学习指南 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。 1、说说跨平台性 我们希望编写好的代码和程序,最好可以在任意平台和环境下运行,而不需要根据不同的平台,编写不同的代码。 比如,我编写的一个博客管理系统,我希望它可以在windo…...

C语言文件基础概念的理解(一)
文件基础概念 为什么有文件? 我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失 了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存…...

C++ lambda 匿名函数
看了明仕强老师的课程,C匿名函数也可以很简单 下面请看示例代码: /* lambda表达式学习,测试主函数 */#include <iostream>using namespace std;int main() {printf("Lambda test Demo:\n");//值捕获,值捕获的时候不能修…...

基于python的简单web服务器示例
安装flask flask 简介:是一个用Python编写的Web应用程序框架。 它由 Armin Ronacher 开发,他领导一个名为Pocco的国际Python爱好者团队。 Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目 新建项目 创建好的效果 pip list 检索 安装…...

02- 模块化编程-006 ADC0808数码显示对比
1、ADC0808 芯片介绍 ADC0808是一款集成的CMOS设备,包含8位模拟至数字转换器、8通道多路复用器和与微处理器兼容的控制逻辑。8位A/D转换器采用逐次逼近作为转换技术。转换器特点包括高阻抗斩波稳定比较器、256R电压分压器、模拟开关树和逐次逼近寄存器。8通道多路复…...

又发现了Mac妙控鼠标的新使用方法
我一直是不爱用妙控鼠标的,因为用起来怪怪的,但是今天发现BettreAndBetter支持妙控鼠标的修改,于是就找出了闲置了许久的妙控鼠标试了一下 优化后的妙控鼠标使用起来就没有任何不适应的地方了,三指按下模拟中键,而且还…...

Webserver(4.6)poll和epoll
目录 pollclient.cpoll.c epollepoll.cclient.c epoll的两种工作模式水平触发边沿触发 poll poll是对select的一个改进 select的缺点在于每次都需要将fd集合从用户态拷贝到内核态,开销很大。每次调用select都需要在内核遍历传递进来的所有fd,这个开销也…...
LVGL 与 QT
LVGL 与 QT LVGL 适用于嵌入式、资源受限设备,尤其是在需要高效图形渲染和小型显示屏的场景下非常合适。它具有轻量级、模块化的特点,适用于内存和计算能力有限的硬件。 Qt 是一个功能强大的跨平台框架,适合开发桌面应用以及较为复杂的嵌入式…...

如何选择最适合的项目管理软件?2024年大厂首选7款工具盘点
选择最适合的项目管理软件对于提升团队效率、优化工作流程至关重要。2024年,各大厂在项目管理上逐渐趋向于使用更加智能化、集成化和协作性的工具。以下是如何选择最适合的项目管理软件,并对2024年大厂首选工具进行盘点。 选择适合的项目管理软件的关键…...

【数据结构】选择排序——选择排序 和 堆排序
选择排序 和 堆排序 一、选择排序选择排序的思路及其代码选择排序的弊端 二、堆排序三、速度对比同时排10000个数同时排100000个数同时拍500000个数堆排 1 亿个数 一、选择排序 选择排序的思路及其代码 选择排序思路很简单 就是经过将数组遍历选择最小值 将最小值位置的数与数…...

P11229 [CSP-J 2024] 小木棍
[CSP-J 2024] 小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数,满足如下条件: 拼出这个数…...
【学习笔记】SAP ABAP——OPEN SQL(一)【SELECT语句】
SELECT语句简介 SELECT <lines> <columns> FROM <db> WHERE <condition>其中代表查询的件数,代表查询的字段名 SELECT SINGLE SELECT SINGLE <cols> FROM <db> WHERE <condition>该语句用于从数据库表中查询单条数据 …...
SQL注入(1)
1.数字型注入 例如PHP代码 “ Select username from users where id”.$_GET[id] 可以注意到,用户的输入ID字段没有任何过滤的,被直接拼接在了SQL查询语句中,由于ID没有被引号包裹ÿ…...
在AI时代,如何解决人的工作岗位被AI替代的问题?
在AI时代,工作岗位被AI替代的问题确实是一个重要的社会课题。随着技术的不断进步,许多传统的工作变得自动化,这带来了效率的提升,但也引发了就业方面的挑战。要应对这一问题,我们可以从以下几方面入手: 促进…...
Linux命令--paste
简介 paste命令用于合并文件行 参数说明 -d: 自定义间隔符,默认为tab -s:串行处理,非并行 示例 将两个文件,按照行合并 demo1.conf内容如下: name domain ip area user password roledemo2.conf内容如下 test t…...
数据结构模拟题[九]
数据结构试卷(九) 一、选择题 (30 分) 1.下列程序段的时间复杂度为( )。 for(i0 ; i<m ; i) for(j0 ; j<t ; j) c[i][j]0 ; for(i0 ; i…...

2024年10月国产数据库大事记-墨天轮
本文为墨天轮社区整理的2024年10月国产数据库大事件和重要产品发布消息。 目录 2024年10月国产数据库大事记 TOP102024年10月国产数据库大事记(时间线)产品/版本发布代表厂商大事记信创数据库上市公司2024年Q3财报 达梦数据:2024年前三季度…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...

DBLP数据库是什么?
DBLP(Digital Bibliography & Library Project)Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高,数据库文献更新速度很快,很好地反映了国际计算机科学学术研…...
区块链技术概述
区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...