五元组及不同组网方式的传输流程

 

目录

 

一、五元组

二、DNS协议和ARP协议

(一)NDS协议(应用层协议):域名转IP

(二)ARP协议:IP转MAC

三、网络传输流程

  (一)网络互联方式

(二)局域网交换机组网方式

(三)局域网交换机+路由器组网的方式


一、五元组

五元组:源IP,源端口号,目的IP,目的端口号,协议号

  • IP:标识主机,给人用的

          源IP:发送数据的主机

          目的IP:接收数据的主机

  • 端口号:表示某个主机进程

        源端口:标识发送数据的进程

        目的端口:标识接收数据的进程

  • 协议号:进程要封装、解析的数据报的数据格式

      

二、DNS协议和ARP协议

(一)NDS协议(应用层协议):域名转IP

查找方式:树形结构从下往上查找(查找缓存或者域名服务器)区域名服务器--》根域名服务器,若是跟域名服务器中未找到,则找不到

【注1】主机、路由器上都存在DNS缓存

【注2】特殊的IP和域名:本机IP为127.0.0.1,本地域名:localhost

(二)ARP协议:IP转MAC

ARP 协议的作用
 
建立了主机 IP 地址 和 MAC 地址 的映射关系
 
主机里存在ARP缓存表---映射IP为MAC(Map结构保存)
 
【注】 ARP 不是一个单纯的数据链路层的协议 , 而是一个介于数据链路层和网
络层之间的协议
 
ARP协议:IP转MAC
RARP协议:MAC转IP

三、网络传输流程

  (一)网络互联方式

    多台主机通过集线器连接在一起, 完成数据共享

   集线器:网络数据传输时,直接转发(不进行封装和分用)到其他所有端口

 1.  ARP缓存表找到的情况

  • 主机1查找本机ARP缓存表,根据ARP协议,找到MAC
  • 数据报由主机1发送到集线器(数据报中源MAC---主机1,目的MAC---主机3,真实的数据报
  • 集线器转发数据到除主机1的其他所有相连主机(主机2、3)
  • (1)主机2接收:数据报中,目的MAC不是我,直接丢弃;

       (2)主机3接收:数据报中,目的MAC是我(代表我要接收数据,要不要进行处理,还要看目的IP),接收,目的IP是我,交给对应端口进程处理

 2.  ARP缓存表找不到的情况

  • 主机1查找本机ARP缓存表,发现找不到
  • 主机1发送广播数据报非真实数据报,只是要求对应主机返回MAC地址)FF:FF:FF:FF:FF:FF 表示广播     此时源MAC:主机1       目的MAC:广播地址
  • 集线器转发到主机2、3
  • 主机2接收:要求IP不是我,丢弃;主机3接收,要求IP是我,返会MAC
  • 主机1接收到主机3返回的数据(IP,MAC)后,更新自己的ARP缓存表
  • 主机1发送真实的数据到主机3      源MAC/源IP:主机1的MAC/IP     目的MAC/IP:主机3的MAC/IP

使用集线器的缺陷:网络冲突,这样构成的网络区域叫做冲突与/碰撞域

     例如:房间里面多个人说话,就听不清楚了

     数据报有目的MAC,集线器还转发到其他所有端口

(二)局域网交换机组网方式

交换机作用:有一个MAC地址转换表--》保存连接的主机MAC和端口的映射关系

                     知道目的MAC是谁后,可以直接转发到对应端口

  • 主机1查找本机ARP缓存表,如果找不到,发送广播数据报,让IP为主机3的主机告诉我其MAC
  • 交换机转发到其他所有端口(广播)
  • 主机2丢弃,主机3返回自己的MAC
  • 交换机知道主机3的MAC,主机1知道主机3的MAC(交换机和主机1均更新ARP缓存表)
  • 主机1发送真实的数据给交换机
  • 交换机查找自己的MAC地址转换表,通过MAC找端口,发送到对应端口
  • 主机3接收:目的MAC是我,目的IP也是我

     例如:先问某个人的电话,再给他打电话,不影响其他人

(三)局域网交换机+路由器组网的方式

路由器的类型:

