• 关于Keepalive的那些事
    服务端很多同学包括自己对keepalive理解不清晰,经常搞不清楚,TCP也有keepalive,HTTP也有keepalive,高可用也叫keepalive,经常混淆这几个概念。做下这几个概念的简述,尽管名字基本上是一样的,但是所表示意义和范畴却大相径庭。高可用 KeepalivedKeepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP单点故障。它的作用是检测服务器的状态,如果有一台服务器宕机,或出现故障,Keepalived将检测到,使用其他服务器代替该服务器的工作,当服...
  • 简单的 HTTP 调用,为什么时延这么大?
    1. 背景最近项目测试遇到个奇怪的现象,在测试环境通过 Apache HttpClient 调用后端的 HTTP 服务,平均耗时居然接近 39.2ms。可能你乍一看觉得这不是很正常吗,有什么好奇怪的?其实不然,我再来说下一些基本信息,该后端的 HTTP 服务并没有什么业务逻辑,只是将一段字符串转成大写然后返回,字符串长度也仅只有 100 字符,另外网络 ping 延时只有 1.9ms 左右。因此,理论上该调用耗时应该在 2-3ms 左右,但为什么平均耗时 39.2ms 呢?由于工作原因,调用耗时的问题,对我...
  • 一次简单的 HTTP 调用,为什么时延这么大?抓个包分析下
    点击上方“占小狼的博客”,选择“设为星标“最近项目测试遇到个奇怪的现象,在测试环境通过 Apache HttpClient 调用后端的 HTTP 服务,平均耗时居然接近 39.2ms。可能你乍一看觉得这不是很正常吗,有什么好奇怪的?其实不然,我再来说下一些基本信息,该后端的 HTTP 服务并没有什么业务逻辑,只是将一段字符串转成大写然后返回,字符串长度也仅只有 100 字符,另外网络 ping 延时只有 1.9ms 左右。因此,理论上该调用耗时应该在 2-3ms 左右,但为什么平均耗时 39.2ms 呢?由...
  • 简单的 HTTP 调用,为什么时延这么大?
    1. 背景最近项目测试遇到个奇怪的现象,在测试环境通过 Apache HttpClient 调用后端的 HTTP 服务,平均耗时居然接近 39.2ms。可能你乍一看觉得这不是很正常吗,有什么好奇怪的?其实不然,我再来说下一些基本信息,该后端的 HTTP 服务并没有什么业务逻辑,只是将一段字符串转成大写然后返回,字符串长度也仅只有 100 字符,另外网络 ping 延时只有 1.9ms 左右。因此,理论上该调用耗时应该在 2-3ms 左右,但为什么平均耗时 39.2ms 呢?由于工作原因,调用耗时的问题,对我...
  • 深度好文|TCP连接的状态详解以及故障排查
    我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助。1、TCP状态了解TCP之前,先了解几个命令:linux查看tcp的状态命令:1) netstat -nat#查看TCP各个状态的数量2)lsof -i:port#可以检测到打开套接字的状况3) sar -n SOCK#查看tcp创建的连接数4) tcpdump -iany tcp port 9000#对tcp端口为9000的进行抓包网络测试常用命令;1)ping:检测网络连接的正常与否,主要是测试延时、抖动、丢包率。但是很多服务器为了防止...
  • 趣说三次握手、四次挥手:遇到心动小姐姐,如何去把握?
    点击蓝色“小哈学Java”关注我哟加个“星标”,第一时间获取小哈推送的文章哦!来源:http://ymzs.top/YajkAm我有一个朋友,小泷,他与我倾诉:他在咖啡厅与朋友闲谈,遇到了一个让时间彷佛静止的女孩。他描述,那一刻,他的心彻底被抓住了,脑中轰然,眼睛无法再从她身上移开。而女孩,也时不时向她望来,那是一双如秋水般清澈的明眸。小泷说,他非常非常想想把握,这一次心动。然而,自始自终,他没能迈出那一步,他不知道该怎么办。TCP协议之握手:如何开启一段情感羁绊。小泷的困境,是每个男孩的困境。我告诉他,如...
  • 为何TCP被动关闭端不需要TIME_WAIT状态?
    主动关闭端进入TIME_WAIT状态等2MSL,是为了防止本端发出的ACK丢失,给对端重新发送FIN,本端重新ACK的机会。那被动关闭端也有可能发出了ACK对端没收到,为什么不需要进入类似TIME_WAIT的状态,而是直接CLOSED了呢?这种情况下,对端也即主动关闭端是否会一直停留在CLOSING状态?对问题补充说明下,我能理解被动端发出的FIN会等待对端ACK,我的疑问是被动端发出的ACK如何确保主动端会收到?难道主动端要同时收到ACK和FIN才会ACK,而不是收到了FIN就回ACK吗?  先说结论:不...
  • 点亮前端必会网络知识点
    http 响应常见状态码100-199 : 表示成功接收请求, 要求客户端继续提交下一次请求才能完成整个处理过程200-299: 表示成果接收请求并已完成整个处理过程. 常用 200300-399: 为完成请求, 客户需进一步细化需求: 例如: 请求的资源已经移动一个新地址, 常用 302(重定向), 307 和 304(拿缓存)400-499: 客户端的请求有错误, 包含语法错误或者不能正确执行. 常用 404(请求的资源在 web 服务器中没有) 403(服务器拒绝访问, 权限不够)500-599: 服...
  • 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...
    (点击上方快速关注并设置为星标,一起学Python)来自:松若章 链接:zhuanlan.zhihu.com/p/61423830曾经有这么一道经典面试题:从 URL 在浏览器被被输入到页面展现的过程中发生了什么?相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式、什么顺序、建立了多少连接、使用什么协议被下载下来的呢?要搞懂这个问题,我们需要先解决下面五个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开...
  • 面试官再问你Http请求过程,怼回去!
    菜菜哥,X总在产品部瞎指挥,作为程序媛的我都快撑不住了不光你撑不住了,大家都要撑不住了,外行人指导内行人,呵呵前天我偷偷的去面试了,结果挂了出去转转其实是好事,面试官问你什么了?他让我描述一个Http请求的过程,我没回答上来,给我讲讲呗靠近点,我给你补一补这块知识Http介绍超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国...
  • 您好,我想听一个TCP的笑话
    网友评论:@银座案内人:最近在研究电文通信 对理解有帮助@七十年太子:-在?-在!收到回复。-收到@-刘二博-:划重点 这个会考@指间微隙:交往/分手宣言要说两遍 甲方一遍,乙方一遍@顾旻玮Toro:udp:我不爱你了 但我无所谓你知不知道来一个动态视频感受一下:视频来源:抖音@师姐编程(ID:1821685962)@IT程序猿 微博网友评论:@李兆胤1:我觉得还是听udp的笑话把@Frozamilan_woke:三次握手有了,怎么没有四次挥手@可盐可甜酱:绝了,考试刚考完@爱小南真是太好了:不是说好三次握...
  • 为什么TCP的MSS协商是这样的?
    为什么TCP的MSS协商没有按照小的来?如下图所示,客户端在TCP握手时,宣告客户端的MSS= 1460,服务器端回应的MSS= 1460。但是TCP报文在流经中间路由器1时,客户端的MSS被修改成1200,服务器的MSS被修改成1400,问题来了,为何双方没有选择最小的MSS= 1200,而是一方选择了MSS= 1200,另外一方选择 MSS =1400来进行通信呢?   突然想起以前写的一篇中间人攻击的小故事(妃子、情郎、太监),信息不对称是造成这个问题的关键原因! 先来梳理一下,看看是如何信息不对称以...
  • 心跳包机制设计详解
    存在下面两种情形:情形一:一个客户端连接服务器以后,如果长期没有和服务器有数据来往,可能会被防火墙程序关闭连接,有时候我们并不想要被关闭连接。例如,对于一个即时通讯软件,如果服务器没有消息时,我们确实不会和服务器有任何数据交换,但是如果连接被关闭了,有新消息来时,我们再也没法收到了,这就违背了“即时通讯”的设计要求。情形二:通常情况下,服务器与某个客户端一般不是位于同一个网络,其之间可能经过数个路由器和交换机,如果其中某个必经路由器或者交换器出现了故障,并且一段时间内没有恢复,导致这之间的链路不再畅通,而此...
  • 计算机网络基础几道常见面试试题
    来源于  java后端技术公众号1、OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。每一层的协议如下:物理层:RJ45、CLOCK、IEEE802.3    (中继器,集线器,网关);数据链路:PPP、FR、HDLC、VLAN、MAC  (网桥,交换机);网络层:IP、ICMP、ARP、RA...
  • TCP 协议如何解决粘包、半包问题
    一 TCP 协议是流式协议很多读者从接触网络知识以来,应该听说过这句话:TCP 协议是流式协议。那么这句话到底是什么意思呢?所谓流式协议,即协议的内容是像流水一样的字节流,内容与内容之间没有明确的分界标志,需要我们人为地去给这些协议划分边界。举个例子,A 与 B 进行 TCP 通信,A 先后给 B 发送了一个 100 字节和 200 字节的数据包,那么 B 是如何收到呢?B 可能先收到 100 字节,再收到 200 字节;也可能先收到 50 字节,再收到 250 字节;或者先收到 100 字节,再收到 10...
  • 代理通信,一个绕不过去的坎(一)
    关于正向代理反向代理透明代理的工作层级这样理解对吗?正向代理、反向代理(应用负载均衡、一些NG反向代理)可以理解为中间人模式,同时两端建立TCP连接,然后由中间人进行两端的TCP对接。透明代理是不是可以理解为对经过的数据包的简单粗暴的“劫持”,并没有将完整的TCP连接拆分为独立的两段。所以,从这个意义上这种透明代理跟NAT设备工作层级性质差不多吧? 序言有一次看到一个人写了好几万字回答一个问题,看了三天才看完。震惊了,这一切是为了什么?这些文字完全可以出一本书,也是对自己辛勤付出的回报。可是,我看那人一直乐...
  • TCP传输的伎俩,看这一篇就够了!
    TCP上传文件时的ACK变化?大家应该知道TCP的ACK含义了,就是给对方发送一个确认消息,以示字节编号 < 确认号的所有字节数据已经安全抵达目的地。如果Bob没有数据需要发给Alice,Alice的TCP想ACK对方也没有机会,所以Alice的TCP压根不会发什么ACK,ACK确认号会原地踏步,保持静止。如果Bob有数据要发给Alice,Alice的TCP同样也要ACK对方,而Alice的确认号也要随着接收到对方字节数据慢慢增长而不断增长,这是水涨船高的对应关系。于是,Bob的http将更新的网页提交给TCP传输,穿越网络,到达Alice的TCP,需不需要TCP来ACK?假设,双方建立TCP时,Bob的字节原点的序列号= 2000,谁占据这个编号呢?
  • 信息量巨大的 Kubernetes 网络排查之旅
    解释一下,TCP 主动关闭连接的一方在发送最后一个 ACK 会进入TIME_AWAIT状态,再等待 2 个 MSL 时间后才会关闭,了解更详细的过程请参考 TCP 四次挥手。回到我们的问题上,client 所在节点上可能也会有其它 pod 访问到 server 所在节点,而它们都被 SNAT 成了 client 所在节点的 NODE IP,但时间戳存在差异,server 就会看到时间戳错乱,因为开启了tcp_tw_recycle和tcp_timestamps激活了上述行为,就丢掉了比缓存时间戳小的报文,导致部分 SYN 被丢弃,这也解释了为什么之前我们抓包发现异常时 server 收到了 SYN,但没有响应 ACK,进而说明为什么 client 的请求部分会卡住直到超时。server 抓包: 抓 NodePort 的包,发现当 client SYN 重传时 server能收到 SYN 包但没有响应。
  • 图文并茂学 TCP/IP 协议
    前言如果你还对各类协议归属、作用也都傻傻分不清,那么你有必要详尽了解下TCP/IP协议了。它常被通称为TCP/IP协议族,简称TCP/IP。因为该协定家族的两个核心协定:TCP和IP,为该家族中最早通过的标准。TCP/IP分层管理是有好处的,假如互联网只有一个协议统筹,某一个地方改变设计时,就需要把所有部分都替换掉,而分层只需要把变动的层替换掉即可。TCP连接由源和目标IP地址以及源和目标端口号标识。该行是一项特殊规则,表示任何与其他规
  • 面试官问我:一个 TCP 连接可以发多少个 HTTP 请求?我竟然回答不上来...
    要搞懂这个问题,我们需要先解决下面五个问题:现代浏览器在与服务器建立了一个 TCP 连接后是否会在一个 HTTP 请求完成后断开?一个 TCP 连接中 HTTP 请求发送可以一起发送么?第二个问题一个 TCP 连接可以对应几个 HTTP 请求?了解了第一个问题之后,其实这个问题已经有了答案,如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的。但是,HTTP2 提供了 Multiplexing 多路传输特性,可以在一个 TCP 连接中同时完成多个 HTTP 请求。我们可以看一下使用 HTTP2 的效果。Chrome 最多允许对同一个 Host 建立六个 TCP 连接。
官方公众号
活跃用户
一个有情怀的公众号。机器学习、自然语言处理、算法等知识集中营、期待与你相遇~
开源软件,改变世界!关注即赠送百G千元网课教程。
作者:小乐,这里有技术、心得、算法、职场、感悟、面经,做一个有趣的帮助程序员成长的公众号,每天8点20分,第一时间与你相约。
十年经验的资深架构师,著有两本业界知名的技术畅销书,多个知名技术大会的特邀演讲嘉宾。这里不仅分享大前端、Java、跨平台等技术,还有职场和程序员成长类文章。
每天分享成长干货,路虽远,行则必至
发现、挖掘与推荐、传播优秀的安全技术、产品,提升安全领域在全行业的价值,了解机构与企业的安全需求,一家真正懂安全的专业咨询机构,我们是安全牛!
一个专注侃侃计算机视觉方向的公众号。计算机视觉、图像处理、机器学习、深度学习、C/C++、Python、诗和远方等。
分享项目实践,洞察前沿架构,聚焦云计算、微服务、大数据、超融合、软件定义、数据保护、人工智能、行业实践和解决方案。