前端面试-网络知识点

分享下整理过的有关前端网络常见点。

HTTP协议

http工作过程

  1. 地址解析(输入域名,详细说明域名解析过程)
    1.1.查找浏览器缓存
    1.2 查看操作系统缓存
    1.3 查询本地DNS
    1.4 查询跟域名DNS
  2. 封装成http请求数据包
  3. 封装成tcp包,建立tcp连接(3次握手)
  4. 客户端发送请求
  5. 服务端响应
  6. 关闭tcp连接(4次挥手)
    6.1保持连接的方案:在请求/响应头中加入connection:keep-alive就可以保持连接状态

http组成

请求报文:请求行、请求首部(请求头)、空行、报文主体
在这里插入图片描述
响应报文:响应行、响应首部、空行、报文主体(HTTP要传输的内容)
在这里插入图片描述

http状态码

1xx协议处理的中间状态
 101:在HTTP省级为websocket是,如果服务器同意变更,就会发送状态码101
2xx成功
 200:请求被正常处理
 204:请求被受理但没有资源可以返回
 206:客户端只是请求资源的一部分,服务器只对请求的部分资源执行GET方法,相应报文中通过Content-Range指定范围的资源。
重定向就是指网页自动调整重定向
3xx重定向
 301:永久性重定向//301 表示资源已被分配了新的url
 302:临时重定向。//302 表示资源临时被分配了新的url
 303:与302状态码有相似功能,只是它希望客户端在请求一个URI的时候,能通过GET方法重定向到另一个URI上
 304:当客户端拥有可能过期的缓存时,会携带缓存的标识 etag、时间等信息询问服务器缓存是否仍可复用,而304是告诉客户端可以 复用缓存
 307:临时重定向,与302类似,只是强制要求使用POST方法
4xx客户端错误
 400:请求报文语法有误,服务器无法识别
 401:请求需要认证
 403:请求的对应资源禁止被访问
 404:服务器无法找到对应资源
5xx服务器错误
 500:服务器内部错误
 503:服务器超过最大负荷

常见http方法

 GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器
 POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式。
 PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置。
 HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效。
 DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件。
 OPTIONS:查询相应URI支持的HTTP方法
get和post的区别:长度(get受限实质)、幂等性(get是幂等的,post不是)、安全性(get比post安全)、缓存(get主动缓存)、tcp数据包个数(100 continue)

https

HTTPS=HTTP+加密+认证+完整性保护

与http区别

 HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头
 HTTP 是不安全的,明文传输,而 HTTPS 是安全的
 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
 HTTPS是构建在SSL/TSL之上的HTTP协议,HTTPS比HTTP要更耗费资源
 HTTP 无法加密,而HTTPS 对传输的数据进行加密
 HTTP无需证书,而HTTPS 需要CA机构颁发的SSL证书
在这里插入图片描述

https特点
  1. 通过抓包获取到的数据不是明文传输的
  2. 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  3. 验证身份:通过证书认证客户端访问的是自己的服务器
  4. 保护数据完整性:防止传输的内容被中间人冒充或者篡改
https工作原理
  1. 首先HTTP请求服务端生成证书,客户端对证书的有效期、合法性、域名是否与请求的域名一致、证书的公钥(RSA加密)等进行校验;
  2. 客户端如果校验通过后,就根据证书的公钥的有效,生成随机数,随机数使用公钥进行加密(RSA加密)
  3. 消息体产生的后,对它的摘要进行MD5(或者SHA1)算法加密,此时就得到了RSA签名;
  4. 发送给服务端,此时只有服务端(RSA私钥)能解密。
  5. 解密得到的随机数,再用AES加密,作为密钥(此时的密钥只有客户端和服务端知道)

http2->http1

HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能。
16. 多路复用
帧(frame) 代表最小的数据单位,每个帧会标识出该帧属于哪个流
流(stream) 是多个帧组成的数据流
多路复用,就是在一个TCP连接中可以存在多条流。换句话说,也就是可以发送多个请求,对端可以通过帧中的标识知道属于哪个请求。通过这个技术,可以避免 HTTP 旧版本中的队头阻塞问题,极大的提高传输性能。
17. 头部压缩
在 HTTP/1 中,我们使用文本的形式传输 header,在 header 携带 cookie 的情况下,可能每次都需要重复传输几百到几千的字节。
在 HTTP /2 中,使用了 HPACK 压缩格式对传输的 header 进行编码,减少了 header 的大小。并在两端维护了索引表,用于记录出现过的 header ,后面在传输过程中就可以传输已经记录过的 header 的键名,对端收到数据后就可以通过键名找到对应的值
18. 服务端push
在 HTTP/2 中,服务端可以在客户端某个请求后,主动推送其他资源。

