【计算机网络】网络层总结

目录

知识梗概

IP地址

子网划分

IP包头格式

路由

网络层协议

ARP病毒/ARP欺骗


知识梗概

IP地址

IP相关介绍:机器之间需要交流,必须要一个地址才能找到对应的主机,IP地址是主机的一种表示,保证主机之间的正常通信;它是一种网络编码,用来确定网络中的节点;

IPv4:32位,大概42亿个IP地址,随着全球的网民不断飙升,出现了IPv6,IPv6具有128位,可以提供更多的地址。

IP地址的组成:主机部分+网络部分。主机部分和网络部分占的位数不同,分出来ABCDE五类地址:

A类:1~126开头,127开头的地址给本地的loopback(环回)接口使用了,主要用于TCP/IP协议在本机的测试使用;

B类:128~191开头

C类:192~223开头

私有地址

公有ip:在互联网中使用,不可以重复

私有ip:在局域网中使用,可以重复

NAT技术:公司内部网使用私有ip---路由器--->转换成公网ip--->访问互连网(该技术后面会重点说,这里先有个印象,想想大家平时连自己家里的网,IP地址总是192.168什么什么的开头,难道没有一样的嘛?为什么不会冲突?)

子网掩码

用来确定ip的网络地址,也就是这个IP是哪个网段的 ,不同的网段一般不能直接通信,需要通过路由器转发的。通过子网掩码和IP地址,就能算出网段是什么?

32个二进制位:对应ip地址的网络部分用1表示,对应ip地址的主机部分用0表示;

IP地址和子网掩码做逻辑与运算得到网络地址;

所以我们来尝试计算一下对应IP所处的网段地址:

那我们如何查看自己的IP地址呢?

windows:ipconfig /all--查看ip地址、物理地址

windows:nslookup www.qq.com--查看解析域名对应的ip地址

linux:ip route:查看网关和直连路由及其接口

ip add:显示接口名称,MTU,接口状态、ip地址、以太网mac地址等

Linux中还可以使用ifconfig来查看ip以及mac地址

子网划分

子网划分是干什么呢?

大网划为小网,满足不同网络对ip地址的需求,实现网络的层次性;

子网划分不再是有类地址A、B、C类,而是无类地址;

网络部分向主机部分借位,主机部分的能容纳的主机就会变少;

一个子网的有效的ip地址段:去除全0和全1的ip地址

最多借位到/30,此时有效的ip地址是两个;

出现/32,表示一个ip地址是一个网段,这是一个主机路由

IP包头格式

IP包头:前面我们说到,数据在网络层会添加一个IP头部,也就是这里的IP包头:

对IP包头格式的介绍

版本:IPV4或IPV6;

首部长度:ip包头的长度,因为长度可变,因此需要定义;

总长度:IP数据包的总长度;

标识符、标志、偏移量:保证数据包重组时不会出错;

TTL:生命周期字段,经过一个路由器值就-1,为0时,数据包被丢弃。防止一个数据包在网络中无限循环下去;

源IP地址4字节

目的IP地址4字节

可选项:其他东西

路由

路由的原理:跨越从源主机到目的主机的一个互联网络来转发数据包的过程

接下来就要介绍网络层最最最重要的机器--路由器。

路由器是什么?-->能够将数据包转发到正确的目的地,并在转发过程中选择最佳路径的设备;

将一个网段的数据转发到另一个网段,实现跨网段通信;路由器里面存储信息的东西叫路由表,路由表里有很多路由信息,一条路由信息就叫一个路由条目;

路由器工作简单来说就是:收到数据包-->根据目的ip查找路由表-->转发

简单介绍一下路由表的路由类型

提到路由器就不得不提两个重要的协议:ARP协议

1、ARP协议-->地址解析协议,得到IP地址对应的mac地址。在网络层用IP交流,但是数据包到达数据链路层时还是要得到mac地址的,这个时候要用到这个ARP协议拿到对应IP的mac地址,数据才能传输下去。

2、动态路由协议-->

动态路由协议是路由器之间用于交换、计算和维护路由表的协议。它的基本工作原理包括以下四个阶段:

邻居发现阶段:运行了相同动态路由协议的路由器之间,首先需要建立一个用于交换路由的对等点关系,这些路由器又称为邻居路由器。

路由交换阶段:发现邻居后,每个路由器会主动通过广播或单播的方式把自己的路由信息发送给邻居路由器。经过一段时间后,每个建立了对等点关系的路由器都拥有了整网的路由信息。

路由选择阶段:路由器根据收到的路由信息,结合自身的路由算法,选择出到达目标网络的最佳路径,并生成路由表。

维护路由阶段:为了感知突发的网络故障(如设备故障或线路中断等),邻居路由器之间会发送周期性的心跳包。当心跳包超时时,就会认为邻居关系失效,此时路由器需要自动维护路由表的更新,将故障路径移除。

