日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

tcpdump如何實(shí)現(xiàn)抓內(nèi)核態(tài)的包

Linux愛(ài)好者 ? 來(lái)源:開(kāi)發(fā)內(nèi)功修煉 ? 作者:張彥飛allen ? 2021-10-08 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

今天聊聊大家工作中經(jīng)常用到的 tcpdump。

在網(wǎng)絡(luò)包的發(fā)送和接收過(guò)程中,絕大部分的工作都是在內(nèi)核態(tài)完成的。那么問(wèn)題來(lái)了,我們常用的運(yùn)行在用戶態(tài)的程序 tcpdump 是那如何實(shí)現(xiàn)抓到內(nèi)核態(tài)的包的呢?有的同學(xué)知道 tcpdump 是基于 libpcap 的,那么 libpcap 的工作原理又是啥樣的呢。如果讓你裸寫(xiě)一個(gè)抓包程序,你有沒(méi)有思路?

按照飛哥的風(fēng)格,不搞到最底層的原理咱是不會(huì)罷休的。所以我對(duì)相關(guān)的源碼進(jìn)行了深入分析。通過(guò)本文,你將徹底搞清楚了以下這幾個(gè)問(wèn)題。

tcpdump 是如何工作的?

netfilter 過(guò)濾的包 tcpdump 是否可以抓的到?

讓你自己寫(xiě)一個(gè)抓包程序的話該如何下手?

借助這幾個(gè)問(wèn)題,我們來(lái)展開(kāi)今天的探索之旅!

一、網(wǎng)絡(luò)包接收過(guò)程

在圖解Linux網(wǎng)絡(luò)包接收過(guò)程一文中我們?cè)敿?xì)介紹了網(wǎng)絡(luò)包是如何從網(wǎng)卡到達(dá)用戶進(jìn)程中的。這個(gè)過(guò)程我們可以簡(jiǎn)單用如下這個(gè)圖來(lái)表示。

772732fa-239b-11ec-82a8-dac502259ad0.png

找到 tcpdump 抓包點(diǎn)

我們?cè)诰W(wǎng)絡(luò)設(shè)備層的代碼里找到了 tcpdump 的抓包入口。在 __netif_receive_skb_core 這個(gè)函數(shù)里會(huì)遍歷 ptype_all 上的協(xié)議。還記得上文中我們提到 tcpdump 在 ptype_all 上注冊(cè)了虛擬協(xié)議。這時(shí)就能執(zhí)行的到了。來(lái)看函數(shù):

//file: net/core/dev.cstatic int __netif_receive_skb_core(struct sk_buff *skb, bool pfmemalloc)

{

。..。..

//遍歷 ptype_all (tcpdump 在這里掛了虛擬協(xié)議)

list_for_each_entry_rcu(ptype, &ptype_all, list) {

if (!ptype-》dev || ptype-》dev == skb-》dev) {

if (pt_prev)

ret = deliver_skb(skb, pt_prev, orig_dev);

pt_prev = ptype;

}

}

}

在上面函數(shù)中遍歷 ptype_all,并使用 deliver_skb 來(lái)調(diào)用協(xié)議中的回調(diào)函數(shù)。

//file: net/core/dev.c static inline int deliver_skb(。..)

{

return pt_prev-》func(skb, skb-》dev, pt_prev, orig_dev);

}

對(duì)于 tcpdump 來(lái)說(shuō),就會(huì)進(jìn)入 packet_rcv 了(后面我們?cè)僬f(shuō)為啥是進(jìn)入這個(gè)函數(shù))。這個(gè)函數(shù)在 net/packet/af_packet.c 文件中。

//file: net/packet/af_packet.cstatic int packet_rcv(struct sk_buff *skb, 。..)

{

__skb_queue_tail(&sk-》sk_receive_queue, skb);

。..。..

}

可見(jiàn) packet_rcv 把收到的 skb 放到了當(dāng)前 packet socket 的接收隊(duì)列里了。這樣后面調(diào)用 recvfrom 的時(shí)候就可以獲取到所抓到的包!!

再找 netfilter 過(guò)濾點(diǎn)

為了解釋我們開(kāi)篇中提到的問(wèn)題,這里我們?cè)偕晕⒌絽f(xié)議層中多看一些。在 ip_rcv 中我們找到了一個(gè) netfilter 相關(guān)的執(zhí)行邏輯。

//file: net/ipv4/ip_input.cint ip_rcv(。..)

