我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不是么?

1.久违的分组交换网络
似乎这个概念只有在学校里学计算机网络才能接触到,但不过今天的话题其实和它离不开关系。我们知道最早的电话网络是以很容易理解的形式存在的,就是单纯的一根线加两端的设备,设备之间所沟通的所有信息都通过一根特定的电缆来回传输,如下图:

这样的连接是我们特别好理解的,搭起两边的线,就是一个连接嘛!但是,我们讨论的是计算机网络!(严肃脸),计算机网络中两个设备节点是如何通信?

计算机网络采取分组交换技术,什么意思呢?就是我有【一块数据】要发给对方小苍,那我会把这【一块数据】分成N份【单位数据】,分别发出去,而每份【单位数据】走哪条路是不一定的,但是这些【单位数据】总要全部达到小苍手里,小苍再根据【单位数据】里记录的序号拼接起来,组成完整的【一块数据】。这就是分组的意思所在。

2.协议和协议实现
上面不小心把TCP的大体实现给说了,实际上在具体的应用中,光有大体思路是不行的,还有很多细节问题,需要两个设备之间提前约定好协议,才能协同完成通信。举个例子:A向B发了10份【单位数据】,而B其实只收到9份【单位数据】,怎么办?

TCP协议大家都应该是知道的,但协议只是想法,真正起作用的是在路由节点和设备节点上的协议软件,是运行在设备上的具体执行者,它根据协议指导,对具体数据进行控制和操作。这儿就不往下展开了。

认识到协议和协议软件这一点非常重要,因为连接的限制恰恰就是受软件在设备中资源分配的影响的。

3.连接的真面目
上面说的第一种电话网络,如果两个设备搭设了一条线,那么两个电话就一定确定对方在线,因为他俩独享一条实时存在的线。但计算机网络的连接呢?

向上面的图一样(图里不深究TCP,仅仅用来说明连接大体过程),其实他们俩并不能确保对方就是在线,只是通过几番确认,认为对方一直会在。而如果确认了对方存在,那么就会为以后的对话通讯分配内存、CPU处理时间等资源,每个设备都会在本地去维持这么一个状态,来告诉自己是有一个连接的,这些设备所花的资源和维护的状态,就是连接。而整个网络是不会记录有着一条连接的,所以说连接只是记录在各个设备的一个状态信息。

那么,到现在我们知道了,连接其实并不是所谓的有一根电线连起两个设备,而是两方确认了一下对方的存在后,自己在本地记录的状态。那么下面可以讨论一下以前迷惑重重的概念了。

4.为什么服务器都有连接数量的限制?
这里只做讨论。我认为是有两点:

物理带宽的限制,决定了一个时间段内发起连接的数据包不会超过某个数,造成了设备的链接数量的限制。
维持连接需要分配内存等资源,设备的资源有限,决定了一定有个最大连接数的极限。

5.待续
通过连接往外延伸的话题不少,先到此为止吧,有时间再补。

“TCP连接”究竟是什么意思相关推荐

  1. ”TCP连接“究竟是什么意思?

    ###第1篇转载### 我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不 ...

  2. “TCP连接”究竟是什么意思?

    我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不是么? 1.久违的分组交 ...

  3. TCP面向连接中的“连接”究竟是什么,可靠与不可靠

    网上搜集的一些答案: 连接是对状态的保持,我是这样理解的 实际上就是在客户端和服务器端都维护一个变量,这个变量维护现在数据传输的状态,例如传输了哪些数据,下一次需要传输哪些数据,等等,并不是真的我们想 ...

  4. 漫画 | 一台 Linux 服务器最多能支撑多少个 TCP 连接?

    作者 | 张彦飞allen 来源 | 开发内功修炼(ID:kfngxl) 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网 ...

  5. linux send 失败_linux高性能网络编程之tcp连接的内存使用

    当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣.socket编程方法提供了SO_SNDBUF.SO_RCVBUF这样的接口来设置连接的读写缓存,li ...

  6. mysql最多多少个索引_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

    来自公众号:开发内功修炼 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这 ...

  7. 服务器tcp连接占满_漫画 | 一台Linux服务器最多能支撑多少个TCP连接?

    困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看到这个 ...

  8. linux网络编程-----TCP连接及相关问题

    c/s模型在建立连接时的流程如下 //服务器端 int sockfd = socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in servaddr; bz ...

  9. 网络编程释疑之:TCP连接拔掉网线后会发生什么

    背景:前些天团队在进行终端设备和服务器端长连接业务的测试时,发现了这么一个情况:在拔掉设备端的网线后,再插上网线,有时可以继续正常的进行长接连请求,而且用的还是拔掉网线之前的那个长连接.但是有时却不能 ...

最新文章

  1. oracle10个,OracleDBA新手经常碰到的10个Oracle错误
  2. 《C语言点滴》一1.5 内功修炼
  3. 深入理解javascript原型和闭包(17)——补this
  4. Android面试收集录 2D绘图与动画技术
  5. oryx-editor 客户端的加载过程
  6. php二维数组 xml,xml 怎样通过php解析到二维数组里面
  7. js判断字符串是否为空_每日一课 | Python 如何判断一个字符串是否包含另一个字符串?...
  8. 【报告分享】食品饮料行业供应链发展与渠道变革趋势.pdf(附下载链接)
  9. 【转】VS2017的VSIX插件开发
  10. Spring Boot的每个模块包详解
  11. BZOJ-2300 [HAOI2011]防线修建
  12. element-ui表单验证时需要number类型
  13. DZ先生怪谈GAT1400之视图库系统架构
  14. 【智能优化算法-MOEA_D】基于MOEA_D求解联合经济排放调度(CEED)问题附matlab代码
  15. 2013中国Linux内核开发者大会亮点汇总
  16. Keil看不见头文件
  17. 简单说下antv图表的使用
  18. Nexus默认账号密码
  19. iOS调用百度地图 V2.3.0
  20. 到底snappy ubuntu core是什么?

热门文章

  1. 苹果电脑 删除已安装的node
  2. 【STM32F407学习笔记】GPIO(一)
  3. C语言实现简单的秒表程序
  4. windows 下查看库文件符号的工具dumpbin(类似linux的nm)
  5. 虚拟机中安装IDEA教程
  6. 职称考试计算机基础知识,中级职称计算机考试题「附答案」
  7. 修改tomcat默认端口号8080
  8. springBoot中tomcat默认端口修改
  9. 【upc】山路 (ghat) | 思维、最短路
  10. C# Remoting(RPC调用)