|
马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?用户注册
x
TCP是一种双向通信协议,这意味着任何一端都应该能够可靠地发送数据,所以次握手刚刚好。TCP是I协议套件的主要协议之一,它位于应用层和络层之间,用于提供可靠的连接服务,是一种面向连接的通信协议,有助于通过络在不同设备之间交换消息。ip地址归属地查询的最新消息可以到我们平台网站了解一下,也可以咨询客服人员进行详细的解答!
提到TCP,那么一定就会提到TCP的次握手,这个是TCP连接核心中的核心,那么TCP次握手是怎么样的过程,有什么秀的设计之处呢
今天瑞哥带您用图解的形式好好的解释一波,让我们直接开始吧。
什么是TCP英文全称:TCP中文称:传输控制协议TCP是一种面向连接的协议,可确保将数据完整地传送到其目的地,TCP首先通过使用TCP向握手与每个主机上的TCP端口建立会话,然后它以数据包的形式传输数据,每个数据包都有一个序列号,当在目的地收到数据包时,TCP会向发送主机生成确认,如果未收到序列中的数据包,则发送主机上的TCP在一定时间间隔后重新传输数据包。
TCP次握手TCP在建立和关闭两个设备之间的连接期间会发生3次握手过程,也就是建立和关闭连接需要经历个步骤,下面我们来详细的了解一下这个过程。
生活中的次握手我们先以生活中的例子形象的说明一下次握手过程:
生活中的次握手
小明想打给小美,但是不确定对方是不是小美,所以会经历以下过程:
小明:你好,请问是小美吗【首次握手】小美:是的,我是小美。【第二次握手】小明:好的,我知道你是小美了。【第次握手】经历次握手后,小明可以可以很明确的确定对方就是小美,非常可靠!
假如只有一次握手,那么小明问完“你好,请问是小美吗”,小明压根不确定对方有没有收到这个问候,更不要谈对方是否是小美了。
假如只有两次握手,那么小明收到小美的“是的,我是小美。”的回复后,小美是不知道小明是否收到她的回复,所以接下来她不确定是否要跟中询问她的人通信。
所以次握手刚刚好。
专业角度的次握手下面我们来看下专业的次握手。
次握手涉及到的专业词服务端:服务端是专用于运行服务以满足其他计算机需求的物理计算机
客户端-服务端
客户端:客户端是访问服务器提供的服务的计算机硬件设备或软件SYN:同步序列号(SSN),这是从客户端到服务端的首个数据包,可以描述为建立连接的请求,如果SYN为1,则表示设备要建立安全连接,否则不。
SYN抓包
ACK:确认(A),可以说是SYN的响应,如果ACK为1,则设备已收到SYN消息并确认,否则没有。
ACK抓包
次握手步骤
次握手步骤
首步:客户端将SYN标志设置为1将消息发送到服务端。
第二步:服务端通过将ACK标志设置为1来确认客户端请求。
第步:客户端收到来自服务端的同步(SYN)后,向服务端发送确认(ACK)。
从客户端得到(ACK)后,客户端和服务端之间建立连接,现在数据可以在客户端和服务器端之间传输。
更详细的过程
次握手更详细的过程
首步:TCP客户端向服务端发送TCPSYN数据包来开始连接,数据包包含一个随机序列号,它表示客户端应传输的数据的序列号的开始。
第二步:服务端收到数据包,并用它的序列号()进行响应,它的响应还包括确认号,即客户端的序列号加1,此处为+1。
第步:客户端通过发送确认号来响应服务器,该确认号是服务端的序列号加1,此处为+1
TCP次握手抓包分析
再多的理论不经过践都是徒劳,所以验证我们理论的比较好的方式就是抓包看一下TCP次握手过程。
TCP次握手抓包分析
如图,主机1721616128:2826和主机21258226142:80建立次握手过程:
首步:主机1721616128:2826向主机21258226142:80发送[SYN]S=0第二步:主机21258226142:80向主机1721616128:2826发送[SYN,ACK]S=0,A=1第步:主机1721616128:2826向主机21258226142:80发送[ACK]S=1,A=1这就是详细的次握手报文,我觉得此时此刻,大家可以打开自己的抓包工具尽情的体验一下TCP次握手的神奇之处了。
TCP窗口大家在看上图中的抓包截图的时候,肯定注意到了W=8192的字眼,这个就是TCP窗口。
客户端向服务端发送一堆数据,然后服务端验证所有数据包级别的校验和并发送一个ACK数据包,表明一切数据都已正确接收。
如果没有收到所有内容,则需要重新传输部分或全部数据,每个设备都维护一个所有数据的缓冲区,以防需要再次发送,接收到ACK数据包意味着设备可以将旧数据从缓冲区中清除。
TCP窗口
TCP窗口就是在接收到ACK之前可以发送的比较大字节数。
如果络不可靠,比较好将TCP窗口设置小一点,这样,如果出现问题,就不必重新传输非常大的数据。
TCP还有一个绝佳的设计,那就是滑动窗口,即设备可以动态更改窗口大小,在拥塞时将窗口缩小,在正常时将窗口放大。
其他参数抓包截图中不仅仅有TCP窗口,还有其他的参数:
MSS(MSS),比较大段大小。WS(WS),用于控制比较大TCP接收窗口大小。TCP为什么不能二次握手建立连接我们要知道S和C想要建立连接,必须满足以下四个条件:
服务端需要确认服务端可以从客户端接收数据包客户端需要确认客户端可以从服务端接收数据包客户端需要确认服务端可以从客户端接收数据包服务端需要确认客户端可以从服务端接收数据包四个条件看起来很绕,其说白了就是:
小明问:“你好,请问时小美吗”:发送成功后,小明确定可以他从小美接收信息,验证了首个条件【服务端需要确认服务端可以从客户端接收数据包】小美回:“是的,我是小美”:发送成功后,小美确定她可以从小明接收信息,也能确认小明可以从她这边接收信息,验证了第二、第个条件【客户端需要确认客户端可以从服务端接收数据包】【客户端需要确认服务端可以从客户端接收数据包】小明回:“好的,我知道你是小美了”:发送成功后,小明确定可以小美可以从他这边接收信息,验证了四个条件【服务端需要确认客户端可以从服务端接收数据包】TCP是一种双向通信协议,这意味着任何一端都应该能够可靠地发送数据,所以次握手刚刚好。 |
|