• 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地址以及源和目标端口号标识。该行是一项特殊规则,表示任何与其他规
  • FRP 内网穿透
    一、前言在HW过程中(真是令人折磨的过程),核心目标系统通常处于内网,攻击的方式也基本上是通过暴露在互联网的机器获取权限并将其作为跳板机,再进行进一步的内网渗透获取一台应用系统的权限之后,我们可能需要对目标内部网络进行信息收集、服务探测、指纹识别、发起攻击等等过程,通常需要对一个C段乃至B段发送大量的数据包,因此一个稳定的内网穿透手段成为了重中之重在以往的渗透中,拿到了服务器权限后,个人最常使用的内网代理方式是 reGeorg + Proxifier/proxychains,虽然是脚本代理的方式,但使用快捷
  • TCP随机端口真的不能复用?
    TCP的随机端口为什么不能像服务端口一样复用?为什么这个源端口不能再继续复用给连接IP A的端口80的服务?源端口为什么不行?所以在Windows平台上没有“SO_REUSEPORT”选项,但是“SO_REUSEADDR”的功能和“SO_REUSEPORT”的功能一致。这样做的好处很多,就是永远都不会造成TCP四元组的冲突,毕竟四元组的其中一项:本地端口是唯一的!如果这里重复使用端口7180,很显然第二个TCP连接会报错,然后用户会看到出错的页面,这肯定不是一个很好的选择!一个主机理论上有65535个端口,有那么多选择,为何一定要复用7180端口?最后一个问题,既然操作系统允许端口重用,这种功能一般用在什么场合?
  • HTTP 的架构设计和一些优化的技巧
    本文主要帮助读者理解 HTTP 的协作原理、HTTP 相关的各层协议,在服务端和客户端的架构设计和一些优化的技巧,本文中主要讲述逻辑思想和协议远离,会使用部分 Java 代码,但会有详细的讲解,非开发应该也读的明白。HTTP 在哪些情况下会请求超时?HTTP 协议与 TCP/IP 协议如果认真的看了上面的表格,我们可以知道,HTTP 是 TCP/IP 参考模型中应用层的其中一种实现。HTTP 协议的网络层基于 IP 协议,传输层基于 TCP 协议,因此就引出了我们开头说到的:HTTP 协议是基于 TCP/IP 协议的应用层协议。
  • 「多图警告」重学 TCP/IP 协议
    前言最近刚看完电影「无敌破坏王2:大闹互联网」,觉得里面有些动画蛮有意思的,于是想起前不久看的《图解HTTP》和TCP/IP相关的文章。如果你还对各类协议归属、作用也都傻傻分不清,那么你有必要详尽了解下TCP/IP。它常被通称为TCP/IP协议族,简称TCP/IP。因为该协定家族的两个核心协定:TCP和IP,为该家族中最早通过的标准。TCP/IP分层管理是有好处的,假如互联网只有一个协议统筹,某一个地方改变设计时,就需要把所有部分都替换掉,而分层只需要把变动的层替换掉即可。
  • 肖申克的救赎
    上周无意中看到一本书《肖申克的救赎》,本以为是一部越狱的小说。其实水平已经达到了CCIE的真实水平!加密算法的强制要求128位对齐。每每看到一颗星星的升起,都会在小黑板上标记一个“正”。但是TCP 的connect()函数内部代码,要有更详细的细节了,如何生成TCP消息,但是这些报文消息如何到达目的地,TCP也不知道。于是将TCP进程传递给自己的“TCP Segment”添加IP报文头,成为“IP Packet”!每一个进程做自己份内的事,做完之后扔给下一个进程,以此类推,直到报文被处理并从网卡完全离开为止。。。
  • TCP传输字节流,UDP传输报文,这种说法对吗?
    如何理解传输层的TCP面向字节流,UDP面向报文?TCP开始忙了,TCP发现与Alice方的TCP连接的MSS = 1460,需要将情书切割成1460字节的标准传输单元,共10个传输单元。这个难不倒TCP,TCP最擅长干这个!TCP按照时间的先后次序,传输第1、2、3。。。TCP通知Bob方的聊天软件将14600字节数据取走,并最终显示在聊天窗口上。UDP聊天软件软件将14600一次性发给UDP,UDP添加8个字节的UDP协议头,生成一个UDP数据报文,调用底层IP接口将UDP报文发出。尽管这一切都是通过UDP协议传输的,一样可以实现可靠的传输机制。TCP则是多面手,以上的功能全会,而且自身还有流量控制的功能!
  • 详解linux中的backlog
    01什么是backlogbacklog是linux下socket函数之listen的参数,当应用程序调用listen系统调用让一个socket进入LISTEN状态时,需要指定一个backlog参数。这意味着,TCP/IP协议栈在实现backlog队列时,有两种不同的选择:仅使用一个队列,队列规模由listen系统调用backlog参数指定。在这种情况下,listen系统调用backlog参数决定accept队列的最大规模。client 端收到 server 端的 syn+ack 后,向 server 端发送 ack,此时 client 端的 TCP 的状态为 ESTABLISHED。下文当中提到的backlog均表示全连接队列长度。
  • 如何形象解释TCP可靠性?
    TCP传输信息总是漏掉,然后把漏掉的信息补到下一次发送中该如何处理?TCP协议标准,务必保证将数据按发送时的顺序,提交给接收方的应用程序!因为TCP报文在互联网上穿梭,是坐在IP报文这辆小汽车上运输的。有可能产生10个TCP包裹,也有可能是9个、8个、6个、5个。。。TCP有可能将应用程序一个批次的数据,拆分到另一个批次,或者将两个或多个批次的数据进行合并成一个批次,这都是TCP实现的高度自治!这个TCP包裹穿梭在互联网上时,会发生紊乱,接收方的TCP会依据TCP包裹的编号,重新进行排序,放入TCP缓冲区。
  • 面向前端工程师的Nodejs入门手册(二)
    继上一篇介绍了基于Nodejs的http服务和文件操作的内容后,本篇内容主要介绍前端工程师在日常工作中较少接触到的TCP相关知识内容,从Nodejs的TCP模块入手,通过实例看看TCP是怎么一回事。tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP层是位于IP层之上,应用层之下的中间层。与我们接触最频繁的http请求就是基于它,相比于http,它没有超时时间,正常情况下它可以一直保持连接。
  • 一次简单的 HTTP 调用,为什么时延这么大?抓个包分析下
    由于工作原因,调用耗时的问题,对我来说,已经见怪不怪了,经常会帮业务解决内部 RPC 框架调用超时的相关问题,但是 HTTP 调用耗时第一次遇到。因此在本地使用 Apache HttpClient 写了个简单 Test 程序,直接调用后端的 HTTP 服务,发现平均耗时在 55ms 左右。主要是本地与测试环境的后端的 HTTP 服务机器跨地区了,ping 时延在 26ms 左右,所以延时增大了。那 TCP 协议层面呢?有网络编程经验的同学一定知道 TCP 什么参数会引起这个现象。为什么加了 TCP_NODELAY ,时延就从39.2ms降低到2.8ms?TCP 协议究竟是怎么发送数据包的?在 Java 中,为 ture 表示关闭 Nagle 算法,为 false 表示打开 Nagle 算法。
  • 面试官最爱问你的,网络分层中每一层有哪些内容
    前情回顾你真的懂网络分层模型吗?而且对于每一层的的功能细节方面,比如数据包的组成以及每层包含的一些协议的使用都没有细说,那么这一篇文章将会分享网络分层每层中协议等深入讲解。标头的长度固定为 18 字节,也就是说,一些标头识别信息的大小不能超过 18 字节。数据部分的长度最小至少为 46 个字节,最长 1500 字节。No.3网络层网络层中最重要的一个协议就是 IP 协议,我们一般发送端给服务端发送数据同时要知道两个地址才能准确送达到对方,分别为 IP 地址和 MAC 地址。
  • 42道计算机网络面试高频题+答案,面试官喜欢的答案都在这里!
    而且对于计算机网络和计算机操作系统会因为公司和岗位的不同而有所侧重的,多看看面经就会发现还是有一点规律的,但是这都不是绝对的,最后还要看面你的面试官的喜好。计算机五层网络体系中涉及的协议非常多,下面就常用的做了列举:3、ARP 协议的工作原理?首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。
  • 简单的 HTTP 调用,为什么时延这么大?
    由于工作原因,调用耗时的问题,对我来说,已经见怪不怪了,经常会帮业务解决内部 RPC 框架调用超时的相关问题,但是 HTTP 调用耗时第一次遇到。因此在本地使用 Apache HttpClient 写了个简单 Test 程序,直接调用后端的 HTTP 服务,发现平均耗时在55ms左右。主要是本地与测试环境的后端的 HTTP 服务机器跨地区了,ping 时延在26ms左右,所以延时增大了。那 TCP 协议层面呢?有网络编程经验的同学一定知道 TCP 什么参数会引起这个现象。为什么加了 TCP_NODELAY ,时延就从39.2ms降低到2.8ms?TCP 协议究竟是怎么发送数据包的?在 Java 中,为 ture 表示关闭 Nagle 算法,为 false 表示打开 Nagle 算法。
  • 简单聊聊 TCP 的可靠性
    前言传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。TCP 在不可靠的 IP 协议之上实现了可靠性, 从而使得我们不必再去关注网络传输中的种种复杂性,所谓的可靠就是让我们去信任它即可。什么是可靠性其实在RFC 793的1.5 Operation专门对Reliability(可靠性)做了说明。0x01 解决干扰为了能够检测到数据包在传输过程中是否发生了差错,TCP 引入了checksum。除此之外,seq使得 TCP 有能力处理重复数据包的问题(幂等),因为接收方可以根据seq判断出该数据包是不是已经被接收了,这样顺带还解决了数据冗余的问题。
  • 深入理解 web 协议(一)- http 包体传输
    强迫症发作的我决定这一次彻底将web协议搞懂搞透,如果你遇到了和我一样的问题,例如对http的了解,仅限于charles抓个包。实战有助于真正理解协议本身。http 队头拥塞: 主要以若干个实验来理解http 队头拥塞的本质,并给出okhttp与浏览器在策略上的不同。http 包体传输:以若干个实验来理解http 包体传输的过程。http RFC规范中,规定了X-Forwarded-For 用于传递真正的ip地址。在实际生产环境中,我们是可以在http response中将上述经过的代理服务器信息一一返回给客户端的。
  • 详解Java IO的工作机制
    一、Java的I/O类库的基本架构 Java的IO操作类在包java.io下,大概有将近80个类,这些类大概可以分为以下4组: ● 基于字节操作的I/O接口:InputStream 和 OutputStream ● 基于字符操作的I/O接口:Writer 和 Reader ● 基于磁盘操作的I/O接口:File ● 基于网络操作的I/O接口:Socket前两组主要是传输数据的数据格式,后两组主要是传输数据的方式,虽然Socket类并不在java.io包下,但仍然将其划分在一起。
  • BBR及其在实时音视频领域的应用
    本次我分享的主题是BBR及其在实时音视频领域的应用,BBR全称是Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新网络拥塞控制算法,在此之后大家对于拥塞控制的关注度逐渐提高,越来越多的新算法被推出。本次分享的内容主要包括BBR算法的基本原理以及BBR算法如何应用在网易云信的实时音视频产品中。整个BBR的拥塞控制在启动之后,最终是在Drain和ProbeBW阶段之间切换。
