计算机网络高频面试题
目录
三、在浏览器输入一个地址,到显示这个页面的过程(过程中使用了哪些协议)?
一、计算机网络的三种模型?
二、TCP、UDP 协议有什么区别?
- 特点:
TCP 是面向连接的,以字节流形式传输,提供可靠传输,但 传输效率低,所需资源多;
UDP 是无连接的,以数据报文段形式传输,不保证可靠传输,但 传输效率高,所需资源少。 - 应用场景:
TCP 用于要求通信数据保证可靠的服务,比如文件传输,邮件传输,远程登录等;
UDP 用于要求通信速度快的服务,比如 视频语音通话,赛事直播等。 - TCP 首部字节是 20~60 个;
UDP 首部字节是 8 个字节,这8个字节由4个字段组成。
三、在浏览器输入一个地址,到显示这个页面的过程(过程中使用了哪些协议)?
过程:
- 域名解析,浏览器查找域名对应的IP地址。
- 与服务器建立连接
- 发送HTTP请求
- 服务器响应HTTP请求并返回HTTP报文
- 浏览器解析并渲染页面
- 连接结束
使用的协议:
- DNS:域名系统协议,根据域名获取对应IP。 ==》DNS百科
- TCP:传输控制协议,与服务器建立TCP连接。==》TCP百科
- IP:发送数据时在网络层使用的协议。==》IP百科
- OPSF:IP数据包在路由器之间选择路由的协议。==》OPSF百科
- ARP:路由器与服务器通信时,将ip地址转换为MAC地址的协议。==》ARP百科
- HTTP:在TCP建立连接后,使用HTTP协议访问页面。==》HTTP百科
四、HTTP长连接与短连接
HTTP/1.0
默认使用短连接。客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
HTTP/1.1
默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入 Connection:keep-alive 这行代码。
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。但是 Keep-Alive 其实也不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
五、说说 TCP 建立连接时的三次握手?
第一次握手: 用户端 将带有SYN标志的数据包 发送给 服务端;
第二次握手: 服务端 将带有SYN/ACK标志的数据包 发送给 用户端;
第三次握手: 用户端 将带有ACK标志的数据包 发送给 服务端;
图解:
那为什么需要三次握手? 为什么SYN 和 ACK 需要传回?
这个我们先看个图:(感觉挺生动的~哈哈哈)
简单来说:
三次握手时为了建立可靠的通信信道。
传回SYN:证明用户端到服务端的通道没有问题;
传回ACK:证明服务端到用户端的通道没有问题。
六、TCP 断开连接的四次挥手,以及为什么要四次挥手?
四次挥手:
第一次挥手:主动关闭方-发送一个 FIN,用来关闭数据传送
第二次挥手:被动关闭方-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
第三次挥手:被动关闭方-关闭与 主动关闭方 的连接,发送一个FIN 主动关闭方
第四次挥手:主动关闭方 发回 ACK 报文确认,并将确认序号设置为收到序号加1
为什么要四次挥手,举个我觉得生动形象的例子:
哈哈哈,可能有人觉得形象,有人觉得抽象~~ 要详细讲的话,有时间再补充,或者单独写一篇文章讲。
若有什么讲的对不对或不好的地方,欢迎留言指正和交流!
下一篇: 计算机网络面试题(一)