找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2169|回复: 0
打印 上一主题 下一主题
收起左侧

TCP连接——三次握手和四次断开

[复制链接]
跳转到指定楼层
楼主
ID:128229 发表于 2016-6-29 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一.      面向连接
TCP是一个面向连接的协议,面向连接是指任何一方向对方发送数据前必须先建立通道,比如像打电话一样:必须要等到对方的手机响铃,并且对方接听电话时,才能与对方通信。而UDP则不是面向连接的协议,基于UDP协议的通信双方不需要事先与对方协商建立连接,也不管对方的IP地址与端口号是否存在,就发送数据,这个处理方式有点像手机发短信,不管对方手机是否欠费或关机,我们就只管发送信息。

  二.     三次握手

第一次握手:客户端发送SYN包(序列号seq=100),等待服务器的确认。
第二次握手:服务器收到SYN包之后,必须确认客户端,所以就要发送ACK包(ACK=101),同时,服务器必须还必须发送SYN包(序列号seq=300)等客户端的确认。
第三次握手:客户端接收到SYN+ACK包之后,向服务器发送确认包(ACK=301),次包发送完毕之后,两者就可以进行数据交换了。

简单的来说:
C(客户端)           S(服务器)
C:发送SYN给S
S:如果成功,返回给C(SYN+ACK)
C:如果成功,返回给S(ACK)

   还可用个形象的例子说下:TCP的三次握手过程可以看成是某男生追某女生的过程。第一次握手就好比是:男生向女生告白,说我喜欢你,然后男生等待女生的回应,第二次握手就好比是:女生收到男生的告白,而且该女生也喜欢次男生,她就可以给男生回应,说:我也喜欢你。第三次握手:男生收到该女生的回应,大喜,又发送消息过去,那我们正式交往吧!

  三      .四次断开

1.     客户端发送数据完毕之后,提出要断开连接
2.     服务器收到FIN包后,对其作出反应,发送ACK包,确认这一方向的连接将关闭,
3.     等服务器的应用程序做好关闭准备时,服务器反方向发送FIN包,请求关闭连接请求,
4.     客户机对服务器发送的请求进行确认,并发送ACK包

也可简单的概述:
C(客户端)        S(服务器)
C:发送FIN给S
S:如果成功,返回给C(ACK)
S:应用程序做好关闭程序准备,发送FIN给C
C:如果成功,返回给S(ACK)

同样也可以用个形象的例子说明:这个过程相当于男女双方分手的过程:
1,女方向男方提出分手,等待男方的回应
2,男方听到这个消息后,就给女方回应说:好吧!分就分
3,过段时间,男方突然觉得很没面子,想:“我一个大老爷们,应该是我提出分手”,于是,男方跟女方说:我们分手吧!
4,这时,女方就直接骂了句“神经病”。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表