网站ip做网站,wordpress登录不,今天发布手机,百度搜索引擎录入网站面试计算机网络八股文十问十答第八期 作者#xff1a;程序员小白条#xff0c;个人博客 相信看了本文后#xff0c;对你的面试是有一定帮助的#xff01;关注专栏后就能收到持续更新#xff01;
⭐点赞⭐收藏⭐不迷路#xff01;⭐
1) TCP到底是什么连接#xff1f;
…面试计算机网络八股文十问十答第八期 作者程序员小白条个人博客 相信看了本文后对你的面试是有一定帮助的关注专栏后就能收到持续更新
⭐点赞⭐收藏⭐不迷路⭐
1) TCP到底是什么连接
TCPTransmission Control Protocol是一种在计算机网络中常用的传输层协议它提供了可靠的、面向连接的数据传输服务。TCP连接是一种面向连接的通信方式它通过三次握手来建立连接确保数据的可靠性和有序性。TCP连接是全双工的意味着数据可以在两个方向上同时传输而且在通信结束时需要进行四次挥手来关闭连接。
2) HTTP 1.0 和 2.0 有什么区别
HTTP 1.0 和 HTTP 1.1 的主要区别在于性能和功能上的改进。HTTP 1.1 对持久连接Keep-Alive的支持以及对请求管道Pipeline的支持使得在一个连接上可以发送多个请求从而减少了建立和关闭连接的开销提高了性能。而 HTTP 2.0 则在 HTTP 1.x 的基础上引入了多路复用Multiplexing、头部压缩Header Compression、服务器推送Server Push等新特性进一步提高了性能和效率。
3) HTTP 2.0 和 3.0 有什么区别
HTTP 3.0 是基于 UDP 协议的 QUIC 协议上的 HTTP 协议而 HTTP 2.0 是基于 TCP 协议的。HTTP 3.0 使用了 QUIC 协议来解决 TCP 在传输层面上的一些问题如连接的建立和重传等从而进一步提高了性能。HTTP 3.0 与 HTTP 2.0 相比最大的区别在于传输层协议的不同以及使用了更快的连接建立和传输方式从而在高延迟和丢包率较高的网络环境下表现更好。
4) HTTP 和 HTTPS 有什么区别
HTTPHyperText Transfer Protocol是一种用于传输超文本数据的协议它是基于 TCP 协议的。HTTP 是明文传输的数据在传输过程中不加密因此存在被窃听和篡改的风险。而 HTTPSHyperText Transfer Protocol Secure是在 HTTP 的基础上加入了 SSL/TLS 加密机制通过使用 SSL/TLS 协议对数据进行加密从而保证了传输过程的安全性。HTTPS 使用了公钥加密和私钥解密的方式确保了数据的机密性、完整性和可信度。
5) TCP 是用来解决什么问题
TCPTransmission Control Protocol是一种面向连接的、可靠的传输层协议它主要解决了网络传输中的可靠性和有序性问题。TCP 提供了数据包的重传机制、数据包的排序和流量控制等功能确保了数据的完整性、顺序性和可靠性。TCP 还通过拥塞控制算法来避免网络拥塞从而提高了网络的性能和稳定性。
6) TCP 和 UDP 有什么区别
TCPTransmission Control Protocol和 UDPUser Datagram Protocol是两种不同的传输层协议它们在功能和特性上有很大的区别
连接性TCP 是面向连接的通过三次握手建立连接而 UDP 是无连接的每个数据包都是独立的不需要建立连接。可靠性TCP 提供可靠的数据传输服务通过重传机制和确认机制来确保数据的可靠性和有序性而 UDP 不保证数据的可靠性数据包可能会丢失、重复或者乱序。流量控制TCP 提供了流量控制功能通过滑动窗口机制来调节发送方的发送速率防止数据包的丢失和网络拥塞而 UDP 没有流量控制功能发送方发送的数据包速率不受限制。应用场景TCP 适用于要求可靠传输、数据量较大、对时序要求严格的应用如网页浏览、文件下载等而 UDP 适用于实时性要求高、数据量较小、对实时性要求高的应用如实时音视频传输、在线游戏等。
7) 为什么要 TCPIP 层实现控制不行么
TCP和IP层位于网络协议栈的不同层次各自负责不同的功能
IPInternet Protocol层负责在网络中传输数据包并通过 IP 地址来标识网络中的设备。IP 层是一种无连接、不可靠的传输协议它只负责将数据包从源地址传输到目的地址并不关心数据包的可靠性和顺序性。TCPTransmission Control Protocol层位于传输层负责在应用程序之间建立可靠的连接保证数据的可靠性、有序性和流量控制。TCP 提供了连接的建立、数据的传输、数据的重传、数据的排序、流量的控制等功能能够适应复杂的网络环境和应用需求。
虽然IP层也可以进行一些简单的控制但是它不提供连接的建立和管理、数据的可靠性保证以及流量的控制等功能因此无法满足许多应用对于可靠性和有序性的需求。而TCP层提供了这些功能能够更好地满足应用的需求因此在实际应用中通常选择使用TCP协议。
8) TCP 的粘包和拆包能说说吗
TCP的粘包和拆包是由于TCP是面向流的协议在发送数据时并不保证数据包的边界因此可能出现多个发送的数据包被合并成一个或者一个发送的数据包被拆分成多个的情况这就是粘包和拆包问题。
粘包Packet Sticking多个发送的数据包被合并成一个的情况。这可能发生在发送方连续发送多个小数据包时TCP 在发送端会尽可能地将数据合并成一个更大的数据包进行发送以提高网络的利用率。拆包Packet Splitting一个发送的数据包被拆分成多个的情况。这可能发生在发送方发送一个大数据包时TCP 在传输过程中将大数据包拆分成多个小数据包进行传输然后在接收端进行重新组装。
解决粘包和拆包问题的常用方法包括消息边界标记、消息长度标记、固定长度消息等。
9) 说说 TCP 的三次握手
TCP的三次握手是建立TCP连接时的一种协商过程用于确保通信双方的收发能力和可靠性。三次握手的过程如下
客户端发送SYN同步请求客户端发送一个特殊的TCP数据包其中设置SYN标志位为1并选择一个初始的序列号ISN。服务器回应SYN-ACK同步-确认服务器接收到客户端的SYN请求后如果同意建立连接就会发送一个ACK确认包作为应答并且也设置SYN标志位为1同时选择自己的初始序列号。客户端发送ACK确认客户端收到服务器的SYN-ACK后发送一个ACK确认包表示连接建立成功。
通过这样的三次握手客户端和服务器双方都确认了彼此的收发能力和初始序列号建立了可靠的连接。
10) 初始序列号 ISN 怎么取值的
初始序列号Initial Sequence NumberISN是在TCP连接建立时由每一端生成的一个随机数用于标识每个数据包的顺序。ISN的取值通常由以下几个因素决定
时间戳ISN的一部分可以是当前的时间戳这样可以确保每次生成的ISN都是唯一的。随机数ISN的另一部分可以是随机数以增加ISN的随机性防止恶意攻击者对ISN进行猜测。其他因素ISN的取值还可能受到操作系统、TCP实现和网络环境等因素的影响。
由于ISN是一个32位的数值因此理论上可以有2^32个不同的取值通常情况下ISN的取值会比较大以减小被猜测的可能性。
开源项目地址https://gitee.com/falle22222n-leaves/vue_-book-manage-system
前后端总计已经 1300 Star2W 访问
⭐点赞⭐收藏⭐不迷路⭐