栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【计算机网络】 ------ 前端面试必备 --- 复习专用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【计算机网络】 ------ 前端面试必备 --- 复习专用

目录
  • 1. HTTP协议
      • 1.1 常见的HTTP请求方法
      • 1.2 常见的HTTP状态码
      • 1.3 GET 和 POST请求的区别
      • 1.4 HTTP 协议和 HTTPS 区别(必考)
      • 1.5 HTTP请求 / 响应报文是什么样的
      • 1.6 HTTP1.0 和 HTTP1.1 区别 HTTP1.1 和 HTTP2.0 区别
      • 1.7 HTTP缓存(强缓存协商缓存)
      • 1.8 当在浏览器中输入网址并按下回车发生什么
  • 2. HTTPS协议
      • 对称加密 / 非对称加密
  • 3. DNS域名解析的过程
  • 4. 网络模型
      • 4.1 OSI七层模型
      • 4.2 TCP/IP参考模型
  • 5. TCP与UDP
      • 5.1 TCP与UDP区别
      • 5.2 三次握手
      • 5.3 四次挥手
  • 6. 进程和线程
      • 6.1 进程和线程的区别
      • 6.2 死锁
  • 7. WebSocket

1. HTTP协议

HTTP超文本传输协议,是一种实现客户端和服务器之间通信的响应协议,是互联网应用最广泛的一种网络传输协议。

客户端(浏览器)会向服务器提交HTTP请求,然后服务器向客户端返回响应,其中响应包含有关请求的状态信息,还可能包含请求的内容。

1.1 常见的HTTP请求方法
  • GET: 从服务器上获取数据
  • POST:向服务器传送数据
  • PUT:上传文件,更新数据
  • DELETE:删除服务器上的对象
  • HEAD:与GET方法相同,但没有响应体,仅传输状态行和标题部分
  • OPTIONS:询问支持的请求方法,用来跨域请求
  • TRACE: 回显服务器收到的请求,主要⽤于测试或诊断
  • CONNECT:要求在与代理服务器通信时建立隧道,使用隧道进行TCP通信
1.2 常见的HTTP状态码

  • 2XX 成功
    200 OK 请求被正常处理
    204 No Content 请求已成功处理,但无资源返回
    206 Partial Content 进行范围请求,服务器只对请求的部分资源执行GET方法
  • 3××重定向
    301 Moved Parmanently 永久重定向 请求的资源已被分配了新的URL
    302 Found 临时重定向 请求的资源被临时定位到新的URL
    303 See Other 资源存在着另一个 URL,应使用 GET 方法获取资源
    304 Not Modified 浏览器缓存相关,发送附带条件请求时,条件不满足时返回,与重定向无关
  • 4××客户端错误
    400 Bad Request 请求报文语法有误
    401 Unauthorized 用户认证失败
    403 Forbidden 服务器拒绝请求
    404 Not Found 服务器没有找到请求的资源
  • 5××服务器错误
    500 服务器内部错误
    502 错误网关
    503 服务器正忙
1.3 GET 和 POST请求的区别

Post 和 Get 是 HTTP 请求的两种方法

  • get 是从服务器上获取数据(比如说请求一个网页的资源)
    post 是向服务器传送数据(比如注册用户这一类的操作)
  • get请求的数据会暴露在地址栏中,而post请求则不会
    get请求的数据会附在URL后面,post的数据放在HTTP包体
  • 安全性问题:post的安全性比get的高
  • get请求传输数据量小,post请求传输数据量大
1.4 HTTP 协议和 HTTPS 区别(必考)
  • HTTP协议是超文本传输协议,信息是明文传输的,HTTPS则是具有安全性的SSL加密传输协议
  • HTTP和HTTPS连接方式完全不同,端口也不同,HTTP协议端口是80,HTTPS协议端口是443
  • HTTP协议连接很简单,是无状态的;HTTPS协议是由SSL + HTTP协议构建的,可进行加密传输、身份认证的网络协议,比HTTP更加安全
  • HTTPS协议需要CA证书,费用较高;而HTTP协议不需要
1.5 HTTP请求 / 响应报文是什么样的

请求报⽂由4部分组成

  • 请求⾏:请求⽅法字段、URL字段、HTTP协议版本字段, ⽤空格分隔
  • 请求头部: 关键字/值对组成,每⾏⼀对, ⽤英⽂冒号:分隔
  • 空⾏
  • 请求体: post put等请求携带的数据

响应报文由4部分组成

  • 响应⾏:由网络协议版本,状态码和状态码的原因短语组成
  • 响应头:响应部⾸组成
  • 空⾏
  • 响应体:服务器响应的数据
1.6 HTTP1.0 和 HTTP1.1 区别 HTTP1.1 和 HTTP2.0 区别

HTTP 1.0和 HTTP 1.1 有以下区别

  • 连接方面:http1.0 默认使用非持久连接,而 http1.1 默认使用持久连接
  • 资源请求方面,http1.1 允许只请求资源的某个部分,即返回码是 206
  • 缓存方面,http1.1 引入了更多的缓存控制策略
  • http1.1中新增了host字段,用来指定服务器的域名
  • http1.1相对于http1.0新增了很多请求方法,如 PUT、HEAD、OPTIONS 等

