月黑雁飞高,计网全知道——精选22道计网面试题目

文章目录

  • 计算机网络知识
      • 1、HTTP协议版本
      • 2、HTTP的几种请求方法用途
        • 2.1 HTTPS
        • 2.2 HTTP报文的组成部分
          • 2.2.1 请求报文
          • 2.2.2 响应报文
        • 2.3 Https和Http对比
      • 3、从浏览器输入url到显示页面的步骤
      • 4、三次握手与四次挥手
        • 三次握手:SYN、ACK
        • 四次挥手
      • 5、web性能优化技术
      • 6、网站性能优化
      • 7、Http状态码以及含义
      • 8、cookies、sessionStorage和localStorage的区别
      • 9、多域名存储网络资源的好处
      • 10、浏览器生成http请求消息
      • 11、OSI模型
      • 12、TCP/IP模型
      • 13、UDP
      • 14、TCP
        • 14.1 标识符
        • 14.2 TCP拥塞控制
      • 15、安全问题CSRF和XSS
        • 15.1 CSRF:跨站请求伪造
        • 15.2 XSS:跨域脚本攻击
        • 15.3 两者的区别
      • 16、cookie
        • 16.1 cookie原理
        • 16.2 cookie的属性
      • 17、token
      • 18、cookie,session,token
      • 19、URI
      • 20、三大交换方式:
      • 21、时延
      • 22、WEB页面请求过程:
      • 最后

计算机网络知识

1、HTTP协议版本

  • http 0.9
    • 只有一个GET命令,服务器只能回应HTML格式的字符串
  • http 1.0
    • 引入了POST和http数据头部
    • 每个TCP请求只能发送一个请求,发送数据完毕后,连接就关闭
    • 头信息是ASCII码,后面数据可为任何形式,服务器回应时会告诉客户端,数据是什么格式,即Content-Type字段的作用
  • http 1.1
    • 新增方法PUT、PATCH、OPTIONS、DELETE
    • 引入了持久连接,即TCP连接默认不关闭,可以被多个请求复用。
    • 同一个TCP连接中,所有数据通信都是依次进行,容易造成队头阻塞
  • http 2.0
    • 头信息和数据体都是二进制,称为头信息帧和数据帧
    • 复用TCP连接,在同一连接中,客户端和浏览器都可以同时发送多个请求或者回应,且不用按照顺序一一对应,避免了“队头堵塞”,此时双向的实时通信称为多工
    • 引入头信息压缩机制;客户端和服务器同时维护一张头信息表,所有字段都会存入这个表生成一个索引号,不发送同样字段只发送索引号,提高速度。
    • 允许服务器未经请求、主动向客户端发送资源,即服务器推送

http1.0和http1.1的区别

  • 长连接:http1.1支持长连接和请求的流水线处理
  • 缓存处理:http1.1引入更多缓存控制策略
  • 带宽优化和网络连接使用
  • 错误通知的管理
  • Host头处理

2、HTTP的几种请求方法用途

  • GET:发送一个请求来获取服务器上的某一些资源
  • POST:向URL指定的资源提交数据或附加新的数据,没有指定资源在服务器的位置
  • PUT:可以向服务器提交数据,并指定了资源在服务器的位置
  • HEAD:请求页面的首部
  • DELETE:删除服务器上的某西苑
  • OPTIONS:用于获取当前URL所支持的方法,请求成功后会在Allow的头包含类似GET、POST等信息
  • TARCE:用于激发一个远程的应用层的请求消息回路
  • CONNECT:把请求连接转到TCP/TP通道

GET和POST的区别

  • GET用于信息获取,使用URL传递参数,发送信息的数量有限
  • POST是用于修改服务器上的资源

HTTP协议的主要特点

  • 简单快速
  • 灵活可扩展
  • 无连接
  • 可靠传输

HTTP缺点

  • 无状态
  • 明文传输
  • 队头阻塞

2.1 HTTPS

​ HTTP协议是承载与TCP协议上的,在HTTP和TCP之间添加一个安全协议,SSL或者TSL,就是HTTPS

2.2 HTTP报文的组成部分

2.2.1 请求报文
  • 请求行
    • 请求方法
    • 请求URL
    • HTTP协议以及版本
  • 请求头
    • 一堆键值对
  • 空行
    • 表明后面的内容是请求体
  • 请求体
    • 请求数据