流程:

  • 通过目的IP+子网掩码,计算出目的主机是否和本地主机在同一个网段
  • 如果是,和之前交换机组局域网流程一致
  • 如果不是,表示主机1处理不了,要发送给网关转发
  • 数据报发送给网关设备   

               源IP:192.168.1.x 

               目的IP:192.168.1.y

               源MAC:主机1的MACA

               目的MAC: 设置为路由器网卡1的MAC

                    --》如何知道?   

                      主机1在本机ARP缓存表中,通过网关IP找MAC

  • 路由器接收到数据报,分用:物理层到网络层,所以可以获取到目的IP
  • 路由器查找自己的ARP缓存表(IP找MAC) 
  • 找不到,路由器发广播,主机2,你在哪,告诉我你的MAC
  • 主机2返回自己的MAC到路由器(路由器更新自己的ARP缓存表),路由器有了主机2的MAC,直接发送到主机2
  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Python中,可以使用scapy模块来读取pcap文件中的数据包,并提取其中的五元组信息。具体步骤如下: 1. 导入scapy模块: ```python from scapy.all import * ``` 2. 使用rdpcap函数读取pcap文件,返回一个用于访问数据包列表的PacketList对象: ```python pcap = rdpcap('example.pcap') ``` 3. 遍历PacketList对象,提取每个数据包的源IP地址、目的IP地址、源端口号、目的端口号及协议类型: ```python for packet in pcap: src_ip = packet['IP'].src dst_ip = packet['IP'].dst src_port = packet['TCP'].sport dst_port = packet['TCP'].dport proto = packet['IP'].proto ``` 备注:上述代码仅适用于TCP/IP协议。如果数据包使用其他协议,则需要相应地修改代码。 4. 将五元组信息存储到字典中或输出到文件中: ```python # 存储到字典中 five_tuple = {'src_ip': src_ip, 'dst_ip': dst_ip, 'src_port': src_port, 'dst_port': dst_port, 'proto': proto} # 输出到文件中 with open('output.txt', 'a') as f: f.write(f"{src_ip},{dst_ip},{src_port},{dst_port},{proto}\n") ``` 通过以上步骤,即可使用Python读取pcap文件中的五元组信息。 ### 回答2: Python是一门强大的编程语言,可以用来读取和处理PCAP五元组数据。PCAP文件通常包含网络数据包,其中包含IP地址和端口号等信息,这些信息可以通过五元组来表示。 要读取PCAP五元组数据,需要使用Python的网络分析库,例如Scapy或Pyshark。这些库可以解析网络数据包并提供易于使用的API,以提取所需的五元组信息。 首先,使用库中提供的函数打开PCAP文件,然后使用适当的API提取数据包。一般情况下,数据包中包含多个协议和多个五元组,因此需要筛选出所需的五元组信息。 例如,Pyshark提供了易于使用的过滤器,让用户能够方便地获取五元组。使用Pyshark的示例代码如下: ```python import pyshark # 打开pcap文件 cap = pyshark.FileCapture('test.pcap') # 定义过滤器 filter = 'ip and tcp' # 遍历所有的数据包 for pkt in cap: # 对数据包进行过滤,只获取符合条件的五元组 if pkt.highest_layer == 'TCP': print(f"五元组:{pkt.ip.src}:{pkt.tcp.srcport} -> {pkt.ip.dst}:{pkt.tcp.dstport}") ``` 通过上述代码,我们可以轻松地提取出所需的五元组信息,并对其进行需要的处理。这样,我们就能够使用Python高效地对大量的网络数据进行处理和分析。 ### 回答3: PCAP文件是一种记录网络数据包的格式,而五元组是指标识一个TCP/IP会话的五个属性,包括源IP地址、目标IP地址、源端口号、目标端口号和传输层协议。Python可以使用第三方库Scapy来读取PCAP文件,同时提取五元组信息,以下是详细的步骤。 首先,需要使用Scapy库中的rdpcap函数来读取PCAP文件,如下所示: ```python from scapy.all import rdpcap packets = rdpcap('test.pcap') ``` 然后,通过遍历packets列表来获取每个数据包的五元组信息,可以使用Scapy库中的IP和TCP类,以及相应的源和目标地址和端口号属性,如下所示: ```python for packet in packets: if packet.haslayer(IP) and packet.haslayer(TCP): src_ip = packet[IP].src dst_ip = packet[IP].dst src_port = packet[TCP].sport dst_port = packet[TCP].dport protocol = packet[TCP].flags ``` 最后,可以将每个数据包的五元组信息存储到列表或字典中,以便进行后续分析处理。值得注意的是,使用Scapy库读取PCAP文件需要一定的计算机资源和时间,因此需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值