TCP协议的三次握手

1.TCP/IP协议概述

TCP/IP协议(Transmission Control 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、三次握手原理解析

在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所示。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。

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

总结:

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

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

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

注意:

1.ACK=1和ack=随机数 不一样。

2.第三次握手seq=x+1是一个顺序号码。

3.整个过程是一个请求-回应-再次确认

TCP连接——三次握手和四次断开   (案例二)

1.面向连接

TCP是一个面向连接的协议,面向连接是指任何一方向对方发送数据前必须先建立通道,比如像打

电话一样:必须要等到对方的手机响铃,并且对方接听电话时,才能与对方通信。而UDP则不是面向连

接的协议,基于

UDP协议的通信双方不需要事先与对方协商建立连接,也不管对方的IP地址与端口号

是否存在,就发送数据,这个处理方式有点像手机发短信,不管对方手机是否欠费或关机,我们就只管发送信息。

2.三次握手

第一次握手:客户端发送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的三次握手过程可以看成是某男生追某女生的过程。第一次握手就好比

是:男生向女生告白,说我喜欢你,然后男生等待女生的回应,第二次握手就好比是:女生收到男生的告白,而且该女生也喜欢次男生,她就可以给男生回应,说:我也喜欢你。第三次握手:男生收到该女生的回应,大喜,又发送消息过去,那我们正式交往吧!

3.四次断开

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,这时,女方就直接骂了句“神经病”。

转载于:https://blog.51cto.com/chudi/1740923

TCP协议的三次握手+四次断开相关推荐

  1. 什么是TCP协议的三次握手四次挥手

    IP协议.HTTP协议.TCP协议.TCP/IP 协议我们经常遇到,而且初学的时候容易弄混.那么他们之间有什么关系呢?重点内容 ####1.什么是TCP/IP 协议 TCP/IP不是一个协议,而是一个 ...

  2. 网络层协议介绍 三次握手四次断开

    1 IP数据包格式 2 ICMP协议介绍 3 ARP协议介绍 4 ARP攻击原理 网络层的功能: 1定义了基于IP协议的逻地址(ipv4  ipv6) 2连接不同的媒介类型 3选择数据通过网络的最佳路 ...

  3. TCP协议的三次握手与四次挥手

    tcp协议的三次握手和四次挥手 三次握手: 第一次握手: 客户端发起一个链接(SYN) 第二次握手: 服务端就会返回一条(ACK)确认信息,同时服务端也会向客户端发起一个链接请求(SYN),此二者可合 ...

  4. 用wireshark抓包分析TCP协议的三次握手连接、四次握手断开

    用wireshark抓包分析TCP协议的三次握手连接.四次握手断开 一.TCP三次握手图解 二.TCP得四次挥手过程 三.用Fiddler抓包,分析验证一个HTTPS网站的TCP连接过程 一.TCP三 ...

  5. TCP协议的三次握手和四次挥手

    转自:http://uule.iteye.com/blog/2213562 TCP协议的三次握手和四次挥手 博客分类: http/tcp TCP/IP协议三次握手与四次握手流程解析 Http协议三次握 ...

  6. 计算机网络【UDP与TCP协议(三次握手、四次挥手)】

    计算机网络[UDP与TCP协议(三次握手.四次挥手)]

  7. TCP为什么需要三次握手四次挥手

    TCP为什么需要三次握手四次挥手 三次握手 TCP是通过程序实现的,可靠的,面向连接的协议.而程序是严谨的,每一次建立连接都会进行"三次握手"这样的步骤. 建立连接的目的是为了可靠 ...

  8. 【网安】初学者,第一天day1 (什么是域名,常见的端口和协议,三次握手四次挥手)

    网安小白第一天 了解什么是域名,常见的端口和协议,三次握手四次挥手 第一次接触网安,从0到1. 一.域名 1.定义 域名是用于在识别和定位Internet上计算机的层次结构式的字符标识,它对应于计算机 ...

  9. TCP协议中三次握手

    TCP/IP是互联网相关的各类协议族的总称 TCP/IP协议族分为:应用层,传输层,网络层,数据链路层 应用层:向用户提供应用服务时的通讯的活动 传输层:提供处于网络连接中的两台计算机之间的数据传输 ...

  10. TCP协议及三次握手的过程

    在这里插入代码片@TOC TCP协议以及三次握手 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP协议以及三次握手 1.TCP协议是什么? 2.TCP协议的作用 3. ...

最新文章

  1. ML之FE:基于自定义数据集(银行客户信息贷款和赔偿)对比实现特征衍生(手动设计新特征、利用featuretools工具实现自动特征生成)
  2. C程序员眼里的Python
  3. java测试磁盘读写速度_用来测试自己硬盘读写性能的代码勿尝试
  4. Java 字符串分割陷阱
  5. H5新增的标签和属性
  6. vs 警告被视为错误
  7. 开源GIS(十九)——WKT、WKB与GeoJSON
  8. 获取android手机基本信息
  9. 12306订票候补是个坑_12306候补购票,问题汇总
  10. 华为手机上的网上邻居怎么用_华为手机网络邻居功能
  11. Android中的Drawable(一)
  12. [4G+5G专题-132]: 传输层 - 以太网电缆的类型(Cat5,Cat5e,Cat6,Cat6a)
  13. TDSQL TCA 分布式实例特点初探--分布表和SQL透传
  14. android钟表,Android打造属于自己的时间钟表
  15. 华为鸿蒙系统nova5i,华为nova 5i评测:极点全面屏+后置2400万AI四摄 让美更进一步...
  16. Redis安装(Windows 最新版本redis 5.0.9,以及redis 4.0)
  17. Beyond Compare 中文乱码解决
  18. html收藏的链接,浏览器收藏夹中收藏的网页链接怎么导出来?
  19. 【区块链与密码学】第9-1讲:白话群签名
  20. 【毕业设计】基于springboot的小区智慧物业管理系统

热门文章

  1. 【C++】一次遇到的需要加入const属性的情况
  2. linux内核提高系统实时性,Linux操作系统实时性分析及改进策略
  3. 无线服务器软件,无线局域网AAA服务器的软件设计与实现
  4. cacti mysql版本,cacti迁移+升级版本
  5. corspost请求失败_利用CORS实现POST方式跨域请求数据
  6. Egg 2.20.0 发布,阿里开源的企业级 Node.js 框架
  7. 微服务领域是不是要变天了?Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器!...
  8. Oracle DUL/AUL/ODU 工具说明
  9. Liferay 加载自定义css 文件
  10. PS中rename-item的一些高级应用