打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
获取tcp/udp端口对应的进程pid

http://blog.csdn.net/chrisniu1984/article/details/7022745

2011

可能有一些朋友想要做一些监视流量工具却不知道如何根据端口获取到进程的PID,如果你搜了一圈也没有找到满意的答案,希望我的这个文章可以帮到你。


1、获取当前活动的TCP/UDP端口值。

你会有许多方法获取此值,这里不多废话了。(我用的方法是通过raw socket进行抓包分析,你也可以用libpcap库实现)。假设当前我发现一个本地端口为54351的tcp端口。

当前状态:tcp_port/udp_port


2、获取端口的inode值。

假设你用自己的方法获取到了当前活动的tcp端口,此时你需要找到此端口对应的inode节点值。怎么获得呢?在这里/proc/net/tcp(对于udp是/proc/net/udp)。这个文件中存储的主要信息是:本地地址,本地端口,远程地址,远程端口,链接状态,发送队列,接收队列,UID,inode等信息。记住这个值,它就是我们需要的东西。

假设端口号为 54351 的记录中inode字段为 193738

当前状态:tcp_port/udp_port -> inode


3、遍历所有进程的所有fd(fd = 文件描述符)

    在到/proc/目录你会看到很多以数字命名的文件夹,这些文件夹里就是系统当前运行进程的相关信息。文件名字这些数字就是进程的pid,比如叫做“1”的文件夹里就是init进程的相关信息。

假设我的google-chrome进程pid为102。我进入102目录(即当前我处在/proc/102/目录)后,能看到一个叫做fd的目录。进入fd目录。能看到很多用数字命名的文件,执行“ls -l”可以看到

  1. <span style="font-size:16px;">niu@niu:/proc/102/fd$ ls -l  
  2. total 0  
  3. l-wx------ 1 niu niu 64 2011-11-29 10:41 31 -> pipe:[11903]  
  4. lr-x------ 1 niu niu 64 2011-11-29 10:41 32 -> /opt/google/chrome/chrome.pak  
  5. lrwx------ 1 niu niu 64 2011-11-29 10:41 33 -> anon_inode:[eventpoll]  
  6. lr-x------ 1 niu niu 64 2011-11-29 10:47 13 -> pipe:[8449]  
  7. l-wx------ 1 niu niu 64 2011-11-29 10:47 14 -> pipe:[8449]  
  8. lr-x------ 1 niu niu 64 2011-11-29 10:47 15 -> pipe:[8450]  
  9. l-wx------ 1 niu niu 64 2011-11-29 10:47 16 -> pipe:[8450]  
  10. lrwx------ 1 niu niu 64 2011-11-29 10:47 2 -> /dev/null  
  11. lrwx------ 1 niu niu 64 2011-11-29 10:47 3 -> anon_inode:[eventfd]  
  12. lr-x------ 1 niu niu 64 2011-11-29 10:47 4 -> pipe:[6952]  
  13. lrwx------ 1 niu niu 64 2011-11-29 10:47 7 -> /dev/null  
  14. lrwx------ 1 niu niu 64 2011-11-29 10:47 8 -> socket:[193738]  
  15. </span>  

其中有一条为:

  1. <span style="font-size:16px;">lrwx------ 1 niu niu 64 2011-11-29 10:47 8 -> socket:[193738]</span>  
方括号中的值就此进程占用的socket的inode值,解析出此值与 前面获得到的193738比较可得出结论:54351端口属于进程102。

当前状态:tcp_port/udp_port -> inode       ==       inode<-pid

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
查看端口被哪个进程占用
端口号被占用解决方法
批处理:查看进程使用的端口
Windows netstat 查看端口、进程占用
Windows自带强大的入侵检测工具——Netstat 命令 查询是否中木马
如何在 Linux 中查看进程占用的端口号【转】
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服