2.2.2 响应报文
  • 状态行
    • HTTP协议和版本
    • 状态码
    • 状态描述
  • 响应头
  • 空行
  • 响应体

2.3 Https和Http对比

  • 传输方式

    • http传输方式:明文传输、网站或相关服务与用户之间的数据交互无加密,容易被监听,篡改
    • https传输方式:在HTTP加入了SSL层,用户数据传输加密
  • 身份认证

    • http:无身份认证,用户无法通过http辨认出网站的真实身份
    • https:经过CA多重认证,包含域名管理权限认证等
  • 成本

    • http:无任何使用成本,所有网站默认都是http模式
    • https:需要成本,需要申请SSL整数来实现https
  • 连接端口

    • http:80
    • https:443

3、从浏览器输入url到显示页面的步骤

  • 浏览器查找域名的IP地址:
    • 查找浏览器缓存:DNS记录
    • 查找系统缓存:hosts文件
    • 查找路由器缓存:DNS缓存
    • 递归查询
    • 迭代查询
  • 浏览器与目标服务器建立TCP连接
    • 通过DNS解析找到IP地址建立TCP连接
    • 三次握手
  • 浏览器通过http协议发送请求
    • 浏览器向主机发送一个HTTP—GET方法报文请求。
  • 某些服务器会做永久重定向响应
    • 重定向的作用:为了负载均衡或者导入流量,提高SEO排名,利用一个前端服务器接受请求,然后负载到不同的主机上,可以大大提高站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;
  • 浏览器跟踪重定向地址
  • 服务器处理请求
  • 服务器发送一个HTML响应
  • 释放TCP连接
  • 浏览器显示页面
  • 浏览器发送获取嵌入在HTML中的其他内容

4、三次握手与四次挥手

三次握手:SYN、ACK

  • 建立连接时,客户端发送SYN包到服务器,并进去SYN_SENT状态,等待服务器确认,其中SYN就是同步序列编号

  • 服务器收到SYN包,必须确认客户的SYN包,同时自己特发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态

  • 客户端接收服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

    第三次握手:防止失效的连接请求报文段被服务器端接收,从而导致错误

四次挥手

  • 主动关闭的一方,发送一个FIN传送数据,用来告诉对方,不会再给你主动发送数据了。此时主动关闭的一方还可以接受数据
  • 被动关闭放收到FIN包,发送ACK给对方,确认序号
  • 被动关闭放 发送一个FIN给关闭方,说不会再给你发送数据了
  • 主动关闭方收到FIN、发送给ACK,用来确认序号

5、web性能优化技术

​ 减少客户端忘了延迟和优化页面渲染性能来提升web性能

  • DNS查询优化
  • 客户端缓存
  • 优化TCP连接
  • 避免重定向
  • 网络边缘的缓存
  • 条件缓存
  • 压缩和代码极简化
  • 图片优化

6、网站性能优化

  • 内容方面:减少HTTP请求(合并文件、CSS精灵)减少DNS查询(DNS缓存,将资源分布到合适的数量的主机名)、减少DOM元素的数量
  • Cookie方面,减少其大小
  • css方面,将样式表放到页面顶部;不使用css表达式;压缩css,css从外部引入
  • 优化代码以及图片

7、Http状态码以及含义

  • 1XX 为信息状态码
    • 100 为继续,表示确认,成功返回具体参数信息
  • 2XX 成功
    • 200 正常返回信息
    • 201表示请求成功并且服务器创建了新的资源
    • 202 表示服务器已接收请求但尚未处理
  • 3XX 重定向
    • 301 永久重定向
    • 302 临时性重定向
    • 303 临时重定向,且总是使用GET请求新的URl
    • 304 自从上次请求后,请求的页面未修改过
  • 4XX 客户端错误
    • 404 未找到
    • 401 请求未授权
    • 403 禁止访问
  • 5XX 服务器错误
    • 500 常见的服务器错误
    • 503 服务器暂时无法处理请求,可能是过载或维护

8、cookies、sessionStorage和localStorage的区别

  • cookie是网站用来标识用户省份而存储在用户本地终端上的数据
  • cookie的数据始终在同源的http请求中携带,即使是不需要的情况,所以其会在浏览器和服务器中间来回传递
  • sessionStorage和localStorage不会自动把数据发送给服务器,仅仅在本地保存
  • 存储大小
    • cookie的数据大小不能超过4K,sessionStorage和localStorage可以达到5M或更多
  • 有限期时间
    • localStorage存储持久数据,浏览器关闭后数据不会丢失,除非主动删除
    • sessionStorage数据在当前浏览器窗口关闭后自动删除
    • 设置过cookie过期时间之前都有效,就算关闭窗口或者浏览器关闭

