TCP/IP相关初步认识
nc 用于和服务器建立连接。
在Ubuntu上面做实验
启动一个终端
1 | nc www.baidu.com 80 |
再开启另一个终端
1 | netstat -antp |
1 | Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name |
可以看到最后一行,已经建立了一个TCP连接。
在刚才连接好百度服务器的终端上面,按http协议,请求百度首页。GET / HTTP/1.0
并连续输入两个回车。
1 | nc www.baidu.com 80 |
写一个SocketDemo Server端程序,开启一个监听。
-ff 追踪线程和子线程
-o output
1 | strace -ff -o ./out java SocketDemo |
通过jps或netstat可以看到一个pid
1 | cd /proc/[pid] |
在fd
目录下面,可以看到开启了多少个IO。
io流
/dev/pts/0 标准输入
/dev/pts/1 标准输出
/dev/pts/2 标准报错
1 | ulimit -a |
open files 1024
在task
目录,显示所有的线程
追踪一下redis的多路复用
1 | strace -ff -o ./redis-out bin/redis-server config/server.properties |
通过netstat查看进程监听状态
通过/proc/[pid]查看 fd 和 task,可以看到redis是多线程的。