TCP连接的建立和结束

文章详细解释了TCP连接的建立过程,通过三次握手(SYN,SYN/ACK,ACK)以及终止连接的四次挥手(FIN,ACK,ACK/FIN,ACK)原理。讨论了浏览器关闭时TCP连接的不同处理方式,Firefox可能保持连接直到服务器超时断开,而IE则通过发送RST包主动断开。
摘要由CSDN通过智能技术生成

SYN 同步 有效数值1
ACK 应答 1
FIN 结束 1
RST 重设
URG 紧急
PSH 强迫送出

1.建立TCP连接 通过3次握手实现
假设B客户机现在要和A主机通信
B->SYN->A. 当B客户机要和A主机通信,B首先发送一个SYN标记的包,告诉A请求建立连接.只有当A收到B发来的SYN包,才可以建立连接,除此之外没有其他的方法,因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你就不能让外网的主机连接你的机器.
A->SYN/ACK->B 接着,A收到B刚才发送过来的SYN包后,会发送一个SYN包的确认包,表示确认刚才B发送的包,然后继续,
B->ACK->A B收到A的SYN确认包后,B发送一个ACK确认包,通知A建立连接,一次TCP连接就建立成了,然后就可以通信,通信就是说,可以进行FTP,或者SSH,或者TELNET.
当主机在通信时,TCP的每个包都会设置ACK位,也就是连接跟踪,为什么要设置连接跟踪呢?如果没有连接跟踪,那么防火墙将无法判断收到的ACK是否属于一个已经建立的连接,后果可想而知,但是也不需要大家担心,正常的通信不存在这些问题.

2.结束通信,通过4次握手实现
刚才B客户和A服务器建立了连接,并进行了通信,现在通信完毕要关闭这个连接,由于TCP连接是双向连接,因此关闭连接要在两边都要实行,
B->ACK/FIN->B 当B要和A结束通信时,B先发送一个FIN标记的包,告诉A请求连接结束.但是现在双方还在通信,所以每个包都带有ACK标记,
A->ACK->B A发送一个ACK包给B,表示确认,
A->ACK/FIN->B 当完成数据传输后,就送出ACK/FIN包.
B->ACK->A B送出确认包给A,连接关闭,关闭连接不是我们关心的事情,那些事情是操作系统所要做的,就象现在写的任何软件,他们都是使用了系统调用.
关于关闭连接,不是只有上边我说的一种方法,还有一种就是发送RST包,RST包不需要对方进行确认,也就是说我不想和你连接了,就象现在说的:"单方面终止合同"。

今天在抓包分析的时候遇到了一个问题,当我打开网页时,会看到TCP三次握手的过程,但是当我把浏览器关闭之后,也就是说会话结束,并没有看到FIN数据包的发送。经过和师兄探讨,发现这个浏览器的具体实现有关,firefox关闭之后,其实主机和服务器的tcp连接还在,因为服务器端有超时机制,一旦超过一定的时间,客户端没有任何的响应,那么服务器端主动发送FIN包请求客户端断开连接,接着就是正常的tcp断开连接的过程。如果是IE,我用的是IE6,当关闭浏览器之后,浏览器在关闭之前会主动发送几个rst包给服务端,表示主动断开连接,这种断开连接的方式就是非正常断开。服务器收到这个rst包之后,直接关闭连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

omyligaga

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值