计算机网络基础三

news2024/11/26 18:52:46
课程目标
        理解路由表的作用
        能够读懂路由表信息
        能够使用图形抓包工具 wireshark 进行数据包的抓取 ,如( TCP/IP 的三次握手四次断开)

一、路由表

思考:
什么是交换,什么是路由,什么是路由表?
        1. 交换是指同网络访问(两台机器连在同一个交换机上,配置同网段的不同ip就可以直接迅)
        2. 路由就是跨网络访问(路径选择)
        3. 路由表是记录路由信息的表,在Linux中⾸先是⼀张可见的,可更改的表,
        它的作⽤就是当数据包发到Linux的时候 ,系统(或者说内核)就根据这张表中定义好的信息
        来决定这个数据包接下来该怎么⾛

1. 查看路由表信息

route 命令用来查看和设置路由表信息
[root @server ~ ] # route -n         //查看路由表信息
Kernel         IP         routing         table
Destination         Gateway         Genmask          Flags    Metric    Ref         Use Iface
192.168.0.0         0.0.0.0         255.255.255.0         U         0         0            0 eth1
10.1.1.0               0.0.0.0         255.255.255.0         U         0         0            0 eth0
0.0.0.0                10.1.1.254         0.0.0.0                 UG       0         0            0 eth0
目标网络                 网关              子网掩码        路由标志                           网卡
                                                                               Up : 启动状态
                                                                               UG : 该网关为路由器
113.28.10.34

 2. 读懂路由信息

讨论 1
按上面的路由表来看,如果我 ping 一个公网 IP (如 ping 14.200.151.38 ) ,应该怎么走 ?
1 ) 先看目标 ip 是否为本地 ip ,如果是,则直接访问本地 ; 如果不是,则找路由表里是否有你访问的网段 .
2 ) 如果路由表有则从这个路由条目后面指定的网卡出去;如果路由表里没有你访问的网段,则会找默认路由
(也就是网关)。
3 ) 如果网关也没有的话,则会报错网络不可达。
connect : Network is unreachable
讨论 2
按上面的路由表来看,如果我 ping 一个局域网 IP 10.1.1.10 ,会怎么走 ?
ping 10.1.1.10 不会走网关,而是走本地路由从 eth0 网卡出去(因为路由表里有 10.1.1.0 / 24 的路由)。
讨论 3
如何加网关和删除网关,加网关有什么要求 ?
route add default gw x.x.x.x                  临时加网关,马上生效
route del default gw x.x.x.x                   临时删网关,马上生效
永久增加网关:
vim           / etc / sysconfig / network-scripts / ifcfg-eth0
GATEWAY = x.x.x.x
或者
vim          / etc / rc.local         操作系统开机最后读取的一个文件
..
route add default gw xxxxx
注意事项:
1. 加网关只能加你已经有的路由网段里的一个 IP 才行(此 IP 不一定存在)
2. 加网关可以不用指定子网掩码(因为是已有的一个网段的 ip ,所以掩码已经确认了 )
讨论 4
一个 linux 服务器上能有几个有效网关 ?
准确来说:一个路由表上可以加多个网关,但只有一个生效。
讨论 5
我一台 linux 上如果有双物理网卡,请问可不可以两个网卡配置同网段的不同 IP ?
eth0 10.1.1.1 / 24
eth1 10.1.1.2 / 24
如果两个网卡同网段,则会有下面两条路由
10.1.1.0         0.0.0.0         255.255.255.0          U          0         0         0 eth0
10.1.1.0         0.0.0.0         255.255.255.0          U          0         0         0 eth1
结果:
它会实现从两张网卡进来的包,却从一张网卡出去,问题就产生了。假设 eth0 网卡有问题时,路由表里匹配到第一条后,依 然会走 eth0 网卡,而不会走 eth1
也有解决方法(比如多路由表或者双网卡绑定),这里不涉及。

二、路由选择实验

1. route命令介绍

route - n         查看路由 , 显示 ip, 不解析
route del default gw 10.1.1.254          删除默认路由
route add default gw 192.168.1.110          添加一个默认网关,把所有不知道的网络交给网关来转发
route add - net 192.168.2.0 / 24 dev eth0          对一个网络添加一个新的路由(另一个网段)
route del - net 192.168.2.0 /

 2. 实验要求

前提条件:三台虚拟主机的网络模式都是仅主机模式!
环境准备:
node1 : 10.1.1.1 / 24
作为网关服务器,开启路由转发功能 / proc / sys / net / ipv4 / ip_forward
node2 : 192.168.0.254 / 24
node3 : 172.16.0.254 / 24
要求:
实现不同网络 ( 172.16.0.0 / 24 192.168.0.0 / 24 ) 之间的互通,使用第三方主机 node1 作为路由进行转发

