victorruan / exercise

一次有趣的练习

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

网络传输分析、系统设计与实现

wireshark 抓包文件 http.mirror.azure.cn.pcapng 内容描述了使用浏览器访问 http://mirror.azure.cn/ 产生的网络传输数据,请根据文件内容回答以下题目

提示: 所有解答源码请放入一个公开 github 仓库,并给出可访问的 url

  1. 网络传输分析: 描述浏览器访问该 url 的整个流程,具体要求如下

    • 描述须包括 IP 以上所有使用到的协议层,按照时间顺序进行描述
  2. 服务实现: 请使用任何后端编程语言,实现一个服务端程序,克隆站点 http://mirror.azure.cn/ 首页的返回结果,具体要求如下

    • 请求该后端与直接请求 http://mirror.azure.cn/ 得到的 HTTP 层结果一致
    • 运行环境使用 docker 容器进行封装,并给出启动命令
  3. 压力测试: 对第 2 步完成的服务端程序进行一分钟的压力测试,HTTP 请求地址为 /,并输出压力测试结果,具体要求如下

    • 推荐使用 ApacheBench(Ab)
    • 若使用其他压力测试工具或自己写程序进行测试,压力测试输出结果请按照 Ab 的结果
  4. 服务优化: 请根据第 3 步的结果,对服务端程序进行优化,具体要求如下

    • 优化后,浏览器访问的页面渲染结果与优化前一致(目测)
    • 优化后的压力测试结果须表现出更高的并发量更低的延迟
    • 请给出服务性能瓶颈分析与对应的优化方式

网络传输分析、服务设计与实现

要求

  • 所有解答源码请放入公开 github 仓库,并给出可访问的 url
  1. 网络传输分析: wireshark 抓包文件 mysterious_networking_behavior.pcapng/mysterious_networking_behavior.txt 内容描述了一次客户端/服务端架构下的网络行为产生的网络传输数据 (.pcapng 与 .txt 文件内容等价), 请根据抓包文件回答以下问题,细节越多越好

    • 详细描述客户端发起的每一次 DNS 请求和结果
    • 说明客户端与服务端建立了多少个 TCP channel,分别是哪些 frame,分别完成了什么传输任务,为什么存在多个 TCP channel
    • 选择几个 frame 详细说明一次 TCP 握手流程,需要包含具体 frame 内容
    • 请说明服务端程序可以如何优化,以提升单个用户访问延迟,以及并发吞吐量
  2. 服务设计与实现: 仅使用 TCP socket 库,实现一个 HTTP 服务程序,监听 localhost:8080 端口,使用任意网页浏览器 (Chrome/Firefox/Safari等) 打开 http://localhost:8080,显示用户名/密码和对应输入框,以及登录按钮,点击后跳转页面,显示刚刚输入的用户名及密码

    • 不限编程语言
    • 整个服务程序为单个文件,不能包含资源文件
    • 登录一次后,下次访问直接跳转至显示用户名密码的页面

About

一次有趣的练习


Languages

Language:PHP 90.9%Language:Dockerfile 9.1%