9、多域名存储网络资源的好处

  • CDN缓存更加方便
  • 突破浏览器并发限制
  • 节约cookie带宽
  • 节约主域名的连接数,优化页面响应速度
  • 防止不必要的安全问题

10、浏览器生成http请求消息

11、OSI模型

  • 物理层::考虑的是怎么在传输媒体上传输数据比特流,尽可能的屏蔽传输媒体和通信手段的差异。(中继器。)
  • 数据链路层:互联设备之间传送和识别数据帧(网桥)
  • 网络层:地址管理与路由选择(路由器)
  • 传输层:管理两个节点之间的数据传输(TCP、UDP)
  • 会话层:通信管理、负责奖励和断开通信连接
  • 表示层:设备固有数据格式和网络标准数据格式的转换
  • 应用层:对特定应用的协议(HTTP、FTP)

12、TCP/IP模型

  • 应用层:决定了想用户提供应用服务时通信的活动(HTTP、FTP)
  • 传输层:对应上层应用层,提供处于网络连接中两台计算机之间的数据传输(TCP、UDP)
  • 网络层:用来处理网络上流动的数据包(因特网协议IP)
  • 链路层:用来处理连接网络的硬件部分(以太网、WI-FI)

13、UDP

  • UDP面向报文的协议,不会对报文进行任何拆分和拼接操作,头部只有8字节
  • 是无连接的、不可靠的、没有拥塞控制、会出现丢包

14、TCP

  • 是基于连接的协议、头部20字节
  • 全双工,双向传输
  • j基于字节流、不限制数据大小,打包成报文段,保证有序接收、重复报文自动丢弃
  • 有拥塞控制,用来处理双方处理能力的不匹配
  • 拥有可靠的传输服务,保证可达,丢包时通过重发机制实现可靠性
  • Sequence number 序号保证TCP传输的报文是有序的
  • Window Size 表示窗口大小,还能接受多少字节的数据
  • Acknowledgement Number 表示上一个序号的数据以及接受到,接收端希望接受的下一个字节编号是多少

14.1 标识符

  • ACK=1 表示确认号字段有效
  • SYN=1 ACK=0 表示当前报文段是一个连接请求报文
  • SYN=1 ACK=1 表示当前报文段是一个统一建立连接的应答报文
  • FIN=1 表示此报文段是一个释放连接的请求报文
  • URG 紧急值有效
  • RST 重置连接
  • PSH 接收方应该尽快将这个报文交给应用层

14.2 TCP拥塞控制

拥塞窗口

慢启动阈值

15、安全问题CSRF和XSS

15.1 CSRF:跨站请求伪造

  • CSRF攻击:攻击者盗用了你的身份,以你的明细发送恶意请求

  • CSRF原理:登录受信任的网站A,在本地生成cookie,在不登出A的情况下,访问危险网站B

  • CSRF防御方式

    • Token验证(使用最多)
      • 服务器发送给客户端一个token
      • 客户端提交的表单中带有这个token
      • 如果这个token不合法,那么服务器就拒绝这个请求
    • 隐藏令牌
      • 把token隐藏在http的head头中
    • Referer验证
      • Referer指的是页面请求来源,只接受本站的请求,服务器才做响应,如果不是就拦截

15.2 XSS:跨域脚本攻击

​ xss是一种发生在web前端的漏洞,恶意攻击者王web页面里插入恶意的script代码,在浏览器中运行scrip代码。达到恶意攻击用户的目的。

  • xss攻击:需要向web页面注入恶意代码、这些恶意代码被浏览器成功执行
  • xss攻击方式
    • 反射型:发送请求时,xss代码出现在url中,作为输入提交到服务器端,服务器端解析后相应,XSS代码随着相应一起传给浏览器,最后在浏览器解析执行XSS代码。
    • 存储型:提交的代码会存储在服务器端(数据库、内存、文件系统)下次请求目标页面时不用再提交xss代码

15.3 两者的区别

  • CSRF需要先登录,获取COOKIE,然后利用网站本身的漏洞去请求网站的api
  • XSS不需要登录,直接向网站注入JS代码,篡改网站的内容

