计算机网络应用层常问八股

HTTP协议的特点

http 是超文本传输协议,它是一种 Web 通信的协议.如何理解超文本,包含了图片,视频,文件等内容.

http 协议的特点:

HTTP 之间是无状态的,每一个请求都是独立的,需要通过 cookies 或者 Session 来维护状态.

Http 是请求应答模式,只有请求方先发送请求,应答方收到请求之后才能回复,http 是单向的。服务器端不能主动给客户端发消息,可以使用 websokcet 来优化。

底层是基于 TCP 的保证数据的可靠性,https 还基于 SSL 和 TLS。

灵活扩展可以添加请求头实现任意的功能,可以添加 authorization 等请求头字段。

HTTP 的报文格式

alt

请求行、请求体、请求头。

请求行是: 请求方法 +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

alt

SSL/TLS 握手过程:

感觉只有腾讯和字节会问详细过程,可以讲一下对称加密和非对称加密。

细节这谁记得住, ca 证书是使用的对称加密,传输数据使用的是非对称加密算法.

alt

常见的状态码

HTTP 有五类常见的状态码,分别是,分别是数字 12345 开头的数字. alt

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.

alt

建立一次的 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 的区别

alt

1.0 到 1.1 实现了长连接的传输,但是还是发送还是有序的,不能实现真正的并行。

2 通过 stream 实现多路复用,可以实现真正的并行。

alt

DNS 解析

应用层 DNS 解析 是将 URL 域名转为 IP 地址的,在网络中传输的时候是路由器来转发数据包,需要使用 IP 地址来转发. URL 更容易记住.DNS 是基于 UDP 实现的,也可能是 TCP

Cookie 和 Session

本质都是 Http 是无状态的,需要用这两个来保存信息.

Cookie 存储在客户端,Session 存储在服务器短,Session 不能跨服务,可以用存储到 Redis 中去.

Cookie 存在客户端可能会存在安全性的问题

#计算机网络面试##应用层协议#
牛牛的面试专栏 文章被收录于专栏

牛牛的面试专栏,希望自己在25年可以拿到一份大厂的SP Offer 你的点赞和收藏都是我持续更新的动力

全部评论
“细节这谁记得住, ca 证书是使用的对称加密,传输数据使用的是非对称加密算法.”这里写反了吧
1 回复 分享
发布于 2025-04-09 21:50 上海

相关推荐

不愿透露姓名的神秘牛友
03-03 21:09
已编辑
整体面试体验非常好,面试官人也很好,觉得如果过了的话一定是一个梦中情mt。1.三段实习挑一个产出讲一讲,中途会打断问问题拷打快20分钟,开始八股盛宴2.你们项目为什么要用PgSQL?3.PgSQL和Mysql的区别你觉得有什么?4.从其他的角度?你觉得mysql哪一点相比于PgSQL会更好?5.除了索引,对于MVCC来说,各自的优势是什么?6.你给我讲一讲MVCC,为什么要有MVCC,他解决的是一个什么样的问题?7.Mysql的隔离级别8.各个隔离级别出现的问题,怎么解决的9.讲讲Spring的IOC10.Spring的IOC你刚是直接说到底层了,其实还有一个功能是管理bean,你给我讲讲SpringBean生命周期11.那我们平时使用的AOP通常发生在哪个阶段?12.你给我讲讲Spring的AOP13.AOP底层原理?14.动态代理,Spring默认用哪个15.讲讲JVM内存区域16.什么情况下栈会溢出17.问一个堆上的问题,a=“abc”,b=“ab”+“c”,最终输出a==b的结果是什么,为什么,举一个是false的情况18.手撕算法:hashSet,写一个类,插入,删除时间复杂度都是O1,插入时元素存在,则不插入,删除时元素存在则删除,另外提供一个方法,随机返回出任意一个元素,要求复杂度O1反问建议:表达能力很好整体面试1h30min,问题很简单,因为每个问题基本上直接答到底层,面试官没有更多反问,一般反问直接叩到下一个问题了,最后算法时间有点长,最后一面通过
查看18道真题和解析
点赞 评论 收藏
分享
评论
4
24
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务