什么是 TCP 连接
世界上绝大部分的 HTTP 通信都是通过 TCP/IP 承载的,TCP/IP 是全球计算机和网络设备都在使用的一种常用的分组交换网络分层协议集。客户端应用程序可以打开一条 TCP/IP 连接,连接到世界上可能运行的任何一个服务器应用程序上。一旦连接建立起来,在不断网的情况下,客户端与服务器之间交换的报文就永远不会丢失、受损或者失序。

TCP连接详解
通过设置linux参数 net.ipv4.tcp_fin_timeout = 30 ,可以调整如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决:编辑文件/etc/sysctl.conf,加入以下内容tcp 通过序列号seq记录已经发送的数据刻度,通过ack记录已经接收的数据量。seq记录的是发送的数据,ack记录的是接收的数据量。单位是字节(8bit)tcp在每次发包时都会计算往复时间及其偏差。将这个往返时间和偏差相加,重发超时时间就是比这个总和要稍大一点的值。由于最初的数据包还不知道往返时间,所以其重发超时一般设置为6s左右。在建立tcp连接时,三次握手的时候会计算mss(最大消息长度),建立连接的双方会把自己的接口能适应的mss值放到tcp首部里面发送给对方,最后取较小的那个mss。tcp窗口大小指的是无需等待确认应答而可以继续发送数据的最大值,窗口大小为4个端。即在收到确认应答之前可以发送的数据的段数。接收端没有按序列顺序收到数据端时,会不停的发送确认应答,并将当前收到的顺序出问题的数据放到缓冲区。发送端连续三次收到相同序列号的数据段时,会重新发送该段的数据。接收端在接收到遗失的数据的时候会将数据与缓冲区的数据组合,重新按顺序确定ack的序列号,继续接收数据。tcp窗口的大小是由接收端的处理能力决定的,接收端会在ack的tcp首部中将能处理的窗口大小传给发送端。拥塞窗口是限制每次发送的数据的大小,初始值是1mss,也就是慢启动。随着正常的收发的进行,拥塞窗口的值会不断的增加。但是不会超过接收端处理窗口的大小。一开始拥塞窗口每次都会翻倍的增长,在超过慢启动阈值后增长速度会减慢。增长速率=一个数据段的大小 / 拥塞窗口的大小 *一个数据段的大小超时重发时,拥塞窗口会变为1mss, 慢启动阈值为原有窗口的一半重复确认应答时,慢启动阈值为原有窗口的一半,拥塞窗口会变为慢启动阈值+3数据端,1、已发送的数据收到了ack回执2、可以发送mss大小的数据时只有以上两个数据都满足时才发送数据。会有延迟,对延迟敏感的需求可以关。1、收到2*最大端长度的数据2、最大延迟0.5s发送确认应答将tcp的确认应答和回执数据通过一个包发送。接收数据之后等待应用处理生成返回数据以后在发送回复时同时发送回执。需要开启延迟确认应答。

【网络】TCP的连接建立
TCP是面向连接的协议。运输连接是用来传送TCP报文的。TCP运输连接的建立和释放是每一次连接通信过程中必不可少的。因此,运输连接就有三个阶段:连接建立,数据传送和连接释放。需要解决以下3个问题:连接建立这个过程,需要在客户端和服务器之间,交换3个TCP报文段,也就是三次握手????x3。????请注意,在本例中,A主动打开连接,B被动打开连接一开始,B就在准备接受客户进程的连接请求,然后服务器进程就处于 LISTEN (收听)状态,等待客户的连接请求。如有,即作出响应。A的TCP客户进程像B发出连接请求报文段,这时,首部中的同步位SYN = 1,同时选择一个初始序号 seq = x 。TCP规定????,SYN报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。B收到连接请求的报文段后,如同意建立连接,则向A发送确认。在确认报文段中,应把SYN位和ASK位都置1,确认号是 ack = x + 1 ,同时也为自己选择一个初始序号 seq = y 。请注意,这个报文段也不能携带数据。但同样要消耗掉一个序号。这时,TCP服务器进程进入SYN-RCVD(同步收到)状态。TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号 ack = y + 1 ,而自己的序号 seq = x + 1 。TCP的标准规定????,ACK报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是 seq = x +1 。这时,TCP连接已经建立????,A进入ESTABLISHED(已建立连接)状态。当B收到A的确认后,也进入ESTABLISHED(已建立连接)???? Q:为什么A最后还有发送一次确认呢?????A:主要是为了防止已失效的连接请求报文段突然又传送到B,因而产生错误。所谓“已失效的连接请求报文段”是这样产生的。????考虑一种正常情况,A 发出连接请求????,但因连接请求报文丢失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立了连接。数据传输完毕后,就释放了连接。A共发出了两个连接请求的报文段,其中第一个丢失????,第二个到达了B????,没有“已失效的连接请求报文段”。????现假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某个网络节点长时间的滞留????,以至延误到连接释放以后的某个时间才到达B。本来这是一个 早已失效的报文段 ,但是B收到此时小的连接请求的报文段之后,误以为是A又发出一次新的连接请求。于是向A发出确认报文段,同意建立连接。假定不采用报文握手。那么只要B发出确认之后,新的连接就建立了。由于现在A并没有发出建立连接的请求,因此不会理睬B的确认????,也不会向B发送数据,但B确以为新的运输连接已经建立,并一直等待A发来的数据。B的许多资源就这样白白浪费了。

“此连接没有启用TCP/IP”改如何解决
以在WIN10操作系统中启用TCP/IP协议为例,可以通过电脑上的网络进入到网络和共享中心来进行设置。进入到网络和共享中心以后,点击对应的网络连接名称,选择属性进入,勾选启用TCP/IP协议即可。具体的启用方法如下:1、在电脑桌面上右键点击网络,选择属性进入。2、页面跳转以后进入到网络和共享中心,点击以太网进入。3、在出现的以太网属性页面中点击属性按钮进入。4、此时在打开的对话框中可以看到TCP/IPV4没有被勾选,勾选该选项以后点击确定按钮即可开启启用TCP/IP。

如何 开启 tcp
1、点击[属性]按钮,弹出“本地连接属性”,选择“此连接使用下列项目”中的“Internet协议(TCP/IP)”,然后点击[属性]按钮。 2、在弹出的“Internet协议(TCP/IP)”对话框中点击[高级]按钮。在弹出的“高级TCP/IP设置”中,选择“选项”标签,选中“TCP/IP筛选”,然后点击[属性]按钮。3、在弹出的“TCP/IP筛选”对话框里选择“启用TCP/IP筛选”的复选框,然后把左边“TCP端口”上的“只允许”选上(请见附图)。 这样,您就可以来自己添加或删除您的TCP或UDP或IP的各种端口了。添加或者删除完毕,重新启动机器

本文由 在线网速测试 整理编辑,转载请注明出处。