软件工程面试——计算机网络

常用数据检验方式包括:

  1. 校验和:对数据位进行求和,并将结果存储在一个指定的位置。接收端重新计算数据位的和,将其与发送端发来的校验和进行比较,以判断数据是否正确传输。
  1. 奇偶校验:在每个字节的最高位添加一个奇偶校验位,使得字节中1的个数为奇数或偶数。接收端重新计算每个字节的奇偶校验位,并与发送端发来的奇偶校验位进行比较,以判断数据是否正确传输。
  1. 循环冗余校验(CRC):通过一系列计算得出校验码,并将其添加到数据末尾发送。接收端进行相同的计算,并将计算得到的校验码与发送端发来的校验码进行比较,以判断数据是否正确传输。
  1. 整数校验:将数据看作整数,将其存储在指定位置,并在传输过程中检查l其值是否正确。
  1. 海明码:通过添加校验位和数据位的重复编码来实现纠错和校验功能。接收端将接收到的数据与编码表进行比较,以确定数据是否正确传输。
  1. 纠错码:通过添加纠错编码来实现纠错和校验功能,以确保在传输过程中发生少量错误时仍然可以正确恢复数据。

这些数据检验方式在不同的场景中都有应用,可以根据实际需要选择合适的方式进行数据检验。

TCP/IP网络模型

TCP/IP网络模型是一个由四个层次构成的协议栈,每个层次负责不同的网络功能。以下是TCP/IP四层网络模型及其各自的作用:

  1. 应用层(Application Layer):这是最高层,提供应用程序与网络之间的接口。应用层协议包括HTTP,SMTP,FTP等,负责处理网络应用程序间的数据传输。在该层,数据是由应用程序生成并打包成数据包发送给下一层。
  1. 传输层(Transport Layer):该层负责数据传输的可靠性和正确性。传输层协议TCP和UDP,可以控制数据包的流量和连接状态,确保数据的可靠性和正确性。
  1. 网络层(Network Layer):该层负责数据包的路由和传输,把数据包从源主机传输到目标主机。网络层协议IP,根据网络地址找到目标主机,然后将数据包从一个主机传输到另一个主机。
  1. 数据链路层(Data Link Layer):该层负责数据在物理网络中的传输。数据链路层协议负责将数据包分成帧,并添加帧头和帧尾等信息,以确保正确传输。同时,数据链路层还负责将数据包发送到正确的物理设备,以及检测和纠正传输中的错误。

1.(高频)点击某一网页时,按照TCP\IP模型,各层设计到的协议以及每个协议所起的作用

  1. 应用层

HTTP协议:实现应用层浏览器客服端与WEB服务器之间会话和数据传输

DNS协议:实现域名到IP地址之间的解析;

  1. 传输层

TCP协议:实现端到端不同进程之间面向连接通信

  1. 网络层

IP协议:封装、解封分组,对分组的检验处理等

ICMP协议:网络控制、路由重定向等

ARP协议:实现IP地址到MAC地址映射

  1. 网络接口层

LLC子层:逻辑链路控制协议,实现点到点之间的可靠数据传输

MAC子层:介质访问控制协议,实现介质的有序访问控制

2.(高频)描述浏览网页的整个逻辑过程

  1. 用户首先通过浏览器发送一个HTTP协议;
  2. 客服浏览器利用DNS协议,获得网页域名对应的IP地址;
  3. TCP协议利用目的IP地址,在客户和服务器之间通过三次握手建立一个TCP连接;
  4. ARP协议获得下一跳(或目的地址)对应的MAC地址;
  5. 接收方收到HTTP协议请求报文后,将网页信息通过HTTP协议发送给浏览器;
  6. 浏览器接收到网页信息后,通过解析器在浏览器中显示。

介绍七层网络体系结构

OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、

传输层、会话层、表示层和应用层。

(1) 物理层

任务:透明地传输比特流。

功能:完成0\1在物理介质上的传输

所实现的硬件:集线器,中继器

(2)数据链路层

任务:将网络层传输下来的 IP 数据报组装成帧

