计算机网络应用层常问八股
HTTP协议的特点
http 是超文本传输协议,它是一种 Web 通信的协议.如何理解超文本,包含了图片,视频,文件等内容.
http 协议的特点:
HTTP 之间是无状态的,每一个请求都是独立的,需要通过 cookies 或者 Session 来维护状态.
Http 是请求应答模式,只有请求方先发送请求,应答方收到请求之后才能回复,http 是单向的。服务器端不能主动给客户端发消息,可以使用 websokcet 来优化。
底层是基于 TCP 的保证数据的可靠性,https 还基于 SSL 和 TLS。
灵活扩展可以添加请求头实现任意的功能,可以添加 authorization 等请求头字段。
HTTP 的报文格式
请求行、请求体、请求头。
请求行是: 请求方法 +URL +HTTP 的协议版本
http 和 https 的区别
从安全的角度来看: http 是明文传输的,并不安全。https 是基于 ssl 和 tls 协议传输的,传输内容加密较为安全。
使用的传输层端口:http 默认使用的是 80 端口,https 默认使用的是 443 端口。
从建立连接连接都是基于 TCP 三次握手的,但是 https 还要经过 SSL/TLS 握手,才能进行加密报文传输.
证书: HTTPS 需要使用数字证书来验证服务器的身份,并确保数据传输的安全性,证书由第三方的机构颁发,用户证明服务器的身份和所有权.Http 并没有使用证书进行身份验证和加密.
https://www.runoob.com/w3cnote/http-vs-https.html
SSL/TLS 握手过程:
感觉只有腾讯和字节会问详细过程,可以讲一下对称加密和非对称加密。
细节这谁记得住, ca 证书是使用的对称加密,传输数据使用的是非对称加密算法.
常见的状态码
HTTP 有五类常见的状态码,分别是,分别是数字 12345 开头的数字.
301 和 302,301 代表永久重定向,302 代表临时重定向,这个用在短链的项目中.
短链中使用 302 临时重定向,访问 A 地址重定向带 B 地址去,临时重定向是先访问 A,然后再跳转到 B.但是永久重定向就直接访问了 B ,并不会 访问 A.
400 表示客户端发送的报文有错误. 403 是请求的服务器资源权限不够,没有权限。401 没有携带 token 信息。404Not Found 表示服务器上面没有该资源.
502 是服务内部出现错误 504 是服务内存超时,网关没有重上游获取到数据.
长连接和短链接
HTTP1.0 的时候是短链接,在 1.1 的时候是长连接.
字段是 connection: keep-alive.
建立一次的 TCP 连接后,可以进行多次的 HTTP 通信.
但是在 1.1 的时候还是需要请求-响应,保持有序的. 在 2.0 的时候可以实现无序的请求.
get 请求的幂等性
首先幂等性(Idempotence) 指的是:同一个请求方法无论调用一次还是多次,对服务器资源的状态(副作用)只会产生一次影响,即多次执行不会带来额外的状态改变。 如果 按照 Restful 编写接口,get 请求时获取资源的,是幂等性的,post 请求添加数据不是幂等性的,但是如果我用 get 请求去添加数据,那么就不是幂等性了。 所以 get 不一定是幂等性的。
从服务器获取时间可以用 get 请求。
get请求一定是幂等的吗?如果从服务器请求时间那么使用get还是post?聊一聊你对幂等的理解(我怀疑是我对get的幂等性理解错了,面试官一直在追问)
HTTP 1.0 1.1 2.0 3.0 的区别
1.0 到 1.1 实现了长连接的传输,但是还是发送还是有序的,不能实现真正的并行。
2 通过 stream 实现多路复用,可以实现真正的并行。
DNS 解析
应用层 DNS 解析 是将 URL 域名转为 IP 地址的,在网络中传输的时候是路由器来转发数据包,需要使用 IP 地址来转发. URL 更容易记住.DNS 是基于 UDP 实现的,也可能是 TCP
Cookie 和 Session
本质都是 Http 是无状态的,需要用这两个来保存信息.
Cookie 存储在客户端,Session 存储在服务器短,Session 不能跨服务,可以用存储到 Redis 中去.
Cookie 存在客户端可能会存在安全性的问题
#计算机网络面试##应用层协议#牛牛的面试专栏,希望自己在25年可以拿到一份大厂的SP Offer 你的点赞和收藏都是我持续更新的动力