{

。..。..

return NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, skb, dev, NULL,

ip_rcv_finish);

}

如果你用 NF_HOOK 作為關(guān)鍵詞來(lái)搜索,還能搜到不少 netfilter 的過(guò)濾點(diǎn)。不過(guò)所有的過(guò)濾點(diǎn)都是位于 IP 協(xié)議層的。

在接收包的過(guò)程中,數(shù)據(jù)包是先經(jīng)過(guò)網(wǎng)絡(luò)設(shè)備層然后才到協(xié)議層的。

77693a4c-239b-11ec-82a8-dac502259ad0.png

那么我們開(kāi)篇中的一個(gè)問(wèn)題就有了答案了。假如我們?cè)O(shè)置了 netfilter 規(guī)則,在接收包的過(guò)程中,工作在網(wǎng)絡(luò)設(shè)備層的 tcpdump 先開(kāi)始工作。還沒(méi)等 netfilter 過(guò)濾,tcpdump 就抓到包了!

所以,在接收包的過(guò)程中,netfilter 過(guò)濾并不會(huì)影響 tcpdump 的抓包!

二、網(wǎng)絡(luò)包發(fā)送過(guò)程

我們接著再來(lái)看網(wǎng)絡(luò)包發(fā)送過(guò)程。在25 張圖,一萬(wàn)字,拆解 Linux 網(wǎng)絡(luò)包發(fā)送過(guò)程一文中,我們?cè)敿?xì)描述過(guò)網(wǎng)絡(luò)包的發(fā)送過(guò)程。發(fā)送過(guò)程可以匯總成簡(jiǎn)單的一張圖。

77a4a190-239b-11ec-82a8-dac502259ad0.png

找到 netfilter 過(guò)濾點(diǎn)

在發(fā)送的過(guò)程中,同樣是在 IP 層進(jìn)入各種 netfilter 規(guī)則的過(guò)濾。

//file: net/ipv4/ip_output.c int ip_local_out(struct sk_buff *skb)

{

//執(zhí)行 netfilter 過(guò)濾

err = __ip_local_out(skb);

}

int __ip_local_out(struct sk_buff *skb)

{

。..。..

return nf_hook(NFPROTO_IPV4, NF_INET_LOCAL_OUT, skb, NULL,

skb_dst(skb)-》dev, dst_output);

}

在這個(gè)文件中,還能看到若干處 netfilter 過(guò)濾邏輯。

找到 tcpdump 抓包點(diǎn)

發(fā)送過(guò)程在協(xié)議層處理完畢到達(dá)網(wǎng)絡(luò)設(shè)備層的時(shí)候,也有 tcpdump 的抓包點(diǎn)。

//file: net/core/dev.cint dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,

struct netdev_queue *txq)

{

。..

if (!list_empty(&ptype_all))

dev_queue_xmit_nit(skb, dev);

}

static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)

{

list_for_each_entry_rcu(ptype, &ptype_all, list) {

if ((ptype-》dev == dev || !ptype-》dev) &&

(!skb_loop_sk(ptype, skb))) {

if (pt_prev) {

deliver_skb(skb2, pt_prev, skb-》dev);

pt_prev = ptype;

continue;

}

。..。..

}

}

}

在上述代碼中我們看到,在 dev_queue_xmit_nit 中遍歷 ptype_all 中的協(xié)議,并依次調(diào)用 deliver_skb。這就會(huì)執(zhí)行到 tcpdump 掛在上面的虛擬協(xié)議。

在網(wǎng)絡(luò)包的發(fā)送過(guò)程中,和接收過(guò)程恰好相反,是協(xié)議層先處理、網(wǎng)絡(luò)設(shè)備層后處理。

77da513c-239b-11ec-82a8-dac502259ad0.png

如果 netfilter 設(shè)置了過(guò)濾規(guī)則,那么在協(xié)議層就直接過(guò)濾掉了。在下層網(wǎng)絡(luò)設(shè)備層工作的 tcpdump 將無(wú)法再捕獲到該網(wǎng)絡(luò)包。

三、TCPDUMP 啟動(dòng)

前面兩小節(jié)我們說(shuō)到了內(nèi)核收發(fā)包都通過(guò)遍歷 ptype_all 來(lái)執(zhí)行抓包的。那么我們現(xiàn)在來(lái)看看用戶態(tài)的 tcpdump 是如何掛載協(xié)議到內(nèi) ptype_all 上的。

