1.OSI七层协议及TCP/IP四层协议

七层协议:物、数、网、传、会、表、应

  • 物理层 RJ45
  • 数据链路层 PPP,IEEE 802.3/802.2
  • 网络层 IP,ARP ICMP
  • 传输层 TCP,UDP
  • 会话层
  • 表示层 TIFF,GIF,JPEG,
  • 应用层 DNS,HTTP,FTP

2.TCP/UDP的区别和应用场景

区别

TCP,全称:传输控制协议,面向连接的安全的流式传输协议
UDP,全称:用户数据报协议,面向无连接的不安全的报式传输协议

  • 连接
    • TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。
    • UDP无连接。
  • 服务对象
    • TCP是点对点的两点间服务,即一条TCP连接只能有两个端点
    • UDP支持一对一,一对多,多对一,多对多的交互通信。
  • 可靠性
    • TCP是可靠交付:无差错,不丢失,不重复,按序到达。
    • UDP是尽最大努力交付,不保证可靠交付。
  • 拥塞控制,流量控制
    • TCP有拥塞控制和流量控制保证数据传输的安全性。
    • UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。

3.TCP三次握手及三次缘由

  • 为什么TCP三次握手,不能两次或者四次吗?

    • 三次握手是为了防止,客户端的请求报文在网络滞留,客户端超时重传了请求报文,服务端建立连接,传输数据,释放连接之后,服务器又收到了客户端滞留的请求报文,建立连接一直等待客户端发送数据。
    • 服务器对客户端的请求进行回应(第二次握手)后,就会理所当然的认为连接已建立,而如果客户端并没有收到服务器的回应呢?此时,客户端仍认为连接未建立,服务器会对已建立的连接保存必要的资源,如果大量的这种情况,服务器会崩溃。
    • 服务器端给客户端发送同步及确认报文时可以合并,四次会浪费时间
  • 序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。

  • 确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。

  • 数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。

  • 确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。

  • 同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。

  • 终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。

  • 窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。

4. TCP 流量控制

流量控制是为了控制发送方发送速率,保证接收方来得及接收。

接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

5. http协议有哪些请求方法,有什么区别

GET

获取资源 当前网络请求中,绝大部分使用的是 GET 方法。

获取报文首部 和 GET 方法类似,但是不返回报文实体主体部分。

主要用于确认 URL 的有效性以及资源更新的日期时间等。

POST

传输实体主体 POST 主要用来传输数据,而 GET 主要用来获取资源。

PUT

上传文件
由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。

6.文件描述符

应用程序进程拿到的文件描述符ID == 进程文件描述符表的索引,通过索引拿到文件指针,指向系统级文件描述符表的文件偏移量,再通过文件偏移量找到inode指针,最终对应到真实的文件

当一个应用程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。POSIX标准要求每次打开文件时(含socket)必须使用当前进程中最小可用的文件描述符号

图片说明

7.http1.0和2.0的区别

  1. 1.0的解析是基于文本的 2.0解析采用的是==二进制格式==

  2. 2.0使用了==多路复用==技术,同一个连接并发处理多个请求。

  3. 头部数据压缩 在HTTP1.1中,HTTP请求和响应都是由状态行、请求/响应头部、消息主体三部分组成。一般而言,消息主体都会经过gzip压缩,或者本身传输的就是压缩过后的二进制文件,但==状态行和头部却没有经过任何压缩==,直接以纯文本传输。HTTP2.0使用HPACK算法对header的数据进行压缩,这样数据体积小了,在网络上传输就会更快。

  1. 浏览器从获取HTML开始,然后在它解析和评估页面的时候,增量地获取更多的资源。因为服务器必须等待浏览器做每一个请求,网络经常是空闲的和未充分使用的。

    ​ 为了改善延迟,HTTP2.0引入了server push,它允许服务端推送资源给浏览器,在浏览器明确地请求之前,免得客户端再次创建连接发送请求到服务器端获取。这样客户端可以直接从本地加载这些资源,不用再通过网络。

8.https加密过程

采用对称加密和非对称加密结合的方式保证通信安全。https是http报文将报文信息传输给ssl套接字进行加密,然后再发给tcp套接字,然后TCP套接字再将加密后的报文发送给目的主机,SSL解密后交给对应进程

在交换密钥阶段使用非对称密钥加密方式,之后建立通信交换报文阶段则使用对称密钥加密方式。

第一阶段 :认证服务器 浏览器内部保存受信任的ca证书列表,服务器提供经过认证的服务器证书,如果在浏览器端的列表中匹配成功的话,浏览器就会认为服务器是可信的,从服务器证书中取得公钥。

第二阶段:协商会话密钥 客户端生成两个会话密钥,即对称密钥,分别用于客户端向服务端发送数据和服务端向客户端发送数据

第三阶段: 加密通讯

9.使用线程时要注意的问题

1.

10.当网页加载很慢的时候,应如何分析其原因并解决问题?

http请求次数太多

资源过大,资源过多

JS脚本过大

网速慢

11.b/s和c/s架构选择哪一种

1.b/s架构优点
事务逻辑主要在服务端,客户端的升级维护成本较低,效率较高
2.c/s架构优点
客户端具有一定的处理数据和存储数据能力,必须在各地安装多个服务器,并在多个服务器之间进行数据同步

12.TCP报文头

图片说明

13.浏览器的缓存的过程?如何进行缓存的

图片说明
1、浏览器每次发起请求,都会先在浏览器缓存中查找该请求的结果以及缓存标识

2、浏览器每次拿到返回的请求结果都会将该结果和缓存标识存入浏览器缓存中

当浏览器向服务器发送请求的时候,服务器会将缓存规则放入HTTP响应的报文的HTTP头中和请求结果一起返回给浏览器,控制强制缓存的字段分别是Expires和Cache-Control,其中Cache-Conctrol的优先级比Expires高。