网络层tcp丢包排查

网络层tcp丢包排查

其中在TCP连接中我们最需要关注的几个地方就是 序列号、确认号还有标记位(SYN、FIN、ACK、RST…)

序列号相当于是随机出来的一个ID,为本次TCP连接建立建议一个标志,序列号可以用来解决网络包乱序的问题

确认号主要用来表示「接收端」告诉「发送端」对上一个数据包已经成功接收(确认号可以⽤来解决网络包丢失的问题)

标记位主要就是用来表达各种意义,如 SYN = 1 时,表示希望创建连接。ACK = 1时,确认号字段有效。FIN = 1时,表示希望断开连接。RST = 1 时,表示TCP连接出现异常,需要断开。

————————————————

Tcp三次握手

syn

syn+ack

ack

———

面经之为什么不能采用两次握手,一定要三次???

这里我就用最简单的方式来告诉大家吧

第一次握手:客户端向服务端发送了网络包,服务端接收到了。可以证明⬇️

服务端知道了客户端的发送能力和服务端的接受能力是没有问题了

第二次握手:服务端的发包,客户端接收到了,此时可以证明⬇️

服务端知道了客户端的发送能力和服务端的接受能力是没有问题了

客户端知道 服务端的接受能力和发送能力没问题,自己的接受能力和发送能力没问题

但是此时的服务端不知道的是,自己发送的包客户端能不能接收到,也就是服务端无法确认自己的发送能力和客户端的接受能力是否正常 所以这个时候就需要 TCP 的第三次握手

第三次握手:客户端向服务端发包,服务端接收到了

此时的 服务端 就知道双方的发包能力和接受包的能力都是没问题的,也就建立起了TCP连接

————————————————

面经之三次握手的过程中可以发送数据吗

答案是可以的 第三次握手的时候,由于客户端已经知道双方的发包已经收包能力都是正常的,就可以正常的发送数据了

————————

面经之为什么要有 TIME_WAIT 这个状态

确保服务端已经接收到了由客户端发送过去的 ACK 报文,如果没有收到ACK报文的话,服务端会再起发送一个 FIN 报文给客户端,因为 TIME_WAIT 的时间至少是一个报文的来回时间,一般会使用及时,时间到了客户端就进入 CLOSE 状态

确保网络中已经没有 数据残缺 了,避免这次 TCP 连接中的数据污染到下一次 TCP 连接

————————————————

四次挥手

为什么中间两个fin和ack不能合到一起

因为要等待数据传输完才发送ack

面经之为什么要有 TIME_WAIT 这个状态

确保服务端已经接收到了由客户端发送过去的 ACK 报文,如果没有收到ACK报文的话,服务端会再起发送一个 FIN 报文给客户端,因为 TIME_WAIT 的时间至少是一个报文的来回时间,一般会使用及时,时间到了客户端就进入 CLOSE 状态

确保网络中已经没有 数据残缺 了,避免这次 TCP 连接中的数据污染到下一次 TCP 连接

————————————————

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GD32F4是一款基于ARM Cortex-M4内核的微控制器系列,而lwIP(lightweight IP)是一个轻量级的TCP/IP协议栈。在使用GD32F4和lwIP进行TCP通信时,可能会遇到丢包的问题。 TCP丢包是指在TCP通信过程中,部分数据包没有被成功接收或传输。造成TCP丢包的原因可能有多种,以下是一些可能的原因和解决方法: 1. 网络问题:网络不稳定、带宽限制、网络拥塞等都可能导致TCP丢包。可以通过优化网络环境、增加带宽、调整网络拥塞控制算法等方式来解决。 2. 缓冲区溢出:lwIP使用了一些缓冲区来存储接收和发送的数据包,如果缓冲区大小不足或者没有及时处理缓冲区中的数据,就可能导致丢包。可以通过增加缓冲区大小或者优化数据处理逻辑来解决。 3. 超时设置不合理:TCP通信中,超时设置对于保证数据可靠传输非常重要。如果超时设置过小,可能会导致数据包被错误地判定为丢失;如果超时设置过大,可能会导致数据传输速度变慢。可以根据实际情况调整超时设置。 4. 错误处理不完善:在使用lwIP进行TCP通信时,需要正确处理各种错误情况,比如连接中断、重传超过次数等。如果错误处理不完善,可能会导致丢包。可以通过增加错误处理机制和日志记录来解决。 以上是一些可能导致GD32F4 lwIP TCP丢包的原因和解决方法,具体情况需要根据实际应用场景和代码进行分析和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值