目录
前言
网络协议是网络上所有设备(网络服务器、计算机及交换机、路由器、防火墙等)之间通信规则的集合,它规定了通信时信息必须采用的格式和这些格式的意义。
大多数网络都采用分层的体系结构,每一层都建立在它的下层之上,向它的上一层提供一定的服务,而把如何实现这一服务的细节对上一层加以屏蔽。
如下图所示:
1、网络协议介绍
1.1、定义
在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则, 比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。
本质就是数据传输的规则和标准。
1.2、基本作用
- 规定通信双方如何建立连接、如何传递数据、如何确认数据是否收发成功、出错怎么处理等。
- 保证不同厂商、不同系统设备“说同一种话”,能互相交换数据。
1.3、协议的主要内容
1、语法(Syntax):
数据结构、编码方式、数据包的格式(比如一段包头有啥字段、每一段长)。
2、语义(Semantics):
每个字段、每一步的意义和作用,比如哪一位代表校验、哪一位代表控制命令。
3、同步(Synchronization):
通信双方何时发送/接受数据,通信顺序,时序等等。
2、网络协议分层
OSI 七层模型 是国际标准化组织提出的一个网络分层模型,其大体结构以及每一层提供的功能如下图所示:
2.1、协议分层原因
- 简化问题难度和复杂度。由于各层之间独立,我们可以分割大问题为小问题。
- 灵活性好。当其中一层的技术变化时,只要层间接口关系保持不变,其他层不受 影响。
- 易于实现和维护。
- 促进标准化工作。分开后,每层功能可以相对简单地被描述。
2.2、网络协议分层的缺点
功能可能出现在多个层里,产生了额外开销。 为了使不同体系结构的计算机网络都能互联,国际标准化组织 ISO 于1977年提 出了一个试图使各种计算机在世界范围内互联成网的标准框架,即著名的开放系统互联基本参考模型 OSI/RM,简称为OSI。
如下图所示:
OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用, TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用。
TCP/IP 是一个四 层体系结构,它包含应用层,运输层,网际层(为了解决不同网络的互连问题)和网络接口层。
2.3、OSI协议和TCP/IP协议的联系
四层协议,五层协议和七层协议的关系如下:
1、TCP/IP是一个四层的体系结构
主要包括:应用层、运输层、网际层和网络接口层。
2、五层协议的体系结构
主要包括:应用层、运输层、网络层,数据链路层和物理层。
3、OSI七层协议模型
主要包括是:应用层(Application)、表示层 (Presentation)、会话层(Session)、运输层(Transport)、网络层 (Network)、数据链路层(Data Link)、物理层(Physical)。
如下图所示:
⚠️注意:五层协议的体系结构只是为了介绍网络原理而设计的,实际应用还是 TCP/IP 四层体系结构。
6.数据链路层
数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总 是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。
在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装 成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息 (如同步信息,地址信息,差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特 结束。
发送端在层与层之间传输数据时,每经过一层时会被打上一个该层所属的首部信 息。反之,接收端在层与层之间传输数据时,每经过一层时会把对应的首部信息 去除。
7.物理层
在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相 邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的 差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送 比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说, 这个电路好像是看不见的。
3、TCP/IP 协议族
3.1、定义介绍
在互联网协议中比较著名的是TCP/IP 两个协议。现在提到的 TCP/IP 并不一定是单指 TCP 和 IP 这两个具体的协议,而往往是表 示互联网所使用的整个 TCP/IP 协议族。
互联网协议套件(Internet Protocol Suite,缩写IPS)是一个网络通讯模型, 以及一整个网络传输协议家族,为网际网络的基础通讯架构。
该协定家族的两个核心协定:TCP(传输控制协议)和IP(网际协议),为该家族中早 通过的标准。TCP(传输控制协议)和IP(网际协议) 是先定义的两个核心协议,所以才统称为TCP/IP协议族。
数据从网络中一个终端上的应用程序传送到另外一个终端的应用程序,中间需要经历很多过程,有多方参与对数据进行层层封装、转发。
TCP/IP协议可分为应用层、运输层、网际层、网络接口层。
3.2、组成
1、应用层
应用层的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和 交互的规则。
对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统 DNS,支持万维网应用的 HTTP 协议,支持电子邮件的 SMTP 协议等 等。
2、运输层
运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通 用的数据传输服务。应用进程利用该服务传送应用层报文。
运输层主要使用一下两种协议:
1、传输控制协议-TCP:
提供面向连接的,可靠的数据传输服务。
2、用户数据协议-UDP:
提供无连接的,尽大努力的数据传输服务(不保证数据传输的可靠性)。
如下所示:
每一个应用层(TCP/IP参考模型的最高层)协议一般都会使用到两个传输层协 议之一:
运行在TCP协议上的协议:
1、HTTP(Hypertext Transfer Protocol,超文本传输协议):
80端口,主要用于普通浏 览。
2、HTTPS(HTTP over SSL,安全超文本传输协议):443端口,HTTP协议的安全版本。
3、FTP(File Transfer Protocol,文件传输协议):20和21端口,用于文件传输。
4、POP3(Post Office Protocol, version 3,邮局协议):110端口,收邮件用。
5、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议):25端口,用来发送电子 邮件。
6、TELNET(Teletype over the Network,网络电传):通过一个终端 (terminal)登陆到网络。
7、SSH(Secure Shell,用于替代安全性差的TELNET):22端口,用于加密安全登陆用。 运行在UDP协议上的协议:
8、BOOTP(Boot Protocol,启动协议):应用于无盘设备。
9、NTP(Network Time Protocol,网络时间协议):用于网络同步。
10、DHCP(Dynamic Host Configuration Protocol,动态主机配置协议):67端口,动态 配置IP地址。 运行在TCP和UDP协议上:
11、DNS(Domain Name Service,域名服务):用于完成地址查找,邮件转发等 工作。
3、网络层
网络层的任务就是选择合适的网间路由和交换结点,确保计算机通信的数据及时传送。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和 包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称数据报。
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连 接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol) 和许多路由选择协议,因此互联网的网络层也叫做网际层或 IP 层。
3.3、底层流程
TCP/UDP协议
网际层:解决在一个单一网络上传输数据包的问题。
IP协议
网络接口层:它是数据包从一个设备的网络层传输到另外一个设备的网络层遵循的规范。
比如以太网协议、Wi-Fi协议。
如下图所示:
4、TCP连接
4.1、TCP的握手机制
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的通信协议,工作在传输层。
4.2、TCP的三次、四次连接
TCP运输连接主要有三个阶段:
- 建立TCP连接,也就是三次握手
- 数据传输,基于已经建立的TCP连接进行可靠的数据传输
- 释放TCP连接,在完成数据的输送后,通过四次挥手来释放连接
应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。连接建立通过三次握手确保双方都能通信,而关闭连接则通过四次挥手来完成。
握手的三次是为了防止失效的连接请求,挥手的四次则因服务器需要处理剩余数据和避免立即关闭导致的问题。
如下图所示:
⚠️注意:在连接过程中,TCP首部的序列号和确认号等字段确保了数据的可靠传输。
4.3、TCP首部格式
TCP 首部格式是 TCP 协议中用来传输数据的报文格式,用于在发送端和接收端之间传递 TCP 数据。TCP 首部包含了一些必要的信息,如源端口、目标端口、序列号、确认号、标志位等,用于控制和管理 TCP 连接。
在三次握手的过程中,双方会交换 TCP 首部信息,以建立连接。 TCP 连接建立后,双方可以通过 TCP 首部中的序列号(seq)和确认号(ack)来控制和管理数据传输。每个 TCP 报文都包含了 TCP 首部和数据部分,其中 TCP 首部用于控制和管理数据传输,数据部分用于传输实际的数据。
1、源端口/目的端口
均占16比特,分别表示写入源端口号和目的端口号,用来标识发送/接收该TCP报文段的应用进程。
2、序号(sequence number)
是发送数据包中的第一个字节的序列号,占32比特,取值范围是[0,2^32-1]。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,整个要传送的字节流的起始序号必须在连接建立时设置。
首部中的序号字段值则是指的是本报文段所发送的数据的第一个字节的序号。
假设有两台主机 A 和 B 建立了 TCP 连接,A 向 B 发送了一个数据包,数据部分的长度为 100 字节,此时 A 会为这个数据包分配一个唯一的序列号,假设为 1000。
B 收到这个数据包后,会发送一个确认包给 A,确认收到了这个数据包,并告诉 A下一个期望接收的序列号是 1100。这样,A 就知道 B 已经成功地接收了这个数据包,并且可以继续发送后续的数据。
如果某个数据包丢失了,TCP 协议会重新发送这个数据包,并在 TCP首部中使用之前分配的序列号,以告诉接收端这是之前发送的数据包。如果某个数据包重复传输了,TCP 协议会使用序列号来检查数据是否已经接收过。
作用:序列号能有效保证TCP数据传输的可靠性和正确性,避免数据的重复传输和丢失。
3、确认号(acknowledgement number)
Ack序号,占32比特,取值范围[0,2^32-1],用于标识期望收到对方下一个TCP报文段的数据的第一个字节的序号,同时也是对之前收到的所有数据的确认。若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。
在 TCP 连接中,接收端会在每个 TCP 报文中包含确认号,以告诉发送端下一个期望接收的字节的序列号。发送端会根据确认号来确认接收端已经正确地接收到了数据,并继续发送后续的数据。
⚠️注意:在连接过程中,TCP首部的序列号和确认号等字段确保了数据的可靠传输。
4、标志位ACK
ACK取值为1时确认号字段才有效;取值为0时确认号字段无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。
不要将确认序号Ack与标志位中的ACK搞混了,ACK和确认号Ack的区别:
确认标志位 ACK 和确认号都是用于保证数据传输可靠性的机制但具有不同的作用。
1、确认标志位 ACK 的作用是告知发送方数据是否已经成功接收。
2、确认序号的作用是告知发送方接收方期望接收的下一个字节的序列号,Ack=seq+1。
5、同步标志位SYN
在TCP连接建立时用来同步序号。
假设有两台主机 A 和 B 建立 TCP 连接,A 需要发送一个带有 SYN 标志位的 TCP 报文给 B,请求建立连接。
A 发送的 SYN 报文中包含一个随机的序列号,B 收到这个 SYN 报文后,会回复一个带有 SYN 和 ACK 标志位的 TCP 报文,表示确认收到请求,并请求建立连接。B 回复的 SYN 和 ACK 报文中包含确认号,确认号被设置为 A 的序列号加 1,这就起到了SYN同步A序列号的作用。
6、终止标志位FIN
表示发送方已经没有数据需要发送,请求释放TCP连接。在 TCP 连接关闭时,发送方和接收方都需要发送 FIN 标志位的 TCP 报文,以请求关闭连接。
FIN 标志位的作用是保证 TCP 连接的正常关闭。通过使用 FIN 标志位,TCP 协议可以保证连接的正常关闭,避免数据的丢失和不可靠性。
需要注意的是,TCP 连接关闭时可能会出现 TIME_WAIT 状态。在 TCP 连接关闭后,发送方和接收方都需要等待一段时间,以确保对方已经收到了所有数据,并且确认了连接的关闭。这个等待时间称为 TIME_WAIT 状态。在 TIME_WAIT 状态下,TCP 连接不能被重新建立。
总结:
TCP 首部格式和 TCP 连接是密切相关的。TCP 首部中的信息用于控制和管理 TCP 连接和数据传输,而 TCP 连接则是基于 TCP 首部中的信息建立的。在进行 TCP 数据传输时,需要使用 TCP 首部来控制和管理数据的传输过程,以确保数据的可靠性和正确性。
4.4、三次握手过程介绍
TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个TCP 报文段,称之为“三次握手”,采用三次握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。
这个连接必须是一方主动打开,另一方被动打开的。
如下所示:
最初两端的TCP进程都处于关闭状态,握手之前主动打开连接的客户端(Client)结束CLOSED阶段,被动打开的服务器端(Server)也结束CLOSED阶段,并进入LISTEN监听阶段,等待TCP客户进程的连接请求。
1.Client向Server发送TCP连接请求报文段,并进入同步已发送状态(SYN-SENT)
标志位SYN=1,表示“请求建立新连接”;
序号seq=x,作为初始值;
2.Server收到TCP连接请求报文段后,如果同意建立连接,则向Client发送TCP连接请求确认报文段,并进入同步已接收状态(SYN-RCVD)
标志位SYN=1、ACK=1,表示“确认Client的报文之后,结束LISTEN阶段,同意创建新连接”;
序号seq=y,作为初始值;
确认号Ack=x+1,表示“收到Client的序号seq=x,并将其值加1作为自己确认号Ack的值,这是对Client所选择的初始序号seq的确认;
3.Client接收到Server确认收到数据的TCP报文之后,明确了数据传输是正常的,结束SYN-SENT阶段。并返回最后一段TCP确认报文段,并进入连接已建立状态(ESTABLISHED)
标志位ACK=1,表示”确认收到Server同意连接的确认号Ack;
序号seq=x+1,因为Client发送的第一个报文段序号为x,并且不携带数据,因此第二个报文段的序号为x+1;
确认号Ack=y+1,表示“收到Server序号seq=y,并将其值加1作为自己确认号Ack的值;
⚠️注意:
TCP规定,普通的TCP确认报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下所发送的下一个数据报文段的序号仍是x。所以第三次Client发送报文段的时候,原seq=x不变,在此基础上直接+1即可。
总结:
Server收到来自Client的“确认收到服务器数据”的TCP报文之后,明确了数据传输是正常的。Server结束SYN-SENT阶段,进入ESTABLISHED阶段。此后客户端和服务器端进行正常的数据传输,这就是“三次握手”的过程。
4.5、第三次握手原因
由于网络传输是有延时的(要通过网络光纤和各种中间代理服务器),在传输的过程中,比如Client发起了SYN=1创建连接的请求(第一次握手)。
如果Server就直接创建了这个连接并返回包含SYN、ACK和Seq等内容的数据包给Client,这个数据包因为网络传输的原因丢失了,丢失之后Client就一直没有接收到服务器返回的数据包。
Client可能设置了一个超时时间,时间到了就关闭了连接创建的请求。再重新发出创建连接的请求,而Server是不知道的,如果没有第三次握手告诉Server,Client收的到传输的数据的话,Server是不知道对方有没有接收到自己返回的信息的。
“第三次握手”是Client向Server发送数据,这个数据就是要告诉服务器,Client有没有收到服务器“第二次握手”时传过去的数据。若发送的这个数据是“收到了”的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口。
由此减少服务器开销和接收到失效请求发生的错误。
如下图所示:
4.6、四次挥手过程
挥手之前主动释放连接的Client结束ESTABLISHED阶段,随后开始四次挥手。
后“两次挥手”既让Client知道了Server准备好释放连接了,也让Server知道了对方了解自己准备好释放连接了。于是,可以确认关闭连接,由此完成“四次挥手”。
1.首先Client想要释放连接,向Server发送一段TCP报文
标记位FIN=1,表示”请求释放连接“;
序号seq=u,设为初始值;
随后Client客户端进入`FIN-WAIT-1阶段,即半关闭阶段`。并停止发送数据给Server,`但Client这边仍然可以收到Server发送过来的数据`;
2.Server端接收到从Client发出的TCP报文之后,确认了客户端想要释放连接,随后Server结束ESTABLISHED阶段,进入CLOSE-WAIT阶段(半关闭状态)
标记位ACK=1,表示”接收到Client发送的释放连接的请求“;
序号seq=v
确认号Ack=u+1
Client收到Server发过来的报文后,进入`FIN-WAIT-2阶段`;
前"两次挥手"既让Server知道了Client想要释放连接,也让Client知道Server了解了自己想要释放连接的请求。于是,可以确认关闭客户端到服务器端方向上的连接了。
3.Server自从发出ACK确认报文之后,经过CLOSED-WAIT阶段,做好了释放连接准备,再次向客户端发出一段TCP报文
标志位FIN=1、ACK=1,表示”已经准备好释放连接了“;
序号seq=w;
确认号Ack=u+1;
随后Server端结束CLOSE-WAIT阶段,进入LAST-ACK阶段(最后确认)。并且停止向Client发送数据,但是仍然能够接收从对方传输过来的数据。
4.Client收到从Server端发出的TCP报文,确认了Server已做好释放连接的准备,结束FIN-WAIT-2阶段,进入TIME-WAIT阶段,并向Server发送一段报文
标记位ACK=1,表示”收到了Server准备好释放连接的信号“;
序号seq=u+1;
确认号Ack=w+1
随后Client在TIME-WAIT阶段等待`2MSL`
为什么Client要等待2MSL?:
当客户端发出最后的ACK确认报文时,并不能确定服务器端能够收到该段报文。所以客户端在发送完ACK确认报文之后,会设置一个时长为2MSL的计时器。
MSL指的是Maximum Segment Lifetime:一段TCP报文在传输过程中的最大生命周期。
2MSL即是服务器端发出为FIN报文和客户端发出的ACK确认报文所能保持有效的最大时长。
Server收到从Client发出的TCP报文之后结束LAST-ACK阶段,进入CLOSED阶段。由此正式确认关闭连接。
Client等待完2MSL之后,结束TIME-WAIT阶段,进入CLOSED阶段,由此完成“四次挥手”。
总结:
后“两次挥手”既让Client知道了Server准备好释放连接了,也让Server知道了对方了解自己准备好释放连接了。于是,可以确认关闭连接,由此完成“四次挥手”。
1、为什么“握手”是三次,“挥手”要四次?
TCP建立连接时之所以只需要"三次握手",是因为SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。
TCP释放连接时之所以需要“四次挥手”,是因为FIN释放连接报文与ACK确认接收报文是分别由第二次和第三次"握手"传输的。释放连接时,被动方服务器突然收到主动方客户端释放连接的请求时并不能立即释放连接。
因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。
2、如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP设有一个保活计时器,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时。
若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
3、在PC浏览器的地址栏输入URL,从发起请求到收到请求页面响应,发生了什么?
1、首先,在浏览器地址栏中输入url,先解析url,检测url地址是否合法2、浏览器先查看浏览器缓存-系统缓存-路由器缓存-ISP缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第三步操作。
浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;
操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);
路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;
ISP缓存:若上述均失败,继续向ISP搜索。
3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。
4、浏览器向服务器发起tcp连接,与浏览器建立tcp三次握手。
5、握手成功后,浏览器向服务器发送http请求,请求数据包。服务器处理收到的请求,将数据返回至浏览器。
6、浏览器收到HTTP响应,浏览器解码响应,如果响应可以缓存,则存入缓存。
7、 浏览器发送请求获取嵌入在HTML中的资源(html,css,javascript,图片,音乐…),对于未知类型,会弹出对话框。
8、 浏览器发送异步请求,页面全部渲染结束。
5、Http和Https
5.1、http的定义
HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
5.2、区别和联系
如下图所示:
5.3、常用HTTP状态码
表示客户端HTTP请求的返回结果、标识服务器处理是否正常、表明请求出现的错误等。
状态码的类别:
参考文章:
2、网络协议精讲-CSDN博客文章浏览阅读2.9k次。计算机网路协议1、TCP/IP的四层模型应用层: http/smtp/dns/rtp…传输层:TCP/UDP网际层:IP网络接口层2、HTTP三次握手和四次挥手三次握手第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK=0,发送顺序号seq=x(随机int)。客户端进入SYN发送状态,等待服务器确认。第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标志位为1,发送顺序号seq=Y(随机int),接收顺序号ack=x+1,此时服务器进入SYN接收状态。_什么是协议计算机网络https://blog.csdn.net/weixin_40307206/article/details/107764053?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522d35aa3ebe0f31892ec94aad8f5fec282%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=d35aa3ebe0f31892ec94aad8f5fec282&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-8-107764053-null-null.142^v102^control&utm_term=%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E5%8D%8F%E8%AE%AE&spm=1018.2226.3001.41873、TCP协议+三次握手/四次挥手过程(带图详解!!!)_tcp握手挥手协议过程-CSDN博客文章浏览阅读2k次,点赞4次,收藏17次。TCP是一种面向连接的、可靠的通信协议,其连接建立通过三次握手确保双方都能通信,而关闭连接则通过四次挥手来完成。握手的三次是为了防止失效的连接请求,挥手的四次则因服务器需要处理剩余数据和避免立即关闭导致的问题。在连接过程中,TCP首部的序列号和确认号等字段确保了数据的可靠传输。
https://blog.csdn.net/BigSmileBigSun/article/details/131996525?ops_request_misc=&request_id=&biz_id=102&utm_term=tcp%E7%9A%84%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-131996525.142^v102^control&spm=1018.2226.3001.4187