加入收藏 | 设为首页 | 会员中心 | 我要投稿 广州站长网 (https://www.020zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 移动互联 > 应用 > 正文

应用程序无效 【无标题】初识TCP,实验加抓包带你理解为什么需要三次握手、四次挥手

发布时间:2022-10-26 13:31:06 所属栏目:应用 来源:未知
导读:
主要放在前面三个包,这个就是TCP建立的三次握手。


最开始,客户端与服务器都是出于CLOSED状态,服务器由于跑了WEB服务,会主动去监听对应的端口号,变成LSTEN状态。客户端想要访问服务

应用程序无效_vlan 应用acl无效_鉴定意见程序违法无效

主要放在前面三个包,这个就是TCP建立的三次握手。

vlan 应用acl无效_鉴定意见程序违法无效_应用程序无效

应用程序无效_鉴定意见程序违法无效_vlan 应用acl无效

最开始,客户端与服务器都是出于CLOSED状态,服务器由于跑了WEB服务,会主动去监听对应的端口号,变成LSTEN状态。客户端想要访问服务器,会随机初始化序列号(Client_isn,这里为6509),把这个序列号放入头部的序列号字段中,同时把SYN标志变成1,用于表示这个是SYN报文,然后发送给服务器,告诉服务器,我要跟你建立连接,发送完成后,客户端状态变成SYN-SENT。

应用程序无效_鉴定意见程序违法无效_vlan 应用acl无效

服务器收到客户端的SYN后,首先服务器也生成一个随机的序号(Server_isn,这里为7773),这个序号填入TCP头部的序列号字段中,另外确认应答号填入(Client_isn+1,6509+1),最后把控制位的SYN与ACK标志变成1后发送给客户端。

vlan 应用acl无效_鉴定意见程序违法无效_应用程序无效

客户端收到服务器的报文后,还需要发送最后一个应答报文,于是将TCP头部的ACK标志位变成1,紧接着确认应答号字段填写Server_isn+1(7773+1),最后把这个报文送给服务器,发送出去后,客户端的状态变成ESTBLISHED。

服务器收到客户端的应答报文后,也进入ESTABLISHED状态,至此双方都进入ESTABLISHED状态,三次握手完成,连接已经建立,客户端与服务器就可以相互发送数据了。

(2)TCP为什么一定要三次握手,目的是什么?

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

鉴定意见程序违法无效_应用程序无效_vlan 应用acl无效

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

通过上面的图就可以看出来,虽然第二个包服务端也就回复了SYN与ACK,但是服务端并不能确认这个包是否抵达了客户端,假设只有两次握手,当客户端的SYN请求发送出去了,但是由于网络问题被丢弃或者服务器回应的ACK没有收到,会重新发送SYN,由于没有第三次的握手存在,服务端不清楚客户端是否收到自己的ACK确认了,导致的情况是每收到一个SYN就建立一个连接,这样会导致服务端建立多个无效的连接,占用了设备的资源,更容易被恶意攻击。

(3)简单看看,TCP如何保障应用的可靠性的

来看看红色标记中的三个包,一个是客户端请求的HTTP数据,一个是服务端响应的,加一个ACK。

为了方便理解,我们就用抓包软件给的相对值来看,这样看起来清晰些,随机值可能一眼看过去有点迷糊,需要计算。

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

vlan 应用acl无效_应用程序无效_鉴定意见程序违法无效

应用程序无效_vlan 应用acl无效_鉴定意见程序违法无效

最后客户端收到服务器的响应后,回复ACK,表示收到了。

(4)TCP又是如何断开的呢?

如果客户端与服务器的数据已经发送完毕,一段时间内不在发送数据了,TCP建立的连接通道会占用服务器的性能,所以TCP规定,当应用服务不在有数据传输的需求时,应该断开连接,TCP断开的方式是通过四次挥手。

vlan 应用acl无效_应用程序无效_鉴定意见程序违法无效

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

其实仔细看了上面的过程,就理解为什么需要四次了。

TCP的option MSS

vlan 应用acl无效_鉴定意见程序违法无效_应用程序无效

vlan 应用acl无效_应用程序无效_鉴定意见程序违法无效

在TCP三次握手建立的时候,通常是会协商双方的MSS值的,当TCP发现数据超过MSS时,就会先进行分片,保证在打上TCP头部,以及IP头部的长度后不大于MTU值,这样来避免IP分片。

TCP分片后,如果某一个分片丢失,TCP会重发丢失部分的MSS应用程序无效,而不用重传所有分片,这样大大的提高了效率。(补充:MSS分片是都具有TCP头部,所以可以针对某一片重传。因为发送方没有收到对方对应部分的ACK应答,会进行重传,这就是TCP层的可靠性保障跟数据交付。)

最后补充下,TCP中的数据称为段,就跟IP层为包,数据链路层为帧一样,但是在实际交流中,更多会称呼为数据包。

(6)怎么才算一个TCP连接呢?

vlan 应用acl无效_鉴定意见程序违法无效_应用程序无效

有没有这样的可能,端口号最大只有65535,可能在某个时刻,同时访问服务器中就有相同的源端口号,因为目的端口号是服务器提供的服务端口号,都是相同的,这个时候服务器收到以后没法确认一个唯一的TCP连接,因为端口号都一样,所以确定唯一TCP连接是包含四元组:源地址、目的地址、源端口号、目的端口号

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

Windows命令行学习

在Windows中可以通过netstat开查看当前PC或者服务器的TCP网络连接情况

应用程序无效_vlan 应用acl无效_鉴定意见程序违法无效

可以通过/?看帮助命令

鉴定意见程序违法无效_应用程序无效_vlan 应用acl无效

可以查看本机就有这么多在侦听的端口号,为什么会侦听呢?就是因为开了对应的服务,就会侦听,当有数据包过来访问的是某某端口号,就交给对应侦听端口号的上层应用处理。

抓包的小技巧

抓包中软件会生成一个相对随机值,方便我们查看,但是新手朋友很容易把这个值当成了TCP序列号本来就是这个样子的,更糟糕的可能认为客户端与服务器的序列号是一样的,所以可以在抓包中关闭这个选项

鉴定意见程序违法无效_应用程序无效_vlan 应用acl无效

右击,协议首选项----transmission Control protocl----红色框框的√去掉

应用程序无效_鉴定意见程序违法无效_vlan 应用acl无效

这个时候看,序列号就成了随机的了

鉴定意见程序违法无效_vlan 应用acl无效_应用程序无效

应用程序无效_vlan 应用acl无效_鉴定意见程序违法无效

vlan 应用acl无效_鉴定意见程序违法无效_应用程序无效

流类型选择【TCP Flod】就可以只看TCP的了,能够完整的看到整个TCP的状态以及序列号与ACK的交互过程,建议save as导出看起来更加清晰。

(编辑:广州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!