20155328 《信息安全系统设计基础》 第八周学习内容总结
教材学习内容总结
-
每个网络应用都是基于客户端-服务器模型的。在该模型中,一个应用是由一个服务器进程和一个或多个客户端进程组成的。客户端-服务器模型中的基本操作是事务,它由四步组成:1.客户端向服务器发送一个请求,发起一个事务;2.服务器收到请求后,解释之,并操作它的资源;3.服务器给客户端发送一个响应,例如将请求的文件发送回客户端;4客户端收到响应并处理它,例如Web浏览器在屏幕上显示网页。
-
一个IP地址就是一个32位无符号整数,它存放在一个IP地址结构中。
-
客户端和服务器通信时使用的是IP地址,然而对于人们而言大整数是很难记住的,因此因特网也定义了一组更加人性化的域名,以及一种将域名映射到IP地址的机制。域名是一串用点分隔的单词(字母、数字和破折号),它有自己的层级结构。
-
Web内容是与MIME(多用途网际邮件扩充协议)类型相关的字节序列,包括:HTML页面、无格式文本、Postscript文档、GIF图像、JPEG图像等。
-
HTTP响应和请求是类似的,它包括:一个响应行,后面跟随0个或多个响应报头,然后是终止报头的空行,再跟随一个响应主体。 一个响应行的格式为:
<version> <status code> <status message>
-
有以下四种方式终止线程:当顶层的线程例程返回时,线程会隐式终止;线程调用pthread_exit函数,线程会显示终止;如果主线程调用pthread_exit,它会等到所有其他对等线程终止,然后再终止主线程和整个线程,返回值为thread_return;某个对等线程调用exut函数,则函数终止进程和所有与该进程相关的线程;另一个对等线程调用以当前ID为参数的函数ptherad_cancel来终止当前线程。
-
一个可结合的线程能够被其他线程回收其资源和杀死,在被其他线程回收之前,它的存储其资源是没有被释放的;相反,一个分离的线程是不能被其他线程回收或杀死的。
-
修改对象的线程叫做写者;只读对象的线程叫做读者。写着必须拥有对对象的独占访问,而读者可以和无限多个其他读者共享对象。读者——写者问题基本分为两类:第一类,读者优先,要求不要让读者等待,除非已经把使用对象的权限赋予了一个写者。换句话说,读者不会因为有一个写者等待而等待;第二类,写者优先,要求一定能写者准备好可以写,它就会尽可能地完成它的写操作。同第一类问题不同,在一个写者后到达的读者必须等待,即使这个写者也是在等待。
教材学习中的问题和解决过程
暂无
代码托管
上周考试错题总结
- Linux信号处理说法正确的是(ABDEF)
A .
可以用signal()处理信号
B .
一个信号最多只能被接收一次
C .
kill(1)用来杀死进程
D .
kill(1)用来发送信号
E .
可以通过键盘发送信号
F .
可以用sigaction()处理信号
- 有关exec系列函数,下面说法正确的是(CE)
A .
可以用char[][] 来传递argv
B .
进程调用了exec系列函数后,pid会变
C .
进程调用了exec系列函数后,代码会改变。
D .
system()和exec系列等价。
E .
exec系列函数中带e的要传入环境变量参数
F .
exec系列函数中带v的要传入环境变量参数
不能用char[][] 来传递argv,结尾的0(null)无法处理;system=fork+exec+wait;
- 关于代码 int main(){} 说法正确的是()
A .
返回值是0
B .
返回值不确定
C .
会调用exit(0)
D .
返回值大于0
E .
上面代码运行完,在命令行中运行echo $? 的值是0
main中不调用exit,会补上exit(0)。
结对及互评
点评模板:
- 博客中值得学习的或问题:
- xxx
- xxx
- ...
- 代码中值得学习的或问题:
- xxx
- xxx
- ...
- 其他
本周结对学习情况
结对对象:20155325
学习内容:第十一章
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 40/40 | 1/1 | 20/20 | |
第二周 | 40/40 | 1/2 | 18/38 | |
第四周 | 154/194 | 2/4 | 20/58 | |
第五周 | 48/242 | 2/6 | 20/78 | |
第六周 | 59/301 | 2/8 | 19/97 | |
第七周 | 354/655 | 2/9 | 18/115 | | |
第八周 | 455/1100 | 1/10 | 15/130 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:18小时
-
实际学习时间:15小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)
参考资料
课堂提交补充
提交点2
把第一个练习中的代码(sum)在X86-64(Ubuntu)中反汇编,给出汇编代码和机器码的截图。把X86-64汇编翻译成Y86-64汇编,并给出相应机器码的截图。
#include<stdio.h>
void main(int arggc,char *argv[])
{
int sum=0;
int i;
for(i=0;i<argc;i++)
sum+=atoi(argv[i]);
printf("sum=%d\n",sum);
}
汇编代码截图如下:
机器代码截图如下:
提交点3
基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
服务器响应消息格式是
“
客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX
”