概述
1、OSI 的七层模型分别是?各自的功能是什么?
层数 | 作用 | 传输数据的名称 |
---|---|---|
物理层 | 保证有物理上的连接的传输 | 比特流 (Bits) |
数据链路层 | 帧 (Frames) | |
网络层 | 提供点对点的服务,可以找到对方的IP,就是找到对方主机的位置 | 包 (Packages) |
传输层 | 从传递到主机变成可以传递到进程之间 | 段 (Segments) |
会话层 | ||
表示层 | ||
应用层 | 在隔绝下层的通信内容后,可以制作各种的应用 |
应用层
一、概述
应用层常见协议知道多少?了解几个?
应用层协议 | 传输层 | 端口 | 说明 |
---|---|---|---|
HTTP | TCP | 80 | 超文本传输协议 |
FTP | TCP | 23 | 文件传输 |
DNS | UDP | 53 | 域名服务器 |
SMTP | 465/994 | 邮件发送协议 | |
POP3 | 995 | 邮件接收协议,邮件存到本机,删除服务器上邮件 | |
IMAP | 993 | 邮件接收协议,邮件存到本机,不删除服务器上邮件 | |
BitTorrent | TCP/UDP | P2P的文件共享协议 | |
RTSP | TCP/UDP | 主要用于拉取视频流,用在VLC |
二、HTTP
1)HTTP基础
1.说一下一次完整的HTTP请求过程包括哪些内容?
- 建立客户端和服务器的连接
- 客户端发送消息给服务器
- 服务器给客户端发送应答消息
- 客户端收到消息,浏览器解析,给用户呈现
2.HTTP长连接和短连接的区别
HTTP1.0默认使用短连接,每次HTTP连接完成以后,都会自动断开,下一次连接的时候的时候又会重新建立,十分的花费时间
HTTP1.1默认使用长连接,也就是持久连接
其中HTTP1.1报文首部中使用Connection:Keep-Alive字段,指定使用了长链接
3.HTTP请求方法你知道多少?
方法 | 作用 | HTTP1.0 | HTTP1.1 |
---|---|---|---|
GET | 主要为获取和查询数据 | √ | √ |
POST | 发送修改请求 | √ | √ |
HEAD | 获取响应首部 | √ | √ |
DELETE | 删除资源 | √ | √ |
PUT | 传输文件 | √ | √ |
OPTION | 查询对应的URL支持的方法 | × | √ |
TRACE | 将请求通信回路返回给客户端 | × | √ |
CONNECT | 使用隧道协议代理进行连接 | × | √ |
× | 现在被取消了 | ||
× | 现在被取消了 |
4.常见的HTTP状态码有哪些?
状态码 | 具体状态码 | 类别 | 原因短语 | 常见情况 |
---|---|---|---|---|
1XX | 请求正在处理 | POST的请求中转时候使用 | ||
2XX | 请求成功 | |||
200 | OK | |||
204 | ||||
206 | ||||
3XX | 请求重定向 | |||
301 | ||||
302 | ||||
303 | ||||
304 | ||||
307 | ||||
4XX | Client Error | 客户端错误 | ||
400 | Bad Request | 错误请求 | 请求报文中存在语法问题 | |
401 | ||||
403 | Forbidden | 禁止访问 | 没有访问的权限 | |
404 | Not Found | 服务器上没有请求的资源 | ||
5XX | Server Error | 服务器错误 | ||
500 | Internal Server Error | 服务器本身出错 | 对于URL请求过来,处理出现了BUG 代码有bug |
|
503 | Service Unavilable | 服务器正忙 | ||
6.HTTP请求和响应报文有哪些主要字段?
请求报文:
请求行 : 包括请求方法,URL,协议/版本,例如:GET HTTP/1.1
请求头部:User-Agent:
请求主体:body
响应报文:
状态行:HTTP/1.1 200 OK
响应头部:Content-Length:200
响应主体:
7.HTTPS是什么?
HTTPS不是一种新的协议,是在HTTP协议的下方通过SSL/TLS来提供加密服务,但是HTTP+SSL依然处在应用层
然后通过TCP协议将加密的信息发送给对方,从而达到,防窃听,防伪装,防篡改的目的
8.SSL是什么?
SSL(Secure Socket Layer,安全套接字层)
TSL(Transport Layer Security,传输安全层),前身是SSL
9.HTTPS和HTTP的区别
- HTTP是明文传输的,数据都没有进行加密,HTTPS通过SSL/TLS层提供了加密服务
- HTTP只需要在TCP三次握手后就可以建立连接,只需要交换3个数据报,但是HTTPS除了需要TCP的三次握手之外,还需要SSL握手需要9个包,建立连接的速度比HTTP慢
- HTTP需要到CA(证书颁发机构)申请证书,后才能使用,但是免费的证书比较少,而且需要一定的费用
- HTTP和HTTPS使用的连接方式不同,使用的端口也不同,HTTP在80号端口,HTTPS在443号端口
10.HTTP的缺点有哪些?
- 使用明文传输,传输过程没有加密,传送内容容易被窃听
- 不验证通信方的身份,通信方的身份可能遭遇伪装
- 无法验证报文完整性,加密内容容易被篡改
11.HTTPS采用的加密方式有哪些?是对称还是非对称?
12.HTTP如何禁用缓存?如何确认缓存?
13.URI和URL的区别
URI:Uniform Resource Identifier,统一资源定位符
URL:Uniform Resource Location,统一资源标识符
URI是用来标识一个资源的,可以通过这个知道资源是什么
URL是用来定位具体资源的,通过这个可以拉取到想要的资源
2)请求方法
1.GET 和 POST 的区别,你知道哪些?
- GET传输的内容在参数中传递,POST在body中传递参数
- GET一般用于获取数据,POST一般用于修改数据,比如登录的场景
- GET提交的数据,理论上长度为2K,POST传递的数据长度,理论上没有限制
- GET请求会被浏览器缓存,POST一般情况下不会
- GET是幂等的,POST不是幂等的
记忆:1.传参,2.作用,3.长度,4.缓存,5.幂等
幂等性的意思:对服务器的请求,请求一次的结果和请求多次的结果是一样的
GET查询一个数据,每次查询的结果是一样的,所以是幂等的
POST生成一个新的数据,比如生成一个博客,POST请求了两次,可能会生成两个页面
2.GET 方法参数写法是固定的吗?
一般情况下,GET请求的参数都是写在?后面,通过&来连接多个参数
服务器解析的过程是,获取TCP连接传输过来的数据,通过正则表达式的方法获取Header和Body,从而提取到GET请求的参数
但这个参数的写法也是由客户端和服务器之间约定形成的,只要双方遵守约定的规则,都是可以解析的
3.GET 方法的长度限制是怎么回事?
GET方法理论上没有长度的限制,HTTP协议没有对Body和URL进行长度限制
一般是浏览器或者服务器给GET方法添加的限制,一般为2K大小
服务器限制GET方法的长度的原因:1.从性能角度考虑,处理较长的URL消耗较多的资源,2.从安全角度考虑,防止恶意构造长的URL来攻击
4.POST 方法比 GET 方法安全?
POST方法,传输的数据,从地址栏是不可见的,看起来比GET方法安全
但是HTTP都是明文传输的,只要进行数据抓包,就能抓到POST方法中Body的内容,所以其实也是不安全的
想要安全传输,还需要将HTTP改造成HTTPS
5.POST 方法会产生两个 TCP 数据包?你了解吗?
HTTP协议中没有说POST会发送两次请求
是有些文章中提到使用POST会将head和body分开发送,先发送header,服务器返回100后再次发送body
但是实际上发现,在大多数情况下并不是这样
所以说POST产生两个TCP数据包的情况,是部分浏览器和框架的行为,不是POST的必然行为
6.GET与POST传递数据的最大长度能够达到多少呢?
HTTP没有对GET和POST请求,传递数据的最大长度做规范
GET能传输的最大长度取决于URL的长度,一般浏览器的限制为2K,主要是服务器设计者从安全和性能的角度考虑的
POST的传输长度取决于body能传输多大,一般都是要求小于MB
3)状态管理
1.Cookie是什么?
由于HTTP协议是无状态的,所以在HTTP/1.1中就引入了cookie来保存用户信息。
用来解决每次刷新一次页面都需要重新登录的情况
客户端向服务器发送请求后,服务器返回的消息中会携带一小段数据用于标识这个用户,之后每次客户端的请求都会带上这一小段cookie表示来自同一个用户的请求,会增加一些性能开销
2.Cookie有什么用途?用途
- 会话状态的管理,记住用户的登录状态,购物车信息,收藏夹内容
- 个性化设置,电商页面的话会给用户做个性化推荐
- 浏览器行为跟踪,跟踪分析用户的行为
3.Session是什么?
除了将用户的cookie存在本地,还可以使用session将用户信息存储在服务器
sesion可以存储在服务器的文件,数据库,内存中,或者存在redis这种内存数据中,效率更高
Session 的工作原理是什么?/使用 Session 的过程是怎样的?
Cookies和Session区别是什么?Cookie与Session的对比
Session和cookie应该如何去选择(适用场景)?
- cookie只能保存ASCII码值,cookie可以保存各种类型的信息,当存储的内容较复杂的时候,首选cookie
- cookie存储在浏览器中,容易被恶意查看,容易造成隐私的泄漏,隐私数据应该存在session中
- session对于大型网站,用户量十分大,储存的开销也是十分大的,只需要在sesion中保存重要信息
二、DNS
1.你知道DNS是什么?
DNS是一种域名解析服务器,可以将用户发送过来的域名转化为具体的IP地址
2.DNS的工作原理?
DNS查询方式有哪些?
攻击方式
SYN攻击是什么?
DDos 攻击了解吗?
XSS攻击是什么?(低频)
CSRF攻击?你知道吗?
如何防范CSRF攻击
参考资料
计算机网络-01-20 | 阿秀的学习笔记 (interviewguide.cn)[