TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议,采用三次握手确认建立一个连接。

TCP为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。

 在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状态,完成三次握手。

通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。

三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。

(1)TCP 的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主A再次对主机B的确认进行确认。

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

为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。

TCP协议为什么会采用三次握手,若采用二次握手可以吗?相关推荐

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

    1. TCP简介 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为 ...

  2. TCP三次握手如果使用二次握手代替则会出现的问题

    简述 第一次握手,发送SYN报文,传达信息:"你好,我想建立连接": 第二次握手,回传SYN+ACK报文,传达信息:"好的,可以建立链接": 第三次握手,回传A ...

  3. tcp协议一定要有服务器吗,复习TCP协议——看这篇就够了

    TCP协议知识复习-附带有关TCP常见面试题 ~~本篇文章有点长,建议收藏之后有空慢慢看喔!~~ TCP报文段结构 TCP三次握手:建立连接 相关问题: 1.握手过程中可以携带数据吗? 2.初始序列号 ...

  4. socket通信需要网线连接吗_从socket到TCP协议,透彻理解网络编程

    进行程序开发的同学,无论Web前端开发.Web后端开发,还是搜索引擎和大数据,几乎所有的开发领域都会涉及到网络编程.比如我们进行Web服务端开发,除了Web协议本身依赖网络外,通常还需要连接数据库,而 ...

  5. 【计算机网络】传输层 : TCP 协议 ( TCP 协议特点 | TCP 报文段首部格式 | TCP 报文段控制位 )

    文章目录 一.TCP 协议 特点 二.TCP 报文段首部格式 三.TCP 报文段首部 666 控制位 一.TCP 协议 特点 TCP 协议 特点 : ① 面向连接 : TCP 协议的连接是 " ...

  6. TCP协议客户端与服务器端一般的通信过程

    服务器初始化 (1)调用socket,创建文件描述符 (2)调用bind,将文件描述符与ip/port连接起来.若端口号已被占用,则bind失败 (3)调用listen,声明该文件描述符是服务器的一个 ...

  7. Linux——TCP协议与相关套接字编程

    一.TCP协议概念 与UDP协议相同,TCP协议也是应用在传输层的协议.虽然都是应用在传输层,但是使用方式和应用场景上大不一样.TCP协议具有:有连接(可靠).面向字节流的特点. (一).有连接 所谓 ...

  8. TCP协议三次握手过程分析

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  9. 通俗大白话来理解TCP协议的三次握手和四次分手

    最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最近看了很多这方面的知识,也在系统的学习计算机网络,加深自己的CS功底,就把看过的一些比较好 ...

最新文章

  1. 解决Mask RCNN自己航拍数据集训练的问题
  2. 基于TensorFlow的简单验证码识别
  3. Cookie、Session、Token那点事儿
  4. 在mybatis用mysql的代码块_关于Mybatis 中使用Mysql存储过程的方法
  5. 重磅更新!YoloV4最新论文!解读yolov4框架
  6. 质量不同的球java编程_荐非常经典的java编程题全集-共50题(1-10)...
  7. #Python语言程序设计Demo - 七段数码管绘制
  8. [转]ubuntu 终端常用命令
  9. Ashampoo® Snap 4 截图工具 + 有效注册码
  10. NamedParameterJdbcTemplate传参的n种写法
  11. EasyReport报表工具
  12. python输出两个元素空格隔开_python实现将一串字符每两个一组,中间用空格隔开...
  13. 图像增强(空间域)——灰度变换
  14. EVE-NG镜像导入(Dynamipshe和IOL)
  15. android 微信签名,Android微信签名知识的总结
  16. 零基础学Flink:Window Watermark
  17. 计算机三级英语词汇,【2009年成人英语三级英语词汇短语表(M2)】- 环球网校...
  18. IP、域名和端口号之间的联系
  19. 日IP100如何月赚2000,半分不假
  20. PHP概论(有实用干货)

热门文章

  1. springboot2 - 坑 - 解决put提交接收不到参数的问题
  2. Ajax解决浏览器的缓存问题
  3. 四种方法解决DIV高度自适应问题
  4. 移动端HTML5音频与视频问题及解决方案
  5. ORA-00257归档日志写满的解决方法
  6. react-native-echarts 解决数据刷新闪烁,不能动态连续绘制问题(转载)
  7. 在提交消息中链接到GitHub上的问题编号
  8. Python类继承对象
  9. Win11如何开启聚焦功能?Win11开启聚焦功能的方法
  10. redis数据库NoSQL的介绍安装和使用