三次握手协议——TCP连接

来源:互联网 发布:淘宝虚拟物品自动发货 编辑:程序博客网 时间:2024/05/16 11:36

    l  TCP连接

    TCP连接(Transmission Control Protocol的含义是::该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换。

    区别:

    IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了解到数据包是否顺利地发送给目标计算机。

    而使用TCP协议就不同了,在该协议传输模式中在将数据包成功发送给目标计算机后,TCP会要求发送一个确认;如果在某个时限内没有收到确认,那么TCP将重新发送数据包。另外,在传输的过程中,如果接收到无序、丢失以及被破坏的数据包,TCP还可以负责恢复。

    简言之:传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的运输层通信协议,通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中,它完成运输层所指定的功能。

    那么什么是TCP的三次握手机制呢?

我们知道,在TCP/IP协议中,TCP协议提供可靠的连接服务,采用的是通过三次握手建立一个连接。那么究竟过程是怎么样的呢?

    TCP的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。

我们看下面这张图:


    或者这幅图:

    上图中的字母是标志位:

     SYN(synchronous建立联机) ;ACK(acknowledgement 确认);SEQ(序列号)

    TCP连接的建立(以第二张图分析):

    第一次握手:客户端向服务器问好,问咱俩能不能通信,并告知服务器自己的序列号为x,其中x为机器随机产生的一个数字。表明传送数据时的第一个数据字节的序号是 x。SYN表示建立联机,A(客户端) 的 TCP 向 B(服务器) 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1。

    第二次握手:B 的 TCP 收到连接请求报文段后,如同意,则发回确认。

B 在确认报文段中应将 SYN 置为 1,其确认号应为 x+1,同时并告知客户端自己的序列号为y,其中y也是随机生成。

    第三次握手:A 收到此报文段后,向 B 给出确认,其确认号应为 y+1。表示客户端接收到来自服务器的确认号x+1时,知道服务器答应与自己通讯了,于是置下一次正式传输数据开始的序列号为x+1,同时置确认号为y+1,表示告知服务器我收到你的应答了,数据传输可以开始。

A 的 TCP 通知上层应用进程,连接已经建立。当运行服务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。

    至此,连接建立,其实这在我们的生活中也能找到实例,比如:我们想要去拜访一位高人,比如像古代的那些高人,又比如像古代的哪些大观们,小的官员想要去拜见他们,就得必须提前预约,不可能你什么时候去,他就什么时候接待你,所以预约的过程就是一个握手协议。

    首先:客人(小官)问主人(大官)有没有空或者时间接受来访。发出了一个讯息。

    其次主人回应客人自己不忙或者说闲暇的时候就可以来访。不过计算机中较现实更进一步,不仅说自己什么时候有时间,还会询问客人的时间表。

    再次客人收到讯息,在主人给的闲暇的时间段里选一个合适的时间点去,这样连接或者拜访就建立起来了。

    连接的建立需要解决一些问题:

    一、要使每一方能够确知对方的存在。

    二、要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。

    三、能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。

    其实和拜访还是相同的,我们去拜访一个人,首先这个人肯定得存在,不然我们去拜访什么啊,我们不仅知道我们拜访的人,被拜访的人也必须知道我们要去拜访他,不然他不在或者就不知道这么回事,那么拜访也就无从成功建立。

    我们拜访一个人,人家肯定不是每天都有时间的,像那些大官们日理万机的,我们在拜访之前必须确定拜访的时间的长短,看小官的诚意够不够,等等,只有在这些问题商议达到一致之后,才能进行拜访呢。

    当然,如果小官的要求我们满足不了,或者说小官要求托办的事情大官无能为力,那么这拜访也是不成功的。所以这样对应计算机中的三次握手,同样和网上购物也有同样的相似之处,你也得你发出订单,对方收到后给予回应,并发货,你收货后,点确认收货,至此,买卖协议完成了。

    三层握手看似很不好理解,把它生活化也许就好理解了。  


0 0
原创粉丝点击