功能:将不可靠谱的物理链路变成可靠的数据链路

协议:PPP,HDLC、SDLC、STP、ARQ

(3)网络层

任务:把网络层的协议数据单元从发送端送到目的端,为分组交换网上的不同主机提供通信服务。

功能:a. 为传输层提供服务

b. 组包和拆包

c. 路由选择

d.拥塞控制

协议:ICMP、ARP、RARP、IP、IGMP、OSPF

(4)传输层

任务:负责主机中两个进程之间的通信

功能:

a. 为端到端连接提供可靠的服务

b. 为端到端连接提供流量控制、差错控制、服务质量等管理服务

传输单位:报文段(TCP)或用户数据报(UDP)

协议:TCP、UDP

(5)会话层

功能:为进程会话提供建立、维护、终止连接功能

(6)表示层

协商应用程序间交互的数据格式

(7)应用层

功能:为网络应用提供协议支持和服务

协议:FTP、SMTP、POP3、HTTP、DNS、TELne

五层网络体系结构

五层网络体系结构分分别为:应用层、运输层、网络层、数据链路层、物理层。

什么是同步通信和异步通信?

(1)同步通信的通信双方必须先建立同步, 即双方的时钟要调整到同一个频率。收发双方不停地 发送和接收连续的同步比特流。

同步通信数据率较高,但实现的代价也较高。

(2)异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的,但接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符, 因此必须在每个字符开始和结束的地方加上标志, 即开始位和停止位,以便使接收端能够正确地将每个字符接收下来。

异步通信的通信设备简单、便宜,但传输效率较低(因为标志的开销所占比例较大)。

为什么无线局域网环境下不能使用CSMA/CD协议(碰撞检测)

  1. 无线通信环境下很难实现边发送边进行冲突检测;
  2. 环境对无线通信的影响,即使距离相同的接收方,由于所处环境不同接收到的相同发送源的无线信号强度不同
  3. 无线通信环境下存在暴露终端和隐藏终端问题
  • 隐藏终端是由于监听到的信道空闲而不是真的空闲,故引发冲突。
  • 隐藏终端问题可以简单定义为:节点之间无法互相监听对方。但当其不可以同时传输时,其同时传输,从而导致冲突发生。
  • 而暴露终端是由于监听到的信道忙而不是真的忙,故其可以传输而不传输。
  • 暴露终端问题可以简单定义为:节点之间能够互相监听对方。但其可以同时传输时,其不传输,从而造成浪费。

以太网、无线局域网介质访问方法以及区别

以太网使用CSMA/CD(碰撞检测)协议,无线局域网使用CSMA/CA(碰撞避免)协议

CSMA/CD与CSMA/CA协议的区别

(1)CSMA/CD可以检测冲突,但无法避免

CSMA/CA发送数据的同时不能检测信道上有无冲突,本结点处没有冲突并不意味着在接收方就没有冲突,只能尽量避免

(2)传输介质不同。CSMA/CD用于总线型以太网

CSMA/CA用于无线局域网

(3)检测方式不同。CSMA/CD通过电缆中的电压变化来检测;

CSMA/CA采用能量检测、载波检测和混合检测;

总结:CSMA/CA协议的基本思想就是在发送数据时先广播告知其他结点,让其他结点在某段时间内不要发送数据,以免出现碰撞

CSMA/CD协议的基本思想是发送前侦听,边发送边侦听,一旦出现碰撞马上停止发送。

UDP协议

UDP 具有如下优点:

1) UDP 无须建立连接。因此UDP 不会引入建立连接的时延。

2) 无连接状态。TCP 需要在端系统中维护连接状态。此连接状态包括接收和发送缓存、拥塞控制 参数和序号与确认号的参数。而UDP 不维护连接状态,也不跟踪这些参数。因此,某些专用应用 服务器使用UDP 时,一般都能支持更多的活动客户机

3) 分组首部开销小。TCP 有20B 的首部开销,而UDP 仅有8B 的开销。

