网络基础-数据包
作者:李柱明 发布时间:2022-11-24 21:48:10
前言
本笔记通过记录 数据包 在网络中的生命履历来引出一些网络基础知识,如:
MAC、ARP、IP、子网掩码、网关、集线器、交换机、路由器这些概念都是在链路层和网络层。
(这些都不做严谨的说明,只是为了更好的了解而表达的个人描述)
数据包简要生命周期
浏览本小节的时候遇到疑问点可以可以跳到理解区 check 一下有没有答案。
数据包:
简单路径:源主机 -> 目标主机。可能路径:源主机 -> 交换机A -> 路由器A -> 路由器B -> 交换机B -> 目标主机。
参考图:
源主机视角:
需要知道 本地IP 和 目标IP。
通过子网掩码判断是否在同一个子网中。
同一子网,则直接获取目标主机的MAC地址,发送出去。
不同子网,获取默认网关的 MAC,把数据包发给默认网关设备。
交换机视角:
收到的数据包必须有目标 MAC 地址。
通过 MAC 地址表查映射关系。
查到了就按照映射关系从我的指定端口发出去。
查不到就所有端口都发出去。
路由器视角:
收到的数据包必须有目标 IP 地址。
通过路由表查映射关系。
查到了就按照映射关系从我的指定端口发出去(不在任何一个子网范围,走其路由器的默认网关也是查到了)。
查不到则返回一个路由不可达的数据包。
三张表:
arp 缓存表 是不断通过 arp 协议的请求逐步完善起来的。
交换机中的 MAC 地址表,用于映射 MAC 地址和它的端口。
路由器中的 路由表 用于映射 IP 地址(段)和它的端口。
理解区
数据包
得先了解 TCP/IP 网络七层级及各级的作用和数据封装。
应用层
表示层
会话层
传输层
网络层(本节需要了解)
数据链路层(本节需要了解)
物理层
应用层的数据一层一层通过包装下来,通过物理层的物理设备发出去,到最终目的主机后,又像扒洋葱一样,一层一层扒开,最终到达应用层后的数据和源主机应用层的数据一样。如图:
名词说明:
IP:主机地址。属于网络层地址。
一般用于源主机和最终目标主机中。
MAC:设备地址。属于数据链路层地址。
一般用于当前设备和下一设备中(不一定是最终设备)。
子网掩码:用于判断 IP 处于哪个网段。
一般用于比较两个 IP 是否处于同一个子网中。
默认网关:
若发送的数据不在本子网,就丢给默认网关处理。
一般用于与外网通信。
默认网关IP一般都设为路由器IP,因为一般都是通过路由器与外网通信。
ARP:
是一种地址解析协议。根据IP地址来获取MAC地址的。
源主机携带IP数据广播给通过支持ARP设备连接起来的多主机,若目标IP对于,则该主机返回携带MAC数据给源主机。
集线器:
字面理解即可,如何一台主机数据发到集线器,都广播到所有出口。
作用在物理层(第一层),不对MAC操作。
交换机:
比集线器高级,不再是广播到所有出口,而是只转发到目标MAC的出口。
作用在数据链路层(第二层),参考MAC,只转发到目标MAC的出口。
工作在局域网内。
路由器:
比交换机高级。
具有路由功能。
作用在网络层(第三层),参考IP。
连接局域网和外网。
MAC
MAC:设备地址。属于数据链路层地址。
一般用于当前设备和下一设备中(不一定是最终设备)。
IP
IP:主机地址。属于网络层地址。
一般用于源主机和最终目标主机中。
子网
子网掩码 & 判断是否在同一子网:
IP 与 子网掩码 做 按位与 ,就可以得出该 IP 的子网网段。
如:
子网掩码:255.255.255.0
IP-1: 192.168.1.2 & 255.255.255.0 = 192.168.1.0
IP-2: 192.168.1.123 & 255.255.255.0 = 192.168.1.0
IP-3: 192.168.2.123 & 255.255.255.0 = 192.168.2.0
因为 192.168.1.0 = 192.168.1.0,所以IP-1与IP-2处于同一子网。
因为 192.168.1.0 != 192.168.2.0,所以IP-1与IP-3不在同一子网。
在发数据包时,子网的作用:
若源IP和目标IP在同一子网:直接获取目标IP主机的MAC,然后把数据包丢出去。
若源IP和目标IP不在同一子网:获取默认网关的 MAC ,然后把数据包丢给默认网关那边。
ARP
ARP:
是一种地址解析协议。根据IP地址来获取MAC地址的。
源主机携带IP数据广播给通过支持ARP设备连接起来的多主机,若目标IP对于,则该主机返回携带MAC数据给源主机。如图:
集线器
字面理解即可,如何一台主机数据发到集线器,都广播到所有出口。
作用在物理层(第一层),不对MAC操作。
如图:
交换机
比集线器高级,不再是广播到所有出口,而是只转发到目标MAC的出口。
作用在数据链路层(第二层),参考MAC,只转发到目标MAC的出口。
工作在局域网内。
交换机连接:
左边交换机的地址表:
MAC 地址 | 端口 |
---|---|
bb-bb-bb-bb-bb-bb | 1 |
cc-cc-cc-cc-cc-cc | 3 |
aa-aa-aa-aa-aa-aa | 4 |
dd-dd-dd-dd-dd-dd | 5 |
ee-ee-ee-ee-ee-ee | 6 |
ff-ff-ff-ff-ff-ff | 6 |
gg-gg-gg-gg-gg-gg | 6 |
hh-hh-hh-hh-hh-hh | 6 |
路由器
作用在网络层(第三层),参考IP。
路由器的每一个端口,都有独立的 MAC 地址。
连接局域网和外网。
转发时,根据路由表转发,实际出口是根据MAC来发送到下一个设备。下一个设备判断数据包目标IP是否是本设备,若不是,就又找出下一个MAC地址把数据包丢出去。
来源:https://www.cnblogs.com/lizhuming/p/15169784.html


