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的响应头之类的,和书上的差不多
相关文章推荐
- Cannot find interface declarartion for 'nsobject' & Unknow type name 'NSString'
- 网易新闻iOS版使用的开源组件
- 2.Android Studio创建安卓项目及项目结构
- CSAPP LAB---shlab-handout
- Android学习之多线程复习——倒计时
- LeetCode题解——Trapping Rain Water
- CSAPP LAB---MALLOC实验
- (未解决)android studio:com.android.support:appcompat-v7:22+ Could not found
- Android 之修改标题栏(title)
- iOS代理模式与事件模型对比实现
- Android 基础一 TextView,Style样式,Activity 传值,选择CheckBox 显示密码
- Android开发之bindService()侦听service内部状态
- 仿陌陌注册登录引导页背景效果
- CSAPP LAB---buflab-handout(缓冲区溢出实验)
- Webview的Cookie和缓存处理
- Android viewpager切换到最后一页时,跳转至其他activity
- CSAPP LAB---perflab-handout性能优化
- UI4_UIWebView
- android 获取mac地址
- 一个app服务端后台框架源码分享