《互联网的世界》第三讲-tcp
dns 找到了地址,spf 确定了路径,如何运输数据呢?今天讲 tcp。

计算机网络领域的特定技术是最后当你干这个事时才要用的,我对孩子们这样说,实际上你可以随便看一个快递单子来理解端到端传输协议。
源地址,目标地址一定要有,一个地址可能有不同住户,也就是 port 指示的,一系列相关联包裹的顺序编号也是必须,总共多少件,这是第几件等等,此外,一个包裹能不能被拆分运输,也要被标识,三吨大米可以拆分运输,而三吨大象就不行,能收多少,这个也要告知对方。哪些是 tcp,哪些是 ip,我是不区分的,因为本来它们就没有区分。
和快递包裹类似,tcp 不管具体运输路径,所以它是端到端的。
和快递包裹不同的是,tcp 指示一个双向的交互运输,如何在 “运输单” 上紧凑地控制这个双向运输过程是 tcp 协议的设计目标之一,序号 和 接收能力 标识本端信息,而 “ack” 则捎带对方的需求,但如果没有本端报文需要递送,ack 也能单独发送,这些信息在双向交互初始化时通过四次握手协商清楚,由于 ack 可稍带,四次握手合并为三次。
双向交互协议最自然的方式是 “单字节停等”,若果然如此,tcp 就是个再简单不过的协议,但为了效率,单字节停等扩展为单报文停等,报文子节流可拆分,最终是窗口停等,窗口内报文可丢可乱序,一次发送一窗数据就不得不有效处理丢包乱序问题。优化总是引入复杂。
如何检测丢包,一开始只有超时,后来有了更 trick 的方式,即快速重传。对于孩子而言,解释为什么三次重复 ack 标识丢包很轻松,他们可以自然理解为什么是三次,如果要解释,就是事不过三。没必要进一步引申 reordering,因为这不是重点。
tcp 影响了所有传输协议。
如果一开始的 tcp 不是现在这个 tcp,现在的互联网就会是另一番景象。
从 tcp 滑动窗口停等 中可以看到一些历史,另一些历史可以从编码和交互的视角来理解。
1970 年代典型的文件传输和远程登录(包括文件传输的 ftp 以及 email 交互命令)两类应用确实影响了 tcp 必须是流式停等协议。
首先,文件传输的对端需要精确拷贝,其次,远程登录实际上是自己跟自己交互,这就很有趣,传输的对端不是人,无法脑补纠错,而交互的本端却是自己。自己与自己交互不存在脑补的空间,比如输入一个 “s”,显然希望马上回显一个 “s”,“anderson” 是我自己输入的,回显 “andersoX” 时我会怀疑自己输入错了,而不是字母传丢了。
假想另一种平行历史,如果 1970 年代的核心应用是用一个传输协议向远端放电影,流式停等就再无必要,nack 可能会被用来提示关键数据丢失,也会有一个偶尔的指令反馈,但大部分时间,receiver 可能根本不会有任何反馈。拥塞控制大概会倾向于 receiver 的主动行为。
接下来可以想象,不会有如今样式的慢启动,也不会有内置的 reno aimd 策略,因为稀疏的反馈不足以驱动这些机制运行。如果 ack 不是 tcp 的必须字段,有关拥塞控制的所有机制都将改变,并且也不会出现 ack 过多导致的资源抢占问题,特别是在 wifi 环境下。
说说 aimd,这实际上是一个并不需要干预的自然过程,也印证了主动干预的合理性。
大片牧场承载着小规模羊群,但羊群规模会逐渐变大,当羊群规模略微超过牧场承载能力,羊群就会出现内卷性竞争,比如降低代谢率,接下来就会出现大规模争夺资源的缠斗,二者相斗必有一伤,在统计学意义上,羊群规模会快速减半,这就是 aimd。同理,当城市人口缓慢增加到人与人之间距离小于临界值,传染病就会肆虐从而快速减少人口,所以城市化进程达到一定程度必须停止。在理论上,统计复用资源不可能实现 100% 的利用率,这是需要用直感而不是数学讲明白的。
但不管怎样,tcp 依然重要。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
《互联网的世界》第三讲-tcp
dns 找到了地址,spf 确定了路径,如何运输数据呢?今天讲 tcp。 计算机网络领域的特定技术是最后当你干这个事时才要用的,我对孩子们这样说,实际上你可以随便看一个快递单子来理解端到端传输协议。 源地址,…...
JOSEF约瑟 JZS-7G-42 AC220V静态可调延时中间继电器 端子式导轨安装15ms-10s
系列型号:JZS-7G-57端子排延时中间继电器;JZS-7G-42X端子排延时中间继电器;JZS-7G-22X端子排延时中间继电器;JZS-7G-21端子排延时中间继电器;JZS-7G-41端子排延时中间继电器;JZS-7G-51端子排延时中间继电器…...
Hudi配置参数优化
1)Commits:表示一批记录原子性的写入到一张表中。 2)Cleans:清除表中不再需要的旧版本文件。 3)Delta_commit:增量提交指的是将一批记录原子地写入MergeOnRead类型表,其中一些/所有数据都可以写入增量日志。 4&…...
适用Java SpringBoot项目的分布式锁
在分布式系统中,常用到分布式锁,它有多中实现方式,如:基于redis,database,zookeeper等。Spring integration组件有这三种服务的分布式锁实现,今天来看看用的比较多的redis和database实现方式。 …...
面试笔记系列二之java基础+集合知识点整理及常见面试题
目录 Java面向对象有哪些特征,如何应用 Java基本数据类型及所占字节 Java中重写和重载有哪些区别 jdk1.8的新特性有哪些 内部类 1. 成员内部类(Member Inner Class): 2. 静态内部类(Static Nested Class&#…...
搭建LNMP环境并搭建论坛和博客
目录 一、LNMP架构原理 二、编译安装Nginx 三、编译安装MySQL 四、编译安装PHP 五、配置Nginx支持PHP解析 六、安装论坛 七、安装博客 一、LNMP架构原理 LNMP架构,是指在Linux平台下,由运行Nginx的web服务器,运行PHP的动态页面解析程序…...
蓝桥杯刷题2
1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…...
低代码与国产化部署:软件开发的未来趋势与应用实践
在数字化时代,软件开发已经成为企业创新和竞争力提升的关键。随着我国科技实力的不断提升,国产化部署逐渐成为软件开发领域的重要趋势。与此同时,低代码技术的发展也为国产化部署提供了新的机遇。本文将探讨如何在软件开发过程中充分发挥两者…...
【Python笔记-设计模式】迭代器模式
一、说明 迭代器模式是一种行为设计模式,让你能在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。 (一) 解决问题 遍历聚合对象中的元素,而不需要暴露该对象的内部表示 (二) 使用场景 需要对聚合对象…...
Linux基本指令(上)
在Linux中,将文件夹称为目录,后面的内容都与目录相关。 1. ls指令 语法: ls [选项][目录或文件] 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项 …...
浅谈XSS简单漏洞xss-labs-master(初级)
一、环境以及xss漏洞简介 网上很多gethub自己下就行 XSS简介: 当用户访问被XSS注入的网页,XSS代码就会被提取出来。用户浏览器就会解析这段XSS代码,也就是说用户被攻击了。 用户最简单的动作就是使用浏览器上网,并且浏览器中有J…...
WordPress分类目录ID怎么看?如何查找WordPress标签ID?
在WordPress网站中,我们需要判断某篇文章是否属于某个分类目录,或者是否拥有某个标签,那么就需要用到分类目录ID和标签ID,那么WordPress分类目录ID怎么看?如何查找WordPress标签ID?下面boke112百科就跟大家…...
达梦数据库基础操作(一):用户操作
达梦数据库基础操作(一):用户操作 1 达梦运行状态 SELECT banner as 版本信息 FROM v$version;1.2 达梦版本号 SELECT banner as 版本信息 FROM v$version;1.3 用户相关操作 默认用户名密码:SYSDBA/SYSDBA 注意:在哪个数据库下创建的用户…...
Java进阶(锁)——锁的升级,synchronized与lock锁区别
目录 引出Java中锁升级synchronized与lock锁区别 缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java进阶(锁)——锁的升级,synchronized与lock锁区别 Java中锁升级 看一段代码: public class…...
Flask+Gunicorn中文乱码解决方案
在使用FlaskGunicorn部署应用时,发现中文的输出存在乱码的现象。这是因为Python的默认编码是ASCII,而ASCII并不支持中文字符。 解决Python中文乱码问题的首要任务是确保使用合适的编码方式。当你处理中文字符时,应该使用UTF-8编码。UTF-8是一…...
vue3的开发小技巧
「总之岁月漫长,然而值得等待。」 目录 父组件调用子组件函数 父组件调用子组件函数 ref, defineExpose //父组件 代码 <child ref"ch">this.$refs.ch.fn();//子组件 函数抛出 const fn () > { }; defineExpose({ fn });...
十三、Qt多线程与线程安全
一、多线程程序 QThread类提供了管理线程的方法:一个对象管理一个线程一般从QThread继承一个自定义类,重载run函数 1、实现程序 (1)创建项目,基于QDialog (2)添加类,修改基于QThr…...
今日话题:---自卑
自卑是一种普遍存在的心理现象,它可能源于个人对自身能力、外貌、社会地位等方面的不满意或不自信。自卑感可能会导致消极的情绪和行为,如焦虑、抑郁、逃避现实等。然而,适度的自卑感也可能激发个人努力提升自己,从而实现自我成长…...
Unity 预制体与变体
预制体作用: 更改预制体,则更改全部的以预制体复制出的模型。 生成预制体: 当你建立好了一个模型,从层级拖动到项目中即可生成预制体。 预制体复制模型: 将项目中的预制体拖动到层级中即可复制。或者选择物体复制粘贴。…...
leetcode:860.柠檬水找零
题意:按照支付顺序,进行支付,能够正确找零。 解题思路:贪心策略:针对支付20的客人,优先选择消耗10而不是消耗5,因为5可以用来找零10或20. 代码实现:有三种情况(代表三种…...
Android R11外部存储权限深度解析:MANAGE_EXTERNAL_STORAGE的实战应用与适配指南
1. Android R11外部存储权限的变革背景 记得去年第一次在Android R11设备上测试文件管理器应用时,突然发现原本运行正常的APK安装功能报错了。控制台里明晃晃的"java.io.FileNotFoundException: /storage/emulated/0/Download/app.apk"让我愣了半天——文…...
高斯分布与拉普拉斯分布:从数学原理到Python实战
1. 高斯分布与拉普拉斯分布的核心数学原理 我第一次接触高斯分布是在大学物理实验课上,教授用它来描述测量误差。当时觉得这个"钟形曲线"特别神奇,后来才发现它无处不在——从考试成绩分布到股票价格波动。而拉普拉斯分布则是在研究金融数据时…...
怀旧灵武兽魂天龙八部单机版+虚拟机一键端+GM后台:从零搭建到畅玩的完整指南
1. 准备工作:虚拟机与资源下载 想要体验怀旧灵武兽魂版天龙八部单机游戏,首先需要准备好虚拟机环境和游戏资源包。这里我推荐使用VMware Workstation 12,这个版本对老游戏兼容性最好。安装过程很简单,双击安装包一路下一步就行&am…...
Few-shot图像生成的记忆原型与注意力机制:MoCA的创新实践
1. Few-shot图像生成的挑战与突破 想象一下,你手里只有几张猫咪的照片,却要让AI画出各种姿势、不同角度的猫咪——这就是few-shot图像生成要解决的难题。传统GAN需要成千上万的训练样本,而现实中有价值的场景往往数据稀缺。我在实际项目中就遇…...
RWKV7-1.5B-g1a开源镜像深度解析:模型量化方式、tokenizer兼容性、padding策略
RWKV7-1.5B-g1a开源镜像深度解析:模型量化方式、tokenizer兼容性、padding策略 1. 模型架构与特性概述 rwkv7-1.5B-g1a是基于RWKV-7架构的开源文本生成模型,具有1.5B参数量。该模型在多语言文本生成任务中表现出色,特别适合以下应用场景&am…...
BaiduPCS-Web:免费开源百度网盘下载工具,告别限速困扰
BaiduPCS-Web:免费开源百度网盘下载工具,告别限速困扰 【免费下载链接】baidupcs-web 项目地址: https://gitcode.com/gh_mirrors/ba/baidupcs-web 还在为百度网盘下载速度慢而烦恼吗?想要免费享受高速下载体验吗?今天介绍…...
OfflineInsiderEnroll 终极指南:无需微软账户轻松加入Windows预览体验计划
OfflineInsiderEnroll 终极指南:无需微软账户轻松加入Windows预览体验计划 【免费下载链接】offlineinsiderenroll OfflineInsiderEnroll - A script to enable access to the Windows Insider Program on machines not signed in with Microsoft Account 项目地址…...
6个Linux CPU调优实战技巧,第三个帮你解决CPU飙升
一、什么时候需要CPU调优?服务响应变慢,top看到CPU us或sy持续超过70%机器load average高于CPU核心数*2你怀疑某个进程占用了太多CPU,想限制它或给它提权虚拟化环境里%steal高,说明宿主机超售严重读完这篇你会:能判断C…...
新手接入 CDN 必踩的 8 个坑,一次讲清解决办法
作为刚接触CDN的运维新手,前段时间帮公司网站接入CDN,踩了一堆五花八门的坑——从配置报错到加速失效,甚至差点搞崩源站,折腾了快一周才彻底理顺。结合自身实操经验,整理了新手接入CDN最易踩的8个高频坑,每…...
当AI Agent开始参与立法听证——SITS2026专家亲历的3个真实案例(含未公开会议纪要)
第一章:SITS2026专家:AIAgent的社会影响 2026奇点智能技术大会(https://ml-summit.org) AIAgent已从实验室原型演进为嵌入城市治理、医疗决策与教育服务的常态化社会基础设施。在SITS2026大会上,来自全球17个国家的跨学科专家指出ÿ…...