我們通過(guò) strace 命令我們抓一下 tcpdump 命令的系統(tǒng)調(diào)用,顯示結(jié)果中有一行 socket 系統(tǒng)調(diào)用。Tcpdump 秘密的源頭就藏在這行對(duì) socket 函數(shù)的調(diào)用里。

# strace tcpdump -i eth0

socket(AF_PACKET, SOCK_RAW, 768)

。..。..

socket 系統(tǒng)調(diào)用的第一個(gè)參數(shù)表示創(chuàng)建的 socket 所屬的地址簇或者協(xié)議簇,取值以 AF 或者 PF 開(kāi)頭。在 Linux 里,支持很多種協(xié)議族,在 include/linux/socket.h 中可以找到所有的定義。這里創(chuàng)建的是 packet 類型的 socket。

協(xié)議族和地址族:每一種協(xié)議族都有其對(duì)應(yīng)的地址族。比如 IPV4 的協(xié)議族定義叫 PF_INET,其地址族的定義是 AF_INET。它們是一一對(duì)應(yīng)的,而且值也完全一樣,所以經(jīng)常混用。

//file: include/linux/socket.h#define AF_UNSPEC 0#define AF_UNIX 1 /* Unix domain sockets */#define AF_LOCAL 1 /* POSIX name for AF_UNIX */#define AF_INET 2 /* Internet IP Protocol */#define AF_INET6 10 /* IP version 6 */#define AF_PACKET 17 /* Packet family */

。..。..

另外上面第三個(gè)參數(shù) 768 代表的是 ETH_P_ALL,socket.htons(ETH_P_ALL) = 768。

我們來(lái)展開(kāi)看這個(gè) packet 類型的 socket 創(chuàng)建的過(guò)程中都干了啥,找到 socket 創(chuàng)建源碼。

//file: net/socket.c

SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)

{

。..。..

retval = sock_create(family, type, protocol, &sock);

}

int __sock_create(struct net *net, int family, int type, 。..)

{

。..。..

pf = rcu_dereference(net_families[family]);

err = pf-》create(net, sock, protocol, kern);

}

在 __sock_create 中,從 net_families 中獲取了指定協(xié)議。并調(diào)用了它的 create 方法來(lái)完成創(chuàng)建。

net_families 是一個(gè)數(shù)組,除了我們常用的 PF_INET( ipv4 ) 外,還支持很多種協(xié)議族。比如 PF_UNIX、PF_INET6(ipv6)、PF_PACKET等等。每一種協(xié)議族在 net_families 數(shù)組的特定位置都可以找到其 family 類型。在這個(gè) family 類型里,成員函數(shù) create 指向該協(xié)議族的對(duì)應(yīng)創(chuàng)建函數(shù)。

780b9012-239b-11ec-82a8-dac502259ad0.png

根據(jù)上圖,我們看到對(duì)于 packet 類型的 socket,pf-》create 實(shí)際調(diào)用到的是 packet_create 函數(shù)。我們進(jìn)入到這個(gè)函數(shù)中來(lái)一探究竟,這是理解 tcpdump 工作原理的關(guān)鍵!

//file: packet/af_packet.cstatic int packet_create(struct net *net, struct socket *sock, int protocol,

int kern)

{

。..

po = pkt_sk(sk);

po-》prot_hook.func = packet_rcv;

//注冊(cè)鉤子

if (proto) {

po-》prot_hook.type = proto;

register_prot_hook(sk);

}

}

static void register_prot_hook(struct sock *sk)

{

struct packet_sock *po = pkt_sk(sk);

dev_add_pack(&po-》prot_hook);

}

在 packet_create 中設(shè)置回調(diào)函數(shù)為 packet_rcv,再通過(guò) register_prot_hook =》 dev_add_pack 完成注冊(cè)。注冊(cè)完后,是在全局協(xié)議 ptype_all 鏈表中添加了一個(gè)虛擬的協(xié)議進(jìn)來(lái)。

78583390-239b-11ec-82a8-dac502259ad0.png

我們?cè)賮?lái)看下 dev_add_pack 是如何注冊(cè)協(xié)議到 ptype_all 中的?;仡櫸覀冮_(kāi)頭看到的 socket 函數(shù)調(diào)用,第三個(gè)參數(shù) proto 傳入的是 ETH_P_ALL。那 dev_add_pack 其實(shí)最后是把 hook 函數(shù)添加到了 ptype_all 里了,代碼如下。