3. 具体步骤

思路:
1. 中间人node1,必须开启路由转发功能;
2. 中间人node1即要有到达A网络,又能到达C网络的路
3. node2主机(A网络)必须设置中间人node1作为自己的网关
4. node3主机(C网络)必须设置中间人node1作为自己的网关

步骤:
1. node1 服务器(中间人)完成以下任务
1 )开启路由转发功能
临时开启:
[root @server ~ ] # cat /proc/sys/net/ipv4/ip_forward
0
[root @server ~ ] # echo 1 > /proc/sys/net/ipv4/ip_forward
[root @server ~ ] # cat /proc/sys/net/ipv4/ip_forward
1
永久开启:
[root @server ~ ] # vim /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 1
2 )分别添加到 node2 node3 两台主机所在的网络
[root @node1 ~ ] # route add -net 192.168.0.0/24 dev eth0
[root @node1 ~ ] # route add -net 172.16.0.0/24 dev eth0
[root @node1 ~ ] # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
2. 分别配置 node2 node3 IP 和网关
[root @node2 ~ ] # route add -net 10.1.1.0/24 dev eth0
[root @node2 ~ ] # route add default gw 10.1.1.1
[root @node3 ~ ] # route add -net 10.1.1.0/24 dev eth0
[root @node3 ~ ] # route add default gw 10.1.1.1
3. 测试验证
1 )中间主机分别 ping node2 node3
2 node2 node3 相互 ping

4. 实战组建局域网

思科模拟器交换机配置相关命令:

进入到使能模式
Switch > ?
Switch > enable
进入配置终端
Switch #?
Switch #configure terminal
创建 vlan
Switch (config) #vlan 10
删除 vlan
Switch (config) #no vlan 10
进入指定的配置接口
Switch (config) #interface FastEthernet0/1
或者
Switch (config) #int fa0/1
fa0 / 1 接口加入到 vlan
Switch (config-if) #switchport access vlan 10
vlan 中删除接口
Switch (config-if) #no switchport access vlan 10
 4.1 交换机vlan划分

4.2 路由器连接多个网络

三、抓包工具

1. wireshark工具

安装 wireshark 工具
# yum -y install wireshark*

telnet 登录包:
telnet: 远程管理服务 tcp/23
server 10.1.1.5 telnet-server
client 10.1.1.1 telnet 使用: telnet 10.1.1.1
Centos6 .5 系统:
1. 安装软件包
yum - y install telnet-server telnet
2. 启动 telnet 服务
vim / etc / xinetd.d / telnet
service telnet
{
                disable = yes yes 变为 no
                flags = REUSE
                socket_type = stream
                wait = no
                user = root
                server = / usr / sbin / in .telnetd
                log_on_failure += USERID
}
启动服务:
service xinetd start
检查 telnet 服务是否启动:
[root @node1 Desktop] # netstat -nltp|grep 23
tcp         0         0 ::: 23                  :::*                  LISTEN
5546 / xinetd
Centos7 .5 系统:
1. 安装软件包
yum - y install telnet-server
2. 启动服务
[root @centos7 ~ ] # systemctl start telnet.socket
[root @centos7 ~ ] # netstat -nltp|grep :23
tcp6          0         0 ::: 23                  :::*          LISTEN 1 / systemd
3. 测试验证        

2. tcpdump工具  

查看 arp 缓存 (同一网段主机的 MAC 地址)
[root @node1 Desktop] # arp -n
Address         HWtype         HWaddress                 Flags Mask         Iface
10.1.1.254         ether          00 : 50 : 56 : c0 : 00 : 01          C                         eth0
删除目标主机的 MAC 缓存
[root @node1 Desktop] # arp -d 10.1.1.254
[root @node1 Desktop] # arp -n
Address                 HWtype HWaddress         Flags Mask                 Iface
10.1.1.254                          (incomplete)                                               eth0
查看主机 10.1.1.1 收到的和发送的数据包
[root @node1 Desktop] # tcpdump -i eth0 -nn host 10.1.1.1
tcpdump : verbose output suppressed, use - v or - vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22 : 33 : 25.148389 ARP, Request who-has 10.1.1.254 tell 10.1.1.1 , length 28
22 : 33 : 25.148896 ARP, Reply 10.1.1.254 is-at 00 : 50 : 56 : c0 : 00 : 01 , length 46
22 : 33 : 30.714605 IP 10.1.1.254 > 10.1.1.1 : ICMP echo request, id 1 , seq 237 , length 40
22 : 33 : 30.714619 IP 10.1.1.1 > 10.1.1.254 : ICMP echo reply, id 1 , seq 237 , length 40
- i 指定网络接口,对于多个网络接口有用
- n 显示 IP 地址,不查主机名。当 DNS 不起作用时常用到这个参数
- nn 不显示协议和端口名。即显示 IP 地址和端口
- w 将抓的包保存到指定的文件里方便后续分析
其他用法:
man   tcpdump
TCP  Packets
The general format of a tcp protocol line is :
                                src > dst : flags data-seqno ack window urgent options
                        Src and dst are the source and destination IP addresses and ports. Flags are some combination of S
                        (SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR) or E (ECN-Echo), or a single . (no flags).
