操作系统
第一章 计算机系统漫游
helloworld程序的漫游(运行经历)
第二章 信息的表示和处理
大多数计算机使用八位的块 或者叫字节作为最小的可寻址的内存单位,机器级程序将内存视为一个特别大的字节数组,称为虚拟内存。虚拟内存的每个字节都由一个唯一的数字标识,称为虚拟内存地址空间。
每台计算机都有一个字长,指明指针数据的标称大小。
linux系统
linux基础知识
linux命令
数据结构和算法
力扣刷题日记
二分查找
167(把查找两个值转化为查找一个值 因为学的基本查找都是查找一个值 所以可以想办法转成查找一个值 这样才能用基础查找)
162(二分查找的精髓在于分析数组和题目的条件 确定right left mid每次的变化关系 这里的right根据题意是要等于mid 传统的二分查找right=mid-1)
349(对于有两个数组的问题 有时候长数组和短数组要分开了处理 所以就要通过if先判断一下长短数组)
归并排序(分治法)
LCR077(归并排序经典题目 线性表排序)
计数排序
LCR075(用到了计数排序 还可以用hashmap的自定义排序)
贪心算法(每一步都选择当前最优的 不考虑未来可能的情况 因此第一步也是要选当前最优的 不用考虑以后 也就是说后面的跟第一步一样 跟第一步的选法相同)
561(贪心思想:每次都希望最小值尽可能的大,也就是希望后面的值尽可能的大)
409(贪心思想:每次都希望选择偶数对 处理:把奇数对变为偶数对)
100248 字符串及反转中是否存在同一子字符串
计算机网络
第一章 计算机与因特网
1.1
因特网:世界范围的计算机网络
主机(host) 端系统(end system)
端系统通过通信链路和分组交换机相连
链路传输速率为比特每秒 bit/s
分组:端系统将数据分段 每段加上首部字节 形成的数据包
最著名的分组交换机:路由器 、链路层交换机
路径:一个分组经历的一系列通信链路和分组交换机
端系统通过因特网服务提供商(ISP)接入因特网
端系统、分组交换机、其他因特网部件需要运行一系列协议
协议:控制信息接收和发送
TCP/IP是最重要的两个协议
分布式应用程序:涉及到多台端系统相互之间的数据交换
运行在端系统上的应用程序怎样才能指令因特网向运行在另一个端系统上的软件发送数据呢?
通过应用程序编程接口(API) 是规定了端系统上的软件请求因特网基础设施向运行在另一个端系统上的特定目的的软件交付数据的方式 是发送软件必须遵守的规则集合
凡是涉及两个或者多个远程通信实体的所有活动都受协议的约束
一个协议定义了在两个或者多个远程通信实体之间的报文格式和次序以及报文发送和/或接收一条报文或其他事件所采取的动作
1.2
网络边缘:计算机网络中的边缘设备,比如客户端和服务器和边缘路由器和边缘网络设备。
端系统也称为主机 ,主机又被划分为客户端和服务器,通常位于计算机网络的边缘 ,大部分提供搜索结果、电子邮件、web页面的服务器称为大型数据中心。
接入网:指将端系统连接到其边缘路由器的物理链路
家庭接入:数字用户线(DSL)和电缆 和光纤到户(FTTH) 和拨号和卫星
企业接入:以太网和WIFI
广域无线接入:3G和LTE
物理媒体:双绞线、同轴电缆、光纤、陆地无线电信道、卫星无线电信道
1.3
网络核心
分组交换:在网络应用中,端系统彼此之间交换报文
电路交换
网络的网络
1.4
分组交换的时延、丢包、吞吐量
1.5
协议分层:应用层 运输层 网络层 链路层 物理层
1.6
网络安全
1.7
历史
wireshark实验
分组嗅探器:用来观察执行实体之间交换的报文的基本工具
第二章 应用层
几个关键的应用层概念:应用程序所需的网络服务、客户和服务器、进程和运输车的接口。
几种网络应用程序:Web、电子邮件、DNS和对等文件分发、多媒体应用、流式视频、ip电话
2.1
网络核心设备(路由器之类的)并不在应用层上起作用,因此将应用软件限制在端系统上了,也就是说你不能给路由器和交换机写应用程序。
应用程序体系结构是开发者设计的很灵活,不同于网络结构是固定的(五层或七层)。
客户-服务器结构:服务器是总是打开的主机,客户机相互之间不通信 配备大量主机的数据中心常被用来创建强大的虚拟服务器。因为一台服务器处理不了大量请求
P2P结构:对位于数据中心的专用服务器有最小的或者是没有依赖。应用程序在间断连接的主机对之间使用直接通信。这样的主机被称为对等方。有些应用既有客户端-服务器又有P2P。
P2P的自扩展性:
进程通信是进程而不是程序。在两个不同的端系统上的进程,通过跨越计算机网络交换报文而相互通信。
每队通信的进程,一个称为客户,一个称为服务器。
进程通过一个称为套接字(应用程序编程接口 API)的软件接口向网络发送报文和从网络接收报文,应用程序开发者对运输车的控制权限仅限于:1.选择运输车协议(TCP UDP)2.也许能设定几个运输层参数,比如最大缓存和最大报文段长度等。
为了向目的地发送报文需要知道其地址:一般通过IP地址和端口号标识地址
应用程序服务要求分类:1.可靠数据传输 2.吞吐量 3.定时 4.安全性
TCP:
面向连接:在数据报文开始流动之前,TCP让客户和服务器相互交换运输层的控制信息。这个握手过程提醒客户和服务器为大量分组到来做好准备。握手阶段后,TCP连接在两个进程的套接字之间建立了。连接时全双工,结束报文发送时,需要拆除连接。
可靠的数据传输服务:无差错,按适当顺序,没有丢失的传输服务。
拥塞控制:字面意思
TCP和UDP都没有加密机制,因此出现了安全套接字层(SSL),SSL不仅能做TCP的所有功能,还提供了加密,数据完整性和端点鉴别,SSL是在应用层实现的。
UDP:
仅提供最小服务,无连接,不可靠传输服务,报文可能乱序到达。无拥塞控制。
应用层协议:
定义了:1.交换报文的类型 2.各种报文类型的语法 3.字段的语义 4.一个进程何时发送报文,对报文响应的规则
有些应用层协议是由RFC文档定义的,HTTP(超文本传输协议【RFC 2616】)就作为一个RFC可供使用。如果浏览器开发者遵从HTTP RFC规则,所开发出的浏览器就能访问任何遵从该文档标准的Web服务器并获取相应页面。
应用层协议只是网络应用的一部分。
Web是一种客户---服务器应用,它由HTML(文档格式的标准) Web浏览器 Web服务器 以及一个应用层协议(HTTP)组成。
电子邮箱组成部分:能容纳邮箱的邮件服务器 允许用户读取和生产邮件的邮件客户程序 定义电子邮件报文结构的标准 定义报文如何在服务器之间以及如何在服务器与邮件客户端之间传递的应用层协议 定义如何对报文首部的内容进行解释的应用层协议。
SMTP(简单邮件传输协议 RFC【5321】)
2.2
Web的应用层协议是HTTP。HTTP由两个程序实现,一个客户程序一个服务器程序。运行在不同的端系统中,通过HTTP报文进行会话。HTTP定义和报文结构和报文交换的方式
HTTP客户首先发起一个与服务器的TCP连接,一旦建立连接,该浏览器和服务器进程就可以通过套接字接口访问TCP。一旦客户向它的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入TCP的控制。
HTTP不用担心数据丢失 故障恢复细节 因为这是TCP以及协议栈较低层关注的东西。(这是分层体系结构最大的优点)
HTTP并不保存关于客户的任何信息(包括客户的标识 状态之类的) 因此HTTP是无状态协议
非持续连接和持续连接
每个请求响应对是经一个单独的TCP连接发送 (非持续)
所有请求响应对是经相同的TCP连接发送(持续)
HTTP既能采用持续 也能采用非持续
上面的非持续连接的每个TCP只发送传输一个请求报文和一个响应报文。
在上面的描述中,没有说这10个jpg图片是使用串行TCP连接还是并行。事实上,现代浏览器大部分能并行打开5-10个TCP连接,并且可以设置数量。
往返时间RTT:一个短分组从客户端到服务器然后再返回客户端所花费的时间。
包括:传播时延 路由器和交换机的排队时延 分组处理时延。
2.2.4 2.2.5 2.2.6先不看
2.3 文本传输协议FTP
HTTP 和FTP 都是文件传输协议,并且有很多共同的特点,例如,它们都运行在 TCP上。
这两个应用层协议也有一些重要的区别。其中最显著的就是FTP使用了两个并行链接,一个是数据连接,一个是控制连接。
因为FTP协议使用一个独立的控制连接,所以我们也称FTP的控制信息是带外(out-of-band)传送的。如你所知,HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的。因此,HTTP也可以说是带内(imn-band)发送控制信息的。
2.4因特网中的邮件 SMTP POP3 IMAP 先不看
2.5 DNS 因特网的目录服务
第三章 运输层
3.1
.运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信功能。
运输层报文段:报文在运输层的格式
为了简化术语:运输层的报文段称为报文的 TCP称为报文段 UDP称为数据报 本书统称为报文段
IP协议的服务模型是尽力而为之交付。 尽最大的努力交付 不保证安全和可靠性 因此是不可靠服务
将主机间交付扩展到进程间交付,称为运输层的多路复用和多路分解
UDP和TCP都可以在报文段首部添加差错检测字段提供完整性检查 进程间数据交付和出错检测是最低限度的运输层服务。
TCP提供了附加功能 如可靠数据传输 拥塞控制
如果同时运行了多个进程 从网络层来的数据会根据套接字的标识符和报文的字段来确定运输给哪个进程。
将运输层报文段中的数据交付到正确的套接字的工作称为多路分解
将源主机耳朵不同套接字中收集到的数据块加上首部信息生成报文段然后将报文的传递到网络层的工作称为多路复用。
多路复用的要求:套接字有唯一标识 每个报文的有特殊的字段指示该报文所要交付的套接字
特殊字段就是源端口号字段和目的端口号字段
端口号是16比特的数字 范围0-65535 其中0-1023是周知端口号(给HTTP FTP之类的使用)
UDP基本就是上面的几步 但是TCP更复杂。
无连接的多路复用与多路分解
典型的情况 服务端只分配一个端口号 客户端让运输层自动的分配多个端口号
主机A端口号19157 主机B端口号为46428 主机A运输层创建一个运输层报文段(包括应用程序数据、源目的端口号和其他两值(还没学)) 运输层生成的报文段传输到网络层 网络层将其封装到IP数据报 尽力而为交给接收主机(IP尽力而为 UDP的不可靠是因为IP) 报文段到达主机B 一步一步解开
UDP套接字由目的IP和目的端口的二元组全面标识
两个UDP报文有不同IP端口 相同目的IP端口会被定向到同一个套接字
面向连接的多路复用和分解
TCP的套接字是四元组(源IP 源端口 目的IP 目的端口)
两个TCP报文有不同IP端口 相同目的IP端口会被定向到不同的套接字
一台主机可以支持很多TCP套接字 一个套接字与一个进程想联系 (多对一)
计算机组成原理