TCP:学得越多越不懂 (www.felix021.com)

【简介】

周末小课堂又开张了,这次我们来聊一聊TCP协议。多少有点令人意外的是,大多数程序员对TCP协议的印象仅限于在创建连接时的三次握手。严格地说,“三次握手”其实是一个不太准确的翻译,英文原文是 "3-way handshake",意思是握手有三个步骤。不过既然教科书都这么翻译,我就只能先忍了。

点击查看全文 >>

@技术头条 2022-05-06 23:36分享 / 原作者微博:@Slyar / 0个评论
赞过的人: IT技术博客大学习
要不要再学学下面的文章?
使用PHP Socket开发Yar TCP服务 (www.laruence.com)
Yar支持HTTP和TCP俩种Transporter, HTTP的是基于CURL,PHP中的Yar默认就是走的HTTP Transporter, 这个大家应该都不陌生, 但是基于TCP的, 可能大家会用的少一些。

事实上,我6年前也写过一个C的Yar server框架,叫做Yar-c, 代码地址在Yar-C at Github, 当时我们用这个框架,实现了高性能的微博白名单等服务,以供PHP端使用Yar Client来调用。

只不过,Yar C需要用C来写Handle, 可能对于不少PHPer来说,会稍微有点陌生,那今天我们尝试用PHP来写一个TCP的Server,来介绍下如何实现对Yar RPC协议的处理, 这个例子可以方便的结合Swoole等异步PHP框架,实现一个高性能的Yar TCP Server。 这个过程中, 会让大家了解Yar的RPC通信协议,以及捎带了解下Socket编程。
by @技术头条 2022-05-06 23:37 分享 查看详情
TCP 窗口缩放、时间戳和 SACK (linux.cn)
Linux TCP 协议栈具有无数个可以更改其行为的sysctl旋钮。 这包括可用于接收或发送操作的内存量、套接字的最大数量、可选的特性和协议扩展。
有很多文章出于各种“性能调优”或“安全性”原因,建议禁用 TCP 扩展,比如时间戳或选择性确认Selective ACKnowledgments(SACK)。
本文提供了这些扩展功能的背景,为什么会默认启用,它们之间是如何关联的,以及为什么通常情况下将它们关闭是个坏主意。
by @技术头条 2021-02-13 23:32 分享 查看详情
码仔漫画 | TCP的三次握手 (mp.weixin.qq.com)
1、原创漫画风格,读起来很轻松。
2、文章读起来风趣幽默,图文并茂,通俗易懂。
3、内容为程序员通用知识,受众面广。
by @码个蛋 2020-12-07 10:52 分享 查看详情
TCP 和 UDP,哪个更胜一筹 (zhuanlan.zhihu.com)
TCP/IP 是互联网相关的各类协议族的总称,它以两个原始协议:传输控制协议(TCP)和Internet 协议(IP)来命名。比如:TCP,UDP,IP,FTP,HTTP,ICMP,SMTP 等都属于 TCP/IP 族内的协议。TCP/IP 模型是互联网的基础,它可以划分为四层,分别为链路层、网络层、传输层和应用层。
by @又拍云 2020-07-17 14:21 分享 查看详情
百万 Go TCP 连接的思考: epoll方式减少资源占用 (colobu.com)
前几天 Eran Yanay 在 Gophercon Israel 分享了一个讲座:Going Infinite, handling 1M websockets connections in Go, 介绍了使用Go实现支持百万连接的websocket服务器,引起了很大的反响。事实上,相关的技术在2017年的一篇技术中已经介绍: A Million WebSockets and Go, 这篇2017年文章的作者Sergey Kamardin也就是 Eran Yanay 项目中使用的ws库的作者。
by @技术头条 2019-03-29 23:16 分享 查看详情
炮打TCP – 关于一而再再而三的粘包拆包问题的大字报 (www.ideawu.net)
TCP 所谓的粘包和拆包问题,是技术圈里最奇葩的问题之一!

一而再,再而三,就跟傻逼的中国球迷支持中国足球队一样,前赴后继。有时候同一个人多次在犯同一个错误,有时候是前脚一个犯错了后脚又来一个还犯同样的错。即使是最优秀的程序员,也会在这个问题上面栽跟头,思维甚至很难转过弯,很久才能意识到自己的错误。而低水平的程序员就更不用说了,很多人到死都没有理解这个错误并解决掉,只是逃掉了而已。

我们固然可以认为原因是某些人学艺不精,但那么多的人,其中包括无数的优秀程序员在 TCP 粘包和拆包问题在犯错误,难道我们不能说,这其实是 TCP 自身的原因吗?

在我看来,这个问题的出现,原因就在于 TCP 协议是有原罪的 -- 也就是 TCP 协议所谓的“流式”协议。所以,我要炮轰 TCP!

经过几十年的验证,除了几数几个网络协议会用到 TCP 所谓的流式特性之外,没有任何应用协议使用流式特性。我们必须承认,
by @技术头条 2018-06-28 12:19 分享 查看详情
下载 | 思科IOS/IOS XE远程代码执行漏洞cve-2018-0171 当心TCP端口4786 (toutiao.secjia.com)
攻击者可以通过向TCP端口4786上的受影响设备发送精心设计的智能安装消息(Smart Install message)来利用此漏洞,使得设备缓冲区溢出,导致远程代码执行等后果
by @gnaw0725 2018-03-30 17:35 分享 查看详情
告别TCP: time wait bucket table overflow (www.linuxprobe.com)
随着访问量的增大,系统默认的承受能力达到上限,系统日志频繁出现。/var/log/messages中常见的“kernel: TCP: time wait bucket table overflow”这个信息,会发现每隔5s就会报出几行。
by @Linux就该这么学 2018-03-21 17:37 分享 查看详情
通过 SSH 实现 TCP / IP 隧道(端口转发) (www.linuxprobe.com)
对于 Secure Shell (SSH)[1] 这样的网络协议来说,其主要职责就是在终端模式下访问一个远程系统。因为 SSH 协议对传输数据进行了加密,所以通过它在远端系统执行命令是安全的。此外,我们还可以在这种加密后的连接上通过创建隧道(端口转发)的方式,来实现两个不同终端间的互联。凭借这种方式,只要我们能通过 SSH 创建连接,就可以绕开防火墙或者端口禁用的限制。
by @Linux就该这么学 2017-10-15 16:16 分享 查看详情
关于TCP/IP,必知必会的十个问题 (mp.weixin.qq.com)
既是面试高频问题,又是程序员必备基础素养。
by @码个蛋 2017-09-07 09:23 分享 查看详情