4) 应用层能更好地控制要发送的数据和发送时间。UDP 没有拥塞控制,因此网络中的拥塞不会影 响主机的发送效率。

UDP 提供尽最大努力的交付,即不保证可靠交付,但这并不意味着应用对数据的要求是不可靠 的,因此所有维护传输可靠性的工作需要用户在应用层来完成。

TCP协议

TCP 是在不可靠的IP 层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失 和不重复问题。TCP 是TCP/IP 体系中非常复杂的一个协议,主要特点如下:

1) TCP 是面向连接的传输层协议。

2) 每条TCP 连接只能有两个端点,每条TCP 连接只能是点对点的(一对一)。

3) TCP 提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序。

4) TCP 提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此TCP 连接的两 端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

三次握手建立连接

第一步:客户机的TCP 首先向服务器的TCP 发送一个连接请求报文段。

第二步:服务器的TCP 收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP 连接分配TCP 缓存和变量。

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变 量。

成功进行以上三步后,就建立了TCP 连接,接下来就可以传送应用层数据。TCP 提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。

四次握手释放连接

第一步:客户机打算关闭连接时,向其TCP 发送一个连接释放报文段,并停止发送数据,主动关 闭TCP 连接。

第二步:服务器收到连接释放报文段后即发出确认,此时,从客户机到服务器这个方 向的连接就释放了, TCP 连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服 务器到客户机这个方向的连接并未关闭。

第三步:若服务器已经没有要向客户机发送的数据,就通知TCP 释放连接

第四步:客户机收到连接释放报文段后,必须发出确认。

此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL(最长报文段寿命)后,A才进入连接关闭状态

为什么不采用“两次握手”建立连接呢?

答:

TCP 采用三次握手连接的主要原因是为了确保双方都已经准备好进行通信,避免因为网络延迟或丢失导致的连接问题。

假设 TCP 采用两次握手连接:

  1. 客户端发送连接请求到服务器端。
  2. 服务器端收到请求后,向客户端发送确认信息。

在这种情况下,如果确认信息在网络中丢失,客户端不会收到服务器的确认信息,但是服务器端已经建立了连接并等待客户端发送数据,客户端却不知道服务器端已经准备好了。如果客户端开始发送数据,服务器端会认为这是一个新的连接,导致数据传输出现错误。

因此,为了确保连接的可靠性,TCP 采用了三次握手的方式。在三次握手中,客户端发送连接请求到服务器端,服务器端收到请求后向客户端发送确认信息,客户端再次确认服务器的确认信息,从而确保双方都已经准备好进行通信。即使在其中一次握手中出现了延迟或丢失,另一方都会重新发送请求或确认信息,以确保连接的可靠性。

为何不采用“三次握手“释放连接,且发送最后一次握手报文后要等待2MSL 的时 间呢?

TCP 采用四次握手来释放连接的主要原因是为了确保双方都已经关闭连接,并且避免因为网络延迟或丢失导致的连接问题。

假设 TCP 采用三次握手释放连接:

  1. 客户端发送连接释放请求到服务器端。
  2. 服务器端收到请求后,向客户端发送确认信息。
  3. 客户端收到确认信息后,立即关闭连接并向服务器端发送确认信息。

在这种情况下,如果服务器端没有收到客户端发送的确认信息,服务器端会认为连接仍然是打开的,而客户端认为连接已经关闭。如果服务器端在此时向客户端发送数据,客户端会认为这是一个新的连接请求,从而导致数据传输错误。

因此,TCP 采用了四次握手的方式来释放连接。在四次握手中,客户端发送连接释放请求到服务器端,服务器端收到请求后向客户端发送确认信息,服务器端关闭连接并向客户端发送连接释放请求,客户端收到请求后向服务器端发送确认信息,从而确保双方都已经关闭连接并且不会再发送数据。这样,即使在其中一次握手中出现了延迟或丢失,另一方都会重新发送请求或确认信息,以确保连接的可靠性和正确性。

如何实现可靠的 UDP

UDP 是一个不可靠的传输协议,不保证数据的可靠传输和接收。但是,可以通过在应用层实现一些机制来实现可靠的 UDP。

