• 一次 close_wait 问题的深度解析

    现象处于 close_wait 状态的 TCP 连接长期维持在 35 左右,长期处于 close_wait 状态的连接不仅无法提供服务,还会占用 http 客户端和服务端的连接资源,极限情况下导致无法创建连接,严重影响业务。因为之前处理过因为防火墙问题,导致 http 客户端服务器 close_wait 偏高,最终影响给用户退款的 case,所以 close_wait 问题再次出现引起了大家高度重视。4)close_wait 量为什么每隔一段时间就会断崖式的往下掉?
  • 一文理解TCP、UDP协议及两者的区别

    即TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。若在握手过程中某个阶段莫名中断, TCP 协议会再次以相同的顺序发送相同的数据包。四次挥手由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。先进行关闭的一方将执行主动关闭,而另一方被动关闭。服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。TCP协议是可靠的、面向连接的。HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连
  • 解读HTTP/2与HTTP/3 的新特

    来自公众号:前端工匠前言HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一。虽然 HTTP/2 提高了网页的性能,但是并不代表它已经是完美的了,HTTP/3 就是为了解决 HTTP/2 所存在的一些问题而被推出来的。一、HTTP/1.1发明以来发生了哪些变化?如果仔细观察打开那些最流行的网站首页所需要下载的资源的话,会发现一个非常明显的趋势。近年来加载网站首页需要的下载...
  • 【图文讲解】TCP为啥要3次握手和4次挥手?握两次手不行吗?

    第二次握手TCP服务器收到请求报文后,如果同意连接,则发出确认报文。第三次握手TCP客户进程收到确认后,还要向服务器给出确认。这就是三次握手的作用。与三次握手协议相同,最后加 1 是为了告诉对方要传递的 Seq 号。TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。思考:那么为什么是4次挥手呢?其中ACK报文是用来应答的,SYN报文是用来同步的。故需要四步挥手。
  • 【Web技术】429- TCP为啥要3次握手和4次挥手?

    第二次握手TCP服务器收到请求报文后,如果同意连接,则发出确认报文。第三次握手TCP客户进程收到确认后,还要向服务器给出确认。这就是三次握手的作用。与三次握手协议相同,最后加 1 是为了告诉对方要传递的 Seq 号。上面也只是一种可能,比如数据1250丢失,那么Ack返回的就是1250,具体的可以详细看下博客:https://www.cnblogs.com/qdhxhz/p/10267932.html三、TCP的四次挥手第一次挥手TCP发送一个FIN(结束),用来关闭客户到服务端的连接。TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。同样,撤销TCB后,就结束了这次的TCP连接。思考:那么为什么是4次挥手呢?故需要四步挥手。
  • TCP连接的状态详解以及故障排查

    我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。TTL是该字段指定IP包被路由器丢弃之前允许通过的最大网段数量。LISTENING:侦听来自远方的TCP端口的连接请求.首先服务端需要打开一个socket进行监听,状态为LISTEN。有提供某种服务才会处于LISTENING状态,TCP状态变化就是某个端口的状态变化,提供一个服务就打开一个端口。ESTABLISHED状态是表示两台机器正在传输数据,观察这个状态最主要的就是看哪个程序正在处于ESTABLISHED状态。
  • TCP的 “三次握手” 和“四次挥手”,到底是什么鬼?

    轻松了解HTTP协议为什么要学习网络协议呢?正常情况的状态码为2xx,错误的状态码为4xx,或是5xx等情况。HTTP客户端和HTTP服务器共同构成了万维网的基本组件。TCP/IP 是互联网相关各类协议族的总称。TCP/IP是指TCP和IP这两种协议。TCP/IP是在IP协议的通信过程中,使用到的协议族的统称。TCP/IP 的分层管理TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。传输层,TCP/UDP,传输控制协议和用户数据报协议,重点再说一次,TCP是一种可靠的面向连接的协议,而UDP不是可靠的,或说是无连接的协议。
  • 震惊!线上4台机器同时OOM,到底发生了什么?

    “ 昨天晚上突然短信收到 APM 大量告警。紧接着运维打来电话告知线上部署的四台机器全部 OOM (out of memory,内存不足),服务全部不可用,赶紧查看问题!图片来自 Pexels问题排查首先运维先重启了机器,保证线上服务可用,然后再仔细地看了下线上的日志,确实是因为 OOM 导致服务不可用:第一时间想到 Dump 当时的内存状态,但由于为了让线上尽快恢复服务,运维重启了机器,导致无法 Dump 出事发时的内存。所以我又看了下我们 APM 中对 JVM 的监控图表。画外音:一种方式不行,尝试另外
  • 一次 HTTP 请求到底经历了什么?

    环境准备本来是想找个网站进行抓包分析的,但是正式环境的网站HTTP请求太多,干扰太多,对分析不太友好,所以简单些了一个demo,对HTTP请求返回字符串。环境:1.响应http请求的服务demo2.客户端ip:192.168.2.1353.服务端:45.76.105.924.抓包工具:Wireshark把demo部署到服务器,启动成功访问如下:打开抓包工具Wireshark进行抓包,抓包结果如下:从上图我们已经看到成功抓包到一次HTTP请求和响应了,但是我们看到却有很多TCP请求,接下来我们来分析下这些TCP请求是做什么的?
  • 线上四台机器同一时间全部 OOM,到底发生了什么?

    案发现场昨天晚上突然短信收到 APM 大量告警。还有一个问题,为啥线上四台机器几乎同一时间点全挂呢?因为由于负载均衡,这四台机器的权重是一样的,硬件配置也一样,收到的请求其实也可以认为是差不多的,这样这四台机器由于创建 HttpClient 而生成的后台线程也在同一时间达到最高点,然后同时 OOM。
  • 【TCP协议】(2)---TCP三次握手和四次挥手

    TCP有6种标示:SYNACK(确认)PSH(传送)FIN(结束)RST(重置)URG(紧急)一、TCP三次握手 第一次握手客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号seq=x,此时,TCP客户端进程进入了 SYN-SENT状态。TCP规定,ACK报文段可以携带数据,但是如果不携带数据则不消耗序号。这就是三次握手的作用。......与三次握手协议相同,最后加 1 是为了告诉对方要传递的 Seq 号。注意此时TCP连接还没有释放,必须经过2MSL的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。故需要四步挥手。
  • 震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

    还有一个问题,为啥线上四台机器几乎同一时间点全挂呢?因为由于负载均衡,这四台机器的权重是一样的,硬件配置也一样,收到的请求其实也可以认为是差不多的,这样这四台机器由于创建 HttpClient 而生成的后台线程也在同一时间达到最高点,然后同时 OOM。
  • 糟糕!线上 4 台机器同一时间全部 OOM,到底发生了什么?

    (线程上升的时间点和发布时间点完全吻合!还有一个问题,为啥线上四台机器几乎同一时间点全挂呢?总结本文通过线上四台机器同时 OOM 的现象,来详细剖析定位了产生问题的原因,可以看到我们在应用某个库时首先要对这个库要有充分的了解其次必要的网络知识还是需要的,所以要成为一个合格的程序员,不光对语言本身有所了解,还要对网络,数据库等也要有所涉猎,这些对排查问题以及性能调
  • TCP的 “三次握手” 和“四次挥手”,你真的懂了吗

    正常情况的状态码为2xx,错误的状态码为4xx,或是5xx等情况。HTTP客户端和HTTP服务器共同构成了万维网的基本组件。TCP/IP 是互联网相关各类协议族的总称。TCP/IP是指TCP和IP这两种协议。TCP/IP是在IP协议的通信过程中,使用到的协议族的统称。TCP/IP 的分层管理TCP/IP协议族按层次分别为 应用层,传输层,网络层,数据链路层,物理层。TCP/IP协议分层之后,如果后期要对哪些地方进行设计修改,无需全部替换,只需要对变化的层进行替换即可。传输层,TCP/UDP,传输控制协议和用户数据报协议,重点再说一次,TCP是一种可靠的面向连接的协议,而UDP不是可靠的,或说是无连接的协议。
  • 干货 | 携程一次Dubbo连接超时问题的排查

    目前主要负责 Dubbo 在携程的二次开发和推广工作。SOA over CDubbo是将现有SOA框架的HTTP传输协议切换到TCP协议,能够解决长尾问题以及提供更好的稳定性。大概实现原理是,服务端通过CDubbo启动代理服务,客户端在服务发现后与服务端同步建立TCP长连接,请求也会在TCP通道传输。从这个层面推断注册中心或者缓存机制应该是没有问题的。TCP *:20xxx 五、增加连接被accept的日志Dubbo已经打印了前面看到的端口打开的日志,如果再能够看到服务端连接被accept的情况就好了。继续翻了Dubbo的代码,对Netty3的版本来说,连接被accept之后会执行channelConnected的。
  • 震惊!线上四台机器同一时间全部 OOM,到底发生了什么?

    案发现场昨天晚上突然短信收到 APM 大量告警。还有一个问题,为啥线上四台机器几乎同一时间点全挂呢?因为由于负载均衡,这四台机器的权重是一样的,硬件配置也一样,收到的请求其实也可以认为是差不多的,这样这四台机器由于创建 HttpClient 而生成的后台线程也在同一时间达到最高点,然后同时 OOM。
  • 【吊打面试,击中要害】http三次握手四次挥手,https证书验证阶段和数据传输阶段

    PPT: Jenkins与项目构建部署工具集成0x01:http三次握手,四次挥手三次握手,是指在建立一个TCP连接时候,需要客户端和服务器总共发送3个数据包。断开TCP连接需要一共发送四个数据包,因此称为四次挥手。发送完成后,服务端进入LAST_ACK状态,等待客户端确认。0x02:https证书验证阶段和数据传输阶段HTTP是明文传输的,也就意味着,介于发送端、接收端中间的任意节点都可以拦截传输的内容。https通讯的主要步骤:证书验证阶段:1、客户端通过发送client hello报文开始SSL通信。
  • 一文读懂 HTTP/1HTTP/2HTTP/3

    2015 年 HTTP2 正式发布。2020 年 HTTP3 或能正式使用。SPDY 协议SPDY 是由 google 推行的改进版本的 HTTP1.1 。提高安全性支持使用 HTTPS 进行加密传输。HTTP2HTTP2 基于 SPDY,专注于性能,最大的一个目标是在用户和网站间只用一个连接。新增特性:二进制分帧 - HTTP2 性能增强的核心多路复用 - 解决串行的文件传输和连接数过多二进制分帧首先,HTTP2 没有改变 HTTP1 的语义,只是在应用层使用二进制分帧方式传输。HTTP2 出现丢包时,整个 TCP 都要等待重传,那么就会阻塞该 TCP 连接中的所有请求。
  • Kubernetes 疑难杂症排查分享:神秘的溢出与丢包

    大家好,我是 roc,来自腾讯云容器服务团队,上一篇Kubernetes 疑难杂症排查分享: 诡异的 No route to host不小心又爆火,这次继续带来干货,看之前请提前泡好茶,避免口干。图片下载走的 k8s ingress,这个 ingress 路径对应后端 service 是一个代理静态图片文件的 nginx deployment,这个 deployment 只有一个副本,静态文件存储在 nfs 上,nginx 通过挂载 nfs 来读取静态文件来提供图片下载服务,所以调用链是:client –> k8s ingress –> nginx –> nfsNo.2猜测猜测: ingress 图片下载路径对应的后端服务出问题了。验证:在 k8s 集群直接 curl nginx 的 pod ip,发现不通,果然是后端服务的问题!
公众号
码农俱乐部
关注公众号订阅更多技术干货!