码迷,mamicode.com
首页 > 其他好文 > 详细

扩展2

时间:2020-05-26 01:20:06      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:details   端口   三层   mac地址表   构建   csdn   不同   记录   map   

1、宏定义

define:写法为#define 标识符(形参) 字符串,作用是定义标识符为字符串。

if、#else、#endif、#elif:和去掉#意思差不多,只是最后一定要加#endif

ifdef:如果后面的宏定义了,那么编译

ifndef:如果后面的宏没有定义,那么编译

undef:取消宏

2、详细Ping过程描述(二三层转发)

主机A建立一个ICMP回显请求报文,和主机B的IP地址发送给IP层,构建一个IP数据包。然后要获得MAC地址(二三层转发):

1.同一网段:
主机A要ping主机B,先判断一下是不是处于同一网段,发现是同一网段。然后查MAC地址表,发现没有B的MAC地址,那么向外发送ARP广播。交换机收到报文后,学习A的地址,看一下有没有B的MAC地址,有就发给A;没有就向所有端口发送ARP广播。非主机B收到报文后会丢弃,主机B收到报文后学习A的MAC地址,然后发送ARP回应报文告诉A自己的MAC地址。A收到后学习B的MAC地址。

2.不同网段:
先判断一下是不是处于同一网段,发现不是同一网段。主机A找网关转发。如果不知道网关MAC地址,那么就同上进行ARP广播,得到网关MAC地址。然后发送ICMP请求报文给网关路由器。网关收到后,查找路由表,确定发出去的端口,看一下目标IP是不是在同一网段,是的找到B的MAC地址转发过去(找不到ARP广播一下);不是的话,使用下一跳的IP地址查ARP表,发到下一跳。

主机B收到报文,返回ICMP回显应答报文。
用到的协议主要有:DNS(域名转地址),UDP(DNS协议使用),IP,ARP。

3、O(1)插入,删除,随机等概率获取数

不能重复元素使用:
使用vector存数字,用unordered_map<int, int>记录每个值在vector的索引。这样插入和随机都能O(1)了。删除的时候,把要删除的数和末尾交换,然后pop_back()。

可重复:
,用unordered_map<int, vector>记录每个值在vector的索引。

参考资料

详细Ping过程描述(二、三层转发)

扩展2

标签:details   端口   三层   mac地址表   构建   csdn   不同   记录   map   

原文地址:https://www.cnblogs.com/KirinSB/p/12961966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!