CSAPP LAB---Proxy lab

LAB8

0x00基础说明

这次的Proxy lab 是要求实现一个简单的web 代理,共有3个部分,第一部分是实现一个单线程代理,接收客户端请求,连接服务器然后转发。第二部分是实现并发,为每一个请求新建一个进程。第三部分是最有趣的,为每个请求建立独立的进程之后,该怎么共享进程之间整体的思路是这样的,proxy作为clientserver的中间媒介,client发给请求给proxyproxy然后把请求转发给server,再从server拿到response,然后再把这个response转发给client。也就是说proxy既是client的服务器,又是server的客户。所以这个lab涉及到了客户端编程和服务器端编程。

0x01基础说明

    一开始用make命令的时候,它一直爆链接错误。

 CSAPP LAB---Proxy lab_第1张图片

链接静态库的时候一直报错(我排查了好久,都没找到原因)

后来查看错误解释,说这是因为在链接时,发现找不到某个函数的实现文件。即在编译proxy.c的时候找不到哪些定义在csapp中的函数具体实现。

然后,我就直接用GCC 修改编译方式,让csapp中的函数显式的传递给proxy链接

CSAPP LAB---Proxy lab_第2张图片

调试成功,生成可执行文件a.out

这里贴一个TCP流程,有助于理解

CSAPP LAB---Proxy lab_第3张图片

0x02代码说明

见详细C文件

点击打开链接

0x03测试说明

运行前,

CSAPP LAB---Proxy lab_第4张图片

无法连接

开启a.out,并设置端口

CSAPP LAB---Proxy lab_第5张图片

CSAPP LAB---Proxy lab_第6张图片

请求头,错误。但是系统有反应,说明程序是正常在运行。

正确通过代理进入百度

CSAPP LAB---Proxy lab_第7张图片

正确进入yahoo

 CSAPP LAB---Proxy lab_第8张图片

前面测试可能看起来不是很明显,我去github里面下了一个master版本,(这个版本还可以进行post处理,然而并没有看懂。。。),然后修改了下源码和构造了一些网页,进行网页端测试

CSAPP LAB---Proxy lab_第9张图片

CSAPP LAB---Proxy lab_第10张图片

CSAPP LAB---Proxy lab_第11张图片

CSAPP LAB---Proxy lab_第12张图片

上面就是一些HTTP的响应头之类的,和书上的差不多

 


    

你可能感兴趣的:(csapp)