文章目录
- 前言
- IPv4和IPv6的区别
- OSI 模型
- 模型分层
- 功能
- TCP/IP 分层协议
- 三次握手与四次挥手
- 三次握手
- 简言
- 四次挥手
- 简言
- 总结
前言
准备了一些网络部分高频面试题,有需要的小伙伴可以收藏,需要的时候看看,也会持续更新。
IPv4和IPv6的区别
1.地址空间不同
- ipv4 使用 32 位地址,可分配的地址空间为 2^32 个,约 42 亿个独立 ip 地址
- ipv6 使用 128 位地址,地址空间为 2^128 个,约 340 亿个独立 ip 地址
2.地址表示方法不同
- ipv4 地址通常由四个十进制数字表示,例如 192.168.0.1
- ipv6 地址由八个十六进制数字表示,例如 2001:0db8:85a3:0000:0000:8a2e:0370:7334
3.安全性不同
- ipv4 缺乏内置的安全性,通常需要其他协议(如 IPSec)进行安全性增强
- ipv6 则内置了 IPSec,支持端到端的安全通信
4.配置方式不同
- ipv4 可以通过手动配置或 DHCP 自动配置
- ipv6 则通常需要使用 ICMPv6 或 SLAAC(DHCPv6 的无状态地址自动配置)进行地址配置
OSI 模型
模型分层
1.物理层:物理层的作用就是保证双向传输,双向通讯
2.数据链路层:交换机就是工作在二层数据链路层。链路层主要有三个功能
- 它提供了通讯过程中要用到的 MAC 地址
- 负责数据帧的转发。数据链路层传输的数据被称为数据帧
- 提供错误检测机制
3.网络层:路由器工作在第三层网络层。网络层一共有四个功能
- 提供逻辑 IP 地址
- 连接不同的媒介类型(内网和外网),使不同的媒介之间可以相互通信
- 根据路由器运行的不同的路由协议选择最佳路径
- 在选好的最佳路径上负责路由数据包
4.传输层:传输层的功能是它提供了端口号码的概念(port)
5.会话层:会话层的作用是负责在应用程序之间建立维护并拆除会话连接
6.表示层:表示层的作用是负责数据加密。其提供了四种常见的加密方式
- 对称加密: 加密方与解密方使用相同的密钥
- 非对称加密:一把私钥、N 种公钥
- HASH 256 加密
- 光密
7.应用层:给用户和抽象的网络之间提供一个接口,使用户可以通过使用应用程序、app 来使用整个的 6 层网络模型
功能
1.从网络功能的角度观察:下面 4 层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主;
2.第 4 层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
3.而上 3 层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。简言之,下 4 层主要完成通信子网的功能,上 3 层主要完成资源子网的功能。
TCP/IP 分层协议
OSI 只是存在于概念和理论上的一种模型,缺点是分层太多,增加了网络工作的复杂性,所以没有大规模应用,后来进行简化后,合并了一些层,最终保留了 4 层,就是所谓的 TCP/IP 模型
- 链路层:这一层负责在物理网络连接上发送和接收数据。它包含了各种硬件协议,如HTTP、FTP、SMTP,这些协议在不同的应用程序中用于传输和接收数据。
- 网络层:对应于 OSI 七层参考模型的网络层。本层包含 IP 协议、RIP 协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
- 传输层:对应于 OSI 七层参考模型的传输层,它提供两种端到端的通信服务。其中 TCP 协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP 协议(User Datagram Protocol)提供不可靠的用户数据报服务。
- 应用层:对应于 OSI 七层参考模型的应用层和表示层。因特网的应用层协议包括 Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。
三次握手与四次挥手
三次握手和四次挥手是TCP协议中建立连接和断开连接的过程,它们保证了数据传输的可靠性。
三次握手
三次握手是TCP协议中客户端和服务端建立连接的过程,目的是为了同步双方的序列号和确认号,并交换网络信息,确保双方都做好了数据通信的准备。过程如下:
- 第一次握手:客户端发送一个带有SYN(Synchronize)标志的数据包到服务器,表示希望建立连接。这个数据包还会包含客户端选择的初始序列号(ISN, Initial Sequence Number)。此时,客户端处于SYN_SENT状态。
- 第二次握手:服务器收到客户端的SYN后,会以自己的SYN作为应答,同时设置ACK(Acknowledgment)标志位,表示确认收到了客户端的SYN。服务器也会选择自己的初始序列号,并且将确认序号设置为客户端ISN加1,表示期望从客户端收到的下一个数据包的序列号。然后将这个数据包发送给客户端。这时,服务器进入SYN_RECV状态。
- 第三次握手:客户端收到服务器的SYN+ACK包后,会向服务器发送一个确认包,其中ACK标志位被设置为1,确认序号设置为服务器ISN加1,表示已经收到了服务器的SYN。同时,客户端可能还会携带数据在这个ACK包中。这个ACK包发送完毕后,客户端和服务器都进入了ESTABLISHED状态,表示连接已建立,可以开始数据传输。
简言
- 客户端发起连接请求(SYN),告知服务端想建立连接。
- 服务端收到后确认并同意连接(SYN+ACK),同时告诉客户端自己准备好通信。
- 客户端收到服务端确认后,最终确认连接已建立(ACK)。
四次挥手
四次挥手是TCP协议中客户端或服务端请求断开连接的过程,它确保了两个方向上的数据传输都已正确结束,且双方都同意关闭连接。过程如下:
- 第一次挥手:假设客户端想要关闭连接,它会发送一个FIN(Finish)标志的数据包给服务器,告诉服务器自己没有数据要发送了。客户端进入FIN_WAIT_1状态。
- 第二次挥手:服务器收到客户端的FIN后,会回复一个ACK确认包,确认序号为客户端发送的FIN的序列号加1,表示已经接收到客户端的关闭请求。此时,服务器可能还有数据需要发送给客户端,所以服务器不会立即关闭连接,而是进入CLOSE_WAIT状态。
- 第三次挥手:当服务器确定自己也没有数据需要发送给客户端时,会发送一个FIN给客户端,告诉客户端服务器也没有数据要发送了。服务器进入LAST_ACK状态。
- 第四次挥手:客户端收到服务器的FIN后,会发送一个ACK给服务器,确认序号为服务器发送的FIN的序列号加1,表示确认收到了服务器的关闭请求。客户端进入TIME_WAIT状态,等待一段时间(通常为2MSL,即两倍的最大报文生存时间)后关闭连接,以确保最后一个ACK能够到达服务器。服务器在收到这个ACK后,关闭连接,进入CLOSED状态。
简言
- 客户端请求断开连接(FIN)。
- 服务端确认收到断开请求(ACK),但可能还在处理数据发送。
- 服务端完成数据发送后,也请求断开(FIN)。
- 客户端确认服务端的断开请求(ACK),双方等待一段时间后彻底关闭连接。
总结
通过这三次握手和四次挥手的过程,TCP协议确保了连接的可靠建立与优雅关闭。