基础网络(面试题)

1.OSI 与 TCP/IP 各层的结构与功能,都有哪些协议?

学习计算机网络,我们一般学习五层协议的体系结构,这样既简洁又能将概念阐述清楚。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j6XANGUu-1633156799700)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\1cf728c9d6f24bbc89a7d3731c5e4c23\�构.png)]

1.1 应用层

应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等,我们把应用层交互的数据单元称为报文。

包含所有的高层协议,FTP/TELNET/SMTP/DNS/NNTP/HTTP

1.2运输层

运输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用程序利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以同时使用同一个运输层服务。由于一台主机可同时运行读哟个

运输层主要使用以下两种协议:

1.传输控制协议TCP–提供面向连接的。可靠的数据传输服务

2.用户数据协议UDP–提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性

1.3网络层

在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择适合的网间路由换和交换节点,确保数据及时传送。

使主机可以分组发往任何网络,并使分组独立地传向目标。IP协议

1.4数据链路层

数据链路层通常简称为链路层,两台主机之间的数据传输,总是一段一段的链路上传送

1.5物理层

物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。

2.1 TCP 三次握手漫画图解

如下图所示,下面的两个机器人通过 3 次握手确定了对方能正确接收和发送消息(图片来源:《图解 HTTP》)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chZLGuU3-1633156799701)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\a26b96d9aa1541338fa3ab96ba1ccfbc\�手.png)]

简单示意图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qCA6BHUg-1633156799703)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\aaf28f2de5c2466cb9f402498246cfb1\a1手2.png)]

  • 客户端-发送带有SYN标志的数据包-一次握手-服务端
  • 服务端-发送带有SYN/ACK标志的数据包-二次握手-客户端
  • 客户端-发送大偶偶带有ACK标志的数据包-三次握手-服务端

详细示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5XCLyN3-1633156799705)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\4c96a29192714392bd9f71975717cee4\27c682db4def.png)]

2.2 为什么要三次握手

三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常

第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常

第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

所以三次握手就能确认双发收发功能都正常,缺一不可。、

2.3第2次握手传回了ACK,为什么还要传回SYN?

服务端传回客户端所发送的ACK是为了告诉客户端,我接收到的信息确定就是你所发送的信号了,这表明从客户端要服务端的通信是正常的。而回传SYN则是为了建立并确认从服务端到客户端的通信

SYN同步序列编号是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立正常的TCP 网络连接时,客户机首先发送一个SYN消息,服务器使用SYN-ACK应答表示接收到这个消息,最后 客户机再以ACK(Acknowledgement)消息响应。这样再客户机和服务器之间才能建立起可靠的 TCP连接,数据才可以在客户机和服务器之间传递

2.4为什么要四次挥手

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qF8nXXO8-1633156799706)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\e471f94b753247d4b460b8d26e8387af\�手.png)]

断开一个TCP连接则需要“四次挥手”:

客户端-发送一个FIN,用来关闭客户端到服务器的数据传送

服务端-收到这个FIN,它发回一个ACK,确认序号为收到的序号加1.和SYN一样,一个FIN将占用一个序号

服务端-关闭与客户端的连接,发送一个FIN给客户端

客户端-发送ACK报文确认,并将确认序号设置为收到序号加1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtDQ8IZW-1633156799708)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\8472920819d34495ab178ecb78b89c43\mdg0oduxmjcy.png)]

3.TCP,UDP 协议的区别

TCP、UDP协议的区别

UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后**,不需要给出任何确认**。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 却是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等。

TCP 提供面向连接的服务,传送数据之前必须先建立连接,数据传送结束后要释放连接

5. 在浏览器中输入 url 地址 ->> 显示主页的过程(面试常客)

总体分为以下几个过程:

  1. DNS解析
  2. TCP连接
  3. 发送HTTP请求
  4. 服务器处理请求并返回HTTP报文
  5. 浏览器解析渲染页面
  6. 连接结束

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eBPsOfkz-1633156799710)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\99be47b99cc34a51babcc5e1eddb9532\bvdm45.png)]

1.DNS解析(网址->IP地址):DNS缓存:先去(分级查找:本地域名服务器,根域名服务器,COM顶级域名服务器,google.com域名服务器)

所有网址真正的解析过程为: .-> .com -> google.com. -> www.google.com.。

2.TCP连接(三次握手):

客户端 -> 服务端:SYN=1(请求建立连接),seq=n(seq代表的是序列号,n是我们假设的一个东西)

服务端 -> 客户端:SYN=1(服务端同意建立连接),ack=n+1(确认收到信息),seq=x(服务端出序列号)

客户端 -> 服务端:ack=x+1(确认之前收到这个信息),seq=n+1(我之前发的在发送回去)

3.发送HTTP请求

完整的HTTP请求包含请求请求行****、请求头部、请求主体三部分。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JtAKyqRn-1633156799711)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\8cdc5d44a7254974ad91d0e7d6c4fba6\bvc1bz.png)]