//file: net/core/dev.cvoid dev_add_pack(struct packet_type *pt)

{

struct list_head *head = ptype_head(pt);

list_add_rcu(&pt-》list, head);

}

static inline struct list_head *ptype_head(const struct packet_type *pt)

{

if (pt-》type == htons(ETH_P_ALL))

return &ptype_all;

else

return &ptype_base[ntohs(pt-》type) & PTYPE_HASH_MASK];

}

我們整篇文章都以 ETH_P_ALL 為例,但其實(shí)有的時(shí)候也會(huì)有其它情況。在別的情況下可能會(huì)注冊(cè)協(xié)議到 ptype_base 里了,而不是 ptype_all。同樣, ptype_base 中的協(xié)議也會(huì)在發(fā)送和接收的過(guò)程中被執(zhí)行到。

總結(jié):tcpdump 啟動(dòng)的時(shí)候內(nèi)部邏輯其實(shí)很簡(jiǎn)單,就是在 ptype_all 中注冊(cè)了一個(gè)虛擬協(xié)議而已。

四、總結(jié)

現(xiàn)在我們?cè)倩仡^看開(kāi)篇提到的幾個(gè)問(wèn)題。

1. tcpdump是如何工作的

用戶態(tài) tcpdump 命令是通過(guò) socket 系統(tǒng)調(diào)用,在內(nèi)核源碼中用到的 ptype_all 中掛載了函數(shù)鉤子上去。無(wú)論是在網(wǎng)絡(luò)包接收過(guò)程中,還是在發(fā)送過(guò)程中,都會(huì)在網(wǎng)絡(luò)設(shè)備層遍歷 ptype_all 中的協(xié)議,并執(zhí)行其中的回調(diào)。tcpdump 命令就是基于這個(gè)底層原理來(lái)工作的。

2. netfilter 過(guò)濾的包 tcpdump是否可以抓的到

關(guān)于這個(gè)問(wèn)題,得分接收和發(fā)送過(guò)程分別來(lái)看。在網(wǎng)絡(luò)包接收的過(guò)程中,由于 tcpdump 近水樓臺(tái)先得月,所以完全可以捕獲到命中 netfilter 過(guò)濾規(guī)則的包。

77693a4c-239b-11ec-82a8-dac502259ad0.png

但是在發(fā)送的過(guò)程中,恰恰相反。網(wǎng)絡(luò)包先經(jīng)過(guò)協(xié)議層,這時(shí)候被 netfilter 過(guò)濾掉的話,底層工作的 tcpdump 還沒(méi)等看見(jiàn)就啥也沒(méi)了。

77da513c-239b-11ec-82a8-dac502259ad0.png

3. 讓你自己寫(xiě)一個(gè)抓包程序的話該如何下手

如果你想自己寫(xiě)一段類似 tcpdump 的抓包程序的話,使用 packet socket 就可以了。我用 c 寫(xiě)了一段抓包,并且解析源 IP 和目的 IP 的簡(jiǎn)單 demo。

源碼地址:https://github.com/yanfeizhang/coder-kung-fu/blob/main/tests/network/test04/main.c

編譯一下,注意運(yùn)行需要 root 權(quán)限。

# gcc -o main main.c# 。/main

運(yùn)行結(jié)果預(yù)覽如下。

78f00468-239b-11ec-82a8-dac502259ad0.png

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    4

    文章

    1476

    瀏覽量

    43098
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    8340

    瀏覽量

    95600