HTTP 1.1 和 HTTP 2.0 的区别

  • 二进制协议:HTTP/2 是一个彻底的二进制协议
  • 多路复用: HTTP/2 实现了多路复用,避免了队头堵塞的问题
  • 数据流: HTTP/2 使用了数据流的概念
  • 头信息压缩: HTTP/2 引入了头信息压缩机制
  • 服务器推送: HTTP/2 允许服务器未经请求,主动向客户端发送资源
1.7 HTTP缓存(强缓存协商缓存)

哪些资源可以被缓存——静态资源(js、css、img)

HTTP缓存策略分为两种:强缓存和协商缓存,根据响应的 header 内容来决定

强缓存:直接从浏览器缓存过的本地读取资源,不会去请求服务器;
Expires 控制缓存过期,已被Cache-Control代替

协商缓存:在使用本地的缓存之前,先向服务器发一个请求,看当前浏览器缓存是否过期,如果没过期:返回304,使用本地资源,如果过期就去请求最新资源

1.8 当在浏览器中输入网址并按下回车发生什么
  1. 解析URL: 使用的传输协议和请求资源的路径
  2. DNS域名解析:DNS将域名解析为IP地址
  3. 浏览器通过IP地址找到服务器,建立TCP连接(三次握手)
  4. TCP三次握手结束后,开始发送HTTP请求
  5. 服务器处理请求,并返回HTTP响应报文
  6. 浏览器拿到响应文本HTML后,解析渲染页面
  7. 当数据传送完毕后,断开TCP连接(四次挥手)
2. HTTPS协议

HTTP超文本传输协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险;
HTTPS(超文本传输安全协议):经由HTTP进行通信,利用SSL/TLS来加密数据包,协议TLS/SSL具有身份验证、信息加密和完整性校验的功能;HTTPS的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性;

对称加密 / 非对称加密

TLS/SSL的工作原理
TLS/SSL(安全传输层协议) = 散列函数hash + 对称加密 + 非对称加密

  • 基于散列函数验证信息的完整性
    常见的散列函数有MD5、SHA1、SHA256
  • 对称加密算法采用协商的秘钥对数据加密
    常见的对称加密算法有AES-CBC、DES、3DES、AES-GCM等
  • 非对称加密实现身份认证和秘钥协商
    常见的非对称加密算法有RSA、ECC、DH等

HTTPS的缺点
(1)除了和TCP连接,发送HTTP请求外,还必须和SSL通信,因此通信慢;
(2)SSL必须进行加密处理,在服务器和客户端都需要进行加密和解密的运算处理,因此耗费更多硬件资源,过程复杂;
(3)申请SSL证书需要费用

3. DNS域名解析的过程

DNS (域名系统)提供的是一种主机名到 IP 地址的转换服务
作用: 将域名解析为IP地址,客户端向DNS服务器发送域名查询请求,DNS服务器告知客户端Web服务器的 IP 地址

  • 首先会在浏览器的缓存中查找对应的IP地址,如果查找到直接返回,若找不到继续下一步
  • 将请求发送给本地DNS服务器,在本地域名服务器缓存中查询,如果查找到,就直接将查找结果返回,若找不到继续下一步
  • 本地DNS服务器向根域名服务器发送请求,根域名服务器会返回一个所查询域的顶级域名服务器地址
  • 本地DNS服务器向顶级域名服务器发送请求,接受请求的服务器查询自己的缓存,如果有记录,就返回查询结果,如果没有就返回相关的下一级的权威域名服务器的地址
  • 本地DNS服务器向权威域名服务器发送请求,域名服务器返回对应的结果
  • 本地DNS服务器将返回结果保存在缓存中,便于下次使用
  • 本地DNS服务器将返回结果返回给浏览器
4. 网络模型 4.1 OSI七层模型

  • 应用层:HTTP(超文本传输协议),HTTPS,FTP(文件传输协议)、SMTP(简单邮件传输协议)
  • 传输层:TCP UDP
  • 网络层:IP协议层
4.2 TCP/IP参考模型

  • 物理层通过物理手段把电脑连接起来
  • 数据链路层则对比特流的数据进行分组
  • 网络层来建立主机到主机的通信
  • 传输层建立端口到端口的通信
  • 应用层最终负责建立连接,数据格式转换,最终呈现给用户
5. TCP与UDP

TCP和UDP是OSI模型中的运输层中的协议

  • TCP

TCP是一种面向连接的传输层协议,在传输数据之间必须先建立连接,数据传输结束后要释放链接。TCP提供可靠传输,它的可靠性体现在传输数据之前会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传输完断开连接

  • UDP(用户数据报协议)

UDP是面向无连接的,不需要在发送数据前进行三次握手建立连接,远程主机在收到UDP报文之后,不需要给出任何确认,虽然不可靠,但是高效,可用于即时通信