1. 获取主机 10.1.1.1 接收或发出的 telnet
#tcpdump tcp port 23 and host 10.1.1.1
2. 对本机的 udp 协议的 123 端口进行监听( 123 ntp 服务端口)
# tcpdump udp port 123
3. 只对 hostname 的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。
下面的命令可以查看主机 hostname 发送的所有数据:
#tcpdump -i eth0 src host hostname
#tcpdump -i eth0 src host 10.1.1.254
4. 下面的命令可以查看所有送到主机 hostname 的数据包:
#tcpdump -i eth0 dst host hostname
#tcpdump -i eth0 dst host 10.1.1.1
5. 监视通过指定网关的数据包:
#tcpdump -i eth0 gateway Gatewayname
#tcpdump -i eth0 gateway 10.1.1.254
6. 其他
只需要列出送到 80 端口的数据包,用 dst port
#tcpdump –i eth0 host hostname and dst port 80 // 目的端口是 80
只需要看到返回 80 端口的数据包,用 src port
#tcpdump –i eth0 host hostname and src port 80 // 源端口是 80, 一般是提供 http 的服务的主机
如果条件很多的话要在条件之前加 and or not
#tcpdump -i eth0 host ! 210.161.223.70 and ! 210.161.223.71 and dst port 80

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

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

相关文章

在vscode中运行c++代码,windows 11系统

缘起 工作中用mac电脑,装了vscode和c,在家里的windows电脑上,也想运行vscode,这时候就遇到问题了。现在将问题解决方案记录下来,以供参考。 解决方案 开始比较懒,直接百度一下,找了几篇文章&…

高阶数据结构学习 —— 图(1)

文章目录 1、并查集2、了解图3、邻接矩阵4、压缩路径5、基本概念6、邻接表 1、并查集 并查集是一个森林,是由多棵树组成的。这相当于整套数据,分成多个集合。查找有交集的集合们,会把它们合并起来,所以叫并查集。 一开始拿到的是…

idea上怎么将新创建项目转为maven项目

场景 在刚创建的一个项目中,往往没有被识别为maven项目,怎么做呢? 方法 然后选maven,这样这个项目就变成了maven项目

计数排序——不用比较的排序

原理&#xff1a; 代码&#xff1a; void CountSort(int* a, int n) {int max a[0];int min a[0];for (int i 0; i < n; i){if (a[i] > max){max a[i];}if (a[i] < min){min a[i];}}int grang max - min 1;int* count (int*)malloc(sizeof(int) * grang);me…

【SpringBoot】Docker部署

docker部署是主流的部署方式&#xff0c;极大的方便了开发部署环境&#xff0c;保持了环境的统一&#xff0c;也是实现自动化部署的前提。 1 项目的目录结构 package: 点击打包&#xff0c;生成 xxx-SNAPSHOT.jar target目录: 打包生成目录&#xff0c;生成的jar存放位置Docke…

Leetcode—2558.从数量最多的堆取走礼物【简单】

2023每日刷题&#xff08;十二&#xff09; Leetcode—2558.从数量最多的堆取走礼物 大顶堆实现代码 void swap(int *a, int *b) {int tmp *a;*a *b;*b tmp; }void downAdjustHeap(int *heap, int low, int high) {int i low;int j 2 * i 1;while(j < high) {if(j …

项目部署之OpenResty

项目部署之OpenResty 1. OpenResty介绍 OpenResty 是一个基于Nginx的高性能Web平台&#xff0c;用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。具备下列特点&#xff1a; 具备Nginx的完整功能基于Lua语言进行扩展&#xff0c;集成了大量精良…

单调队列和单调栈

