1、计算机网络结 业 考 试假设你当前使用计算机的 IP 地址为 202.202.243.10,MAC 地址是 00-0A-E6-2A-0E-A3,计算机所在的 Ethernet 为星型拓扑结构,带宽 100Mbps,网络号是 202.202.243.0/25,网关为 202.202.243.1,DNS 服务器 IP 地址为 202.202.240.33,网络及各服务器正常工作。请详细描述当在浏览器地址栏中输入 回车后到整个页面全部显示完毕这个过程,注意:仅描述本机的应用层、传输层、网络层、数据链路层、物理层,如果叙述中有已经描述的方法可省略,同时注意条理性。首先,我们可以看到,主机与主机,主机与
2、服务器进行数据传输等得流程图如下:然后我们可以将这个流程图做六段的解释:第一段1. 浏览器分析 URL,可得知当前使用的是域名,必须首先解析其对应的 IP 地址.首先我的计算机在浏览器 DNS 缓存中查找 项,如果有对应的 IP 则找出来,如果没有就构建 DNS 请求包向外发送,逐级从低级到高级域名进行域名解析出 IP 地址。我计算机曾经没有登陆过该网站,浏览器中就没有对应的缓存,所以通过域名解析的结果服务器 221.7.92.98 给我发回 ip 地址,下截图可知:(一般情况下本地区域网的总 DNS 服务器中有相应的 IP 地址,若没有则需到其他区域域名服务器中找即从低级到高级域名进行域名解
3、析出 IP 地址。 )2. 浏览器构建 DNS 请求包,递交传输层实体同时告知该包为 DNS 包3. 传输层实体构建 45 个字节的 UDP 包,源端口按主机当前情况选择,我的端口52678 发出,目的端口为 53,然后将包递交网络层4.网络层实体以源 IP 为 10.1.36.89,目的 IP 为 DNS 服务器的即 221.7.92.98 等字段封装UDP 包以构建 IP 包(IP 包头部依次包含如上其版本如上是 ipv4 版本,首部长度为 20 个字节,区分服务,总长 65,标识 2367,标志 0,片偏移 0,数据包生存时间 64 秒,协议即上层携带数据的协议 UDP 协议,首部检验和
4、 0,IP 源地址 10.1.36.89,IP 目的地址221.7.92.98).,然后递交数据链路层。 (在网络层还要做一个重要的工作就是用 ICMP查找路径,下面的 14 步有详细的描述)5.数据链路层构建以太帧,由下截图可知,Ethernet 帧头部依次包含了目的网卡地址如上是 00:1a:a9:0a:70:6d, 源地址 00-23-8b-fc-7f-c0,类型为 ip 即表示上层用的是 ip 数据包。每个主机和路由器都有自己固定的 MAC 地址即物理地址,因此找到相应的 MAC 地址就能找到服务器,则启动 ARP 请求,获得 DNS 服务器的 MAC 地址即 00:1a:a9:0a:
5、70:6d 作为目的 MAC 地址。然后递交物理层。执行 CSMA/CD 协议。6.本机的物理层向信道发送信息数据。第二段7.网关输入端的物理层接受到信号,递交是数据链路层查看。8.数据链路层检查目的 MAC 地址,是 MAC 地址为 00: 1a:a9:0a:70:6d 服务器的,则去掉以太帧的首部和尾部剩下 IP 包递交给网络层。然后通过路由器的输出端,通过物理层向该服务器端发送数据。第三段9.服务器的物理层接收到数据,并把数据传给数据链路层检查 MAC 地址,是本机的地址 00:1a:a9:0a:70:6d,则去掉以太帧的首部和尾部将 IP 包给网络层。网络层递交去掉 IP 包的首部和尾
6、部后的 UDP 包给传输层,传输层递交 DNS 包给应用层。10.服务器应用层解析出 IP 地址,再经过上述的途径返回,将解析出 IP 地址返回给应用程序(浏览器) ,DNS 服务器的即 221.7.92.98 得知 的 IP 地址202.202.240.35。第四段11.浏览器构建 HTTP 请求包,递交传输层。12.建立连接需在传输层构建 TCP 段(TCP 段头部包含如上依次是源端口 1551,目的端口 80,序号 36,确认号 0,头部长 32 字节,保留 reserved 为 0 即今后使用,urc 为 0 即报段无效,确认 ack 为 0 即确认号无效,推送 push 为 0,复位
7、 reset 为 0 即不重新建立连接,同步SYN 为 1 即对方同意建立连接,终止 FIN 为 0 即不释放运输连接,紧急指针,选项即长度可变12 字节。)我的主机在传输层构建 TCP 段向 即 ip 地址 202.202.240.35 发起三次握手请求如下截图所示:我的主机向服务器发出连接请求报文段,从我的端口 1748 发出,服务器 80 端口进入,第一次握手 TCP 规定同部位 SYN=1,SYN 报文段不带数据,要有个序号,我与服务器第一次握手 SYN=1,报文段 len=0,序号 seq=0.第二次握手服务器收到连接请求报文段后,如果同意发出确认则发无数据报文段SYN=1,ACK=
8、1,消耗序号。第二次握手服务器确认 SYN=1,ACK=1,报文段 len=0,序号seq=0.第三次握手 TCP 客户收到服务器确认报文段后,再向服务器发出确认报文段ACK=1,TCP 规定若无数据则消耗序号。第二次握手服务器确认 ACK=1,报文段 len=0,序号 seq=1.13.网络层源 IP 为 10.1.36.89 其组成同上述的一样只是其中协议即上层携带数据的协议为TCP 协议,以 202.202.240.35 为目的 IP,封装 TCP 段构建 IP 包。14.我主机网络层发出一连串的 IP 数据包查找路径,用 ICMP 网络控制报文协议,此应用为源点到终点的路径,对 TTL
9、 设置,每经一个路由 TTL 减 1,为 0 后路由器将数据丢弃并向主机发送一个 ICMP 时间超过差错报文,逐步的进行直到到达终点。15.IP 包在数据链路层构建帧,源 MAC 地址是 00-23-8b-fc-7f-c0,并启动 ARP 请求,如果获得说明是统一网络,如果没获得,则经过了网关,网关将服务器的 MAC 地址作为源地址,将本计算机的 MAC 作为目的地址。16.数据到达服务器 202.202.240.35 后也一层一层的向上传。17.服务器收到我主机的连接请求后会回复,以数据的形式经一层一层到物理层向信道发送。网关的物理层接收到信号,然后把数据流转换为数据给数据链路层检查,数据链
10、路层检查目的 MAC 地址,如果是服务器的 MAC 地址,则递交 IP 包给网络层。然后通过路由器的输出端,通过物理层向本计算机发送数据。18.本主机接收服务器确认包,再由上过程发出确认包,则三次握手连接完成,可以双方发送数据了。19.建立好连接后我主机向服务器发送请求取数据,TCP 也要连接,若下截图将序号seq 设为 1,确认号 ack 设为 1,并且说下一次服务器的 ack 为 447(这表示我的请求包有446 个字节)下截图 202.202.240.35 返回 TCP 连接序号 seq 设为 1,确认号 ack 设为 449,并且说下一次我的 ack 为 169(这表示服务器的包长为
11、168) 。下截图确实证明我下次请求的 ack 为 169,发出的包长为 378,这是 TCP 的连接。第一次发出请求包,我想得到 但从下截图可知系统给我加了其他的数据请求。其传输过程同上述 12 步变成建 TCP 段到 17 步一致,18.本计算机的物理层接收到 202.202.240.35 返回信号,然后传到数据链路层检查目的MAC 地址,如果是网关的 MAC 地址则递交 IP 包给网络层。网络层则递交 TCP 段和UDP 包给传输层。传输层递交 HTTP 包给应用层。应用层提取 HTTP 数据段内容,浏览器将其展示。 (下截图为服务器返回数据)19.最后当双方都不需要数据的时候就会释放连接,双方任一一方都可先释放。TCP 规定,请求释放方 A 先提出释放连接则 FIN=1,且要消耗序号,无数据及 len=0;TCP 规定 B 接到释放请求后会发出确认及 ACK=1,这时请求释放方无数据发送给 B 了,但 B 可再发数据给 A,若 B 也无数据发送了,因此也要发送释放连接报段;B 也无数据发送了也发送了释放连接报段,这时 FIN 也应为 1,无数据,有序号 A 收到释放报文后也要发出后确认,长度 0,和序号,则释放连接全部结束,双方都不会放送数据,也不会收到对方的数据。