Advertisement

计算机网络知识点整理

阅读量:

计算机网络

从输入网址到浏览器显示的过程

在解析完目标域名后,Browser会构建完整的HTTP/HTTPS连接头信息并发送至目标服务器进行资源访问操作。
发送前,Browser会对URL路径参数进行编码处理并附加在HTTP头部字段中;接收端服务器则根据返回状态码来判断资源是否存在及状态变化情况。

TCP三次握手

在这里插入图片描述

最初状态下客户端和服务器均为closed状态其中客户端主动发起连接。
当TCP服务器启动时会生成传输控制块并通过该块进入listen状态以便接收新的连接请求。
随后当TCP客户启动时会生成自己的传输控制块并发送初始SYN报文其中首部包含同步位SYN=1以及起始序列号seq=x。
此时客户端将处于SYN-SENT(同步已发送)的状态表示其已经向对方发出SYN报文。
TCP规定仅在SYN=1的情况下所携带的数据不会占用任何序列号空间但必须记录一个序列号。
一旦收到此SYN报文 TCP服务器将检查是否愿意与之建立连接关系。
如果同意则会在首部设置ACK=1 SYN=1以及ack=x+1同时选择一个初始序列号seq=y并将自身所选的序号设为y。
此时服务器将处于SYN-RCVD(同步收到)的状态等待对方回应。
接下来在收到上述ACK报告后 客户端必须再次向其发送自己的ACK响应其中首部同样包含三个字段即同步位SYN=1 本地的ack=y+1以及本地选择的起始序列号seq=x+1。
一旦此操作完成 客户端将被标记为ESTABLISHED(已建立)状态表明双方已成功建立通道关系并且可以开始正常的通信过程

为什么要三次握手,而不是二次或四次呢

通过三次挥手机制可以有效防止因连接请求失效而导致服务器未成功接收数据的情况

TCP四次挥手

在这里插入图片描述
  • 第一次分手:客户端发送释放连接报文首部(FIN=1),其中序列号字段为u(表示前面已发送数据最后一个字节加1)。该报文的目的地是服务器,并标志着客户端已无后续数据传输需求。因此客户端进入FIN-WAIT-1状态。
  • 第二次分手:当服务器接收到客户端的释放连接报文后,在其回合内生成并发送确认报文(ACK=1),其确认字段值设为u+1,并重置序列号字段至v值。此时服务器切换至CLOSE-WAIT状态,并通知上层应用程序客户端已断开连接。
  • 第三次分手:在等待最终确认的过程中,在数据传输完成之后(ACK=1),服务器向客户端发送最终确认报文(ACK=1),其确认字段值设为u+1,并设定序列号字段至w值。
  • 第四次分手:当最终确认到达并被处理后,在等待2MSL时间区间结束之前必须保持等待状态(TIME-WAIT)。若在此期间未收到对方回复,则表明对方已正常关闭服务端口;此时双方均需断开当前会话并重新建立新的通信链路。

为什么要等2MSL(最大生存时间)

原因主要有二个:

  • 通过机制验证和处理流程设计, 使得客户端发送的最后一个ACK报文能够成功到达服务器, 并且确保TCP协议全双工连接能够稳定运行。
  • 通过动态监控机制检测和处理失效请求, 并实现所有相关传输过程中的数据丢失风险降至最低程度。

TCP通过哪些方式来保证数据的可靠性?

TCP保证数据可靠性的方式大致可以分为3类

  • 在数据包层面:校验与
  • 在数据包传输层面:序列号、确认响应与超时再传
  • 在流量控制方面:滑动窗口协议型拥塞控制
    计算流程
    将发送方的数据段视为一个16位整数,并将这些整数累加起来并进位(不可丢弃),然后将进位附加在累加结果末尾。随后进行取反运算(即对累加结果进行16位二进制取反操作),得到最终的校验值。
    发送端完成计算后将其附加至数据段末尾;接收端收到数据后按照相同的流程重新计算检验值,并与发送端的检验值进行对比。若两者不一致,则表示存在传输错误;若一致,则无法完全保证传输过程无误。
    序列号、确认响应与超时再传
    在信息传递过程中每条信息都会包含一个序列编号字段;当接收到一条信息后会回复一个确认响应字段,并告知下一预期接收的信息序列编号(采用32位确认序号字段)。若在网络延迟(2RTT)时间内未接收到对应的信息序列编号字段,则判定当前信息可能存在丢失或确认响应字段丢失的情况;此时应重新发送原始信息。

但是 sender不需要等待 acknowledgment 接收方最后一个 packet 的确认即可立即发射 next packet。 TCP 协议采用滑动窗口机制以提高传输效率,在每个 sender window 范围内,默认情况下无需等待 acknowledgment 就可以立即发射 next data segment。 sender window 的最大容量即为无acknowledgment 等待情况下连续发射的数据 segment 数量上限;具体来说,在 receiver 当前还有多少空间以及网络拥塞情况共同决定每个 sender 能够设置多大的 sender window。

拥塞控制
发送方持续维护一个称为CWND的状态变量来监控网络中的流量情况。该变量值根据当前网络中的拥塞水平动态调整,并在不同情况下灵活变化以适应网络状态的变化需求。在TCP协议中,实际应用中通常将数据分片的最大传输量设定为CWND与REUSEWND中的较小值以避免数据争用现象的发生。
为了实现有效的流量管理,在TCP协议中采用了多种主动管理机制:

  1. 慢增益机制:当连接建立初期或网络条件发生变化时,默认状态会自动过渡到慢增益模式。
  2. 带宽保护模式:当连接被重新建立或带宽资源被释放时,默认状态会切换至带宽保护模式以防止因频繁连接而引起不必要的开销。
  3. 智能重传策略:当接收端出现丢包现象时,默认状态会触发智能重传策略以减少数据丢失的影响。
  4. 快速恢复模式:一旦检测到连续丢失超时ACK报文段,则立即切换至快速恢复模式以加快连接重建的速度。

以下是对原文的同义改写版本

如何实现TCP数据传输的稳定性和可靠性?由于TCP协议的本质特性决定了其无法直接处理带有格式信息的数据包,在实际应用中通常需要对原始数据进行分块处理才能完成传输过程。当发送或接收的数据量超出缓存空间时(即缓冲区剩余空间不足),就会导致报文拆分现象的发生。此外,在某些特殊场景下(如同时存在多个待发送的数据流量),也可能出现因缓存冲突而导致的报文重叠现象(即所谓的粘包问题)。针对上述问题提出的解决方案主要包括:优化缓存管理策略、提升硬件资源承载能力以及改进协议栈设计等措施。

网络协议栈详解https://www.cnblogs.com/mrlayfolk/p/11965347.html

网络地址

主机可以直接与IP地址为该范围内的主机进行通信。通过将掩码与目标IP地址进行按位与运算可以得出结论:能够通信的最大IP地址值则为A.B.C.D。因此,在同一网络段内能够与此主机直接通信的IP地址范围是A.B.C.DA.B.C.D之间

全部评论 (0)

还没有任何评论哟~