面试:网络基础


题目列表

  1. TCP/IP 的概念层模型有哪些?
  2. 什么是面向有连接型和面向无连接型?
  3. 什么是UDP和TCP?UDP和TCP的区别是什么?
  4. TCP三次握手和四次挥手的流程是怎样的?
  5. 说一下TCP的流量控制?
  6. 什么是HTTP协议?HTTP和HTTPS的区别?
  7. 为什么说HTTP协议是无状态协议?怎么解决HTTP协议无状态协议?
  8. URI和URL的区别?
  9. 从浏览器输入一个URL到界面显示出内容的过程是怎样的?

1. TCP/IP 的概念层模型有哪些?

共分为4层:应用层、传输层、网络层、链路层(数据链路层+物理层)

2. 什么是面向有连接型和面向无连接型?

  • 面向有连接型传输包括:会话建立传输数据会话断开,此外还包括保证传输可靠性的各种措施,比如超时重传、流量控制等,常见的面向有连接传输有TCP。
  • 面向无连接型传输仅提供基本的传输数据的功能,即使接收端不存在,发送端也能发送数据包,常见的面向无连接传输有UDP、IP。

3. 什么是UDP和TCP?UDP和TCP的区别是什么?

UDP和TCP都是传输层的协议。

TCP

  • TCP 是一种面向有连接的协议,只有在确认通信对端存在时才会发送数据。
  • TCP 在数据传输开始前会经过3次握手建立连接,传输结束后经过4次挥手断开连接。
  • TCP 还采取了多种措施保障传输的可靠性。

UDP

  • UDP 仅提供了最基本的数据传输功能。
  • UDP 在发送数据前后无需建立和断开链接,且不保证可靠性(会丢包)。

TCP和UDP的区别:
在这里插入图片描述

4. TCP三次握手和四次挥手的流程是怎样的?

三次握手

第1次握手: 客户端在TCP头部的控制位中发送 SYN i 标记给服务端。
第2次握手: 服务端在接收到客户端的 SYN i 标记后,返回客户端一个 ACK i+1 标记,表示服务端可以收到消息;同时服务端向客户端发送一个 SYN j 标记,用于判断客户端是否可以收到消息 (两个标记在一条消息中返回)。
第3次握手: 客户端在接收到服务端的 SYN j 标记后, 返回服务端一个 ACK j+1 标记,表示客户端也可以收到消息。
经过3次的握手,双端都确认可以收到对方的消息,连接算是建立了。

四次挥手 (假设客户端发起挥手)

第1次挥手:
客户端发送一个FIN标记的包,告诉服务器需要关闭连接,表示自己不用发送数据了,但是还可以接收数据。发送完成后,客户端进入FIN_WAIT_1 状态。

第2次挥手: ([ACK], ACK = x + 1)
服务端收到消息后发送一个ACK的确认包,告诉客户端接收到关闭的请求,但是还没有准备好。发送完成后,服务端进入CLOSE_WAIT状态,客户端收到这个包后,进入FIN_WAIT_2,等待服务器关闭连接。

第3次挥手: ([FIN], Seq = y)
经过一段时间,服务端准备好关闭连接时,会发送FIN标记的包,告诉客户端准备关闭了。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。

第4次挥手: ([ACK], ACK = y + 1)
客户端接收到服务端的关闭请求,再发送ACK标记的确认包,进入TIME_WAIT状态,等待服务端可能请求重传的ACK包。服务端接收到ACK包后,关闭连接,进入CLOSED状态。客户端在等待固定时间(两个最大段生命周期)后,没有接收到服务的ACK包,认为服务器已关闭连接,自己也关闭连接,进入CLOSED状态。

为什么挥手需要4次,不可以把第2次和第3次挥手合并吗?

假设服务器在接收到客户端发送关闭的请求后,把SYN和ACK包一起发过去。这是可能出现服务端还有数据没有发送完,从而造成数据的丢失。

为什么第4次挥手后,客户端没有立刻进入CLOSED状态,而是进入TIME-WAIT状态?

  • 客户端发送给服务端回执后,有可能这个回执报文在传输途中丢失等原因,服务端并没有收到,此时服务端会再次向客户端发送FIN=1的断开请求报文,如果客户端没有等待2*MSL时间而直接进入了CLOSED状态,客户端就会收不到服务端再次发送的断开连接的请求报文,导致服务端无法进入CLOSED状态。
  • 等待一段时间是为了让本连接持续时间内所产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文。

    注: MSL是Maximum Segment Lifetime英文的缩写,译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