4.服务处理请求,并且返回HTTP报文

服务器在收到浏览器发送的HTTP请求之后,会将收到的HTTP报文封装成HTTP的Request对象,并通过不同的Web服务器进行处理,处理完的结果以HTTP的Response对象返回,主要包括状态码,响应头,响应报文三个部分。

状态码主要包括以下部分

1xx:指示信息–表示请求已接收,继续处理。

2xx:成功–表示请求已被成功接收、理解、接受。

3xx:重定向–要完成请求必须进行更进一步的操作。

4xx:客户端错误–请求有语法错误或请求无法实现。

5xx:服务器端错误–服务器未能实现合法的请求。

响应头主要由Cache-Control、 Connection、Date、Pragma等组成。

响应体为服务器返回给浏览器的信息,主要由HTML,css,js,图片文件组成。

5.浏览器解析渲染页面:

在浏览器还没接收到完整的 HTML 文件时,它就开始渲染页面了,在遇到外部链入的脚本标签或样式标签或图片时,会再次发送 HTTP 请求重复上述的步骤。在收到 CSS 文件后会对已经渲染的页面重新渲染,加入它们应有的样式,图片文件加载完立刻显示在相应位置。在这一过程中可能会触发页面的重绘或重排。这里就涉及了两个重要概念:Reflow和Repaint。

6.连接结束(四次挥手):

客户端 -> 服务端:发完了

服务端 -> 客户端:知道发完了

服务端 -> 客户端:收完了

客户端 -> 服务端:知道收完了

通过四次挥手关闭连接(FIN ACK, ACK, FIN ACK, ACK)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCRBTIGQ-1633156799712)(F:\有道云\weixinobU7VjiDXvYt2fu-NvyZjNp0QbSE\328e0eb0cf1c46b18d5703bf97491a88\9-2019926409.png)]

第一次挥手是浏览器发完数据后,发送FIN请求断开连接。

第二次挥手是服务器发送ACK表示同意,如果在这一次服务器也发送FIN请求断开连接似乎也没有不妥,但考虑到服务器可能还有数据要发送,所以服务器发送FIN应该放在第三次挥手中。

这样浏览器需要返回ACK表示同意,也就是第四次挥手。

6.状态码

状态码

7.各种协议与HTTP协议之间的关系

一般面试官会通过这样的问题来考察你对计算机网络知识体系的理解。

图片来源:《图解 HTTP》

各种协议与HTTP协议之间的关系

8.HTTP长连接,短连接

**在HTTP/1.0默认使用短连接。**也就是说,客户端和服务端每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(JavaScript文件、图像文件、css文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

**而从HTTP/1.1起,默认使用长连接,**用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:

Connection:keep-alive

在使用长连接的情况下,当一个页面打开完成后,客户端和服务端之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以再不同的服务器软件中设定这个时间。实现长连接需要客户端和服务端都支持长连接。

HTTP协议的长连接和短连接,实际上就是TCP协议的长连接和短连接

9.HTTP是不保存状态的协议,如何保存用户状态

10.Cookie的作用是什么?和Session有什么区别?

Cookie和Session都是用来追踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie一般用来保存用户信息

例子:

1.我们在Cookie中保存已经登陆过得用户信息,下次访问网站的时候页面可以自动帮你登陆的一些基本信息给填了

2.一般的网站都有保持登陆也就是说下次你在访问网站的时候就是不需要重新登录了,这是因为用户登录的时候我们可以存放一个Token在Cookie中,下次登录的时候只需要根据Token值来查找用户即可(为了安全考虑,重新登录一般要将Token重写)

3.登录一次网站后访问网站其他页面不需要重新登录

Session的作用就是通过服务端记录用户的状态

场景:

购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为HTTP协议是无状态的。服务端给特定的用户创建特定的Session之后就可以标识这个用户并且跟踪这个用户了。

Cookie数据保存在客户端(浏览器端),Session数据保存在服务器端。

Cookie存储在客户端中,二Session存储在服务器上,相对来说Session安全性更高。

12.URI和URL的区别是什么?

  • URI是统一资源标志符,可以唯一标识一个资源
  • URL是统一资源定位符,可以提供该资源的路径。它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源

URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。

13.HTTP和HTTPS的区别?

1.端口:

HTTP的 URL由“http://”起始且默认使用端口80

HTTPS的URL由“https://”起始且默认使用端口443

2.安全性和资源消耗:

HTTP协议运行在TCP上,所有传输的内容都是明文,客户端和服务端都无法验证对方的身份。

HTTPS是运行在SSL/TSL之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都是加密的

加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP安全性没有HTTPS高,但HTTPS比HTTP消耗更多服务器资源

  • 对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有 DES、AES 等;
  • 非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有 RSA、DSA 等。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值