前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【百面成神】计算机网络基础8问,你能坚持到第几问

【百面成神】计算机网络基础8问,你能坚持到第几问

作者头像
用户10127530
发布2023-10-17 14:33:42
1580
发布2023-10-17 14:33:42
举报
文章被收录于专栏:半旧的技术栈半旧的技术栈

前 言 🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端 ☕专栏简介:纯手打总结面试题,自用备用 🌰 文章简介:计算机网络最基础、重要的8道面试题

1.常见的返回状态码

A、2xx:表示请求成功 B、3xx:表示重定向状态,需要重新请求 C、400 找不到请求的资源 D、403 没有权限访问此网站 E、404 资源不存在 F、500 服务器内部错误、拒绝访问

2.七层模型&TCP模型

解决两个硬件之间怎么通信的问题,常见的物理媒介有光纤、电缆、中继器等。它主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。

它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

数据链路层: 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。该层的主要功能就是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。

它的具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。这一层的数据叫做帧。

网络层: 计算机网络中如果有多台计算机,怎么找到要发的那台?如果中间有多个节点,怎么选择路径?这就是路由要做的事。

该层的主要任务就是:通过路由选择算法,为报文(该层的数据单位,由上一层数据打包而来)通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP地址寻址,所以产生了IP协议。

传输层: 当发送大量数据时,很可能会出现丢包的情况,另一台电脑要告诉是否完整接收到全部的包。如果缺了,就告诉丢了哪些包,然后再发一次,直至全部接收为止。

简单来说,传输层的主要功能就是:监控数据传输服务的质量,保证报文的正确传输。

会话层: 虽然已经可以实现给正确的计算机,发送正确的封装过后的信息了。但我们总不可能每次都要调用传输层协议去打包,然后再调用IP协议去找路由,所以我们要建立一个自动收发包,自动寻址的功能。于是会话层出现了:它的作用就是建立和管理应用程序之间的通信。

表示层: 表示层负责数据格式的转换,将应用处理的信息转换为适合网络传输的格式,或者将来自下一层的数据转换为上层能处理的格式。

应用层: 应用层是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。前端同学对应用层肯定是最熟悉的。

速记下: 应用层 人做好信息,往下发 表示层 翻译一下 会话层 打包 传输层 把包发给下层 网络层 报文:给包贴个ip地址的标签 数据链路层 帧:查表ip转mac,然后转成电信号

物理层 定义好各种信号的意思,线路和插口的格式,发送吧

最后,给大家横向对比下TCP/IP4层模型、5层模型和OSI七层模型的差别:

3.TCP “三次握手“、“四次挥手”

TCP协议是一种是一种面向连接,可靠的数据传输协议,为了在互联网上建立可靠的端到端的字节流设计。

第一次握手: 客户端向服务器端发送报文 证明客户端的发送能力正常。客户端发送一个SYN标记的包,Seq初始序列号x,发送完成后客户端进入SYN_SEND状态。 第二次握手:服务器端接收到报文并向客户端发送报文 证明服务器端的接收能力、发送能力正常;服务器返回确认包(ACK)应答,同时还要发送一个SYN包回去。ACK = x + 1,表示确认收到(客户端发来的Seq值 + 1),Seq = y, 表示让客户端确认是否能收到。发送完成后服务端进入SYN_RCVD状态。

第三次握手:客户端向服务器发送报文 证明客户端的接收能力正常。客户端再次发送确认包(ACK),ACK = y + 1, 表示确认收到服务器的包(服务端发来的Seq值 + 1)。客户端发送完毕后,进入ESTABLISHED状态,服务端接收到这个包,也进入ESTABLISHED状态, TCP握手结束。

为什么是三次握手?不是两次或者四次? 从假设的角度来分析吧,假如是两次握手,会发生什么情况呢? 服务端在发出应答消息后,它根本就不能确认客户端是否接受到消息了,那么这样意味着只有客户端可以向服务端发送数据。

假如是四次握手呢?明明已经保证了一个稳定的传输流了,为什么还要浪费性能再去发一次消息,浪费了性能。

四次挥手

第一次挥手([FIN], Seq = x) 客户端发送一个FIN标记的包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1状态。 第二次挥手 ([ACK], ACK = x + 1) 服务端发送一个ACK的确认包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。 第三次挥手 ([FIN], Seq = y) 服务端准备好关闭连接时,发送FIN标记的包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。 第四次挥手 ([ACK], ACK = y + 1) 客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。 服务端接收到ACK包后,关闭连接,进入CLOSED状态。 客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,自己也关闭连接,进入CLOSED状态。

为什么是三次握手,却是四次挥手?三次挥手不可以吗? 继续从假设的角度分析,如果是三次挥手,在服务器接收到客户端发送关闭的请求后,把SYN和ACK包一起发过去。这样会造成服务端还有数据没有发送完,造成了数据的丢失。所以中间的这一段时间,等待服务器把剩余的数据发送完是很有必要的。

4.TCP和UDP的区别