5.1 TCP与UDP区别
  • TCP面向连接,UDP是面向无连接(发送数据前不需要建立链接)
  • TCP可靠传输(数据顺序和正确性),使用流量控制和拥塞控制;UDP仅提供最基本的数据传输能力,无法保证可靠
  • TCP是一对一传输,UDP支持一对一、一对多、多对一和多对多的交互通信
  • TCP面向字节流,UDP面向报文
  • TCP数据传输慢,UDP数据传输快
  • TCP适用于要求可靠传输的应用(文件传输、远程登录);UDP适用于实时应用(视频会议、语音直播)
5.2 三次握手

三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。

刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态

  • 第一次握手:客户端向服务端发送连接请求报文段。该报文段中包含自身的数据通讯初始序号。请求发送后,客户端便进入 SYN-SENT 状态。

  • 第二次握手:服务端收到连接请求报文段后,如果同意连接,则会发送一个应答,该应答中也会包含自身的数据通讯初始序号,发送完成后便进入 SYN-RECEIVED 状态。

  • 第三次握手:当客户端收到连接同意的应答后,还要向服务端发送一个确认报文。客户端发完这个报文段后便进入 ESTABLISHED 状态,服务端收到这个应答后也进入 ESTABLISHED 状态,此时连接建立成功。

  • 第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。

  • 第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

  • 第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。
    因此,需要三次握手才能确认双方的接收与发送能力是否正常

5.3 四次挥手

刚开始双方都处于 establised 状态,假如是客户端先发起关闭请求:

  • 第一次挥手: 若客户端认为数据发送完成,则它需要向服务端发送连接释放请求
  • 第二次挥手:服务端收到连接释放请求后,会告诉应用层要释放 TCP 链接。然后会发送 ACK 包,并进入 CLOSE_WAIT状态,此时表明客户端到服务端的连接已经释放,不再接收客户端发的数据了。但是因为 TCP 连接是双向的,所以服务端仍旧可以发送数据给客户端
  • 第三次挥手:服务端如果此时还有没发完的数据会继续发送,完毕后会向客户端发送连接释放请求,然后服务端便进入 LAST-ACK 状态
  • 第四次挥手: 客户端收到释放请求后,向服务端发送确认应答,此时客户端进入 TIME-WAIT 状态。该状态会持续2MSL时间,若该时间段内没有服务端的重发请求的话,就进入 CLOSED状态。当服务端收到确认应答后,也便进入 CLOSED 状态

为什么握手要3次,挥手要4次?

  • 因为TCP是双工传输模式,不区分客户端和服务端,连接的建立是双向的过程。三次握手确认双方的接收能力和发送能力都正常,如果只有两次,无法做到双向连接的建立
  • 因为TCP的连接是全双工的,所以需要双方分别释放到对方的连接,单独一方的连接释放,只代表不能再向对方发送数据,连接处于的是半释放的状态。
6. 进程和线程

当我们启动某个程序时,操作系统会给该程序创建一块内存(当程序关闭时,该内存空间就会被回收),用来存放代码、运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫进程。
而线程是依附于进程的,在进程中使用多线程并行处理能提升运算效率,进程将任务分成很多细小的任务,再创建多个线程,在里面并行分别执行

6.1 进程和线程的区别

进程可以看做独立应用,线程不能

  • 根本区别:进程是CPU资源分配的最小单位,线程是CPU调度的最小单位。一个程序至少有一个进程,一个进程至少有一个线程。同一进程中的多个线程之间可以并发执行
  • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源
  • 资源开销:进程切换比线程切换的开销要大。线程可以看做轻量级的进程,线程切换开销较小
  • 包含关系:线程不能独立于进程而存在,通常一个进程都有若干个线程
  • 不同进程间数据很难共享,同一进程下不同线程间数据很易共享

进程之前的通信方式

  • 管道通信
  • 消息队列通信
  • 信号量通信
  • 共享内存通信
  • 套接字通信
6.2 死锁

死锁:多个进程在执行过程中,由于竞争资源而造成阻塞的现象,若无外力作用,它们都将无法继续执行

产生死锁的原因:竞争不可剥夺资源 、竞争临时资源、进程推进顺序不当
产生死锁的条件:互斥条件、请求和保持条件、不剥夺条件、环路等待条件

预防死锁方法:

  • 资源一次性分配:一次性分配所有资源,这样就不会再有请求了(破坏请求条件)
  • 只要有一个资源得不到分配,其他资源也不给了(破坏请保持条件)
  • 可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源(破坏不可剥夺条件)
  • 资源有序分配法:系统给每类资源赋予一个编号,进程则按照这些号码去请求获取资源(破坏环路等待条件)
7. WebSocket

WebSocket的出现,使得浏览器具备了实时双向通信的能力。
它最大的特点是:服务器可以向客户端主动推送消息,客户端也可以主动向服务器推送消息。

WebSocket是HTML5提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。基于TCP传输协议,并复用HTTP的握手通道。
浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。

优点
支持双向通信,更灵活,更高效,可扩展性更好。
更好的二进制支持

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号