TCP和UDP协议

TCP的三次握手和四次挥手

三次握手:
19. 客户端发送一个携带SYN标志位的包,请求建立连接。
20. 服务端响应一个携带SYN和ACK标志位的包,同意建立连接。
21. 客户端再发送一个携带ACK标志位的包,表示连接成功,开始进行数据输。

四次挥手:
22. 客户端发送一个携带FIN标志位的包,请求断开连接。
23. 服务器响应一个携带ACK标志位的包,同意客户端断开连接。
24. 服务器再发送一个携带FIN标志位的包,请求断开连接。
25. 客户端最后发送一个携带ACK标志位的包,同意服务器断开连接。

TCP进行通信过程

首先进行三次握手建立连接;然后把发送窗口调整到合适大小,既能避免网络拥塞,又能提高传输效率;在传输过程中,发出去的每个包都会得到对面的确认,当运送的数据包丢失时,可以执行超时重发,当数据包乱序时,通过数据包中的序号可以按顺序排序,同时也能丢弃重复包;再根据端口号将数据准确传送至通信中的应用程序,端口号相当于程序地址;待所有数据安全送达后,执行四次挥手断开连接。

TCP与UDP区别

  1. TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。
  2. UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

TCP拥塞控制

在某段时间内,若对网络中某一资源的需求超过了该资源所能提供的可以部分,网络性能就要变坏,这种情况叫做网络拥塞。
TCP四种拥塞控制算法:慢开始、拥塞避免、快重传、快恢复

TCP队头阻塞和http队头阻塞

TCP队头阻塞:TCP数据包是有序传输,中间一个数据包丢失,会等待改数据包重传,造成后面的数据包阻塞。
HTTP队头阻塞:Http1.x采用长连接,可以在一个Tcp连接上,发送多个http请求。
有管道话和非管道化两种方式。
28. 管道化:请求可并行发出,但想要串行返回,后一个响应必须在前一个响应之后
29. 非管道化:完全串行执行,请求->响应->请求->响应…后一个响应必须在前一个响应之后发送

解决http队头阻塞的方法:
30. 并行TCP连接(浏览器一个域名采用6-8个tcp连接,并发http请求)
31. 域名分片(多个域名,可以建立更多tcp连接,提高http请求的并发)
32. http2方式:http2使用一个域名单一连接发送请求,请求包被二进制分帧,不同请求可以互相穿插,避免http层面的请求队头阻塞,但不能避免tcp层面阻塞。

其他

网络分层中的七层模型?

物理层-数据链路层-网络层-传输层-会话层-表示层-应用层

ISO各层协议

 物理层:RJ45、CLOCK、IEEE802.3
 数据链路层:PPP、MAC、VLAN
 网络层:IP、ICMP、OSPF、ARP
 传输层:TCP、UDP
 会话层:SQL、RPC、NFS
 表示层:JPEG、MPEG
 应用层:FTP(21)、DNS53、Telnet23、SMTP25、HTTP80、NFS

轮询、长轮询、长连接、websocket

  1. 短轮询:浏览器每隔一段时间向浏览器发送http请求,服务器在收到请求后,不论是否有更新,直接响应
  2. 长轮询:ajax实现,当服务端收到客户端请求后,不会直接响应,而是先挂起,判断服务端数据是否有更新
  3. 长连接:H5新增,允许服务端推送数据到客户端
  4. websocket:H5新协议,可实现客户端与服务端之间的全双工通信

浏览器中输入url到网页显示,整个过程发生了什么(一次完整的HTTP事物是个怎样过程)

域名解析——发起TCP三次握手——建立TCP连接后发起http请求——服务器响应http请求,浏览器得到html代码——浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)——浏览器对页面进行渲染呈现给用户

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值