”TCP连接“究竟是什么意思?
我们经常听到"建立TCP连接","服务器的连接数量有限"等,但仔细一想,连接究竟是个什么东西,是和电话一样两端连起一根线?似乎有点抽象不是么?
1. 久违的分组交换网络
似乎这个概念只有在学校里学计算机网络才能接触到,但不过今天的话题其实和它离不开关系。我们知道最早的电话网络是以很容易理解的形式存在的,就是单纯的一根线加两端的设备,设备之间所沟通的所有信息都通过一根特定的电缆来回传输,如下图:

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

计算机网络采取分组交换技术,什么意思呢?就是我有【一块数据】要发给对方小苍,那我会把这【一块数据】分成N份【单位数据】,分别发出去,而每份【单位数据】走哪条路是不一定的,但是这些【单位数据】总要全部达到小苍手里,小苍再根据【单位数据】里记录的序号拼接起来,组成完整的【一块数据】。这就是分组的意思所在。
2. 协议和协议实现
上面不小心把TCP的大体实现给说了,实际上在具体的应用中,光有大体思路是不行的,还有很多细节问题,需要两个设备之间提前约定好协议,才能协同完成通信。举个例子:A向B发了10份【单位数据】,而B其实只收到9份【单位数据】,怎么办?
TCP协议大家都应该是知道的,但协议只是想法,真正起作用的是在路由节点和设备节点上的协议软件,是运行在设备上的具体执行者,它根据协议指导,对具体数据进行控制和操作。这儿就不往下展开了。
认识到协议和协议软件这一点非常重要,因为连接的限制恰恰就是受软件在设备中资源分配的影响的。
3. 连接的真面目
上面说的第一种电话网络,如果两个设备搭设了一条线,那么两个电话就一定确定对方在线,因为他俩独享一条实时存在的线。但计算机网络的连接呢?

向上面的图一样(图里不深究TCP,仅仅用来说明连接大体过程),其实他们俩并不能确保对方就是在线,只是通过几番确认,认为对方一直会在。而如果确认了对方存在,那么就会为以后的对话通讯分配内存、CPU处理时间等资源,每个设备都会在本地去维持这么一个状态,来告诉自己是有一个连接的,这些设备所花的资源和维护的状态,而整个网络是不会记录有着一条连接的,所以说连接只是记录在各个设备的一个状态信息。
那么,到现在我们知道了,连接其实并不是所谓的有一根电线连起两个设备,而是两方确认了一下对方的存在后,自己在本地记录的状态。那么下面可以讨论一下以前迷惑重重的概念了。
4. 为什么服务器都有连接数量的限制?
这里只做讨论。我认为是有两点:
- 物理带宽的限制,决定了一个时间段内发起连接的数据包不会超过某个数,造成了设备的链接数量的限制。
- 维持连接需要分配内存等资源,设备的资源有限,决定了一定有个最大连接数的极限。
5. 待续
通过连接往外延伸的话题不少,先到此为止吧,有时间再补。
”TCP连接“究竟是什么意思?的更多相关文章
- TCP连接的TIME_WAIT和CLOSE_WAIT 状态解说【转】
相信很多运维工程师遇到过这样一个情形: 用户反馈网站访问巨慢, 网络延迟等问题, 然后就迫切地登录服务器,终端输入命令"netstat -anp | grep TIME_WAIT | wc ...
- HTTP长连接、短连接究竟
HTTP长连接.短连接究竟是什么? 1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接.HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用I ...
- TCP连接的TIME_WAIT和CLOSE_WAIT 状态解说
相信很多运维工程师遇到过这样一个情形: 用户反馈网站访问巨慢, 网络延迟等问题, 然后就迫切地登录服务器,终端输入命令"netstat -anp | grep TIME_WAIT | wc ...
- FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接
一.为什么写这个 昨天遇到个ftp相关的问题,关于ftp匿名访问的.花费了大量的脑细胞后,终于搞定了服务端的配置,现在客户端可以像下图一样,直接在浏览器输入url,即可直接访问. 期间不会弹出输入用户 ...
- 可能会搞砸你的面试:你知道一个TCP连接上能发起多少个HTTP请求吗?
本文由原作者松若章原创发布,作者主页:zhihu.com/people/hrsonion/posts,感谢原作者的无私分享. 1.引言 一道经典的面试题是:从 URL 在浏览器被被输入到页面展现的过程 ...
- 一台服务器能支撑多少个TCP连接
1. 困惑很多人的并发问题 在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白.那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题. 很多同学看 ...
- 我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景
欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 写在前面..... 本文是笔者肉眼盯 Bug 系列的第三弹,前 ...
- TCP连接的建立和终止
TCP的简要要说明 标签(空格分隔): TCP 网络编程 Linux 面试 在此输入正文 一.TCP是什么 TCP全称传输控制协议(Transmission Control Protocol).TCP ...
- 简述TCP连接的建立与释放(三次握手、四次挥手)
在介绍TCP连接的建立与释放之前,先回顾一下相关知识. TCP是面向连接的运输层协议,它提供可靠交付的.全双工的.面向字节流的点对点服务.HTTP协议便是基于TCP协议实现的.(虽然作为应用层协议,H ...
随机推荐
- Ta-lib函数功能列表
import tkinter as tk from tkinter import ttk import matplotlib.pyplot as plt import numpy as np impo ...
- myeclipse db browser 新建数据源
Myeclipse 新建数据源 一.打开myeclipse(打开了当我没说) 二.在window选项中找到show view ,点击other,输入db,选择DB Browser 三.在DB Brow ...
- 学问Chat UI(3)
前言 上文学问Chat UI(2)分析了消息适配器的实现; 本文主要学习下插件功能如何实现的.并以图片插件功能作为例子详细说明,分析从具体代码入手; 概要 分析策略说明 "+"功能 ...
- c# 替换所有中文、标点符号,全角转半角
private void btnStart_Click(object sender, EventArgs e) { var srcWords = ToDBC(txtSrc.Text.Trim()); ...
- Java中面向字符的输入流
Java中面向字符的输入流 2016-12-04 Java程序员联盟 Java程序员联盟 Java程序员联盟 微信号 javalm 功能介绍 莫道君行早,更有早行人 全心敲代码,天道自酬勤 字符流是针 ...
- python基础教程(七)
本章介绍如何将语句组织成函数,这样,可以告诉计算机如何做事. 下面编写一小段代码计算婓波那契数列(前两个数的和是第三个数) fibs = [0,1] # 定义一个列表,初始内容是0,1 for i ...
- 为什么a标签中使用img后,高度多了几个像素?
<li><a href="#"><img src="images/audio.jpg" alt="">& ...
- Spring上传文件,图片,以及常见的问题
1. 在工程依赖库下添加文件上传jar包 commons-fileupload-1.2.2.jar commons-io-2.4.jar 2.在springMVC配置文件中配置视图解析multipar ...
- Android学习记录:Paint,Canvas和Bitmap
在Java中,利用过双缓冲技术,先将画笔画在内存上,再转化为图片,调出来. 当画的东西过多造成处理不过来时,双缓冲技术将防止闪屏. 在Paint方法下,我们这样写: BufferedImage tmp ...
- 阿里云Maven地址
GFW 呵呵呵 下载几个jar要几个小时.....伤透了 直接替换国内阿里云的maven镜像地址 速度嗖嗖嗖的.... 配置 修改maven根目录下的conf文件夹中的setting.xml文件,内 ...