猜你喜欢
- 贪食蛇是一个非常经典的游戏, 在游戏中, 玩家操控一条细长的直线(俗称蛇或虫), 它会不停前进, 玩家只能操控蛇的头部朝向(上下左右), 一
- 最近用了pycharm,感觉还不错,就是pandas中Series、DataFrame的plot()方法不显示图片就给我结束了,但是我在ip
- 一、同一台电脑需要安装2个MYSQL,以mysql-5.7.39和mysql-8.0.30为例; 1.下载:https://dow
- 1、视图函数之前的文章说过,在 Flask 中路由是请求的 url 与处理函数之间的映射,使用app.route装饰器将处理函数和 url
- Python中打开文本使用的是with语句,比如打开一个文件并读取每一行with open(filename) as fp: f
- 认为整理的还比较详细的,亲们,就快点收藏起来吧!PHP系统类函数assert函数:检查assertion声明是否错误extension_lo
- 安装requests库之前我们需要先看一下电脑上有没有pip,可以在cmd中输入pip list查看,若出现以下内容则电脑已安装pip,否则
- 前言在爬虫系列文章 优雅的HTTP库requests 中介绍了 requests 的使用方式,这一次我们用 requests 构建一个知乎
- 需求:查询表dbo.Message,每页10条,查询第2页1:TOP()SELECT TOP(20) * FROM dbo.Message
- 本文实例讲述了Python实现运行其他程序的四种方式。分享给大家供大家参考,具体如下:在Python中,可以方便地使用os模块来运行其他脚本
- 数字序号① ①② ②③ &
- 由于 MySQL 5.7 版本的 root 密码是首次启动时随机生成的,并且还要求必须修改后才能使用,所以有了本文:使用 shell 脚本完
- 首先想到的就是contains,contains用法如下:select * from students where contains(add
- 这篇文章主要介绍了python导入不同目录下的自定义模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 给定一个文件夹,使用Python检查给定文件夹下有无文件重复,若存在重复则删除主要涉及的知识点有:os模块综合应用glob模块综合应用利用f
- 本文实例为大家分享了JavaScript实现年历效果的具体代码,供大家参考,具体内容如下<!DOCTYPE html><h
- 远程连接oracle只用PLSQLDeveloper客户端,不配置tnsnames.ora文件在PL/SQL中填写:1.UserName:用
- 如下所示:import jsonresult = response.read()result.decode('utf-8')
- 本文为大家分享了windows下pycharm安装、创建文件、配置默认模板的具体步骤,供大家参考,具体内容如下步骤: 下包 —->安装
- 废话不多说,直接上代码吧!/** * 函数防抖 (只执行最后一次点击) * @param fn * @param delay * @retu