浏览器访问网站

这个仅仅是我个人对于访问网站流程的一个理解,我相信肯定有不全面也有错漏的地方,如果是的各位可以给我指出来让我可以有所提高~

 

 

五层协议体系结构中各层运用到的协议:  

应用层:HTTPDNS

传输层:TCPUDP

网络层:IPARP

网络接口层:MAC

 

浏览器访问百度过程:

1、电脑开机,确保清空ARPDNS等。在cmd 窗口中通过arp –a ipconfig /displaydns查询ARPDNS

 

2、连接网络,打开浏览器访问百度:www.baidu.com

①向浏览器输入百度:www.baidu.com,浏览器将信息http:// www.baidu.com传递给应用层,到达应用层后加上应用层首部,成为HTTP GET 报文段,请求该网站根目录下默认文件。然后传送到运输层,但由于TCP连接没有建立,因此HTTP GET 缓存。

 

②在运输层中使用TCP协议以建立TCP连接,封装后传送到网络层。TCP报文段到达网络层后再次封装形成IP数据报,但由于百度是域名,因此在HOST文件和DNS缓存中查找,但由于刚开机所以查找失败,因此将IP数据报缓存,且返回应用层。

 

③返回应用层后启动DNS,利用DNS请求报文查询www.baidu.comIP地址,传送到运算层封装为UDP数据报,再传送到网络层封装为IP数据报。再传送到数据链路层查询网关的MAC地址,但由于ARP缓存为空,因此查询MAC地址失败。因此将含有DNS请求报文段的IP数据报缓存,且返回网络层。

 

④返回网络层后启动ARP,发送ARP请求分组“谁是 10.0.153.254? 告诉 10.0.153.10”查找网关的MAC地址。将ARP请求分组封装为广播帧,传送到物理层转换为比特流通过电缆在本局域网上发送。

广播帧发送到集线器,然后在发送到PC2R1PC2不对应该目的IP地址因此丢弃该数据帧。网关R1接收到该广播帧后,传送到物理层,在传送到数据链路层,在传送到网络层,去掉首部,判断IP是否一致,IP地址一致则R2对应该目的IP地址,接收请求报。然后生成ARP应答包封装成单播帧,传送到数据链路层,在传送到物理层网关通过单播发送到集线器返回在发送给PC1PC1接收到ARP应答包“10.0.153.254 00:0F:E2:AA:97:12”从而获得网关的MAC地址。

主机收到ARP响应分组后在ARP高速缓存中写入网关的IP地址到硬件地址的映射。

 

序号

源地址

目标地址

协议

大小

概要

187

 78:E3:B5:A4:8A:15 

FF:FF:FF:FF:FF:FF

ARP

46

谁是 10.0.153.254?

告诉 10.0.153.10

188

00:0F:E2:AA:97:12

78:E3:B5:A4:8A:15

ARP

64

10.0.153.254

00:0F:E2:AA:97:12

 

cmd 窗口中通过arp a 查询ARP

 

⑤得到MAC网关后取出缓存的含有DNS请求报文段的IP数据报,封装为单播帧,传送到数据链路层,再传送到集线器,然后传送到R1IP数据报排队等待。等待结束后,R1接收该IP数据报,传送到物理层,再传送到数据链路层,再传送到网络层。R1选择路由器接口,然后选择为右接口,TTL-1。便传送将IP数据报传送到网络层,再传送到数据链路层,再传送到物理层转换为二进制比特流,在传送到下一个路由器R2IP数据报排队等待。

R2接收该IP数据报,传送到物理层,再传送到数据链路层,再传送到网络层。R2选择路由器接口,然后选择为右接口,TTL-1。便传送将IP数据报传送到网络层,再传送到数据链路层,再传送到物理层转换为二进制比特流,再传送到交换机。

交换机接收该IP数据报,传送到物理层,再传送到数据链路层。交换机查寻转发表,得到DNS服务器的接收端口。再传送将IP数据报传送到数据链路层,再传送到物理层转换为二进制比特流,再传送到DNS服务器。

