【网络】计算机网络常见面试题 - 前端面试必备 - 吐血整理

文章目录

前端人员应该更加关注并深入了解应用层的知识

1. 参考模型

1. OSI 参考模型 七层

Open System Interconnection

  1. 物理层 利用物理传输介质为数据链路层提供物理连接。传递的数据是比特流,0101010100。
  2. 数据链路层 定义通过通信媒介互连的设备之间传输的规范;首先,把比特流封装成数据帧的格式,对0、1进行分组。电脑连接起来之后,数据都经过网卡来传输,而网卡上定义了全世界唯一的MAC地址。然后再通过广播的形式向局域网内所有电脑发送数据,再根据数据中MAC地址和自身对比判断是否是发给自己的。
  3. 网络层 寻址和路由; IP ; 广播的形式太低效,为了区分哪些MAC地址属于同一个子网,网络层定义了IP和子网掩码,通过对IP和子网掩码进行与运算就知道是否是同一个子网,再通过路由器和交换机进行传输。
  4. 传输层 为上层协议提供端到端的可靠传输;TCP、UDP 有了网络层的MAC+IP地址之后,为了确定数据包是从哪个进程发送过来的,就需要端口号,通过端口来建立通信
  5. 会话层 建立、断开和维护通信链接
  6. 表示层 数据格式转换、数据压缩和数据加密 HTML、MIME
  7. 应用层 (各种应用程序协议 HTTP、FTP、SMTP、POP3)为应用程序提供网络服务;最高层,面对用户,提供计算机网络与最终呈现给用户的界面
    在这里插入图片描述
    详细的见 科来网络通讯协议图 http://www.colasoft.com.cn/download/protocols_map.php

2. TCP/IP参考模型 四层

ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。

有四层五层两种说法
在这里插入图片描述
(知乎上的图,链接见文末)

  1. 数据链路层,也有称作网络访问层、网络接口层。他包含了OSI模型的物理层和数据链路层,把电脑连接起来。
  2. 网络层,也叫做IP层,处理IP数据包的传输、路由,建立主机间的通信。
  3. 传输层,就是为两台主机设备提供端到端的通信。TCP UDP
  4. 应用层,包含OSI的会话层、表示层和应用层,提供了一些常用的协议规范,比如FTP、SMPT、HTTP、DNS等。

在这里插入图片描述
(《图解TCP/IP》中的图)

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

2. 在浏览器中输入网址之后执行 会发生什么?

(1)从浏览器输入网址后,首先要经过域名解析,因为浏览器并不能直接通过域名找到服务器,而是通过IP地址找到对应的服务器,DNS将域名解析为IP地址;
(2)浏览器通过IP地址找到服务器,建立TCP连接,通过三次握手以同步客户端和服务端的序列号和确认号,并交换TCP窗口大小的信息;
(3)TCP三次握手结束后,开始发送HTTP请求;
(4)服务器处理请求,并返回HTTP响应报文;
(5)浏览器拿到响应文本HTML后,解析渲染页面;
(6)当数据传送完毕后,断开TCP连接。

在这里插入图片描述

在这里插入图片描述

3.URL和URI的区别?

URI(Uniform Resource Identifier) 统一资源标识符
URL(Uniform Resource Locator) 统一资源定位符

URI用字符串标识某一互联网资源,而URL表示资源的位置,URL是URI的子集。

URI的目的就是唯一标识互联网中的一份资源,具体可以用资源名称、资源地址等,但是资源地址是目前使用最广泛的,因此URL就容易和URI混淆。URI相当于抽象类,URL就是这个抽象类的具体实现类。

4. 关于HTTP协议

用于客户端与服务端通信的协议

4.1 为什么说HTTP协议是无状态协议?

HTTP协议是一种无状态协议,协议自身不对请求和响应之间的通信状态进行保存,即对发送过来的请求和响应都不做持久化处理,把HTTP协议设计的如此简单是为了更快地处理大量事务。

4.2 怎么解决HTTP协议无状态协议?Cookie

为了解决HTTP协议不能保存通信状态的问题,引入了Cookie状态管理。
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文的一个叫Set-Cookie的首部字段,通知客户端保存Cookie。
当下次客户端再往该服务端发送请求时,客户端会自动在请求报文中加入Cookie值发送出去,服务端发现客户端发来的Cookie后,会检查是哪一个客户端发来的连接请求,对比服务器上的记录,最后得到之前的状态信息。

4.3 HTTP 协议包括哪些请求方法?

GET:对服务器资源的简单请求
POST:用于发送包含用户提交数据的请求
PUT:传输文件
DELETE:发出一个删除指定文档的请求
HEAD:类似于GET请求,不过返回的响应中没有具体内容,用于获取报文首部
OPTIONS:返回所有可用的方法,检查服务器支持哪些方法
TRACE:发送一个请求副本,以跟踪其处理进程
CONNECT:用于ssl隧道的基于代理的请求

4.4 简述HTTP中GET和POST的区别

从原理性看:
根据HTTP规范,GET用于信息获取,而且应该是安全和幂等的
根据HTTP规范,POST请求表示可能修改服务器上资源的请求

从表面上看:
GET请求的数据会附在URL后面,POST的数据放在HTTP包体
POST安全性比GET安全性高

1、GET参数通过URL传递,POST放在Request body中。

2、GET请求会被浏览器主动cache,而POST不会,除非手动设置。

3、GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

4、Get 请求中有非 ASCII 字符,会在请求之前进行转码,POST不用,因为POST在Request body中,通过 MIME,也就可以传输非 ASCII 字符。

5、 一般我们在浏览器输入一个网址访问网站都是GET请求

6、HTTP的底层是TCP/IP。HTTP只是个行为准则,而TCP才是GET和POST怎么实现的基本。GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。但是请求的数据量太大对浏览器和服务器都是很大负担。所以业界有了不成文规定,(大多数)浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。

7、GET产生一个TCP数据包;POST产生两个TCP数据包。对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

8、在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。但并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。


传递数据的最大长度

GET 是通过URL提交数据,因此GET可提交的数据量就跟URL所能达到的最大长度有直接关系。

POST理论上讲是没有大小限制的,HTTP协议规范也没有进行大小限制,但实际上POST所能传递的数据量大小取决于服务器的设置和内存大小。

4.5 PUT和POST区别

PUT是幂等的,POST不是。

幂等是数学的一个用语,对于单个输入或者无输入的运算方法,如果每次都是同样的结果,则称其是幂等的。也就是说,如果一个网络重复执行多次,产生的效果是一样的,那就是幂等(idempotent)。

PUT请求:如果两个请求相同&#

  • 25
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值