前端面试题目整理——计算机网络基础篇(汇总)

思考:在浏览器中,一个页面从输入URL到加载完成,有哪些步骤?

  1. 域名解析(DNS协议,将符合人类记忆习惯的域名解析为计算机可理解的服务器的IP地址)
  2. 建立TCP连接,浏览器与服务器进行3次握手建立连接
  3. 浏览器发起http请求,发送请求数据
  4. tcp将http请求报文切割为报文段,并在各个报文上打上标记序号以及端口号,将每个报文段可靠地传给网络层
  5. ip协议在网络层通过ip地址找到mac地址(ARP协议,解析地址,根据通信方的ip地址反查出对应的MAC地址),在各个路由中间进行路由中转传送到数据链路层
  6. 服务器端在数据链路层收到数据,按数据链路层→网络层→传输层→应用层顺序逐层发送数据,期间,之前加在数据报上的报头信息被层层解析丢弃。
  7. 服务器响应http请求,发送响应数据
    …同上述过程发送
  8. 浏览器收到响应数据,渲染页面,解析收到的html、css和js文件等等

关于TCP/IP网络模型

  1. dns、http、tcp、ip协议等都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。
  2. 这里我们有必要先了解下TCP/IP协议族,通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的。
    TCP/IP模型包含四层结构:网络接口层(数据链路层)、网络层、传输层和应用层。

把TCP/IP层次化是有好处的。比如,如果互联网只由一个协议统筹,当某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。

