银行技术面计算机网络基础:从 URL 到 HTTPS
- 轮次
- 技术面
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- 讲讲 OSI 协议?各层分别提供什么服务、有哪些典型协议?
- DNS 是做什么的?为什么一般用 UDP?为什么区域传送要用 TCP?
- DHCP 协议是做什么的?
- 应用层还有哪些常见协议?
- 在浏览器地址栏输入 URL 到页面渲染,中间发生了什么?
- HTTP 状态码分为哪几类?常见的状态码有哪些?
- HTTP 长连接和短连接有什么区别?流水线是什么?
- Cookie 和 Session 有什么区别?浏览器禁用 Cookie 怎么办?
- HTTP 1.1 和 1.0 的主要区别是什么?
- 请求转发和重定向有什么区别?分别什么时候用?
- URL 和 URI 有什么区别?
- HTTP 和 HTTPS 有什么区别?
- 讲讲 SSL/TLS 的过程?怎么保证报文不被篡改、怎么确认公钥就是服务器的?
《参考解析》
分层与封装:先把骨架讲对
答 OSI 最好的方式是「横向说它为哪两个对等实体提供服务,纵向说它为上层提供了什么」,再各举一个协议。应用层负责应用程序之间的交互(DNS、HTTP、SMTP),传输层负责两台主机中进程之间的通用数据传输,把应用层报文封装成 TCP 报文段或 UDP 用户数据报;网络层负责两台主机之间的通信,把报文段封装成 IP 数据报(ARP、ICMP);数据链路层在每一段链路上传递,把 IP 数据报封装成帧(PPP、CSMA);物理层在传输媒体上搬比特流,并屏蔽媒体与通信手段的差异。把「报文段 → 数据报 → 帧 → 比特」这条封装链记住,后面所有问题都能挂上去。
DNS:UDP 与 TCP 的分工
DNS 负责域名与 IP 的相互转换,是分布式数据库。普通查询用 UDP 53:一次请求一次应答,报文小,不需要握手和重传,快得多;UDP 报文理论上限 512 字节,而绝大多数应答都装得下,超长应答和 DNSSEC 场景才会退回 TCP。区域传送必须用 TCP,因为它是主 DNS 向辅 DNS 同步变更数据,数据量大且必须可靠有序,用 UDP 丢了半份数据反而更糟。再往下追问通常会到递归查询与迭代查询的区别、A/CNAME/MX 记录类型、以及本地缓存与 TTL。
一次页面请求的完整链路
敲下 URL 后,浏览器要生成 TCP 套接字去请求资源,于是需要域名对应的 IP;要发 DNS 查询报文,就得先把帧发到默认网关,因此先要用 ARP 把网关 IP 解析成 MAC;DNS 服务器返回 IP 后,与 HTTP 服务器三次握手建立连接,再发 HTTP GET,服务器把资源放进响应体返回,浏览器解析渲染。这条链路的价值在于它一次串起 ARP、DNS、TCP、HTTP 四个考点,答的时候按「应用层 → 网络层 → 链路层的先后依赖」讲,而不是背段落。追问点常见于:ARP 缓存的作用、三次握手为什么不是两次、DNS 结果缓存多久。
长连接、短连接与流水线
一个页面往往要拉几十个资源,短连接意味着反复建连与挥手,代价很高;HTTP/1.1 默认开启 Connection: keep-alive,一个 TCP 连接上跑多次请求应答(1.0 默认短连接,需要显式声明)。流水线是在长连接上连续发出多个请求、不等响应回来,减少往返等待,但它没有解决队头阻塞——前一个响应慢,后面的响应照样要排队,而且代理和服务器对流水线的支持参差不齐,实际上用得很少,真正解决问题的是 HTTP/2 的多路复用。能把「长连接省的是建连成本、多路复用解决的是队头阻塞」分清,这道题就稳了。
Cookie 与 Session
Cookie 是存在客户端浏览器上的信息载体,服务器通过响应头的 Set-Cookie 下发,后续请求由浏览器自动带上;Session 存在服务器端,服务器为每个会话创建对象并下发一个 sessionID 的 Cookie,客户端只持有一个不透明的 ID。对比的落点有两个:安全性和可扩展性。Cookie 里的内容用户可见可改,Session 的敏感数据不出服务端;但 Session 在多实例部署下需要共享(粘性会话、集中式存储或换成无状态 token)。浏览器禁用 Cookie 时,可以用 URL 重写把 sessionID 拼在链接里,或者改用 token 放在请求头。
HTTPS 与证书信任链
HTTP 明文传输、默认 80 端口,无法验证对方身份;HTTPS 在 TCP 之上加了一层 TLS(SSL),默认 443 端口。握手过程简述:客户端发起连接请求,服务器把证书发过来;客户端校验证书是否由受信任的 CA 签发(不合法则报警告);通过后从证书里取出服务器公钥,用它加密一个本次通信用的对称密钥发过去;服务器用私钥解密拿到对称密钥;之后双方用同一把对称密钥加密数据。这个「非对称换对称」的设计是为了兼顾安全与性能——非对称加密安全但慢,只用来协商密钥;对称加密快,用来跑数据。
两个必答的追问。一是「怎么保证报文没被篡改」:发送方对内容做摘要(如 MD5/SHA)并对摘要签名,接收方重新计算摘要再比对,不一致就说明被改过。二是「怎么确认公钥就是服务器的」:靠证书链——服务器事先向 CA 申请证书,CA 用自己私钥对服务器公钥和信息签名,而 CA 的根证书预置在操作系统和浏览器里,客户端用 CA 公钥验签,就能确信这把公钥确实属于该域名。中间人攻击要成立,必须伪造一份能通过这条链的证书,这在实际中很难做到。