单调队列 这种涉及到维护子数组的最大/小值的操作&#xff0c;一般都会是 1 剑指 Offer 59 - II. 队列的最大值 2 239. 滑动窗口最大值 3 1438. 绝对差不超过限制的最长连续子数组 单调栈

【算法】Floyd算法多源汇最短路

最短路问题基础问题到这里就结束了&#xff0c;附上最短路问题知识结构图。 题目 给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。 再给定 k 个询问&#xff0c;每个询问包含两个整数 x 和 y&#xff0c;表示查询从点 x 到点…

Python 模块:创建、导入和使用

什么是模块&#xff1f; 将模块视为代码库。模块是一个包含一组函数的文件&#xff0c;您想要在应用程序中包含这些函数。 创建一个模块 要创建一个模块&#xff0c;只需将要包含在其中的代码保存在扩展名为 .py 的文件中&#xff1a; 示例&#xff1a;将以下代码保存在名为…

YOLOv5算法 | 万字长文带你深度解析yolov5s.yaml配置文件

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。配置文件yolov5s.yaml在YOLOv5模型训练过程中发挥着至关重要的作用&#xff0c;属于初学者必知必会的文件&#xff01;在YOLOv5-6.0版本源码中&#xff0c;配置了5种不同大小的网络模型&#xff0c;分别是YOLOv5n、YOLOv5s…

D-Nerf:用于动态场景表示的神经辐射场

Pumarola A, Corona E, Pons-Moll G, et al. D-nerf: Neural radiance fields for dynamic scenes[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 10318-10327. D-Nerf 较 NeRF 的改进 1 就是能够建模移动或变形的物体&#…

2021年上半年上午易错题(软件设计师考试)

1.在CPU中&#xff0c;用&#xff08;A&#xff09;给出将要执行的下一条指令在内存中的地址。 A.程序计数器 B.指令寄存器 C.主存地址寄存器 D.状态条件寄存器 3.采用DMA方式传送数据时&#xff0c;每传送一个数据都需要占用一个&#xff08;C&#xff09;。 A.指令周期…

最新Microsoft Edge浏览器如何使用圆角

引入 最近我看了edge官方的文档&#xff0c;里面宣传了edge的最新UI设计&#xff0c;也就是圆角&#xff0c;但是我发现我的浏览器在升级至最新版本之后&#xff0c;却没有圆角 网上有很多人说靠实验性功能即可解锁&#xff0c;但是指令我都试过了&#xff0c;每次都是搜索无结…

生鲜冻货经营小程序商城的效果如何

海鲜肉类也是人们的主要餐食之一&#xff0c;现产和冻货都有很高的市场需求度&#xff0c;由于受众广&#xff0c;因此对商家来说&#xff0c;除了本地生意外&#xff0c;外地生意才有更大的拓展空间。 但信息发展下&#xff0c;仅依靠电话、微信私信显然难以完善&#xff0c;…

SpringBoot集成与应用Neo4j

文章目录 前言集成使用定义实体配置定义Repository查询方法方式一&#xff1a;Query方式二&#xff1a;Cypher语法构建器方式三&#xff1a;Example条件构建器方式四&#xff1a;DSL语法 自定义方法自定义接口继承自定义接口实现自定义接口neo4jTemplateNeo4jClient 自定义抽象…

服务器资源检查

1.检查CPU情况 # 型号及核数 cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看物理cpu个数 cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l # 查看逻辑cpu个数 cat /proc/cpuinfo | grep "processor" | wc -l cat /proc/…

python随手小练9(南农作业题)

题目1&#xff1a; 用python提供的相关函数计算数学表达式的值 具体操作&#xff1a; a float(input("x:")) #input()输入&#xff08;默认为字符串str形式&#xff09; #float()将()内类型转换为浮点型&#xff08;即有小数点&#xff09; b a (3*a)/4 #…

《你不知道的Javascript系列》——不可变性immutable

基础 JavaScript中存在以下数据类型&#xff1a; 原生&#xff08;基本&#xff09;类型 —— Boolean, Number, String非原始&#xff08;引用&#xff09;类型或对象 —— Object, Array, Function特殊 —— Null, Undefined 原生数据类型默认是不可变的&#xff0c;对于常…

好消息FL Studio21.2中文版本发布了!新功能详细介绍

为庆祝 FL Studio 21.2 的发布&#xff0c;所有 FL Studio 用户都可免费使用一个月的 FL Cloud。只需打开 FL Studio 21.2&#xff0c;点击浏览器中的 "声音 "标签即可开始使用。FL Cloud 提供完全集成的采样库、人工智能母带处理和由 DistroKid 支持的数字发行&…