原文標(biāo)題:用戶態(tài) tcpdump 如何實(shí)現(xiàn)抓到內(nèi)核網(wǎng)絡(luò)包的?

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛(ài)好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于MoonBit的高效符號(hào)計(jì)算內(nèi)核Symbit實(shí)現(xiàn)方案

    本文介紹一個(gè)以 MoonBit 實(shí)現(xiàn)的符號(hào)計(jì)算內(nèi)核 Symbit,目標(biāo)是通過(guò)AI輔助,在保留 sympy 風(fēng)格符號(hào)表達(dá)與精確計(jì)算能力的同時(shí),將大部分算法移植到 MoonBit,利用 native 與 WebAssembly 后端提升執(zhí)行效率并降低用戶訪問(wèn)門(mén)檻,理想情況下用
    的頭像 發(fā)表于 04-24 09:30 ?364次閱讀
    基于MoonBit的高效符號(hào)計(jì)算<b class='flag-5'>內(nèi)核</b>Symbit<b class='flag-5'>實(shí)現(xiàn)</b>方案

    睿擎派 3562 整固件制作指南

    在嵌入式開(kāi)發(fā)中,經(jīng)常遇到需要定制固件的場(chǎng)景:更新RT-Thread應(yīng)用程序、替換Linux內(nèi)核或設(shè)備樹(shù)、修改根文件系統(tǒng)配置等。這些需求都離不開(kāi)對(duì)Rockchipupdate.img整固件的解包
    的頭像 發(fā)表于 04-01 18:08 ?1007次閱讀
    睿擎派 3562 整<b class='flag-5'>包</b>固件制作指南

    Linux內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)的技術(shù)核心精要

    開(kāi)發(fā)中必須理解的技術(shù)要點(diǎn),供從業(yè)者參考。 一、并發(fā)與同步:多核系統(tǒng)的根基 現(xiàn)代內(nèi)核默認(rèn)支持SMP(對(duì)稱多處理),驅(qū)動(dòng)代碼可能同時(shí)運(yùn)行在多個(gè)CPU核、中斷、軟中斷、搶占路徑上,競(jìng)態(tài)風(fēng)險(xiǎn)無(wú)處不在。內(nèi)核提供
    發(fā)表于 03-10 13:56

    內(nèi)核配置項(xiàng)引發(fā)網(wǎng)絡(luò)性能下降的深度剖析

    在嵌入式系統(tǒng)開(kāi)發(fā)中,內(nèi)核配置對(duì)系統(tǒng)性能起著關(guān)鍵作用。近期在對(duì)基于 Rockchip 平臺(tái)的 Linux 內(nèi)核配置調(diào)試時(shí),發(fā)現(xiàn)三個(gè)內(nèi)核跟蹤器配置項(xiàng)(CONFIG_IRQSOFF_TRACER
    的頭像 發(fā)表于 02-01 16:48 ?1837次閱讀
    <b class='flag-5'>內(nèi)核</b>配置項(xiàng)引發(fā)網(wǎng)絡(luò)性能下降的深度剖析

    如何使用wireshark進(jìn)行遠(yuǎn)程

    一、概述 通常我們使用wireshark進(jìn)行分析的時(shí)候,在遠(yuǎn)端設(shè)備抓取一部分?jǐn)?shù)據(jù)后,再回傳到本地,然后使用wireshark進(jìn)行分析。這種操作主要是抓取的數(shù)據(jù)不是實(shí)時(shí)的,不能做
    的頭像 發(fā)表于 01-16 16:05 ?1196次閱讀
    如何使用wireshark進(jìn)行遠(yuǎn)程<b class='flag-5'>抓</b><b class='flag-5'>包</b>

    深入Linux內(nèi)核:進(jìn)程調(diào)度的核心邏輯與實(shí)現(xiàn)細(xì)節(jié)

    ,背后都離不開(kāi)內(nèi)核調(diào)度算法的精準(zhǔn)操控。今天,我們就從優(yōu)先級(jí)、調(diào)度算法、時(shí)間片分配到底層實(shí)現(xiàn),全方位拆解Linux內(nèi)核進(jìn)程調(diào)度的核心邏輯。 一、進(jìn)程調(diào)度的“身份標(biāo)識(shí)”:優(yōu)先級(jí)與分類 要理解調(diào)度邏輯,首先得搞懂:進(jìn)程憑什么“插隊(duì)”?
    的頭像 發(fā)表于 12-24 07:05 ?4614次閱讀
    深入Linux<b class='flag-5'>內(nèi)核</b>:進(jìn)程調(diào)度的核心邏輯與<b class='flag-5'>實(shí)現(xiàn)</b>細(xì)節(jié)

    Linux內(nèi)核日志玩明白了嗎?printk調(diào)試神器全解析

    的日志等級(jí)機(jī)制,從參數(shù)配置到實(shí)戰(zhàn)用法一次講透~一、printk與printf的差異用戶態(tài)的printf大家都熟,直接打印內(nèi)容,簡(jiǎn)單粗暴。但內(nèi)核場(chǎng)景更復(fù)雜,系統(tǒng)崩潰或是
    的頭像 發(fā)表于 12-19 08:32 ?1088次閱讀
    Linux<b class='flag-5'>內(nèi)核</b>日志玩明白了嗎?printk調(diào)試神器全解析

    探索操作系統(tǒng)底層的關(guān)鍵接口

      在linux中,將程序的運(yùn)行空間分為內(nèi)核空間與用戶空間(內(nèi)核態(tài)和用戶態(tài)),在邏輯上它們之間是相互隔離的,因此用戶程序不能訪問(wèn)內(nèi)核數(shù)據(jù),也
    的頭像 發(fā)表于 11-08 12:42 ?895次閱讀

    求助,關(guān)于rt-smart用戶態(tài)線程實(shí)時(shí)性差的問(wèn)題求解

    我在樹(shù)莓派4B上使用v5.2.0 開(kāi)啟smart的rt-thread 并啟用SMP多核(4核)內(nèi)核時(shí),在用戶態(tài)內(nèi)核態(tài)運(yùn)行同樣的代碼測(cè)試: #include #include
    發(fā)表于 09-26 08:25

    TCPDump分析實(shí)戰(zhàn)

    作為一名資深運(yùn)維工程師,我在生產(chǎn)環(huán)境中遇到過(guò)各種奇葩的網(wǎng)絡(luò)問(wèn)題。今天分享10個(gè)真實(shí)案例,帶你掌握TCPDump這把利器,讓網(wǎng)絡(luò)問(wèn)題無(wú)處遁形!
    的頭像 發(fā)表于 08-06 17:58 ?1226次閱讀

    詳解Linux網(wǎng)絡(luò)管理中的關(guān)鍵命令

    本文檔概述了網(wǎng)絡(luò)管理中的關(guān)鍵命令,如ifconfig配置網(wǎng)絡(luò)接口,ip管理路由,ping測(cè)試連通性,以及nmap進(jìn)行安全掃描。還介紹了nslookup和dig用于域名解析,tcpdump分析,以及arp操作和nmap的深入應(yīng)
    的頭像 發(fā)表于 07-04 11:37 ?1567次閱讀
    詳解Linux網(wǎng)絡(luò)管理中的關(guān)鍵命令

    鴻蒙5開(kāi)發(fā)寶藏案例分享---折疊屏懸停態(tài)開(kāi)發(fā)實(shí)踐

    ?【鴻蒙折疊屏開(kāi)發(fā)寶藏指南】原來(lái)官方藏了這么多好東西!手把手教你玩轉(zhuǎn)懸停態(tài)開(kāi)發(fā)**?** Hey小伙伴們!我是你們的老朋友XX,最近在肝鴻蒙折疊屏項(xiàng)目時(shí),意外挖到了官方文檔里的隱藏寶藏!原來(lái)
    發(fā)表于 06-03 12:04

    單片機(jī)有沒(méi)有串口包工具推薦的,純小白,想像網(wǎng)絡(luò)協(xié)議那樣直接curl協(xié)議轉(zhuǎn)化為代碼

    能否做到像網(wǎng)絡(luò)協(xié)議那樣重放呢?剛剛涉及 esp32 單片機(jī)開(kāi)發(fā),不太懂這方面的知識(shí)點(diǎn)
    發(fā)表于 06-01 11:04

    TwinCAT3 EtherCAT | 技術(shù)集結(jié)

    在使用TwinCAT測(cè)試EtherCATEOE功能時(shí),我們會(huì)發(fā)現(xiàn)正常是無(wú)法使用Wireshark去進(jìn)行網(wǎng)絡(luò)抓取EtherCAT報(bào)文的,今天這篇文章就帶大家來(lái)上手EtherCAT
    的頭像 發(fā)表于 05-15 18:04 ?6375次閱讀
    TwinCAT3 EtherCAT<b class='flag-5'>抓</b><b class='flag-5'>包</b> | 技術(shù)集結(jié)

    關(guān)于晶振的三態(tài)

    晶振的高阻態(tài)在電路起什么作用,為什么有的晶振需要三態(tài)腳有的不需要,晶振的三態(tài)是靠什么去控制的?
    發(fā)表于 05-15 11:08
    漠河县| 武功县| 墨玉县| 贺兰县| 衡山县| 湖口县| 板桥市| 文化| 广州市| 桓台县| 高雄市| 泌阳县| 张北县| 会同县| 林周县| 昌黎县| 含山县| 公安县| 蓬安县| 板桥市| 武强县| 泰来县| 招远市| 南部县| 龙门县| 邹平县| 深圳市| 星子县| 永新县| 泰兴市| 绩溪县| 迁西县| 六盘水市| 蒙山县| 济阳县| 古交市| 莱阳市| 高台县| 繁峙县| 德清县| 江北区|