下面是一些可以实现可靠 UDP 的方法:

  • 应用层协议:可以在应用层实现一些机制来保证数据的可靠传输,例如确认应答机制、重传机制、流量控制和拥塞控制等。这些机制可以提高数据的可靠性和正确性,但会增加网络延迟和额外的数据开销。
  • FEC 纠错码:可以使用 FEC(Forward Error Correction)纠错码来实现可靠的 UDP。FEC 纠错码是一种冗余编码技术,通过在发送端添加冗余数据,使得接收端可以在一定程度上纠正数据包中的错误。使用 FEC 纠错码可以提高数据的可靠性,但会增加数据包的大小和带宽开销。
  • ARQ 确认应答机制:可以使用 ARQ(Automatic Repeat Request)确认应答机制来实现可靠的 UDP。ARQ 机制是一种基于确认应答的机制,当接收端收到数据包后,会向发送端发送一个确认应答,如果发送端没有收到确认应答,就会重传数据包。使用 ARQ 机制可以提高数据的可靠性,但会增加网络延迟和额外的数据开销。
  • 基于 SCTP 的协议:可以使用基于 SCTP(Stream Control Transmission Protocol)的协议来实现可靠的 UDP。SCTP 是一种可靠的传输协议,提供多个流和可靠性机制。使用基于 SCTP 的协议可以提高数据的可靠性和正确性,但会增加网络延迟和额外的数据开销。

TCP 如何保证可靠性?

TCP 协议保证数据传输可靠性的方式主要有:校验和、序列号、确认应答、超时重传、

连 接管理、流量控制、拥塞控制。

说一下 http 和 https 的区别。

https 和 https 主要存在以下的区别:

  • HTTPS 协议需要到 CA (Certificate Authority,证书颁发机构)申请证书,
  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是
  • 443。
  • HTTP 的连接很简单,是无状态的。
  • HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传 输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接 收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。

计算机网络中使用了那些数据结构?/数据结构在计算机网络中的应用

http协议的可持续连接和非持续连接

HTTP协议支持两种连接方式:持续连接和非持续连接。它们的主要区别在于客户端和服务器之间建立和关闭连接的时间。

  1. 非持续连接:

在非持续连接中,客户端和服务器之间每次请求和响应都会建立一个新的TCP连接,并在完成后立即关闭。这意味着每个请求都需要经历三个阶段:建立连接、传输数据、关闭连接。由于每个连接的建立和关闭都需要一定的时间和资源,因此在高负载和高并发的情况下,非持续连接会导致服务器资源浪费和性能下降。

  1. 持续连接:

在持续连接中,客户端和服务器之间建立一条TCP连接,并在连接保持期间传输多个HTTP请求和响应。当一次请求响应结束后,连接并不关闭,而是保持开放状态,以便下次请求使用。这种方式可以减少建立和关闭连接的时间和资源消耗,提高HTTP协议的效率和性能。

介绍一下电路交换

介绍一下报文交换

介绍一下分组交换

IP地址和MAC地址有以下几个区别:

1. 作用不同:IP地址用于在互联网上标识和定位设备,而MAC地址用于在局域网中标识和定位设备。

2. 格式不同:IP地址是一个32位的数字,通常用点分十进制表示,例如192.168.1.1。而MAC地址是一个48位的十六进制数字,通常用冒号分隔,例如00:11:22:33:44:55。

3. 分配方式不同:IP地址通常由互联网服务提供商(ISP)分配,而MAC地址是由设备制造商提前分配,每个设备都有一个唯一的MAC地址。

4. 可变性不同:IP地址可以动态地分配和更改,例如通过动态主机配置协议(DHCP),而MAC地址是固定的,无法更改。

5. 范围不同:IP地址的范围可以是公网或私有网络,而MAC地址的范围通常仅限于局域网内。

总之,IP地址和MAC地址都是计算机网络中的重要地址标识符,但它们的作用和用途不同,格式不同,分配方式不同,可变性不同,范围也不同。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值