一些网络调试命令
测试到达目的主机的网络是否连接,但ping无法检查系统端口是否开放
ping www.google.com
telnet可以检查某个端口是否开放
telnet ip_addr:port
traceroute 是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute 的原理是试图以最小的TTL发出探测包来跟踪数据包到达目标主机所经过的网关,然后监听一个来自网关ICMP的应答。
程序利用增加存活时间(TTL)值来实现其功能。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并传送一个ICMP TTL数据包给原数据包的发出者
traceroute www.google.com
查看服务器端口有没有客户端来连接
netstat -anp | grep xxxx
查看到进程id之后,使用netstat命令查看其占用的端口:
netstat -nap | grep pid
curl
显示通信过程
curl -v www.sina.com
http://www.ruanyifeng.com/blog/2011/09/curl.html
https://www.cnblogs.com/pangguoping/p/5571422.html
http服务器不能主动通知客户端
具体来说,这个问题等价于:有一个 TCP 服务程序的地址是 1.2.3.4:8765,问它从理论上能接受多少个并发连接?
在只考虑 IPv4 的情况下,并发数的理论上限是 2**48。考虑某些 IP 段被保留了,这个上界可适当缩小,但数量级不变。实际的限制是操作系统全局文件描述符的数量,以及内存大小。
一个 TCP 连接有两个 end points,每个 end point 是 {ip, port},题目说其中一个 end point 已经固定,那么留下一个 end point 的自由度,即 2 ** 48。客户端 IP 的上限是 2**32 个,每个客户端IP发起连接的上限是 2**16,乘到一起得理论上限。
即便客户端使用 NAT,也不影响这个理论上限。(为什么?)
在真实的 Linux 系统中,可以通过调整内核参数来支持上百万并发连接,具体做法见:
http://urbanairship.com/blog/2010/09/29/linux-kernel-tuning-for-c500k/
http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-3