DNS服务器依据源MAC地址进行学习然后生成DNS应答包并封装成单播帧,按原路回送。PC1接收到DNS应答包,得到www.baidu.comIP 地址。

 

序号

源地址

目标地址

协议

大小

概要

789

10.0.153.10:54401

10.0.15.11:53

DNS

77

C: Q=baidu.com.(A)

790

10.0.15.11:53

10.0.153.10:54401

DNS

363

S: Q=www.baidu.com(A)

A=112.80.248.74

A=112.80.248.73

 

发送问题一条,收到答案7条,权威答案13条,附加答案2条。其中答案如下:其中答案如下:

 

⑥得到百度的IP地址:112.80.248.74后取出缓存的含TCP连接请求的IP数据报,封装为单播帧,转换为比特流再发送到集线器,R1,R2,交换机,百度服务器。百度服务器接收到TCP连接请求,便按原路返回,发送同意TCP连接的IP数据报。PC1接收到同意TCP连接的IP数据报后,再发出确认收到同意TCP连接的IP数据报的数据报。完成“三次握手”,成功建立TCP连接。

 

序号

源端口

目标端口

协议

大小

序列号

确认号

ACK

SYN

879

63117

80

TCP

70

3873156153

0

0

1

889

80

63117

TCP

70

3586524917

3873156154

1

1

884

63117

80

TCP

58

3873156154

3586524918

1

0

 

TCP连接建立后,取HTTP GET 报文段缓存,将HTTP GET报文段传送到运输层,封装成IP数据报,然后发送到数据链路层,再发送到物理层转换为比特流。依次发送到集线器,R1,R2,交换机,百度服务器。

序号

源端口

目标端口

协议

大小

序列号

确认号

ACK

PSH

885

63117

80

HTTP GET

634

3873156154

3586524918

1

1

 

⑧百度服务器接收到HTTP GET IP数据报后确认收到IP数据报。并依据文档标签文件名在WWW.root 中寻找 index.htm 文件。

序号

源端口

目标端口

协议

大小

序列号

确认号

ACK

PSH

886

80

63117

TCP

64

3586524918

3873156730

1

0

887

80

63117

HTTP Text

486

3586524918

3873156730

1

1

888

80

63117

HTTP Text

273

3586525346

3873156730

1

1

 

序号887内容:S: HTTP/1.1 302 Moved Temporarily; Content-Type: text/html

序号888内容:S: HTTP数据包,负载数据215字节

 

⑨浏览器解释回应信息,并显示在浏览器中。

序号

源端口

目标端口

协议

大小

序列号

确认号

ACK

PSH

889

63117

80

TCP

58

3873156730

3586525561

1

0

 

⑩关闭浏览器

百度是HTTP协议,而HTTP的端口号80TCP连接控制为保持连接,因此在抓包中无法抓取TCP连接断开时产生的4次挥手的数据包

 

小提示:

其实我还是一个学生,因此一开始时候我用的是校园网然后就发现了一些问题:

 1.在宿舍内使用校园网访问百度时目标断开不正确。

 由于在宿舍内访问校园网是通过登录iNode登录客户端然后进行访问网络的,因此目标端口不会是80,而是443。另外尝试通过电脑连接WIFI进行网络访问,发现无论目标端口号甚至是ARP请求,DNS的访问也会有极大的差异。因此如果要求目标端口为80的话,需要选择在不需要通过其他软件登录上网的电脑上进行抓包。

2.TCP链接断开的数据包无法抓取。

正常情况下TCP链接断开会有“四次挥手”,但由于TCP的链接断开时有服务器控制的,而端口号为80的服务器通常是无法进行“四次挥手”断开链接的,因此在访问百度抓包过程中是无法抓取“四次挥手”的数据包的。

另外正常情况下,“四次挥手”情况如下:

第一次:client to server FIN=1;第二次:server to client ACK=1;第三次:server to client FIN=1ACK=1;第四次:client to server ACK=1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值