动态路由协议的主要作用包括维护路由信息、建立路由表和决定最佳路由。它的优点在于可以自动适应网络状态的变化,并自动维护路由信息而不需要网络管理员的参与。然而,由于需要相互交换路由信息,动态路由协议会占用一定的网络带宽和系统资源,并且其安全性不如静态路由。

在动态路由协议中,目的网络是否可达取决于网络状态。动态路由协议按照寻址算法的不同,可以分为距离矢量路由协议和链路状态路由协议。距离矢量路由协议采用距离矢量算法,是相邻的路由器之间互相交换整个路由表,并进行矢量的叠加,最后学习到整个路由表。而链路状态路由协议则采用链路状态算法,路由器不是简单的从相邻的路由器学习路由,而是把路由器分成区域,收集区域内的路由信息,生成网络拓扑结构图,从而计算出最佳路径。

OSPF(开放最短路径优先)是一种典型的链路状态路由协议,被广泛应用于企业内部网络、云计算环境、校园网络和互联网接入网络等场景。它支持路由聚合和路由器冗余,提高网络的可伸缩性和可靠性,并可以通过动态地适应网络拓扑的变化,提供灵活的、可扩展的路由服务。同时,OSPF还支持ECMP(等价多路径)负载均衡,从而能够更好地利用多个路径,提高网络的负载能力。

查看路由表的命令

linux : ip route

windows : route print

路由器转发数据包的封装过程

mac地址在局域网中使用,IP地址在整个互联网中使用;

NAT技术:网络地址转换技术,将公网和私网地址进行转换,解决了IPV4地址不足的问题,所有的局域网都可以使用相同的网段IP地址,每个路由器的WAN口具有一个公网IP地址,出去的时候路由器会修改IP包里的源IP为公网IP;

想要知道到达一个指定的地址,比如说要访问www.baidu.com,要经过哪些路由器?

这就涉及到路由追踪的知识:可以使用:tracepath www.baidu.com命令。

通过最多30个跃点追踪,用一个循环,每次TTL+1,最多加到30,能探测到www.baidu.com经过了哪些路由器。

网络层协议

arp协议---->
地直接写协议,主要是在局域网中使用,将已知的IP地址解析为mac地址;

arp缓存表:

arp -n查看缓存表;

arping 192.168.1.1发送广播包得到该IP(在使用的IP)的mac地址;还可以检查一个ip是否有冲突(有相同的IP)

Icmp协议---->
网络控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

Icmp协议没有自己的IP地址,所以要借用IP协议(网际协议)

抓包工具

简单介绍一下,可以下载使用一下,上手比较简单:

ARP病毒/ARP欺骗

相关思维导图可分享!关注后台私

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

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

相关文章

1083 是否存在相等的差

solution 输出的是重复的差值&#xff0c;而非全部差值 #include<iostream> #include<algorithm> using namespace std; const int maxn 1e4 10; int flag[maxn] {0}; int main(){int n, x;scanf("%d", &n);for(int i 1; i < n; i){scanf(&…

STM32 串口IDLE接收空闲中断+DMA

参考 http://t.csdnimg.cn/fAV38 1.基础知识 STM32 IDLE 接收空闲中断 功能&#xff1a; 在使用串口接受字符串时&#xff0c;可以使用空闲中断&#xff08;IDLEIE置1&#xff0c;即可使能空闲中断&#xff09;&#xff0c;这样在接收完一个字符串&#xff0c;进入空闲状态时&…

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法&#xff0c;它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制&#xff0c;比如日志必须是连续的&#xff0c;只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上&#xff0c;Raft算法相对…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.5--I.MX6U启动方式

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

想要吃瓜,就要学会,在不必要的冲突发生时,沉默就是一种智慧——早读(逆天打工人爬取热门微信文章解读)

练习一下怼人的本事 引言Python 代码第一篇 洞见 养生的尽头&#xff0c;是养格局第二篇 人民日报 来啦 早班新闻车要闻社会 政策结尾 沉默是智者的选择 在不必要的冲突面前 选择沉默是一种智慧 引言 昨天下午睡醒 看到群里有些言论 遂 battle了一波 给大家吃吃瓜 到中午 车…

Codeforces Round 941 (Div. 2) D. Missing Subsequence Sum

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…

网络安全之弱口令与命令爆破(中篇)(技术进阶)

目录 一&#xff0c;什么是弱口令&#xff1f; 二&#xff0c;为什么会产生弱口令呢&#xff1f; 三&#xff0c;字典的生成 四&#xff0c;使用Burpsuite工具验证码爆破 总结 笔记改错 一&#xff0c;什么是弱口令&#xff1f; 弱口令就是容易被人们所能猜到的密码呗&a…

MyBatis中的#{} 和 ${}

