TCP为什么会采用三次握手,若采用二次握手可以吗?

建立连接的过程是利用C/S(客户机/服务器)模式,假设A为客户端,B为服务器端。

TCP是采用三次握手进行连接的,简要说明该过程:

(1) A向B发送连接请求

(2) B对收的的A的报文段进行确认

(3) A再对B的确认进行确认

采用“三次握手”的目的是,为了防止失效的连接请求报文段突然又传送到B,因而产生错误。失效的连接请求报文段是指:A发出的连接请求没有收到B的确认,于是经过一段时间后,A又重新向B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况,A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到B,B以为A又发起的新连接,于是B同意连接,并向A发回确认,但是此时A根本不会理会,B就一直在等待A发送数据,导致B的资源浪费。

采用二次握手可以吗?

不可以,原因就是上面说的失效的连接请求的特殊情况。

时间: 03-18

TCP为什么会采用三次握手,若采用二次握手可以吗?的相关文章

TCP为何采用三次握手来建立连接,若采用二次握手可以吗

1. TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为了保证报文传输的可靠[1],就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收.然后接收端实体对已成功收到的字节发回一个相应的确认(ACK):如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传. 2. TCP协议三次握手过程分析 TCP是主机

TCP中三次握手建立和四次握手释放以及相关问题

本文基于个人所学和网上博文所整理,若有不妥处,欢迎留言指出 TCP连接过程中标志位的意义: 字符缩写 描述 SYN 同步序号,表示此报文是一个连接请求或连接接受报文 ACK 确认位,对接收到的报文的确认 FIN 终止位,表示发送方完成数据发送,用来释放一个连接 RST 复位连接,表示TCP连接中出现严重错误 PSH 推送位,尽可能快递将数据送往接受进程 一.三次握手建立 1.三次握手建立连接详解 TCP建立连接要进行"三次握手",即交换三个分组.大致流程如下: (1)客户端向服务器发送

tcp为什么要三次握手,而不能二次握手?

谢希仁版<计算机网络>中的例子是这样的,"已失效的连接请求报文段"的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server.本来这是一个早已失效的报文段.但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求.于是就向client发出确认报文段,同意建立连接.假设不采用"三次握手",那么只要server发出确认,新的

为什么TCP连接需要三次握手分开需要四次握手?

原文地址:http://lixiangfeng.com/blog/article/content/7908246 TCP的三次握手和四次断开TCP是一个面向连接的服务,面向连接的服务是电话系统服务模式的抽象,每一次完整的数据传输都必须经过建立连接,数据传输和终止连接3个过程,TCP建立连接的过程称为三次握手,下面看一下三次握手的具本过程TCP三次握手过程1  主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,主机A告诉主机B  两件事:

学习TCP/IP - TCP三次握手连接和四次握手断开连接

TCP连接 一.为什么需要TCP 链路层将位流封装成数据帧,同时屏蔽了底层物理层的复杂性; 网络层定义了IP地址,划分了网段,使得源计算机可以快速找到目标计算机,但它无法保证数据准确到达. 所以在传输层定义了TCP协议,它是面向连接的可靠传输协议, 二.TCP如何建立连接 2.1) TCP三次握手建立连接 TCP三次握手创建连接 a. 由于TCP是面向连接的,所以有服务端和客户端之分.服务端先在对应的端口监听(LISTENING), 等待客户端发送的tcp连接请求. b. A机器向B机器发起TC

TCP三次握手连接与四次握手断开

http://blog.csdn.net/whuslei/article/details/6667471(三次握手与四次握手) 1. TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机. 如果采用两次的话,会出现下面这种情况.比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机:于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接.传完东西后,断开. 结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B

利用tcpdump监控tcp连接三次握手和关闭四次握手

学习网络编程最主要的是能理解底层编程细节,一开始看<UNIX网络编程卷1:套接字联网API>的时候搞不懂什么seq.ack到底是什么东西,最近了解了tcpdump的一些用法后感觉两者结合起来还是比较容易理握手过程的.以下就通过tcpdump工具来监控相关内容,并和书本上的流程进行对比介绍,希望对入门的童靴有些帮助吧 服务端代码如下: #include <sys/socket.h> //socket listen bind #include <arpa/inet.h> /

socket中TCP的三次握手连接和四次握手释放

三次握手连接 A: 我进来了啊 B:(有人来了安排个位子)回复:好的你进来吧 A:好的: 客户端向服务器发送一个SYN J 服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1 客户端再想服务器发一个确认ACK K+1 四次握手释放 A: 我要走了 B:好的 B:(收回位子)回复:你走吧 A:88 某个应用进程首先调用close主动关闭连接,这时TCP发送一个FIN M: 另一端接收到FIN M之后,执行被动关闭,对这个FIN进行确认.它的接收也作为文件结束符传递给应用进程,因

【Linux网络基础】TCP/IP协议簇的详细介绍(三次握手四次断开,11种状态)

一.TCP/IP协议簇(DoD参考模型) 用于简化OSI层次,以及相关的标准. 传输控制协议(tcp/ip)簇是相关国防部DoD所创建的,主要用来确保数据的完整性以及在毁灭性战争中维持通信 是由一组不同功能的协议组合在一起构成的协议簇 利用一组协议完成OSI所实现的功能 1. TCP/IP 协议簇中的相关协议 TCP/IP协议簇--应用层: TCP/IP协议簇--主机到主机层: TCP与UDP对比: TCP相关报文结构: 源端口:即本地发起连接的端口 目标端口:即要访问的服务的端口 序列号:因为