您的位置:首页 > 移动开发

CSAPP LAB---Proxy lab

2015-07-11 16:45 381 查看

LAB8

0x00基础说明

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

0x01基础说明

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



链接静态库的时候一直报错(我排查了好久,都没找到原因)
后来查看错误解释,说这是因为在链接时,发现找不到某个函数的实现文件。即在编译proxy.c的时候找不到哪些定义在csapp中的函数具体实现。
然后,我就直接用GCC 修改编译方式,让csapp中的函数显式的传递给proxy链接



调试成功,生成可执行文件a.out
这里贴一个TCP流程,有助于理解



0x02代码说明

见详细C文件
点击打开链接

0x03测试说明

运行前,



无法连接
开启a.out,并设置端口





请求头,错误。但是系统有反应,说明程序是正常在运行。
正确通过代理进入百度



正确进入yahoo



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









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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: