zoukankan      html  css  js  c++  java
  • 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小时

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

    参考资料

  • 相关阅读:
    设计模式-策略模式
    设计模式-建造者模式
    js助手函数
    Javascript使用函数做命名空间
    腾讯云scf云函数,python依赖安装与上传的正确姿势
    nodejs爬虫,服务器经常返回ECONNRESET或者socket hang up错误的解决方法
    http请求,服务器回复内容为乱码的一种可能解决方法
    js在动态定义的新对象中,属性为变量时,如何动态定义
    nodejs中使用request时出现unable to verify the first certificate的一种解决办法
    Ubuntu偶然出现在待机解锁时,密码输入肯定正确但却无法进入的一种可能性
  • 原文地址:https://www.cnblogs.com/-zyl/p/7822146.html
Copyright © 2011-2022 走看看