TCP实战

TCP实战

在学习完理论技术后,在实战中运用下,来更好的理解知识这里使用的是wireshark

wireshark常用语法

过滤某个ip 同时 过滤端口号58315

ip.addr ==ip and tcp.port == 58315

过滤ip

ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IP

过滤端口

tcp.port eq 80 // 不管端口是来源的还是目标的都显示

过滤协议

tcp

udp

arp

过滤MAC

eth.dst == A0:00:00:04:C5:84 // 过滤目标mac

eth.src eq A0:00:00:04:C5:84 // 过滤来源mac

TCP参数过滤

tcp.flags 显示包含TCP标志的封包。

tcp.flags.syn == 0x02 显示包含TCP SYN标志的封包。

tcp.window_size == 0 && tcp.flags.reset != 1

wireshark的使用

我们使用ping来测试一下,以下是抓到的信息的个

字段的意义

TCP实战

报文内容

TCP实战

TTL什么意思? 超时重传的最大时间

TTL值默认情况下,Linux系统的TTL值为64或255,Windows NT/2000/XP系统的默认TTL值为128,Win7系统的TTL值是64,Windows 98系统的TTL值为32,UNIX主机的TTL值为255。由发送主机设 置。

数据组装格式

这里的ICMP可以替换为TCP等,核心思路就是发送端,数据每到新的一层结构,就加上这层的数据头,层层嵌套,到了接受端的时候,再层层剥离,每到对应的层就去除对应的头,直到到达引用层就是单纯可读的数据了

TCP实战

实战

随便打开一个网页,观察wireshark里的数据

TCP实战

三次握手详解:

这里的No=159,169, 170 就是tcp的三次握手

58315就是浏览器打开网页发起请求的端口,8080就是服务器接受到的端口

在第一次握手中(No=159)客户端发送SYN标志位,发送seq

在第二次握手中(No=169)服务器发送ACK,SYN标志位,ack=seq+1 seq=0,ack是确认应答

在第三次握手中(No=170)客户端发送ACK标志位,同事将seq=0+1=1返回,表示确认应答

三次握手结束后,下一个请求的序列号就是171 可以看到这个请求是HTTP请求,也就是说三次握手成功了

四次挥手详解

这里的No=1906,1907,1908,1914 就是tcp的4次挥手,可以看到在建立链接期间,服务器传给了客户端很多次的数据,传完后就开始4次挥手了

第一次挥手服务器向客户端发起FIN标志位

第二次挥手浏览器返回ACK

第三次挥手浏览器发起FIN请求关闭通道

第四次挥手服务器返回ACK

流量图

Wireshark 可以用时序图的方式显示数据包交互的过程,从菜单栏中,点击 统计 (Statistics) -> 流量图 (Flow Graph),然后,在弹出的界面中的「流量类型」选择 「TCP Flows」,你可以更清晰的看到,整个过程中 TCP 流的执行过程:TCP实战

上一篇:解决github网站打不开


下一篇:TTL和COMS的区别