Flags中参数解释
Flags are some combination of S (SYN), F(FIN), P (PUSH), R (RST), U (URG), W (ECN CWR), E (ECN-Echo) or `.' (ACK), or `none' if no flags are set.
抓取主机192.168.0.104和主机180.101.49.11的通信
[root@ecs-1c9f-0004 network-scripts]# tcpdump host 192.168.0.104 and 180.101.49.11
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
基础:主机向180.101.49.11发送请求
curl 180.101.49.11
逐行解析
第一次握手
Flags [S]:发送syn请求
10:26:11.350025 IP ecs-1c9f-0004.51786 > 180.101.49.11.http: Flags [S], seq 458741837, win 29200, options [mss 1460,sackOK,TS val 82802261 ecr 0,nop,wscale 7], length 0
第二次握手
Flags [S.]:目标地址回复确认
S -> syn
,. -> ack
10:26:11.362155 IP 180.101.49.11.http > ecs-1c9f-0004.51786: Flags [S.], seq 4283621899, ack 458741838, win 8192, options [mss 1452,sackOK,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,nop,wscale 5], length 0
第三次握手
Flags [.]:主机再次向目标地址发送确认
. -> ack
10:26:11.362196 IP ecs-1c9f-0004.51786 > 180.101.49.11.http: Flags [.], ack 1, win 229, length 0
三次握手完成后开始发送数据包
Flags [P.]首先主机向目标地址发送数据包并携带ack,目标地址携带ack响应。同样的目标地址和主机通信时也会以同样的方式,先发送请求,然后主机响应ack确认。
10:26:11.362252 IP ecs-1c9f-0004.51786 > 180.101.49.11.http: Flags [P.], seq 1:78, ack 1, win 229, length 77: HTTP: GET / HTTP/1.1
10:26:11.374481 IP 180.101.49.11.http > ecs-1c9f-0004.51786: Flags [.], ack 78, win 908, length 0
10:26:11.375616 IP 180.101.49.11.http > ecs-1c9f-0004.51786: Flags [P.], seq 1453:2869, ack 78, win 908, length 1416: HTTP
10:26:11.375653 IP ecs-1c9f-0004.51786 > 180.101.49.11.http: Flags [.], ack 2869, win 274, length 0
建立通信的基础:路由寻址,以下演示:ping www.baidu.com
路由表:
[root@standby01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.99.1 0.0.0.0 UG 100 0 0 eth0
192.168.99.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
问题一: 在DNS解析后拿到目标地址IP之后目标地址和主机如何建立通信,然后再发送数据包?
路由表中进行路由判定,eg:目标地址:172.17.1.5 主机路由表如上图所示。判定过程为:第一步 目标ip和网络掩码 Genmask列中的地址做与运算,得到Destination中对应的值
172.17.1.5 和 255.255.255.0
得到的与运算结果还是自己172.17.1.5
,所以上面表格中的第二行淘汰了,看第一行判定:0.0.0.0 与 172.17.1.5
做运算结果得到0.0.0.0
符合,也就是这个位置中的Gateway就是目标地址的下一跳
问题二: 0.0.0.0
为什么就判定成功了?
网络中0.0.0.0的IP地址表示整个网络,即网络中的所有主机
这里又关联到一个数据链路层和网络层的东西ARP
,在上述请求中如果目标地址在ARP缓存中没有找到地址的话,就会将当前的ip广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
问题三:下一跳
?
这个词就是网络中寻址的关键词,全球建立的网络连接就是基于
下一跳
,通过这种方式实现基础通信,比如在购买云服务器的时候(华为云)就有个下一跳
查看.
评论区