2017-2018-1 20155315 《信息安全系统设计基础》第8周学习总结

2017-2018-1 20155315 《信息安全系统设计基础》第8周学习总结

教材学习内容总结

本周我学习的是第11、12章

客户端&服务器

  • 每个网络应用都由一个服务器进程和一个或多个客户端进程组成。
  • 客户端和服务器都是进程

网络

  • 从网络上接收到的数据从适配器经过I/O和存储器总线拷贝到存储器,典型地是通过DMA(直接存储器存取方式)传送。
  • 网络是一个按照地理远近组成的层次系统:最低层是LAN(局域网),最流行的局域网技术是以太网。
  • 每台主机都能看到每个位。
  • 以太网适配器有一个唯一的48位地址,存储在适配器的非易失性存储器上
  • 一台主机可以发送一段位:帧,到这个网段内其它任何主机。每个帧包括一些固定数量的头部位(标识此帧的源和目的地址及帧长)和数据位(有效载荷)。
  • 每个主机都能看到这个帧,但是只有目的主机能读取。
  • 网桥链接多个以太网段,成为较大的局域网。
  • 路由器连接多个不兼容的局域网,internet互联网络。
  • 路由器可以用来由各种局域网和广域网构建互联网络。

协议

  • 协议软件消除了不同网络之间的差异。
  • 协议控制主机和路由器如何协同工作来实现数据传输。
  • 两种基本能力:
    • 命名机制
    • 传送机制

IP因特网

  • 因特网的客户端和服务器混合使用套接字接口函数和Unix I/O函数来进行通信。
  • IP地址就是一个32位无符号整数,使用(大端法)网络字节顺序存放的。
  • 套接字接口函数:socket函数、connect函数、open_clientfd函数、bind函数、listen函数、open_listenfd函数、accept函数

并发程序

  • 进程:用内核来调用和维护,有独立的虚拟地址空间,显式的进程间通信机制。
  • I/O多路复用,应用程序在一个进程的上下文中显式的调度控制流。逻辑流被模型化为状态机。
  • 线程,运行在一个单一进程上下文中的逻辑流。由内核进行调度,共享同一个虚拟地址空间。可看成其他两种方法的混合体。

进程

  • 进程有一个非常清晰的模型:共享文件表,但不共享用户地址空间。
  • 在父进程中接收客户端连接请求,然后创建一个新的子进程来为每个新客户端提供服务。

I/O多路复用

  • 可以用作并发事件驱动程序的基础。
  • 将逻辑流模型化为状态机:由一组状态、输入事件和转移,其中转移就是将状态和输入事件映射到状态。
  • 比基于进程的设计给了程序员更多的对程序行为的控制,是运行在单一进程上下文中的。但是代码复杂,不能充分利用多核处理器。

线程

  • 主线程:每个进程开始生命周期时都是单一线程
  • 线程可以并发地运行
  • 线程执行不同于进程
  • 线程不按照父子层次,而是形成一个对等(线程)池。

教材学习中的问题和解决过程

问题1: 进程和线程有什么不同?

解决1:

  • 进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
  • 进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。
  • 线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序抗攻击,但在进程切换时,耗费资源较大,效率要差一些。
  • 但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

代码调试中的问题和解决过程

问题1: 照着书上的代码敲上去之后,编译的时候总出错。

解决1: 在编译的时候,要将csapp.c、echo.c和修改的代码编译在一起,还要加上-lpthread才可以编译成功。

代码托管

(statistics.sh脚本的运行结果截图)

结对及互评

暂无

其他(感悟、思考等,可选)

这一章的内容很多,吸收得不够,还要继续学习。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 5/5 1/1 25/25
第二周 236/241 3/4 30/55
第三周 169/410 2/6 30/85
第四周 169/410 2/8 50/135
第五周 1177/1587 2/10 30/165
第六周 1826/3413 2/12 30/195
  • 计划学习时间:30小时

  • 实际学习时间:30小时

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

原文地址:https://www.cnblogs.com/-zyl/p/7822146.html