计算机网络

  1. TCP四元组:源IP、目的IP、源端口、目的端口。

  2. HTTP请求报文结构:

    1. 报文首部:请求行、请求首部字段、通用首部字段、实体首部字段、其他
    2. 空行(CR+LF)
    3. 报文主体
  3. TCP报文段首部:

  4. 一个确认字节号N的ACK表示所有直到N的字节(不包括N)已经成功被接收了,是期望收到对方下一个报文段的第一个数据字节的序号。

  5. 数据偏移的单位是4字节,又占4bit,2^4-1=15,所以最大偏移60字节。

  6. 控制位:

    1. 紧急URG:当URG=1时,紧急指针字段有效。
    2. 确认ACK:当ACK=1时,确认号字段有效。
    3. 推送PSH:不需要缓冲区满,立即发送、接受交付报文。
    4. 复位RST:释放链接重新建立。
    5. 同步SYN:SYN置为1就表示这是一个连接请求或连接接收报文。
    6. 终止FIN:当FIN=1时,表明此报文段的发送方的数据已发送完毕,并要求释放运输连接。
  7. 窗口:从本报文段首部中的确定号算起,接收方目前允许对方发送的数据量。

  8. 校验和:校验首部和数据。

  9. 紧急指针:指出本报文段中的紧急数据的字节数。值得注意的是,即使窗口为零时也可发送紧急数据。

  10. UDP报文段首部:

  11. UDP报文首部长度8字节。

  12. IP首部格式:

  13. 30张图解: TCP 重传、滑动窗口、流量控制、拥塞控制

    1. 糊涂窗口综合症
    2. 慢启动:拥塞窗口小于慢启动门限,当发送方每收到一个 ACK,拥塞窗口 cwnd 的大小就会加1。慢启动呈指数增加。
    3. 拥塞避免算法:每当收到一个 ACK 时,cwnd 增加 1/cwnd。线性增长。
    4. 拥塞发生:
      • 超时重传:慢启动门限减半,拥塞窗口重设为1。
      • 快速重传:拥塞窗口减半,慢启动门限和拥塞窗口大小相同。之后进入快速恢复算法。

操作系统

  1. 进程:资源分配的最小单位。

  2. 线程:CPU调度的最小单位。

  3. TCB:栈信息,保存的寄存器,线程元信息。

  4. 进程拥有代码段,全局变量,文件描述符,堆。线程有寄存器和栈。

  5. 进内核的方式:syscall, interrupt, exception, exit

    进用户态:exec, rtn, rfi

  6. fork:

    1. 内核空间:复制PCB,修改pid,进程运行时间,添加父进程指针,父进程添加子进程。子进程加入task list。
    2. 用户空间:复制局域变量,全局变量,代码段,堆栈。
    3. 返回pid。
  7. exec:

    1. 内核空间:重设pc寄存器值。
    2. 用户空间:清除局域变量,堆栈。全局变量和代码段被覆盖。
  8. exit:

    1. 内核空间:清理分配的内存,关闭文件。
    2. 用户空间:清理所有内存。
    3. 向父进程发送SIGCHLD。
  9. 僵尸进程:子进程退出,父进程未wait SIGCHLD。

  10. 孤儿进程:父进程退出,子进程被init收养。

  11. 进程通信:管道、信号、信号量、共享内存、socket

  12. 死锁必要条件:互斥,请求与保持,非抢占,循环等待。

  13. 预防死锁:

    1. 破坏请求与保持条件。规定一个进程开始前,必须申请所有需要的资源。
    2. 破坏非剥夺条件。当无法得到需要的资源时,释放自己持有的资源,等需要时再重新申请。
    3. 破坏循环等待条件。将所有资源按类型线性排队,并赋予不同的编号,所有进程请求资源时,必须按照资源递增顺序,以防出现环路。如果一个进程已经分配到了R资源,那么它再申请时,只能申请排在R后面的资源,而不能申请前面的资源。