netstat -aon
/proc/net/tcp
/proc/net/udp
/proc/net/unix
相关的代码是:tcp4_seq_show(struct seq_file *file, void *v),函数执行
established_get_first
listening_get_next
难道只得到listening和establiseded的sock吗?
tcp_seek_last_pos
inet_hashinfo tcp_hashinfo是一个全局的变量,都是从这个全局的哈希表中得来的,得来的
可不可以看到每一个socket上的数据传输速度呢?传输的速度、传输的package的数目,
- nethogs: 按进程查看流量占用
- iptraf: 按连接/端口查看流量
- ifstat: 按设备查看流量
- ethtool: 诊断工具
- tcpdump: 抓包工具
- ss: 连接查看工具
- 其他: dstat, slurm, nload, bmo
http://www.jb51.net/LINUXjishu/151977.html
ss可以统计详细的socket信息
lsof是怎么读取全部打开的文件的呀?
使用lsof -p <pid>能够列出所有该进程所有占用的文件,这个该很好获取 /proc/<pid>/fd,进程打开的所有的文件,然后是进程打开的文件,系统现在打开的所有的文件是通过哪个接口读出来的?会遍历所有文件的/proc/<pid>/fd/,可以看codebox: lsof.stp read.stp。
从网络设备和socket上,一直有个问题,尤其是tcp已经有流量控制了,为啥还要有流量
单机上网络流量控制。如何控制网络的流量
在网络整个协议栈上有几个重要的节点,这个也是iptables存在的原因,iptables中设置了几个重要的链,这几条链包括INPUT/OUTPUT/PREROUTING/POSTROUTING/FORWARD/,有这样5个链,接收数据包的流程,比如接收到数据包,接收的数据包会在函数中netif_receive_skb,然后在ip层是ip_recv,比如在函数ip_rcv的最后由函数:
ip_rcv: NF_HOOK(NFPROTO_IPV4, NF_INET_PRE_ROUTING, net, NULL, skb, dev, NULL, ip_rcv_finish);
ip_local_deliver: NF_HOOK(NFPROTO_IPV4, NF_INET_LOCAL_IN, net, NULL, skb, skb->dev, NULL, ip_local_deliver_finish);
ip_forward: NF_HOOK(NFPROTO_IPV4, NF_INET_FORWARD,net, NULL, skb, skb->dev, rt->dst.dev,ip_forward_finish);
在这几个关键的节点上可以对数据包作丰富的处理,
然后net_filter提供的所有的filter包括,在PREROUTING之前做的事情,
46 enum nf_inet_hooks {
47 NF_INET_PRE_ROUTING, 接收到了数据包,在进行路由之前,修改数据包的信息;
48 NF_INET_LOCAL_IN, 路由之后,在这个数据包进如高层协议之前要做的事情;
49 NF_INET_FORWARD, 在路由确定了之后,数据包进行转发;已经确定过了转发的出口
50 NF_INET_LOCAL_OUT,
51 NF_INET_POST_ROUTING,,经过路由,还没有确定转发的出口
52 NF_INET_NUMHOOKS
53 };
NAT使用了其中的三条链:pre_routing/post_routing/forward
47 NF_INET_PRE_ROUTING, 接收到了数据包,在进行路由之前,修改数据包的信息;
48 NF_INET_LOCAL_IN, 路由之后,在这个数据包进如高层协议之前要做的事情;
49 NF_INET_FORWARD, 在路由确定了之后,数据包进行转发;已经确定过了转发的出口
50 NF_INET_LOCAL_OUT,
51 NF_INET_POST_ROUTING,,经过路由,还没有确定转发的出口
52 NF_INET_NUMHOOKS
53 };
NAT使用了其中的三条链:pre_routing/post_routing/forward
prerouting/post_routing是原始的NAT的逻辑,forward呢?
output规则链是在传出去之前,就把数据包的目的给换掉,从而完成端口的转发,如何完成
所以post_routing和output规则链有个重要的区别是一个是改源地址一个是改目的地址,都是