linux中一些網絡方面的基礎知識

1、nslookup和host基本相同,用來查詢一臺機器的IP地址和其對應的域名。該命令有兩種模式:交互式和非交互式。若命令不帶參數,則會進入交互模式。

2、tcpdump是網絡運維人員查找問題的關鍵。通過不同的命令行選項來改變抓包狀態。利用正則表達式組合成多種過濾報文的的條件,數據包滿足正則表達式的條件就會被捕獲。如果沒有給出任何條件,則網絡上的所有數據包將會被截獲。

#tcpdump tcp port 80 and host 119.75.219.38 > net_stat.txt
還可以將抓獲的包保存到pcap文件,使用圖形界面的網絡協議工具例如Wireshark進行數據分析。

#tcpdump tcp port 80 -s 0 -w http.pcap

3、網絡應用程序與linux內核如何進行交互通信?

通過一個軟中斷,中斷號是0x80。通常是應用程序都是使用具有標準接口定義的C函數庫。它間接的使用內核的系統調用,也即應用程序調用C函數庫中的函數,C函數庫中再通過int 0x80進行系統調用。

4、linux進程佈局中一些概念

4.1 棧內存  “運行時棧”(臨時分配,臨時釋放)

一個函數被調用時會在棧頂分配一幀內存,用於存放該函數內定的局部變量以及所有形參,函數調用完畢,它所佔用的那幀內存就會被釋放。主要存放進程執行過程中的局部變量,包括函數嵌套調用中函數切換時當下的代碼空間和相關的寄存器值。棧的大小有限制一般是8MB.

4.2 堆內存  “運行時堆”

是自由內存,堆大小沒有限制,最大值取決於系統的物理內存。

4.3 數據段  (一直佔用內存直到進程退出)

.bss段存放未初始化的靜態數據,它們被初始化爲0;.data段專門存放已經初始化的靜態數據(所有的全局變量和static型局部變量),這個初始值從程序中複製而來;.rodata段用來存放只讀數據,也就是常量,如字符常量,整形、浮點型常量。

4.4 代碼段

.text段存放用戶程序代碼;.init段用來存儲系統給每一個可執行程序自動添加的“初始化”代碼(這個段當中的代碼默認只會執行一遍,完成之後所佔據的內存就會被立即釋放,以便節省系統資源),這部分代碼功能包括環境變量的準備,命令行參數的組織與傳遞等,並且這部分數據放在棧底。

5、堆中分配動態內存

int *p=(int *)malloc(1*sizeof(int));

int *p_=(int *)realloc(p,size*sizeof(int));
free p;
free p_
堆的分配和擴展以及釋放。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章