目录 #{} 和 ${} 预编译 SQL 和 即时 SQL SQL注入 ${}的使用 #{} 和 ${}的使用 MyBatis参数赋值有两种方式&#xff0c;在上一篇文章中&#xff0c;一直使用 #{} 进行赋值&#xff0c;接下来&#xff0c;我们来使用 ${} 进行赋值&#xff0c;并观察 #{} 和 ${} 的区别 使用…

2024年外贸企业邮箱最新排名

外贸企业在与客户沟通中的重要工具就是企业邮箱&#xff0c;那么外贸企业邮箱哪个比较好呢&#xff1f;本文聚焦2024年外贸企业邮箱市场的最新动态&#xff0c;通过对五个领先品牌的深度对比&#xff0c;旨在为企业决策者提供详尽参考。首当其冲的是备受瞩目的Zoho Mail企业邮箱…

JMeter性能压测脚本录制

第一步&#xff1a;电脑打开控制面板设置代理服务器 第二步&#xff1a;jmeter的测试计划添加一个HTTP&#xff08;S&#xff09;脚本记录器 在脚本记录器里配置好信息&#xff0c;然后保存为脚本文件&#xff08;.*表示限定&#xff09; 此方框内容为项目地址&#xff08;可改…

字符串函数与字符函数运用(1)

字符串与字符函数介绍1 前言一、字符分类函数字符函数练习 二、字符函数转换1.引入库2.代码改进 字符串函数strlen函数strcpy 结尾 前言 字符串函数大概有以下这几种 strcpy、strcat 、strcmp、strncpy、strncat、strncmp、strstr、strtok、strerror 这些函数可以很好的解决你…

DRF中的请求入口分析及request对象分析

DRF中的请求入口分析及request对象分析 django restframework框架是在django的基础上又给我们提供了很多方便的功能&#xff0c;让我们可以更便捷基于django开发restful API 1 drf项目 pip install django pip install djangorestframework1.1 核心配置 INSTALLED_APPS [d…

神经网络中常见的激活函数:理解与实践

神经网络中常见的激活函数&#xff1a;理解与实践 在神经网络中&#xff0c;激活函数是一个非常重要的组成部分&#xff0c;它为神经元引入了非线性特性&#xff0c;使得神经网络可以拟合各种复杂的函数关系。本文将介绍9种常见的激活函数&#xff0c;包括它们的概述、公式以及…

《百图解码支付系统设计与实现》电子书_V20240503

《百图解码支付系统设计与实现》这本书的底稿已经完成一半&#xff0c;从2023.12.24发布专栏第一篇文章“跟着图走&#xff0c;学支付&#xff1a;在线支付系统设计的图解教程”算起&#xff0c;陆续写了30来篇支付相关的干货。 本书是我的专栏《百图解码支付系统设计与实现》…

基于Spring Boot的校园闲置物品交易网站设计与实现

基于Spring Boot的校园闲置物品交易网站设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看…

springboot项目组合定时器schedule注解实现定时任务

springboot项目组合定时器schedule注解实现定时任务&#xff01; 创建好springboot项目后&#xff0c;需要在启动类上增加注解开启定时器任务 下图所示&#xff1a; 增加这个注解&#xff0c;启动项目&#xff0c; package com.example.scheduledemo.util;import org.springf…

C++中的异常

目录 1.C语言传统的处理错误的方式 2. C异常概念 3. 异常的使用 3.1 异常的抛出和捕获 3.2 异常的重新抛出 3.3异常安全 3.4 异常规范 4.自定义异常体系 5.C标准库的异常体系 6.异常的优缺点 7.func&#xff08;&#xff09; throw();的方式规范化 1.C语言传统的处理…

C语言字符串(0基础到深入剖析)---字符串系列合集(函数+指针+数组)

前言 本篇旨在帮助不了解字符串或者逻辑梳理不够透彻的伙伴们理出一条脉络。选择能看懂的部分即可&#xff0c;建议收藏&#xff0c;后期学习完C语言方便回顾。 适用范围&#xff1a;0基础C语言&#xff08;刚学字符串&#xff09;- 学过函数 - 学过指针 ---大致了解了数据内…

Centos7 安装Git、使用

Centos7 安装Git 一、安装步骤1.1 查看版本1.2 卸载1.3 安装 二、创建仓库2.1 新增仓库2.2 新增配置项 三、管理文件3.1 文件创建3.2 文件修改、add、commit3.3 tree结构探索 四、分支4.1 创建分支&#xff1a;4.2 查看分支4.3 切换分支4.4 删除分支4.5 合并冲突 一、安装步骤 …

FusionMamba: Efficient Image Fusion with State Space Model【文献阅读】

论文&#xff1a;FusionMamba&#xff1a;一种基于SSM的有效图像融合方法 arXiv&#xff1a;https://arxiv.org/abs/2404.07932 作者单位&#xff1a;中国科学院自动化研究所、模式识别重点实验室、电子科技大学 推荐阅读&#xff1a;深入浅出一文图解Vision Mamba Abstract 图…
最新文章