您的位置:首页 > 理论基础 > 计算机网络

linux中一些网络方面的基础知识

2017-09-11 09:31 274 查看
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_堆的分配和扩展以及释放。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: