SYN 报文什么时候情况下会被丢弃? SYN 报文什么时候情况下会被丢弃? 这个问题跟工作上也是有关系的,因为我就在工作中碰到这么奇怪的时候,客户端向服务端发起了连接,但是连接并没有建立起来,通过抓包分析发现,服务端是收到 SYN 报文了,但是并没有回复 SYN+ACK(TCP 第二次握手),说明 SYN 报文被服务端忽略了,然后客户端就一直在超时重传 SYN 报文,直到达到最大的重传次数。 接下来,我就给出我遇到过 SYN 报文被丢 2021-05-17 TCP #TCP
为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 接下来,我一步一步给大家讲明白,我觉得应该有不少人会有类似的问题,所以今天在肝一篇! 为什么 TCP 每次建立连接时,初始化序列号都要不一样呢? 主要原因是为了防止历史报文被下一个相同四元组的连接接收。 TCP 四次挥手中的 TIME_WAIT 状态不是会持续 2 MSL 2021-05-16 TCP #TCP
如何理解是 TCP 面向字节流协议? 如何理解是 TCP 面向字节流协议? 有个读者问我,这么个问题: TCP 是面向字节流的协议,UDP 是面向报文的协议?这里的「面向字节流」和「面向报文」该如何理解。 如何理解字节流? 之所以会说 TCP 是面向字节流的协议,UDP 是面向报文的协议,是因为操作系统对 TCP 和 UDP 协议的发送方的机制不同,也就是问题原因在发送方。 先来说说为什么 UDP 是面向报文的协议? 当用户 2021-05-15 TCP #TCP
如何优化 TCP? 如何优化 TCP? TCP 性能的提升不仅考察 TCP 的理论知识,还考察了对于操作系统提供的内核参数的理解与应用。 TCP 协议是由操作系统实现,所以操作系统提供了不少调节 TCP 的参数。 如何正确有效的使用这些参数,来提高 TCP 性能是一个不那么简单事情。我们需要针对 TCP 每个阶段的问题来对症下药,而不是病急乱投医。 接下来,将以三个角度来阐述提升 TCP 的策略,分别是: TCP 2021-05-14 TCP #TCP
TCP 半连接队列和全连接队列 TCP 半连接队列和全连接队列 网上许多博客针对增大 TCP 半连接队列和全连接队列的方式如下: 增大 TCP 半连接队列的方式是增大 /proc/sys/net/ipv4/tcp_max_syn_backlog; 增大 TCP 全连接队列的方式是增大 listen() 函数中的 backlog; 这里先跟大家说下,上面的方式都是不准确的。 “你怎么知道不准确?” 很简单呀,因为我做了实验 2021-05-13 TCP #TCP
TCP 实战抓包分析 TCP 实战抓包分析 为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。 接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等 TCP 的特性,都能「一览无余」。 没错,我把 TCP 的"衣服扒光"了,就为了给大家看的清楚,嘻嘻。 显形“不可见”的网络包 网络世界中的数据包交互我们肉眼是看不见的 2021-05-12 TCP #TCP
TCP 重传、滑动窗口、流量控制、拥塞控制 TCP 重传、滑动窗口、流量控制、拥塞控制 TCP 巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个「伟大」的协议,写着写着发现这水太深了。。。 本文的全部图片都是小林绘画的,非常的辛苦且累,不废话了,直接进入正文,Go! 相信大家都知道 TCP 是一个可靠传输的协议,那它是如何保证可靠的呢? 为了实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决 2021-05-11 TCP #TCP
既然有 HTTP 协议,为什么还要有 WebSocket? 既然有 HTTP 协议,为什么还要有 WebSocket? 平时我们打开网页,比如购物网站某宝。都是点一下「列表商品」,跳转一下网页就到了「商品详情」。 从 HTTP 协议的角度来看,就是点一下网页上的某个按钮,前端发一次 HTTP请 求,网站返回一次 HTTP 响应。这种由客户端主动请求,服务器响应的方式也满足大部分网页的功能场景。 但有没有发现,这种情况下,服务器从来就「不会主动」给客户端发一 2021-05-10 HTTP #HTTP
TCP 三次握手与四次挥手面试题 TCP 三次握手与四次挥手面试题 PS:本次文章不涉及 TCP 流量控制、拥塞控制、可靠性传输等方面知识,这些知识在这篇:你还在为 TCP 重传、滑动窗口、流量控制、拥塞控制发愁吗?看完图解就不愁了 TCP 基本认识 TCP 头格式有哪些? 我们先来看看 TCP 头的格式,标注颜色的表示与本文关联比较大的字段,其他字段不做详细阐述。 序列号:在建立连接时由计算机生成的随机数作为其初始值, 2021-05-10 TCP #TCP
既然有 HTTP 协议,为什么还要有 RPC? 既然有 HTTP 协议,为什么还要有 RPC? 我想起了我刚工作的时候,第一次接触 RPC 协议,当时就很懵,我 HTTP 协议用的好好的,为什么还要用 RPC 协议? 于是就到网上去搜。 不少解释显得非常官方,我相信大家在各种平台上也都看到过,解释了又好像没解释,都在用一个我们不认识的概念去解释另外一个我们不认识的概念,懂的人不需要看,不懂的人看了还是不懂。 这种看了,又好像没看的感觉,云里雾里 2021-05-09 HTTP #HTTP