计算机网络速成(二)

计算机网络面试(二)-CSDN博客

OSI七层体系架构

OSI七层模型是什么?每层的功能是什么?

OSI七层模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,它从上到下分别是:

  • 应用层:为应用程序提供交互服务,如HTTP、FTP、SMTP等协议。
  • 表示层:数据的表示、安全、压缩,将应用层的数据转换为适合网络传输的格式。
  • 会话层:建立、管理、终止会话,组织和协调两个会话进程之间的通信。
  • 传输层:负责向两台主机进程之间的通信提供数据传输服务,包括TCP和UDP协议,实现数据的可靠传输。
  • 网络层:选择合适的路由和交换结点,确保数据及时传送,主要协议为IP
  • 数据链路层:在两个相邻节点之间传送数据时,将网络层交下来的IP数据报组装成帧,并添加必要的控制信息。
  • 物理层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽传输介质和物理设备的差异。

应用层 (应用层、表示层和会话层)

Http
HTTP和HTTPS的区别是什么?

HTTP(超文本传输协议)和HTTPS(安全的超文本传输协议)的主要区别在于安全性:

  • 安全性:HTTP传输的是明文,数据容易被截获和篡改;而HTTPS在HTTP的基础上增加了SSL/TLS协议层,对数据进行加密传输,确保数据传输的安全性。
  • 端口号:HTTP默认使用80端口;HTTPS默认使用443端口。
  • 性能:由于HTTPS需要进行加密和解密操作,因此其性能相比HTTP会有所下降。

传输层

TCP
TCP三次握手和四次挥手的过程是什么?

TCP三次握手的过程如下:

  1. 客户端发送一个SYN包(同步序列编号)到服务器,并进入SYN_SENT状态,等待服务器确认。
  2. 服务器收到SYN包后,确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(即SYN+ACK包),此时服务器进入SYN_RCVD状态。
  3. 客户端收到服务器的SYN+ACK包后,向服务器发送一个确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

TCP四次挥手的过程如下:

  1. 客户端发送一个FIN,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态。
  2. 服务器收到FIN后,发送一个ACK给客户端,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态。
  3. 服务器关闭与客户端的连接,发送一个FIN给客户端,服务器进入LAST_ACK状态。
  4. 客户端收到FIN后,发一个ACK给服务器,确认序号为收到序号+1,客户端进入TIME_WAIT状态。服务器收到ACK后关闭连接,客户端等待2MSL后依然没有收到回复,则进入CLOSED状态。
TCP握手为什么是三次?不是两次(仅发一次)或四次(浪费)

TCP需要三次握手而不是两次握手的主要原因是确保双方都具有接收和发送数据的能力,从而建立可靠的连接。具体来说:

  • 第一次握手:客户端发送SYN包,服务器确认客户端的发送能力。
  • 第二次握手:服务器发送SYN+ACK包,客户端确认服务器的接收能力和发送能力。
  • 第三次握手:客户端发送ACK包,服务器确认客户端的接收能力。

如果只有两次握手,可能会出现以下情况:客户端发送连接请求,但因连接请求报文丢失而未收到确认,于是客户端再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接,客户端共发出了两个连接请求报文段,其中第一个丢失,第二个到达了服务端。但是第一个丢失的报文段只是在某些网络结点长时间滞留了,延误到连接释放以后的某个时间才到达服务端,此时服务端误认为客户端又发出一次新的连接请求,于是就向客户端发出确认报文段,同意建立连接。由于此时客户端已经没有发送数据请求,因此服务端将一致等待客户端发送数据,造成资源浪费。

TCP四次挥手,为什么?不是三次(ACK/FIN 有时差,资源还未释放,时间过长)?

确保数据完整传输 :在TCP连接中,双方都可能还有数据要发送给对方。四次挥手确保了即使一方想要关闭连接,**另一方仍然有机会发送完剩余的数据。**第一次挥手(FIN包)由一方发起,表示该方没有更多数据要发送了,但它仍然可以接收来自对方的数据。如果此时立即关闭连接(即只有三次挥手),那么对方可能还有数据在传输中,这些数据就会丢失。

为什么SYN/FIN不包含数据却要消耗序列号

TCP与UDP区别:

CP(传输控制协议)与UDP(用户数据报协议)是计算机网络中常用的两种传输层协议,它们在多个方面存在显著的区别。以下是TCP与UDP的主要区别:

1. 连接性
  • TCP:是一种面向连接的协议。在数据传输之前,TCP要求发送方和接收方之间先建立连接,这通常通过三次握手过程实现。连接建立后,数据才能开始传输。数据传输完成后,还需要通过四次挥手来释放连接。
  • UDP:是一种无连接的协议。发送方在传输数据之前不需要与接收方建立连接,可以直接发送数据。因此,UDP的传输过程更加简单和高效,但也可能导致数据丢失或乱序。
2. 可靠性
  • TCP:对数据的可靠性要求非常严格。它使用确认和重传机制来确保数据的完整性和正确性。如果接收方没有收到数据或数据在传输过程中出错,TCP会要求发送方重新发送数据,直到接收方确认收到正确的数据为止。
  • UDP:对数据的可靠性要求较低。它不提供确认、重传和流量控制机制。如果发送方发送的数据丢失或损坏,UDP不会进行重传,而是直接让接收方收到的数据可能不完整或出错。
