Wireshark剖析浏览器请求过程

前言

Wireshark解析剖析浏览器输入网址如何看到网页的过程。

Wireshark剖析浏览器请求过程

  • 打开Wireshark抓包软件

    选择对应的网卡,即马上就好看到网卡所在活动的内容

  • 通过chrom浏览器打开163首页官网

  • 切换至Wireshark就会对对应的网络请求进行抓包

    解释以下步骤:通过搜索163查找到对应的请求包

    首先可以看到的就是浏览器需要请求DNS对www.163.com进行域名解析,获取到真实的ip地址(请求)

    Frame:包头信息(整体包大小71字节长度)

    Ethernet II:数据链路层头,源:TendaTec(是我的PC网卡),目的地:Tp-link(路由器),这里是获取DNS对应的ip,之类找Tp-link肯定是获取不到的,这里Tp-link只是作为一个转发站点

    Internet Protocol:网络IP层的头(IP协议)

    User Datagram:UDP的头(请求DNS的请求是作为UDP协议发出去的,不需要预先的去建立连接)

    Domain Name System(Query):UPD真正的内容(query)这里是发送给DNS需要获取的www.163.com对应的ip(这里Wireshark告诉了你它对应的Response包为772编号),这里相当于找DNS只问了一个问题,获取www.163.com对应的ip地址,实际上这里可以发送多个问题出去。

    以下为请求DNS的ack响应包,可以看到它对应返回的真实ip为:14.17.80.101,然后通过ip.addr == 14.17.80.101过滤对应的ip

    所以说当通过浏览器打开一个网址的时候,浏览器首先会去请求DNS服务器获取对应网址的真实ip,接下来就是三次握手了,可以可以看看对应的包是如何交互的,第一个包叫做Syn,第二个包叫做Syn + Ack,第三个包叫做Syn。

    下面三个包就是tcp3次握手。

    可以看到首先由浏览器发送tcp请求(SYN)去连接http的80端口(这里有一个网络请求的滑动窗口的概念,这里滑动窗口的大小为8192,用来维持发送方/接收方的缓冲区,解决丢包、乱序等问题),这里有个Sequence Number(即请求序号)为0,然后等待相应。

    Destination Port:80(目标端口),这是需要跟163的http端口做连接

    Tcp Segment len:0(请求内容),这里代表没有请求内容发送

    Sequence Number:包的编号0,类似刚才的滑动窗口包的编号一样(请求编号)

    Acknowledgment Number:0,这里代表没有收到任何包来ack(相应),因为是初次连接,如果有值,则代表期待你发送下一个包,说明之前的包我已经收到了。即如果为1,则代表我浏览器收到了你的0号包,期待你发送1号包过来

    Flags:0x002(Syn:代表连接请求,Ack代表相应请求)

    Window Size value:8192(滑动窗口大小)

    以上的3个包一旦一方确认后,窗口马上滑动到10号包,准备就绪发送

    163.com服务器端收到这个Syn请求后,即需要相应(请求Syn+相应Ack),以下为请求相应信息。包括后面的一个Ack,这样子通过3次握手建立完连接之后,后续的发送请求数据就会在一个比较安全的环境中进行了。

    连接建立完之后发送Http请求获取数据:

    Sequence Number = 1

    TCP Segment len = 392

    Next Sequence Number(393) = TCP Segment len(392) + Sequence Number(1)

    以下的Ack就都是由服务器返回的信息,然后再由浏览器进行渲染显示。

    Tcp segment of a reassembled代表会有连续的1454大小的包发送过来(由于内容过来,它就行的拆成多个包进行发送)

    mark

    总结

分享到 评论