tcp/ip协议各层简介
应用层:格式化字符串 传输控制层:处理包 3次握手 4次分手 源端口号->目标端口号 网络层:网络号 主机号 下一跳 (成本低且传输可靠) 源IP地址->目标IP地址 数据链路层:mac地址 下一跳的mac地址 源MAC地址->目标MAC地址
exec 22<> /dev/tcp/www.baidu.com/80 #linux中一切皆文件 22为管道 <>进出
echo -e "GET / HTTP/1.1\n" >& 22 #发送命令到22管道
cat <& 22 # 打印22管道收到的响应
exec 创建一个socket通信(内核内部完成) echo 用户空间 程序员 人 实现应用层协议
lsof命令lsof(list open files)是一个列出当前系统打开文件的工具
tcp模型
应用层 -> 传输控制层 -> 网络层 -> 传输链路层 -> 物理层
1. 传输控制层
socket套接字 ip+prot : ip+port
连接 ---> 三次握手 双方开辟资源为对方服务(内核)
3次握手
确认机制ack
socket 数据传输
套接字 唯一表示
ip+prot : ip+port
port 限制 65535个
4次分手
抓包
curl www.baidu.com #一个完整的网络生命周期
ping www.baidu.com
tcpdump -nn -i eth0 port 80 | grep 180.101.49.11
建立连接
20:17:47.431427 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [S], seq 3907241968, win 29200, options [mss 1460,sackOK,TS val 15378414 ecr 0,nop,wscale 6], length 0
20:17:47.442390 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [S.], seq 2051857229, ack 3907241969, win 8192, options [mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
20:17:47.442398 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [.], ack 1, win 457, length 0
发送数据
20:17:47.442438 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [P.], seq 1:78, ack 1, win 457, length 77: HTTP: GET / HTTP/1.1
20:17:47.453663 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [.], ack 78, win 908, length 0
20:17:47.455084 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [P.], seq 1:1441, ack 78, win 908, length 1440: HTTP: HTTP/1.1 200 OK
20:17:47.455088 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [.], ack 1441, win 502, length 0
20:17:47.455091 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [P.], seq 1441:2782, ack 78, win 908, length 1341: HTTP
20:17:47.455094 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [.], ack 2782, win 547, length 0
断开连接
20:17:47.455172 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [F.], seq 78, ack 2782, win 547, length 0
20:17:47.464421 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [P.], seq 1441:2782, ack 78, win 908, length 1341: HTTP
20:17:47.464426 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [.], ack 2782, win 547, options [nop,nop,sack 1 {1441:2782}], length 0
20:17:47.466294 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [.], ack 79, win 908, length 0
20:17:47.466438 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [F.], seq 2782, ack 79, win 908, length 0
20:17:47.466444 IP 172.16.13.190.54444 > 180.101.49.11.80: Flags [.], ack 2783, win 547, length 0
20:17:50.484533 IP 180.101.49.11.80 > 172.16.13.190.54444: Flags [R], seq 2051860012, win 0, length 0
tcpdump抓包命令
tcpdump -nn -i eth0 port 80
2. 网络层
ip 172.16.13.190 子网掩码 255.255.240.0
240 11110000 网络号为前20位,主机号为后12位,一共可以有0-4095个主机。
按位与运算,得到网络号 172.16.0.0。主机号为13.190。
路由表
基于下一跳机制寻址
180.101.49.11 与 路由表中子网掩码 255.255.0.0 按位与得到 180.101.0.0 与 169.254.0.0不一致,不走这一条(下一跳)
172.16.15.253 默认网关
3. 传输链路层
arp表 (mac地址)
arp学习 交换机
源mac地址 目标mac地址全f 交换机会广播