这可能是全网最详细的计算机网络面经(笔记二)

      最后更新:2022-06-20 09:15:54 手机定位技术交流文章

      这可能是整个网络的最详细的计算机网络体验(注2,继续)

      传输层协议与网络层之间的差异

      网络层协议提供了主机之间的逻辑通信;传输层协议提供了进程之间的逻辑通信。

      子网掩护:指示IP地址的哪些位数识别主机所在的子网,以及哪些位数识别主机的位数掩护。


      UDP和TCP协议

      // TCP 和 UDP -> 传输层的协议
      UDP: 用户数据报告协议, 不连接, 单播, 多播, 广播, 数据报告, 不可靠
      TCP:传输控制协议,面向连接,可靠,基于字节,只支持单通道传输

      UDP TCP
      是否创建连接 无连接 面向连接
      是否可靠 不可靠 可靠的
      连接的对象个数 一个对一个,一个对许多人,许多对一个,许多对许多人 支持一对一
      传输的方式 面向数据报 面向字节流
      首部开销 8个字节 最少20个字节
      适用场景 实时应用(视频会议,现场) 高可靠性应用(文件传输)

      TCP通信流程

      在这里插入图片描述

      服务器端(连接角色的被动接受)

      1. 创建监视的接口 - 监视: 监视客户端连接 - 接口: 这个接口实际上是文件描述符
      2. 将此监视文件描述符绑定到本地IP和端口(IP和端口是服务器地址信息)-这是当客户端连接到服务器时使用的IP和端口
      3. 设置监视,监视fd开始工作
      4. 当客户端启动连接时,禁用块,接受连接,并接收一个数据包(fd)来与客户端通信
      5. 通讯-接收数据-发送数据
      6. 通信结束,断开连接

      客户端

      1. 创建通信接口(fd)
      2. 连接服务器,需要连接服务器的IP和端口
      3. 连接成功了,客户端可以直接和服务器通讯-接收数据-发送数据
      4. 通信结束,断开连接

      TCP与UDP之间的区别

      TCP有一个备份机制,用于服务端检查已经建立的TCP链接的客户端状态。区别是:

      1. TCP(传输控制)是可靠的,UDP(用户数据)是不连接的,不可靠
      2. TCP传输以字节流的形式,传输效率缓慢,消耗更多资源
      3. UDP以段落形式传输数据,速度更快,资源消耗更少
      4. 标题也不同,TCP的标题为20-60,按要求后面的4n
        UDP头条为8字节,包含源端口号、目的地端口号、校正和每字节长2字节

      TCP握手三次,波浪四次

      1. 三次握手
        第一次握手,客户端将SYN消息发送到服务端,SYN符号是1,要求开放服务端口,此时,服务器知道客户端要与它建立一个新的连接,然后服务器将确认消息包ACK位置发送给客户端1,同时向客户发送SYN包,要求客户端打开终端。

        以上两次握手之后,对于客户端而言,事实上,我们已经知道所有信息,也就是说,我的客户也可以向服务器发送消息,我也可以从服务端接收消息;服务端,两次握手是不够的,因为到目前为止,服务端只知道一件事,客户给我发了我收到的信,但是,我向客户发了一封信,我不知道客户是否能得到。

        第三个握手是当客户收到服务端发送的确认消息并继续对服务端作出回应时,
        它也是一个确认消息,ACK符号位置为1。

        通过上述三个连接,服务器和客户端都互相认识,我可以互相发送信息,并相互接收信息,这样就可以安全地建立连接。
        (目的:确认双方的正常收据和交货)

      2. 四次挥手
        四次挥手机制,首先由客户发起,客户向服务端发送 FIN消息,表示客户向服务端口方向转达消息的终止,当服务终止时收到此通知时,我知道客户想要与他断绝联系。但对于服务的结局,很有可能还有未完成的邮件,它必须继续发送;所以在这个点,他只能为服务结束确认一个消息,发送ACK消息确认包后,服务器继续发送未发送消息。

        发送完毕后,然后继续向客户发送 FIN消息,终止从服务端向客户转达的信息,以此方向,此时服务端也准备好切断连接,所以当这个消息发送给客户时,客户端也将继续向服务器发送确认ACK消息的消息。

        通过这些四个交互和连接,我们知道服务端和客户端都准备好切断连接,这样就可以切断连接。

      具体讲讲三次握手
      第一次握手:
      1.客户职位SYN至1
      2.生成一个随机32位序列 seq=J,可以将数据(数据的大小)放在序列后面
      第二次握手:
      1.服务器端客户端接收连接:ACK=1
      2.服务器将返回确认序列: ack=客户端序列+数据长度+SYN/FIN(以字节计算)
      3.服务器将向客户端发起连接请求:SYN=1
      4.服务器生成一个随机序列: seq = K
      第三次握手:
      1.客户队列以回答服务器连接请求:ACK=1
      2.客户端答复接收的服务器端数据: ack = 服务端序列 + 数据长度 + SYN/FIN (由一个字节计算)

      在这里插入图片描述



      当连接被切断时,会发生四波,在程序中调用 close()时,将使用TCP协议执行四波。
      客户端和服务器可以自行启动脱离连接,并且谁叫 close() 首先启动它。
      因为当TCP连接使用三个握手时,连接是双向的,在切断时必须是双向的。

      在这里插入图片描述

      为什么在四次挥手后等待2MSL?

      另一方面,如果您主动切断连接,您将进入 TIME_WAIT状态,持续时间为2msl
      官方推荐时间:2分钟,实际上30岁

      当TCP连接时,主动开关接收了被动开关和最后的ACK发送的 FIN,连接的主动关闭必须处于 TIME_WAIT状态,持续2msL。如果它发送的ACK丢失,则允许TCP连接的主动关闭器重新发送最后的ACK。
      主动开关重新发送的最后的ACK不是因为被动开关重新发送的ACK(它们不消耗序列数,被动关闭不会再发送),这是因为被动的闭幕继发了它的 FIN.事实上,被动开关总是把 FIN 重新定位,直到它收到最后的 ACK 。

      1. 2MSL,可以使与此TCP连接的所有消息消失,而不会出现在下一个连接上
      2. 由于数据包丢失,第四波发送的ACK消息会丢失,服务端不会收到第三波消息。

      TIME_WAIT和CLOSE_WAIT之间的区别

      TIME_WAIT
      TIME_WAIT由主动关闭形成。当第四波完成时,即客户端发送Ack消息到服务器并确认消息,客户端输入 TIME_WAIT并等待2MSL

      CLOSE_WAIT
      CLOSE_WAIT由被动关闭构成,当客户端发送 FIN0-1消息时,服务器返回ACK消息,客户端输入CLOSE_WAIT


      TCP滑动窗口

      滑窗协议是提高吞吐量的一种技术,
      允许发送者在收到任何答复之前发送额外的包。
      接收器告诉发送者可以在指定的时间发送多少包(称为窗口大小)。

      滑动窗口是一个在TCP中实现的载荷结构,例如ACK确认、流量控制和拥挤控制。
      在TCP中,一个滑动窗口用于控制传输,而滑动窗口的大小意味着接收器有更多的缓冲空间接收数据。 发送者可以根据滑动窗口的大小确定该发送多少字节数据。
      当滑动窗口为0时,发送者不能再发送数据消息。

      注:
      如果接收机的滑动窗口满了或接收机的响应包丢失,双方都在等待,并且出现僵局。 在这一点上,必须坚持到计时器来协助发送者定期询问接收机,从TCP维护机制到计时器。


      UDP为什么不可靠

      UDP只接收一个插座缓冲区,没有接口发送缓冲区;也就是说,只要有数据,对方是否能正确地收到它.当另一端接入缓冲区时,新的数据消息不能输入接口接受缓冲区,这份数据报告将被丢弃,因此UDP不能保证数据能够到达目的地,此外,开发计划署没有流动控制和再传输机制,因此UDP数据传输是不可靠的。


      TCP如何确保可靠的传输

      1. 数据块:应用程序数据被分成数据块, TCP认为最适合发送。
      2. 序列号和确认应答:
        TCP编码每个发送的包,在传输的过程中,每次接收器接收数据时,将向传送人作出确认和答复,即发送ACK报文,此ACK消息包含相应的确认序列数目,告诉发送者已成功接收哪些数据并从哪里将发送下一个数据。除此之外,接收器可以根据序列数排序数据包,将有序的数据转移到应用程序层,并丢弃重复的数据。
      3. 校验和
        TCP将删除此段,并不确认发送者和接收者分别计算的数据的验证,如果两者不相同,则表示在传输期间数据有错误
      4. 流量控制
        两个TCP连接都有一个固定大小缓冲空间,发送者发送的数据量不能超过接收器缓冲区的大小。当接收器无法处理发送者的数据时,发送者将被要求降低发送速度,防止产生丢包。接收器返回的ACK将包含其自己的接收器窗口大小,控制发送者发送的数据量(发送窗口的大小)。TCP通过滑窗协议支持发送器的流量控制机制。
      5. 堵塞控制:减少网络节点堵塞时发送的数据量,包括慢启动、避免堵塞、快速重传、快速恢复。
      6. 超时重传
        当TCP发送消息时,它启动计时器并等待目的地确认它已经收到消息。 如果确认没有收到超过一段时间,则段落将重新提交。

      HTTP补充

      讨论HTTP/1 HTTP/2 HTTP/3的发展

      1. 技术的发展就是解决某些问题
      2. HTTP/1问题是,短链接每次需要三个或四个冲动,不安全(HTTPS),无状态(Cookie),服务端无法主动发送(Corner,1.0短连接1)。
      3. HTTP/2默认为Keep-Alive,引入TLS/SSL、Cookie、服务侧主动发送、头压缩和多路径重用。但是还有阻塞团队的问题(因为尽管有很长的联系,但是还有一个情况,团队阻塞,这就是输送的损失。(Core Team Blocks SSL Cookie)
      4. HTTP/3使用UDP来解决因重新传输丢失而引起的队列阻塞,TLS/SSL1.3降低了建立HTTP连接的时间到1.5-2 RTT(返回时间),也引入了二进制编码,忘记了其他细节。
      5. 提前向浏览器发送资源
      6. 发送可以基于发送的请求,例如客户端请求html,服务器可以自行发送js,css文件

      如果您非常缓慢地浏览网站, 如何搜索和解决?

      有多种原因导致网页的开放缓慢,以下是一些常见问题:

      1. 首先,最直接的方法是看看本地网络是否正常,通过网络加速软件,例如计算机管理器,可以测量计算机的速度,若网速正常,我们检查网络带宽是否被占用,例如,当你下载电影时没有速度限制,它会影响你打开网页的速度,这往往是由于处理器的内存较小;
      2. 当网速测试正常时,我们检查网站服务器的速度,通过 ping 命令,查看连接到服务器的时间和数据包的状态,一个速度好的机房,第一,损失率不得超过1%,其次, ping值较小,最后, ping值必须稳定,如果最大和最小差太大,路径不稳定。或者我们还可以看看在同一服务器上打开其他网站的速度,看看其他网站是否开得太慢.
      3. 如果页面打开的速度越来越快和慢,甚至有时候打不开,可能是宇宙不稳定的原因。当确定是该问题时,你必须找到你的空间经销商来解决或更换空间经销商,如果购买空间的话,你可以选择购买双线空间或多线空间;如果有地方可以快速打开,有些地方开得很慢,这就是网络线的问题。电讯线路用户访问连接服务器上的网站,连接线用户在电讯服务器上访问网站,开放的速度相对来说肯定要慢一些.
      4. 网站的问题主要包括网站程序设计的三个部分、网站设计结构和网站内容。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/27789.html

          热门文章

          文章分类