笔记——计算机原理大总结

1、计算机网络模型

  1. 物理层 :底层数据传输
  2. 数据链路层:定义数据的基本格式
  3. 网络层:定义IP地址,定义路由功能,如不同设备的信息转发,提供主机间的逻辑通信
  4. 传输层:端到端数据传输的基本功能,如TCP , UDP,提供进程间的通信
  5. 会话层:控制应用程序之间的通讯功能,如  将数据分配给不同的软件
  6. 标识层:数据格式标准,定义加密,压缩等
  7. 应用层:各种应用软件

2、DNS :Domain Name System  域名系统

为了能够使用户不至于去记忆复杂的ip地址,更方便的通过域名来访问互联网,通过主机名,来获得主机的IP地址这个过程,就叫做域名解析

DNS解析过程:

  1.  首先访问本地浏览器的缓存,如果缓存中存有域名所对应的ip地址,直接访问即可
  2. 如果本地浏览器没有缓存,则寻找硬盘中的host文件
  3. 硬盘host文件中没有,浏览器发送一个DNS请求到本地DNS服务器,如本地的联通,移动等,访问它们的缓存,有则返回,无则访问DNS根服务器(以递归的方式)
  4. 根域名服务器得到请求之后,不会直接返回域名与ip地址之间的对应关系,而是将相对应的域名解析器的地址告诉给本地DNS服务器,由本地DNS服务器再去访问。
  5. 最终得到域名与ip地址之间的对应关系,将其返回给客户端,并缓存,方便下次使用

DNS查询方式:

  1. 递归解析:由本地DNS服务器向根域名服务器(如.com)查询,然后根域名服务器再向下一级级查询,最后将解析结果返还给本地DNS服务器
  2. 迭代解析:浏览器发送请求给本地DNS服务器,但是本地DNS服务器不是自己向下查询的 ,而是将根域名服务器的地址交给客户端,让客户端浏览器自己访问根域名服务器(自力更生型,只是帮忙找到可以解析的服务器的地址,而不会帮助查询出最后的结果)

DNS负载均衡:

        当一个域名非常火的时候,每个时间点都有大量的人去访问它,所以它的压力会非常大。为了解决这个问题,采用了这个负载均衡的技术:为同一个主机名分配多个ip地址,在应答DNS服务器的查询请求时,按照一定的顺序按个返回ip地址,将客户端的访问引导到不同的主机上,使不同的客户端访问不同的服务器。

域名解析时,使用的时UDP协议,因为它比较快;而区域传送用TCP协议,安全且准确。