16、cookie

​ cookie是网站为了辨别用户身份,进行session跟踪而存储在用户本地终端的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息

  • 存储在用户本地终端上的数据

  • 用来辨别用户身份

  • 保存在用户本地终端

    cookie的作用就是解决如何记录客户端的用户信息

16.1 cookie原理

​ 浏览器第一次请求服务器,服务器响应请求中携带cookie,给浏览器,后续浏览器再携带cookie给服务器,服务器根据cookie判断用户,也可以修改cookie的内容

16.2 cookie的属性

​ Name、Value、Domain、Path、Expires/Max-Age、Size、HttpOnly、Secure、SameSite

  • HttpOnly

    这个属性设置为true时,就不能通过js脚本获取cookie的值,能够有效的防止xss的攻击

  • Secure

    标记为Secure的cookie只能被https协议加密过的请求发送给服务端。单也无法保证其安全保障

  • SameSite

    Cookie运行服务器要求某个cookie在跨站请求时不会被发送,从而可以阻止扩展请求伪造攻击(CSRF)

    • None:浏览器再同站请求、跨站请求下继续发送cookies,不区分大小写(所有三方请求都会携带cookie)
    • Strict:浏览器只在访问相同站点时发送cookie(所有第三方的连接都不会携带cookie)
    • Lax:Same-site cookie将会为一些跨站请求保留,如图片加载或frames的调用,单只有当用户才外部站点导航到URL时才会发送(只有同步且是get请求才可携带cookie)

17、token

​ token作为客户端的一个令牌,在第一个登陆的时候获取到,以后就不需要频繁访问数据库,查询用户密码。

  • 解决的问题:
    • Token完全由应用管理,所以它可以避开同源策略
    • Token可以避免CSRF攻击
    • Token可以是无状态的,可以在多个服务器间贡献
  • tocken的有点
    • 无状态,可扩展
    • 安全性
    • 多平台跨域
    • 基于标准

18、cookie,session,token

  • cookie:存放在客户端,用来保存客户端会话信息,安全性不能完成保证
  • session:放在服务器端,保存认证用户信息
  • token:是一种认证方式(是“令牌”的意思,主要是用于身份的验证方式)

19、URI

​ URL统一资源定位符,URI,统一资源标识符。URI用来区分网络上的不同资源

​ URI包含了URN和URL

20、三大交换方式:

  • 电话交换:建立专用的物理链路,始终占用;简单粗暴,资源利用率不高,
  • 报文交换:就是把整个报文完整的发送到链路中,在某个节点存储下来之后再发送到下一个节点。
  • 分组交换:将一个长报文先分割为若干个较短的分组,然后把这些分组(携带源、目的地址和编号信息)逐个地发送出去。

21、时延

时延=发送时延+传播时延+处理时延+排队时延。

  • 发送时延(传输时延):从开始发送数据帧,到数据帧发送完毕所需的全部时间。
  • 传播时延:发送端开始发送数据到接收端收到数据所需要的全部时间。(电磁波在信通中的时间)

22、WEB页面请求过程:

  • 向DNS服务器发送DNS查询报文来解析域名。
  • 开始进行HTTP会话,需要先建立TCP连接。
  • 在运输层的传输过程中,HTTP报文被封装进TCP中。HTTP请求报文使用端口号80,因为服务器监听的是80端口。连接建立以后,服务器会随机分配一个端口号给特定的客户端,以后的TCO传输都是使用这个端口号。
  • 在网络层的传输过程中,TCP报文段会被封装进IP分组中,IP分组经过路由选择,最后到底目的地。
  • 在链路层,IP分组会被封装进MAC帧中,IP地址解析成MAC地址需要使用ARP。
  • 客户端发送HTTP请求报文,请求获取页面。
  • 服务器发送HTTP相应的报文,客户端从而获取该页面。
  • 浏览器得到页面内容以后,解析并渲染,向用户展示页面。

最后

  • 如果觉得看完有收获,希望能给我点个赞,这将会是我更新的最大动力,感谢各位的支持
  • 欢迎各位关注我的公众号【java冢狐】,专注于java和计算机基础知识,保证让你看完有所收获,不信你打我
  • 如果看完有不同的意见或者建议,欢迎多多评论一起交流。感谢各位的支持以及厚爱。

你可能感兴趣的:(面试,网络,http,java,面试)