TCP 三次握手和四次挥手 (www.diguage.com)

【简介】

传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的 RFC 793 定义。在简化的计算机网络 OSI 模型中,它完成第四层传输层所指定的功能。

毫不夸张地说,TCP 协议是目前整个互联网的基础。它解决了一系列的网络问题。带来的结果,就是协议本身非常复杂。考虑到文章篇幅问题,本文着重说明 TCP 建立连接时的三次握手过程和关闭连接时的四次挥手过程。

点击查看原文 >>

@技术头条 2023-06-24 21:23 / 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:学得越多越不懂 (www.felix021.com)
周末小课堂又开张了,这次我们来聊一聊TCP协议。多少有点令人意外的是,大多数程序员对TCP协议的印象仅限于在创建连接时的三次握手。严格地说,“三次握手”其实是一个不太准确的翻译,英文原文是 "3-way handshake",意思是握手有三个步骤。不过既然教科书都这么翻译,我就只能先忍了。
by @技术头条 2022-05-06 23:36 查看详情
TCP 窗口缩放、时间戳和 SACK (linux.cn)
Linux TCP 协议栈具有无数个可以更改其行为的sysctl旋钮。 这包括可用于接收或发送操作的内存量、套接字的最大数量、可选的特性和协议扩展。
有很多文章出于各种“性能调优”或“安全性”原因,建议禁用 TCP 扩展,比如时间戳或选择性确认Selective ACKnowledgments(SACK)。
本文提供了这些扩展功能的背景,为什么会默认启用,它们之间是如何关联的,以及为什么通常情况下将它们关闭是个坏主意。
by @技术头条 2021-02-13 23:32 查看详情
码仔漫画:如何跟女朋友 “四次挥手” (mp.weixin.qq.com)
如何跟女朋友 “四次挥手”,跟着码仔学习技术,风趣幽默,通俗易懂,强烈推荐原创漫画。
by @码个蛋 2020-12-22 17:18 查看详情
码仔漫画 | 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 查看详情
优化 Tengine HTTPS 握手时间 (yq.aliyun.com)
网络延迟是网络上的主要性能瓶颈之一。在最坏的情况下,客户端打开一个链接需要DNS查询(1个 RTT),TCP握手(1个 RTT),TLS 握手(2个RTT),以及最后的 HTTP 请求和响应,可以看出客户端收到第一个 HTTP 响应的首字节需要5个 RTT 的时间,而首字节时间对 web 体验非常重要,可以体现在网站的首屏时间,直接影响用户判断网站的快慢,所以首字节时间(TTFB)是网站和服务器响应速度的重要指标,下面我们来看影响 SSL 握手的几个方面:
by @可耐芊小仙女 2019-08-13 15:37 查看详情
百万 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 查看详情