前端面试题目整理——计算机网络基础篇(汇总)_第1张图片
TCP/IP 协议可以为各式各样的应用提供服务(所谓的everything over IP),同时
TCP/IP 协议也允许 IP 协议在各式各样的网络构成的互联网上运行(所谓的 IP over everything
前端面试题目整理——计算机网络基础篇(汇总)_第2张图片
3. 在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
传输层中有TCP协议与UDP协议。
网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

URL和URI的结构与区别

  1. URL(统一资源定位符)

统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址

URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下

schema://host[:port#]/path/.../[?query-string][#anchor]
scheme               指定低层使用的协议(例如:http, https, ftp)
host                   HTTP服务器的IP地址或者域名
port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/
path                   访问资源的路径
query-string       发送给http服务器的数据
anchor-             锚

以下为url的一个例子

http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff

Schema:                 http
host:                   www.mywebsite.com
path:                   /sj/test/test.aspx
Query String:           name=sviergn&x=true
Anchor:                 stuff
  1. URI(统一资源标识符)
  2. 区别

HTTP协议

  1. HTTP是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在Internet上进行数据的发送和接收。HTTP是一个基于请求/响应模式的、无状态的、连接持久的协议。
  2. 无状态意味着自身不会对请求和响应之间的通信状态进行保存。即每个请求都是独立的,服务器并不会保留上次请求的数据。
  3. 早期的http版本中,每进行一次http通信都要断开一次tcp连接,这无疑会增加通信的开销,特别是网络信息丰富多彩的今天,大量的图片请求将会造成巨大的通信开销。为了解决上述问题,加速页面加载,http/1.1提出了持久连接,只要任意一端没有明确提出断开连接,则保持tcp连接状态,连接开销由N个RTT时间减少到一个。
  4. 管线化。从前发送请求后需等待并收到响应,才能发送下一个请求,管线化技术出现后,不用等待就能并行发送多个请求。(这得益于持久连接的出现)
  5. HTTP请求的几种方式
  6. HTTP状态码
  7. HTTP报文

TCP和UDP协议

  1. tcp协议的三次握手和四次挥手探究
    假设两次握手,当失效的连接请求报文段突然又传送到服务端,它以为客户端又请求了,就发确认邮件到客户端,客户端一看,这不是我去年发的吗,就不理它了,服务器端却以为连接已经建立了,等等等,浪费服务器资源。
    网络TCP建立连接为什么需要三次握手而结束要四次

  2. udp协议(User Data Protocol,用户数据报协议)
    (1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
    (2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
    (3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
    (4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
    (5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
    (6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

  3. TCP与UDP的区别

    • 基于连接与无连接;
    • 对系统资源的要求(TCP较多,UDP少);
    • UDP程序结构较简单;
    • 流模式与数据报模式 ;
    • TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

DNS协议

SOCKET

socket是为了实现以上的通信过程而建立成来的通信管道,其真实的代表是客户端和服务器端的一个通信进程,双方进程通过socket进行通信,而通信的规则采用指定的协议。socket只是一种连接模式,不是协议,tcp,udp,简单的说(虽然不准确)是两个最基本的协议,很多其它协议都是基于这两个协议如,http就是基于tcp的,.用socket可以创建tcp连接,也可以创建udp连接,这意味着,用socket可以创建任何协议的连接,因为其它协议都是基于此的。

扩展:OSI七层协议

前端面试题目整理——计算机网络基础篇(汇总)_第3张图片
应用层:直接为用户的应用进程提供服务,如 HTTP、支持文件传输的 FTP 协议等

运输层:向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。复用就是多个应用层进程可同时使用下面运输层的服务。分用则是运输层把收到的信息分别交付给上面应用层中的相应的进程。运输层主要使用以下两种协议:1.传输控制协议TCP(数据传输的单位是报文段)2.用户数据报协议UDP(数据传输的单位是用户数据报),不保证提供可靠的交付,只能提供“尽最大努力交付”

网络层:使用无连接的网际协议 IP 和许多种路由选择协议。负责为分组交换网上的不同主机提供通信服务,把运输层产生的报文段或用户数据报封装成分组(也叫IP数据报或数据报)或包进行传送。网络层的另一个任务就是选择合适的路由

数据链路层(链路层):将网络层交下来的 IP 数据报组装成,在两个相邻结点(主机和路由器,或两个路由器)之间的链路上“透明”地传送帧中的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
(透明表示无论什么样的比特组合的数据都能够通过这个数据链路层)
如发现有差错,会简单的丢弃帧。如果需要改正错误,由运输层的 TCP 来完成。

物理层:传送数据的单位是比特。物理层的任务就是透明地传送比特流。
要考虑用多大的电压代表“1” 或 ”0”,以及接受方如何识别出发送方所发的比特。还要确定连接电缆的插头应当有多少根引脚以及各条引脚应如何连接。
当然,哪几个比特代表什么意思,则不是物理层所要管的。
请注意,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理媒体层当作第0层。
前端面试题目整理——计算机网络基础篇(汇总)_第4张图片
第2层(数据链路层)数据单元 PDU 的首尾都要加上控制信息。
物理层不需要加控制信息,但要注意传送比特流时应从首部开始传送。

安全问题

sql注入:利用引号截断sql语句
防御:用户输入进行过滤,sql语句预处理。

xss:理论上,所有可输入的地方没有对输入数据进行处理的话,都会存在XSS漏洞,漏洞的危害取决于攻击代码的威力,攻击代码也不局限于script(改变样式什么的)。(可以盗取用户cookie)
XSS攻击及防御
开发者对用户输入进行处理,个人不要随便点击连接。
vue、react等框架已经很好的预防了xss攻击,除非使用v-html将用户输入直接放到页面中。

csrf:伪造请求,冒充用户在站内的正常操作。
要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1.登录受信任网站A,并在本地生成Cookie。
2.在不登出A的情况下,访问危险网站B。

科普:对于XSS和CSRF你究竟了解多少
前端必须懂的计算机网络知识—(XSS、CSRF和HTTPS)
HttpOnly介绍以及防止XSS攻击时的作用(转)

【来源与参考】
上野宣, 于均良. 图解HTTP:HTTP[J]. 2014.
通信协议——Http、TCP、UDP
HTTP消息结构
关于 HTTP GET/POST 请求参数长度最大值的一个理解误区
面试题:OSI七层协议和TCP/IP四层协议
网络TCP建立连接为什么需要三次握手而结束要四次
面试题:TCP协议与UDP协议的区别
前端应该掌握的网络知识(一)

你可能感兴趣的:(面试)