计算机网络TCP/IP协议 SOCKET debug工具,方法,实践
应用层
exec 解析程序的外壳
开启链接:
eg:exec 8<> /dev/tcp/www.baidu.com/80
8<>:重定向的,输入输出指向baidu这个链接
进入到当前的句柄位置:
cd /proc/$$/fd
给百度发送命令:
echo -e "GET / HTTP1.0\n" 1>& 8
其中引号部分就是协议
接收百度的返回:
cat 0<& 8
0<&:接收输入
1>&:标准输出
关闭链接:
exec 8>& -
exec是个替换命令,替换自己shell栈区内容
redis例子:
exec 7<> /dev/tcp/localhost/6379
echo -e 'set heks heks-shell' 1>& 8
传输控制层
什么叫TCP协议?
面向连接的、可靠的传输协议
什么是连接:三次握手之后,双方会开辟资源为未来的响应处理,也就是这些之后这个通信是有东西去处理的
什么是可靠的:三次握手保证了数据传输的确认
socket:就是把你的ip:port套在另外一个ip:port上
为什么是四次挥手?
每次发送都是会有确认ack
tcpdump -nn -i eth0 port 16379
-nn 不显示local http之类的明文
-i 那块网卡
下图抓取:curl www.baidu.com
[P.] 加急
包是可以重叠的
网络层
下一跳:网络号+主机号
IPADDR:
NETMASK:掩码是用来算网络号的,与IPADDR进行与运算计算出来当前主机在哪个网络号里
route -n
路由判定过程
链路层
MAC地址
网络是计算端点的
链路层是来寻找MAC地址的
MAC在ARP里面:先获得ARP,没有ARP就先刷ARP
tcpdump -nn -i eth0 port 80 or arp
arp -a
arp -d 10.10.23.4 && curl www.baidu.com
微服务:
基于四层架构,从握手到分手这个过程是不可以被拆解的