TCP/IP协议的三次握手和四次挥手(建立连接和断开连接)

news/2024/5/17 16:16:50 标签: 网络, tcp, 三次握手, 四次挥手, TCPip

1、TCP/IP协议概述

TCP/IP协议(TransmissionControl Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。TCP/IP协议使用范围极广,是目前异种网络通信使用的唯一协议体系,适用于连接多种机型,既可用于局域网,又可用于广域网,许多厂商的计算机操作系统和网络操作系统产品都采用或含有TCP/IP协议。TCP/IP协议已成为目前事实上的国际标准和工业标准。

TCP/IP是很多的不同的协议组成。TCP用户数据报表协议,也称作TCP传输控制协议(Transport Control Protocol,可靠的主机到主机层协议),这里要先强调一下,传输控制协议是OSI网络的第四层的叫法,TCP传输控制协议是TCP/IP传输的6个基本协议的一种。两个TCP意思不相同)。TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的,主机交换数据必须建立一个会话。它用比特流通信,即数据被作为无结构的字节流。通过每个TCP传输的字段指定顺序号,以获得可靠性。是在OSI参考模型中的第四层,TCP是使用IP的网间互联功能而提供可靠的数据传输,IP不停的把报文放到 网络上,而TCP是负责确信报文到达。在协同IP的操作中TCP负责:握手过程、报文管理、流量控制、错误检测和处理(控制),可以根据一定的编号顺序对非正常顺序的报文给予从新排列顺序。

2、三次握手原理解析

图1  三次握手

 

在TCP会话初期,有所谓的“三握手”,即对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。由于TCP需要时刻跟踪,这需要额外开销,使得TCP的格式有些显得复杂。

TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

三次握手客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。Backlog参数:表示未连接队列的最大容纳数目。

SYN-ACK :重传次数。 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。如图1所示。


图2 四次挥手

需要断开连接的时候,TCP也需要互相确认才可以断开连接,采用四次挥手断开一个连接,如图2所示。在第一次交互中,首先发送一个FIN=1的请求,要求断开,目标主机在得到请求后发送ACK=1进行确认;在确认信息发出后,就发送了一个FIN=1的包,与源主机断开;随后源主机返回一条ACK=1的信息,这样一次完整的TCP会话就结束了。

 

总结:

          传输层是整个协议层的核心,而TCP是面向连接的传输协议,用于在不可靠的因特网上提供可靠的,端到端的字节流通信的协议。所以说。TCP在传输层有着很重要的地位。

          而我认为TCP传输过程中建立连接是最重要的,TCP与UDP的区别也体现在这里,TCP需要在数据传输前建立连接。一部分保障了数据传输的可靠性。

 还记得两军问题中由于两军距离问题在同步作战的方案中,需要建立连接,达成协议,但是由于不能确定对方是否接收到消息就会在双发无休止的建立连接。而三次握手协议不仅保持着协议双方的可靠通信,也不会使得双方的无休止的建立通信这个弊端。而对每个报文都增加了一个定时器,设计一个最大延时,使得超时的数据认定为丢失,同时不会因为无休止的等待,而耽误其他工作。

 


http://www.niftyadmin.cn/n/683610.html

相关文章

oracle同个事务中更新两次,后一次依赖前一次会有什么后果呢

本来是想第二条更新根据前面更新的数据为依据,可这样前面的更新没提交,后面的会怎么样呢? 所以做个实验 SQL> create table t_tmp_name (name varchar2(5),age number); Table created SQL> insert into t_tmp_name values(x,25); 1 …

如何序列化和反序列化一个java对象

首先,什么是序列化? 序列化,目前已经得到大多数计算机语言的支持,Java也不例外,Java的序列化功能是作为I/O功能的一个子项,它的使用也是比较方便的;序列化,又称为“串化”&#xff…

db file sequential read

db file sequential read db file sequential read等待事件有3个参数:file#,first block#,和block数量。在10g中,这等待事件受到用户I/O等待级别的影响。当处理db file sequential read等待事件的时候&…

5 个免费的受欢迎的 SQLite 管理工具

5 个免费的受欢迎的 SQLite 管理工具 oschina 发布于: 2013年08月27日 (29评)分享到: 收藏 2859月19日成都OSC源创会火热报名 —— 送机械键盘和开源内裤 SQLite Expert – Personal Edition SQLite Expert 提供两个版本,分别是个人版和专业…

ORACLE DML 事务中索引维护在里面?

有个过程insert 数据 通过EM 看到后半段db file sequntial read 具说大部分是读索引!难道索引维护强加到事务中

[Java设计模式](一)怎样实现Singleton(单例)模式编程

单例模式是开发模式中最简单,最易于理解的一种模式。简单地说,它指的就是始终保持一个实例的意思。但是,Java的类是可以穿件多个实例的,那么,怎么实现呢? 顾名思义,单例模式就是只有一个实例。…

智能行业盛会来袭:OFweek中国人工智能产业大会之AI+机器人论坛

智能行业盛会来袭:OFweek中国人工智能产业大会之AI机器人论坛,由OFweek中国高科技行业门户、高科会主办,的“OFweek(第二届)中国人工智能产业大会--AI机器人论坛”将于8月31日在上海举行

[推荐] SQLite可视化管理工具汇总

SQLite可视化管理工具汇总 分类: 数据库2012-09-14 17:21 41642人阅读 评论(6) 收藏 举报sqlite工具数据库管理工具csvbrowser搜集了一些SQLite工具,在这里做个总结,有的工具用的多一些,有的只是简单试用,甚至未试用&a…