1、http1.0和http1.1的区别
① 1.1支持长连接和请求的流水线处理,在同一个TCP连接中可以传送多个HTTP请求和响应,多个请求和响应可以重叠;
1.0 短连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后,立即断开TCP连接,并且无记录。
② 1.1增加host字段
在1.0中认为每台服务器都绑定一个唯一的IP地址,请求消息中的URL并没有主机名(host),但是随着虚拟机技术的发展,一台物理机可以存放多个虚拟机,并且他们共享一个IP;
1.1的请求消息和响应消息都应支持Host头域,请求消息中如果没有Host头域会400报错。
③ 增加状态码100(contine)--节约带宽
客户端事先发送一个只带头域的请求,如果服务器拒绝请求,就回送响应码401,如果接受,则回送码100,客户端就可以继续发送带实体的完整请求。
④ 1.1 发送方将消息分割成若干个任意大小的数据块,每个数据块在发送时都附上块的长度,最后用一个零长度的块作为消息结束的标志,这种方法允许只发送消息里的一个片段。
⑤ 1.1增加cache属性。
http2比http1的优势
- http2采用二进制格式传输,而非http1文本格式,二进制格式在协议的解析和优化扩展上带来了很多优势
- http2对消息头采用Hpack进行压缩传输,节省网络流量,Http1每次请求都会携带冗余的头消息,浪费带宽资源
- http2采用Server Push,服务器能够更快的把资源推送到客户端
- 保持与http1语义的向后兼容性
http2头部压缩:一般而言,消息主题是经过gzip压缩的,或者本身就是压缩后的二进制文本(如图片、音频等),但是状态行和头部是没有经过任何压缩的,而是以纯文本的方式进行传输的。而随着web功能的复杂,请求数量越来越多,随之而来的就是头部流量的浪费,所以压缩头部,压缩方式就是HAPCK算法(客户端和服务器端分别缓存一份索引表,如果头部存在索引表中,则用对应的索引值;否则进行哈夫曼编码,加入索引表中)。
2、电子邮件协议
常用的电子邮件协议有:SMTP、POP3、IMAP4,他们隶属于TCP/IP协议,默认情况下,分别通过TCP端口25,110,143.
① SMIP协议(Simple Mail Transfer Protocol)简单邮件传输协议
它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。
它是事实上的E-Mail传输的标准
② POP协议
POP邮局协议负责从邮件服务器中检索电子邮件。
③ IMAP协议互联网信息访问协议是一种由于POP的新协议
3、线程和进程
进程
①在系统中能独立运行的活动实体,并作为资源分配的基本单位,它是由一组机器指令,数据和堆栈等组成的。
②进程的3个状态:就绪(程序已经获得除处理机之外的所有资源,等待分配处理机资源)、执行、等待(阻塞:进程在等待某种条件,在条件满足之前无法执行;他正等着输出一批数据)
③进程只能由父进程建立,系统中的所有进程形成一种进程树的层次体系
线程
①线程是进程内的一个相对独立的可执行的单元
②线程是被cpu调度的基本单元。所以,每个进程在创建时,需要同时为该进程创建一个或多个线程
③同一进程内的多个线程共享该进程的资源,但线程并不拥有资源,只是使用它们
重要区别:从逻辑角度来看,多线程的意义在于在一个应用程序中,有多个执行部分可以同时进行。但是操作系统并没有将多个线程看成多个独立的应用,来实现进程的调度和管理以及资源分配。
同一进程中线程共享哪些资源?
一般来说,如果某些资源不独享会导致线程运行错误,则该资源由每个线程独享
线程共享资源 | 线程独享资源 |
地址空间 | 程序计数器 |
全局变量 |
寄存器 |
打开的文件 | 栈 |
子进程 | 线程ID |
根据操作系统内核是否对线程可感知,可以将线程分为内核极线程和用户极线程
用户级线程:由应用程序所支持的线程实现,内核意识不到用户级线程的实现
内核级线程:内核支持的线程
什么时候用进程,什么时候用线程?
优先使用线程:
①需要频繁创建销毁,因为进程的创建销毁代价较大
②需要频繁切换,大量计算;因为线程的切换速度快
③并行操作,如C/S架构的S并发线程响应用户的请求
优先使用进程:
①弱相关的处理
“消息收发”和“消息处理”就是弱相关的任务,“消息处理”可能有消息解码、业务处理。这两个任务相关性就强多了
4、进程和程序区别
①程序是静态的,进程是动态的;程序是有序代码的集合,进程是程序的执行
②程序是永久的,进程是短暂的;进程是一个状态变化的过程
③组成不一样,进程的组成包括程序,数据和进程控制块