5. 说一下TCP的流量控制? 滑动窗口机制

流量控制是为了控制发送端发送数据的速率,保证接收端能将本应接收的所有报文分组接收成功,否则会触发自动重传机制造成网络流量的浪费。

流量控制的具体操作:

接收端会将剩余窗口大小传给发送端,于是发送端会发送不超过这个数据量的数据,这个大小被称为“窗口”的大小。在TCP首部中专门有一个字段表示“窗口”的大小,该值越大代表网络的吞吐量越高。

6. 什么是HTTP协议?HTTP和HTTPS的区别?

HTTP协议

HTTP协议(超文本传输协议)是应用层的协议,在客户端和服务端相互通信时将信息以HTTP报文的形式进行传输。

HTTP协议的缺点

  • 通信使用明文,内容可能被窃听。
  • 通信双方的身份无法得到认证,身份可能遭遇伪装。
  • 无法验证报文的完整性。

HTTPS:

HTTPS 可以简单认为是 HTTP + 加密 + 认证 + 完整性保护 = HTTPS

HTTPS的引入,是为了解决HTTP协议带来的安全性问题。

  • 加密。HTTPS协议通过SSL或TLS协议将报文内容进行加密,客户端进行加密,server端进行解密。
  • 认证。引入第三方数字证书认证机构颁布证书,来确认通信双方的身份。客户端持有证书即可完成客户端身份的确认,客户端通信前会查看服务端的证书。
  • 完整性保护。SSL或TLS协议提供了摘要功能,可以进行通信内容的校验。

7. 为什么说HTTP协议是无状态协议?怎么解决HTTP协议无状态协议?

HTTP协议是一种无状态协议,协议自身不对请求和响应之间的通信状态进行保存,即对发送过来的请求和响应都不做持久化处理,目的是为了更快地处理大量事务。

如果要保留通信状态,该如何实现?

引入Cookie状态管理。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务端发送的响应报文的一个叫Set-Cookie的首部字段,通知客户端保存Cookie。当下次客户端再往该服务端发送请求时,客户端会自动在请求报文中加入Cookie值发送出去,服务端发现客户端发来的Cookie后,会检查是哪一个客户端发来的连接请求,对比服务器上的记录,最后得到之前的状态信息。

8. URI和URL的区别?

URI

Uniform Resource Identifier,统一资源标识符,用来唯一标识互联网中的一份资源。

URL

Uniform Resource Locator,统一资源定位符,我们访问网站的网址就是URL。

URL是URI的子集。

URI的目的就是唯一标识互联网中的一份资源,具体可以用资源名称、资源地址等,但是资源地址是目前使用最广泛的,因此URL就容易和URI混淆。URI相当于抽象类,URL就是这个抽象类的具体实现类。

9. 从浏览器输入一个URL到界面显示出内容的过程是怎样的?

请求的发送过程:
客户端(发送方):->浏览器输入URL
应用层(HTTP): ->解析URL,生成HTTP请求
应用层(HTTP): ->调用DNS服务查询域名对应的IP地址(UDP)
传输层( TCP ): ->收到应用层的委托后,TCP模块在接收到的数据块前面加上TCP头部,然后转发给IP模块;如果接收的数据快太大,TCP模块会根据包大小的限制对数据块进行拆分 (TCP协议中含有收/发双方的端口号)。
网络层( IP ):----->接收TCP协议层传入的包后,IP模块向网络包添加IP头部和MAC头部,并传递给网卡(链路层);IP头部含有接收端的IP地址,该IP地址是在应用层传入的,MAC头部含有最近路由设备的MAC地址。
链路层(网卡):---->将数据转成电信号传递到以太网。

接收方:链路层(网卡) -> 网络层(IP) -> 传输层(TCP) -> 应用层(服务端)
服务端:网关 -> 缓存 -> 数据源

响应的发送过程:与上面相反。浏览器在收到服务端返回的数据后进行解析渲染。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值