3. 速度和效率
  • TCP:由于需要建立连接和使用确认重传机制,TCP在数据传输过程中可能会受到一定的延迟和开销。此外,TCP还包含拥塞控制机制,当网络拥堵时会自动降低发送速率,这进一步影响了传输速度。
  • UDP:没有连接建立和确认重传的开销,且不受拥塞控制的限制。因此,在数据传输速度方面,UDP通常比TCP更快。但是,这种速度优势也伴随着数据可靠性的降低。
4. 数据包大小
  • TCP:将数据划分为较小的数据包进行传输,并根据网络状况进行调整。TCP没有固定的数据报大小限制,但会尽量保持数据包的大小在合理范围内以提高传输效率。
  • UDP:允许发送方一次性将多个数据包打包成一个较大的数据报进行传输。数据报的大小通常由应用层自行决定,但受到网络MTU(最大传输单元)的限制。
5. 适用场景
  • TCP:适用于对数据可靠性要求较高的应用场景,如文件传输、电子邮件和网页浏览等。在这些场景中,数据的完整性和正确性至关重要。
  • UDP:适用于对数据实时性要求较高的应用场景,如音频和视频流传输、网络游戏和实时通信等。在这些场景中,数据的实时性比数据的完整性更重要。

网络层

IP
一、IP协议概述
  • 定义:IP是英文Internet Protocol的缩写,意思是网络之间互连的协议,也就是为计算机网络相互连接进行通信而设计的协议。
  • 功能:IP协议的主要功能是为网络设备提供唯一的标识和寻址方式,确保数据能够在网络间进行准确的传输和路由。同时,它还支持各种网络服务、提供安全保障、支持移动性和灵活性,并促进了全球范围内的通信和信息共享。
二、IP地址
  • 定义:IP地址是互联网上设备的唯一标识符,用于路由数据包并确保它们到达正确的目的地。
  • 格式:如今的IP网络使用32位地址(IPv4),以点分十进制表示,如192.168.0.1。地址格式为:IP地址=网络地址+主机地址(或IP地址=网络地址+子网地址+主机地址)。IPv6则使用了128位地址,以更复杂的格式表示,以应对IPv4地址耗尽的问题。
  • 分类:IP地址分为A、B、C、D四类(还有一个保留的E类),每类地址的网络号和主机号长度不同,适用于不同规模的网络。
  • 静态与动态:静态IP地址是长期分配给一台计算机或网络设备使用的IP地址,便于管理;动态IP地址则是每次上网时由电信随机分配的,每次上网所分配到的IP地址都不相同。
三、IP地址的组成
  • 网络号:用于标识设备所在的网络或子网,确保数据包能够正确地发送到目标网络。
  • 主机号:用于标识同一网络或子网内的不同设备,确保数据包能够准确地到达目标设备。
四、子网掩码
  • 定义:子网掩码用于区分IP地址中的网络号和主机号部分。它由32位二进制数组成,网络号部分全部为1,主机号部分全部为0。
  • 作用:通过子网掩码,可以计算出IP地址的网络部分和主机部分,从而确定设备之间的网络关系。
五、IP协议的工作流程
  1. 数据包封装:在发送数据时,数据首先被封装成数据包,每个数据包都包含发送者和接收者的IP地址。
  2. 路由选择:路由器根据数据包中的目的IP地址,通过查找路由表来确定数据包的传输路径。
  3. 数据包传输:数据包沿着确定的路径在网络中传输,每个网络设备都根据数据包中的IP地址信息将其转发到下一个节点。
  4. 数据包接收:当数据包到达目的设备时,目的设备解析数据包并提取其中的数据。
六、IP协议的应用场景

IP地址在计算机网络中具有广泛的应用场景,包括但不限于:

  • 网络寻址和标识:用于标识和定位网络设备。
  • 广域网连接:支持设备在全球范围内进行连接。
  • 网络安全:用于监控和检测潜在的网络攻击。
  • 广告和市场营销:广告商可以使用IP地址来精确定位广告受众。
  • 远程医疗:支持远程医疗诊断和治疗。
  • 制造业:用于连接设备、传感器和生产线,进行实时监控和数据采集

数据链路层

物理层

相关推荐
m0_609000428 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
我要吐泡泡了哦1 小时前
GAMES104:15 游戏引擎的玩法系统基础-学习笔记
笔记·学习·游戏引擎
骑鱼过海的猫1231 小时前
【tomcat】tomcat学习笔记
笔记·学习·tomcat
贾saisai3 小时前
Xilinx系FPGA学习笔记(九)DDR3学习
笔记·学习·fpga开发
suifen_3 小时前
RK3229_Android9.0_Box 4G模块EC200A调试
网络
北岛寒沫3 小时前
JavaScript(JS)学习笔记 1(简单介绍 注释和输入输出语句 变量 数据类型 运算符 流程控制 数组)
javascript·笔记·学习
铁松溜达py3 小时前
编译器/工具链环境:GCC vs LLVM/Clang,MSVCRT vs UCRT
开发语言·网络
铁匠匠匠5 小时前
从零开始学数据结构系列之第六章《排序简介》
c语言·数据结构·经验分享·笔记·学习·开源·课程设计
架构文摘JGWZ6 小时前
Java 23 的12 个新特性!!
java·开发语言·学习
小齿轮lsl6 小时前
PFC理论基础与Matlab仿真模型学习笔记(1)--PFC电路概述
笔记·学习·matlab