TCP是可靠传输,UDP不保证传输的可靠性。 TCP是面向连接的。UDP是无连接的。 TCP会进行流量控制、网络拥塞控制,UDP则不会。 TCP传输速度较UDP慢。 TCP会对数据进行拆分;UDP是面向报文的,对应用层交下来的报文,不合并,不拆分,保留原报文的边界; TCP传输数据有序,UDP不保证数据的有序性;

总结来说,TCP面向连接,力求提供准确可靠的消息,进行流量控制、具有网络拥塞机制、会对数据进行分包,并保证数据的有序性,适用于文件传输、邮件等场景。UDP则面向实时传输,适用于视频语音聊天,直播等场景。

5.DNS是怎么解析域名的

A)本地电脑会检查浏览器缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就结束。浏览器缓存域名也是有限制的,不仅浏览器缓存大小有限制,而且缓存的时间也有限制,通常情况下为几分钟到几小时不等 B)如果浏览器缓存中没有数据,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。 C)前两个过程无法解析时,就要用到我们网络配置中的"DNS服务器地址"了。操作系统会把这个域名发送给这个本地DNS服务器。每个完整的内网通常都会配置本地DNS服务器,会查找本地DNS服务器缓存。 D)如果本地DNS服务器仍然没有命中,就直接到根DNS服务器请求解析

6.HTTP和HTTPS

(1)HTTP1.0,HTTP1.1,HTTP1.2 HTTP1.0默认只提供短暂的连接,每次进行tcp请求,服务器都会在请求处理结束后立刻断开连接。下次请求重新创建连接。

HTTP1.1的TCP连接默认不关闭,支持多个请求进行复用。此时服务端是以顺序方式执行的。

HTTP/2采取了多路复用。所谓多路复用,指的是会把信息切分为更小的消息和帧,客户端和服务器都可以同时发送多个请求或者回应,并不需要按照顺序一一对应。这样,如果A,B请求同时发送给服务器,服务器发现请求A特别耗时,可以先回应A已经处理好的部分,接着优先响应请求B。

(2)长连接

在 HTTP 中响应体的 Connection 字段指定为 keep-alive,可以设置长连接。在HTTP1.0以后,长连接默认开启。

(3)HTTP与HTTPS HTTP是运行于TCP之上的协议,是明文进行传输的,客户端和服务端都无法认证对方的身份。它的端口是80。 HTTPS是运行在SSL(Secure Socket Layer)之上的,SSL运行于TCP之上,HTTPS可以进行加密和认证。其通信证书需要向服务机构进行购买。默认端口是443.

7.IP地址及其分类

IP 地址分为 A、B、C、D 类

记忆方法,记住几个分界点: 1.0.0.0.0 128.0.0.0.0 192.0.0.0.0 224.0.0.0 240.0.0.0

特殊的网址 (1)每一个字节都为0的地址(“0.0.0.0”)对应于当前主机; (2)IP地址中的每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址; (3)IP地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.255.255.255用于回路测试。 如:127.0.0.1可以代表本机IP地址,用“http://127.0.0.1”就可以测试本机中配置的Web服务器。

8.一次请求到响应,发生了什么?

(1).首先DNS服务器进行域名解析 (2).TCP的三次握手 (3).Web浏览器向Web服务器发送请求。 1)HTTP请求报文由三部分组成:请求行,请求头和请求正文 2)请求行:用于描述客户端的请求方式,请求的资源名称以及使用的HTTP协议的版本号 3)请求头:用于描述客户端请求哪台主机,以及客户端的一些环境信息等 4)请求正文:当使用POST, PUT等方法时,通常需要客户端向服务器传递数据。这些数据就储存在请求正文中(GET方式是保存在url地址后面,不会放到这里)

(4).Web服务器应答. 1)HTTP响应也由三部分组成:状态码,响应头和实体内容 2)状态码:状态码用于表示服务器对请求的处理结果 3)响应头:响应头用于描述服务器的基本信息,以及客户端如何处理数据 4)实体内容:服务器返回给客户端的数据

(5)Web服务器关闭TCP连接一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接。如果添加Connection:keep-alive TCP连接在发送后仍然保持打开状态。 (6)浏览器解析html代码,并请求html代码中的资源 浏览器拿到html文件后,就开始解析其中的html代码,遇到js/css/image等静态资源时,就向服务器端去请求下载 (7) 浏览器对页面进行渲染呈现给用户

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.常见的返回状态码
  • 2.七层模型&TCP模型
  • 3.TCP “三次握手“、“四次挥手”
  • 4.TCP和UDP的区别
  • 5.DNS是怎么解析域名的
  • 6.HTTP和HTTPS
  • 7.IP地址及其分类
  • 8.一次请求到响应,发生了什么?
相关产品与服务
数据传输服务
腾讯云数据传输服务(Data Transfer Service,DTS)可帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库多活架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。同时,DTS 还提供私有化独立输出版本 DTS-DBbridge,支持异构数据库和同构数据库之间迁移和同步,可以帮助企业实现完整数据库迁移(如 Oracle)。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档