3、HTTP   未完待续~~

       3.1 http的请求方法有:

  1. get:向服务器请求一定的资源
  2. post:传输实体,向服务器传输信息
  3. head:获取报文的头部,确认url信息的准确性和资源更新的时间
  4. options:查询支持的方法 :将返回 post,get ,delete,head 等信息
  5. put:上传文件,但是没有身份验证功能,任何人都能上传,故一般不使用
  6. peach :对资源进行部分修改,put也能做到,但是是覆盖行的 ,peach可以做到部分修改
  7. delete:删除文件,也不带身份验证功能
  8. connect:使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。

        3.2 get  与  post 的区别

  1. 传输内容方面,get请求使用url或Cookie传参,而post将数据存放到body中进行数据传输
  2. 安全方面,get请求传送的参数直接显示在路径上,而post的数据在地址栏不可加,故更安全
  3. 传送数据大小方面,get请求能够传输的数据较小,最多2K,而post的数据可以非常大
  4. 数据类型:get请求只能传输ASCII字符,post无限制。
  5. 本质区别:get请求是幂等性的,从一次和多次请求某一个资源应该具有同样的副作用。意味这对同一个URL的多个请求应该返回相同的结果。(如使用get请求提交数据时,多次刷新,可能会造成数据的多次提交。为了防止这个错误的发生,可以为每次操作都生成一个ticked_id值,一个ticked_id表示操作至多运行一次

       3.3Cookie 与 Session

相同之处:都是用来跟踪浏览器用于身份的会话方式

不同之处:

  1. 存储位置:Cookie值存储在客户端,Session存放在服务器上
  2. 安全性:Cookies放在本地,不如存放在服务器端的Session安全
  3. 容量方面:大量的Session存放在服务器端的时候,访问多,会比较占用服务器的性能。如果为了减轻服务器的压力,可以使用Cookies。大型网站,不建议将用户数据全部存放Session
  4. 容量限制:单个Cookie在客户端的限制是3K,session没有这个限制

3.4 HTTP1.0 \ HTTP1.1  \ HTTP 2.0 的区别

1.0与1.1的区别

  1. 长连接 : http1.1支持长连接和请求的流水线处理,在一个TCP连接上可以处理多个请求和相应,减少了建立和关闭链接的消耗和延迟。
  2. 节省带宽:1.0中存在着浪费带宽的现象,比如客户端只需要对象的一部分数据,但是服务器往往将整个对象都传输过来,并且不支持断点续传的功能。1.1中支持只发送header信息
  3. HOST域:在1.0中,默认每台主机都有一个自己的IP地址,所以在url中不需要传递主机名,1.0中没有host。随着虚拟主机的发展,每台物理服务器可以存在多个虚拟主机,共享同一个IP地址,所以在1.1中,请求和响应消息都得支持host域
  4. 缓存处理:1.0中主要使用header的if-Modified-Since,Expires来作为缓存判断的标准,1.1中引入了更多的缓存控制策略 : 如:
  5. 错误通知的管理:1.1中新增了24个错误相应码:如409表示请求的资源与资源当前状态冲突,410表示服务器上的某个资源被永久性删除

1.1与2.0的区别

  1. 多路复用:2.0采用了多路复用,做到一个链接并发处理多个请求,并发请求的数量比1.1大了好几个数量级
  2. 头部数据压缩: 在1.1中,头部数据由状态行、响应/请求头部、消息主体三部分组成。一般上,消息主体被压缩,但是状态行和头部消息未被压缩,随着web功能变得更加复杂,每个页面的请求次数增加,导致消耗在头部的数据更加多。2.0中对header进行了数据压缩,体积变小,在网络上的传输速度更快
  3. 服务器推送:在客户端请求之前发送数据。 1.0中,服务器必须等待浏览器的每一个请求确认之后,才可以发送数据。网络经常处于空闲和未被充分使用的状态。2.0中引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

3.5HTTPS

        HTTPS 并不是新协议,而是让 「HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信」。通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。

        http采用明文传输,内容可能被窃听,不安全;无法验证通信方的身份,不安全;无法证明报文的完整性,报文有可能被篡改。

        https的加密方式有两种:对称密匙加密,和非对称密匙加密。对称密匙加密速度快,但是无法安全地将密匙传送给通信方。非对称密匙加密时,使用公开的密匙对通讯信息进行加密,然后再使用私有密匙进行解密。

        加密之后,因为需要解密流程,所以速度下降,且数字证书的授权需要高额费用。

4、TCP

4.1TCP是什么

        TCP 传输控制协议  是一种面向链接的、可靠的、基于字节流的传输控制协议。

4.2TCP头部报文

  1.  源端口source port,2字节;
  2. 目标端口destination port ,2字节
  3. 序列号Sequence Number ,4字节,TCP连接中传送的字节流中的每一个字节都按顺序编号
  4. 确认号Acknowledge Number ,4字节,期待收到对方下一个报文段第一个数据字节的序号
  5. 数据偏移,4字节,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远
  6. 保留、占6位,保留为今后使用,但目前应置为0 。
  7.  TCP Flag(紧急URG,确认ACK,推送PSH,复位RST,同步SYN,终止FIN)1/0;
  8. 窗口:两字节,发送本报文段的一方的接收窗口(允许对方发送的数据量)
  9. 检验和,检验首部和数据两部分
  10. 紧急指针,在URG=1时有效,发送紧急数据的字节数(紧急数据末尾在报文段中的位置
  11. 选项:长度可变,最长4字节

4.3 TCP的三次握手,以及四次挥手

        三次握手:

  1. 初始状态,客户端处于关闭状态,服务端处于监听状态
  2. 第一次:客户端发送报文,同步序列号SYN = 1 ,和自身的序列号:seq = x ,到服务端,自身处于SYN_Send状态
  3. 第二次:服务器端收到报文,若同意链接,向客户端发送:SYN= 1 、 seq = y 、确认序列号 ack = x+1(下次期待收到的数据包),以及确认号ACK= 1,服务器端处于SYN_Receive状态
  4. 第三次,客户端收到服务端的SYN和ACK后,知道可以发送下一序列的数据包了,发送同步序列号ack = y+1 ,seq = x+1 , 以及确认号ACK= 1;客户端处于established状态。

        四次挥手(因为TCP链接是全双工通讯,所有每一方都得确认断开链接才行)

  1.    初始化阶段,二者都处于连接状态
  2. 第一次:客户端发起断开链接 ,告诉服务器端可以断开连接了 
  3. 第二次,服务端收到释放链接请求后,知道无数据需要接受,处于CLOSED_WAIT状态
  4. 第三次,服务端向客户端的所有数据都发送完毕,告诉客户端可以关闭接受数据连接了 ,服务端处于LAST_ACK状态,等待确认客户端时候收到了自己的请求
  5. 第四次,客户端收到后,发送ACK=1 , 确认收到,此刻有2ms的延迟。(服务器端若未收到,则再次发送断开链接请求

4.4 TCP粘包        

        TCP粘包,指的是发送方发送的若干数据到接收方接受时粘成一团,后一个数据包的头紧接着前一个包的尾。粘包现象主要是由TCP连接服用导致的,与数据包过大、流量控制、拥塞控制、接收端不及时接受缓冲区的包都有关系。TCP默认使用Nagle算法,此算法导致了粘包(上一个分组确认收到的时候,发送下一个分组;手机多个小分组,在下一个确认信息到达时,一起发送。

4.5 TCP如何保证可靠传输

  1. 拥塞控制:慢开始、拥塞避免、快重传、快恢复
  2. 流量控制:使用滑动窗口控制流量传输
  3. 确认与重传
  4. 数据校验
  5. 数据合理分片和排序

5  UDP与TCP

          UDP  是一个简单的面向数据报的运输层协议;UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。

5.1 UDP特点

  1. 无连接
  2. 面向报文
  3. 无拥塞控制
  4. 尽最大可能交付
  5. 支持一对一、一对多、多对一、多对多的交互通信
  6. 首部开销小

5.2 TCP的特点

  1. 面向连接的
  2. 提供可靠交付的服务
  3. 提供全双工通讯
  4. 面向字节流

5.2 UDP头部

        源端口、目标端口、长度(UDP首部和UDP数据的字节长度)、校验和(它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。)

    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值