解Bug之路-主从切换"未成功"?

解Bug之路-主从切换"未成功"? 前言 数据库主从切换是个非常有意思的话题。能够稳定的处理主从切换是保证业务连续性的必要条件。今天笔者就来讲讲主从切换过程中一个小小的问题。 故障场景 最近线上进行主从切换,大部分应用都切过去了,但是某些应用的连接确还在老的主(新的从)上面。 这让对应应用的开发百思 ... »

阿里二面,面试官居然把 TCP 三次握手问的这么细致

TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度。看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了。 本文会围绕,三次握手和四次挥手相关的一些列核心问题,分享如何更准确的回答和应对常见的面试问题,以后面对再 ... »

后台开发-核心技术与应用实践--TCP协议

网络模型 为使不同计算机厂家的计算机能够互相通信,国际标准化组织 ISO 1981 年正式推荐了一个网络系统结构一一七层参考模型,也叫作开放系统互连模型。 ISO 七层网络模型及其功能展示: 这个七层网络模型在数据的传输过程中还会对数据进行封装,封装过程如图所示: ISO 七层网络模型中,当一台主机 ... »

清晰图解深度分析HTTPS原理

前言 很高兴遇见你~ Https现在基本已经覆盖所有的http请求了,作为一个伟大的发明,保障了我们的通信安全。在Android中对于HTTPS其实感知不多,因为这些内容都有成熟的框架帮我们完成了,例如okHttp。我们发起一个http或https的请求几乎感受不到区别。 但最近在研究okHttp的 ... »

这一篇TCP总结请收下

前言 很高兴遇见你~ TCP这些东西,基本每个程序猿都或多或少是掌握的了。虽然感觉在实际开发中没有什么用武之处,但,面试他要问啊 而最近大家伙过完年,也都在准备春招,我也一样。阅读了一些okHttp源码之后,又屁颠屁颠地跑回来重新把tcp、http这些东西给重新学了一遍。okHttp基本都是这些协议 ... »

图解 | 原来这就是TCP

你是一台电脑,你的名字叫 A 经过《图解 | 原来这就是网络》这篇文章中的一番折腾,只要你知道另一位伙伴 B 的 IP 地址,且你们之间的网络是通的,无论多远,你都可以将一个数据包发送给你的伙伴 B 这就是物理层、数据链路层、网络层这三层所做的事情。站在第四层的你,就可以不要脸地利用下三层所做的铺垫 ... »

图解HTTP权威指南(二)| 连接管理

一、两个问题 1、HTTP是如何使用TCP连接的 2、HTTP的连接,并行连接、keep-alive(持久连接)和管道化连接 二、TCP连接 1、什么是TCP TCP/IP是全球计算机及网络设备都在使用的一种常用的分组交换网络层协议分层协议集。客户端应用程序可以打开一条TCP/IP连接,连接到可能运 ... »

这些必会的计算机网络知识点你都掌握了吗

学习计算机网络必会的知识点,看看你是否全面掌握,如有帮到你,可以收藏点赞支持哦。 什么是网络协议,为什么要对网络协议分层 * 网络协议是计算机在通信过程中要遵循的一些约定好的规则。 网络分层的原因: 易于实现和维护,因为各层之间是独立的,层与层之间不会收到影响。 有利于标准化的制定 计算机网络的各层 ... »

解Bug之路-NAT引发的性能瓶颈

解Bug之路-NAT引发的性能瓶颈 笔者最近解决了一个非常曲折的问题,从抓包开始一路排查到不同内核版本间的细微差异,最后才完美解释了所有的现象。在这里将整个过程写成博文记录下来,希望能够对读者有所帮助。(篇幅可能会有点长,耐心看完,绝对物有所值~) 环境介绍 先来介绍一下出问题的环境吧,调用拓扑如下 ... »

TCP 队列溢出了

一、TCP 队列 1、syns queue:半连接队列 TCP 三次握手(参考:TCP建立连接之三次握手),第一步,服务端接收到客户端发送的 syn 消息后,将连接信息放入 syns queue,此时,双方连接尚未建立,称之为半连接。 2、accept queue:全连接队列 TCP 三次握手,第三 ... »

从Linux源码看TIME_WAIT状态的持续时间

从Linux源码看TIME_WAIT状态的持续时间 前言 笔者一直以为在Linux下TIME_WAIT状态的Socket持续状态是60s左右。线上实际却存在TIME_WAIT超过100s的Socket。由于这牵涉到最近出现的一个复杂Bug的分析。所以,笔者就去Linux源码里面,一探究竟。 首先介绍 ... »

从Linux源码看Socket(TCP)的listen及连接队列

从Linux源码看Socket(TCP)的listen及连接队列 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行listen的时候到底做了哪些事情(基于Linux 3.10内核 ... »

通透,23 个问题 TCP 疑难杂症全解析

每个时代,都不会亏待会学习的人。 在进入今天主题之前我先抛几个问题,这篇文章一共提出 23 个问题。 TCP 握手一定是三次?TCP 挥手一定是四次? 为什么要有快速重传,超时重传不够用?为什么要有 SACK,为什么要有 D-SACK? 都知道有滑动窗口,那由于接收方的太忙了滑动窗口降为了 0 怎么 ... »

从Linux源码看Socket(TCP)的bind

从Linux源码看Socket(TCP)的bind 前言 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就来从Linux源码的角度看下Server端的Socket在进行bind的时候到底做了哪些事情(基于Linux 3.10内核)。 一个最简单的 ... »

计算机网络中比较重要的一些概念

分层 OSI模型有哪几层? 应用层(数据):定义了应用进程间的通信和交互的规则,通过应用进程间的交互来完成特定网络应用。 表示层(数据):用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。 会话层(数据):负责建立、管理和终止表示层实体之间的通信会话。 传输层 ... »

client: c#+protobuf, server: golang+protobuf

前段时间看到一篇博文《可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)》,他是用C#实现的即时通讯系统,功能强大,界面漂亮。 就想用golang重写服务端,把代码下载回来,发现通信框架用的是ESFramework,我没用过也不知道ESFramework的协议,重写是不行的了,只 ... »

这次一定让你记住 TCP 三次握手、四手挥手!

TCP协议全称为:Transmission Control Protocol,是一种面向链接、保证数据传输安全、可靠的数据传输协议。为了确保数据的可靠传输,不仅需要对发出的每个字节进行编号确认,还需要验证每一个数据包的有效性。每个TCP数据包是封闭在IP包中的,每个一IP包的后面紧跟着的是TCP头, ... »

TCP-三次握手和四次挥手简单理解

TCP-三次握手和四次挥手简单理解 背景:TCP,即传输控制协议,是一种面向连接的可靠的,基于字节流的传输层协议。作用是在不可靠的互联网络上提供一个可靠的端到端的字节流服务,为了准确无误的将数据送达目的地,TCP协议采纳三次握手策略。 一、TCP报文 TCP报文格式图: 上图中的几个字段需要重点介绍 ... »