活跃用户
《中国银行保险报》是中国银行保险监督管理委员会主管唯一工作日报。
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
这里有技术、算法、职场、感悟、面经、资源,一线大厂干货,10万 + 程序员都在看,做一个有趣的帮助程序员成长的公众号,每天早上8点20,第一时间与你相约。
《前端剑解》 —— 是由海之林技术团队维护的前端公众号,关注前端技能的发展;【前端面试每日3+1】 —— 365天,每天早上5点发布面试题(html, css, js, 软技能),以面试题来驱动学习,提倡每日学习与思考,每天进步一点!
号主是来自后厂村的十年资深架构师,技术leader,著有两本技术畅销书,多个业界顶级技术大会的特邀演讲嘉宾和出品人。除了分享技术干货,还关注程序员的技术生活、职场晋升、逆袭成长,助力10万+程序员崛起。
Flink/Spark/Hadoop/数仓开发,干货,面试,资料下载,源码解读等
《科技日报》是富有鲜明科技特色的综合性日报,是面向国内外公开发行的中央主流新闻媒体,是党和国家在科技领域的重要舆论前沿,是广大读者依靠科技创造财富、提升文明、刷新生活的服务平台,是中国科技界面向社会、连接世界的明亮窗口。
华为技术有限公司官方微信帐号
每天分享 Java技术栈 干货,路虽远,行则必至。
“早春江上雨初晴,杨柳丝丝夹岸莺。画舫烟波双桨急,小桥风浪一帆轻”,这是机器通过学习中华诗词然后以”早春“为题所写的一首诗。很多人非常恐惧AI的发展对人类的冲击,但我坚信AI会让世界变得更加美好,生活是美好的,所以我们一起,勇敢AI吧!
一个专注侃侃计算机视觉方向的公众号。计算机视觉、图像处理、机器学习、深度学习、C/C++、Python、诗和远方等。
程序员职业规划:职场晋升之路;探讨程序员转化转管理之路。程序员学习管理之道:团队管理、项目管理、管理工具的推荐和使用经验。
乔哥是百度java工程师,专注Java相关技术:Java面试、Spring全家桶、微服务、Mysql、集群、分布式、中间件、Linux、网络、多线程等,致力于Java全栈开发!
西安交大品牌讲座“学而讲坛”创始人和负责人,致力于打造一个跨界融合的学术共同体。北大文学博士,西安交大国家大学生文化素质教育基地副主任,人文学院高培中心主任,著有《陕西文化产业实战研究》、《视觉素养导论》、《艺术导论》、《读图范式》等。
专注于分享互联网技术文章。笔者待过BAT等一线互联网公司,文笔流畅,酷爱写作与编码,期待你的关注!