目录

一、TCP相关概念:

二、TCP连接建立过程中要解决的问题:

三、TCP三次握手的过程:

四、可以两报文握手建立连接

五、总结:


一、TCP相关概念:

1.TCP是面向连接的协议。

2.TCP是基于传输连接(不是物理连接,是逻辑上的连接)来传送TCP报文段。

TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。

3.TCP运输链接有三个阶段:

(1)建立连接(三次握手) 。

(2)数据传送。

(3)释放连接(四次挥手)。

4.TCP的运输连接管理就是使运输连接的建立和释放都能正常地进行。

二、TCP连接建立过程中要解决的问题:

1.要使TCP双方能够确知对方的存在。

2.要允许TCP双方协商一些参数(如:最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);

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

三、TCP三次握手的过程:

这里有两台主机,他们要基于TCP进行通信,主机A中的某个应用进程主动发起连接建立,建立称为TCP客户。而主机B中 被动等待的应用进程称为TCP服务器。,我们将TCP建立连接的过程比喻为握手,需要在TCP客户和服务器之间交换三个TCP报文段。


最初两端的TCP进程都处于关闭状态,一开始主机B的服务器进程首先创建传输控制块,用来存储TCP连接中的一些重要信息:例如TCP连接表、指向发送和接受缓存的指针、指向重传队列的指针等。之后就准备接受TCP客户进程的连接请求,此时TCP服务器进程就要进入监听状态,等待TCP客户进程的连接请求,TCP服务器进程是被动等待来自TCP客户进程的连接请求,而不是主动发送,因此成为被动打开连接


主机A中的TCP客户进程也是首先创建传输块,然后再打算建立TCP连接时向主机B发送TCP连接请求报文段并进入同步已发送状态,TCP连接请求报文段首部中的同步位SYN被设置为1,表明这是一个TCP连接请求报文段,seq字段被设置为x作为TCP客户进程可选择的初始序号。(TCP规定SYN被设置为1的报文段不能写携带数据,但要消耗掉一个序号)。


由于TCP连接,建立是由TCP客户进程主动发起的,因此称为主动打开连接。


主机B中的服务器进程收到TCP链接请求报文段后如果同意建立连接,向主机A的TCP客户进程发送TCP连接请求确认报文段,并进入同步已接收状态。TCP确认请求报文段中的首部位SYN = 1确认位ACK=1表明这是一个TCP连接请求确认报文段。seq(序号)字段被设置为y作为TCP服务器进程所选的初始序号, 确认字段ack被设置为x+1(这是对TCP连接请求所选序号字段(seq=x)的确认)。



主机A中的TCP客户端发送一个普通的TCP确认报文段,并进入连接已建立状态,TCP确认报文段的ACK=1(表明这是一个普通的TCP确认报文段),序号seq字段被设置为x+1(由于第一个发送的序号为x且不携带数据,第二个报文段的序号为x+1),确认号ack字段被设置为y+1 (这是对TCP服务器进程序号的确认)。


主机B的服务器进程收到改TCP报文段后,也进入连接已建立状态,现在TCP双方都进入连接已建立状态,他们可以进行数据的传输。


四、可以两报文握手建立连接吗?

不可以。

原因:

主机A 中的TCP客户进程发出一个TCP连接请求报文段,但该报文段在某些网络节点滞留了,这必然会造成该报文段的超时重传。


假设超时重传的TCP报文段到达TCP服务器端TCP服务器端给TCP客户端发送一个TCP连接请求确认报文段,并进入连接已建立状态,因为我们此时是两次握手所以TCP服务器端直接进入TCP连接请求已建立状态。


TCP客户进程收到TCP服务器端的TCP连接请求确认报文段后,也处于连接已建立状态,不会给TCP服务器端发送TCP确认报文段。他们之间已建立连接状态可以传输数据,之后通过四报文挥手释放连接。


他们双方都进入关闭状态,之后TCP服务器端进入监听状态, 准备接受客户进程的连接请求,而TCP客户进程将一直处于关闭状态(除非应用进程通知它需要进行新的进程连接)。


而此时失效的应用进程到达了主机B,TCP服务器进程会误认为这是TCP客户端重新发送的请求,于是给TCP客户端请求发送TCP连接请求报文段(并处于连接已建立状态 )。该主机的TCP连接请求报文段到达主机A,由于主机A处于关闭状态并没有发起TCP连接,因此不理睬该报文段,依然处于关闭状态。而此时主机B的资源就会浪费。


五、TCP三次握手总结:

1、第一次握手:TCP客户端和TCP服务器端都处于关闭状态。客户端向服务器端发送一个TCP请求连接,将同步位SYN设置为1,随机产生一个seq(序号)值为x,并将此报文段发送给客户端,自己处于同步位已发送状态。

2、第二次握手:TCP服务器端接受TCP客户端发送的请求连接,并发送一个SYN为1,ACK为1,seq(序号)为y,ack为x+1的TCP请求确认,此时自己处于同步已接收状态。

3、第三次握手:主机A中的TCP客户端发送一个普通的TCP确认报文段,并进入连接已建立状态,TCP确认报文段的ACK=1(表明这是一个普通的TCP确认报文段),序号seq字段被设置为x+1(由于第一个发送的序号为x且不携带数据,第二个报文段的序号为x+1),确认号ack字段被设置为y+1 (这是对TCP服务器进程序号的确认)。

注:视频资料参考《湖科大教书匠》。

TCP传输连接--建立连接阶段(TCP三次握手)相关推荐

  1. tcp要点学习-建立连接断开连接

    原文:http://www.cppblog.com/kevinlynx/archive/2008/05/14/49825.html 关于TCP的连接建立,断开的讲解,理论的核心内容基本提及,比较通俗. ...

  2. nodejs TCP server和TCP client如何建立连接

    首先客户端和服务器端通信得需要一个消息结构,我用如下的构造函数创建一个消息结构,包含消息正文和消息类型(method): function message(_data,_method = '') {_ ...

  3. 2021-07-27 详解TCP连接建立和释放的过程(三报文握手和四次挥手)

  4. TCP连接的建立和释放过程详解(三次握手、四次挥手)

    1. TCP是基于连接的协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议.所谓面向连接,是指通信双方在进行通 ...

  5. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    随心所意 博客园  :: 首页  :: 新随笔  :: 联系  :: 订阅   :: 管理 posts - 437, comments - 52, trackbacks - 0 公告 昵称:higir ...

  6. startupinfo为什么需要初始化_为什么 TCP 建立连接要三次握手

    为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点.对具体实现造成的影响 ...

  7. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  8. TCP建立连接三次握手和释放连接四次握手

    TCP建立连接三次握手和释放连接四次握手     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/52535294 在谈及T ...

  9. tcp建立连接为什么需要三次握手

    这是一个看似很"简单"的问题,但貌似并没有一个官方统一的答案.搜索了相关的资料,列举出一些答案. 以下部分转载自:tcp建立连接为什么需要三次握手 在<计算机网络>一书 ...

最新文章

  1. -bash: /bin/rm: Argument list too long的解决办法
  2. 五十五、手把手教你从零到一,完成淘宝数据分析案例
  3. ThinkPHP5有关模型hasOne、hasMany、belongsTo详解
  4. 国外的老师是怎么教Golang的?
  5. 百年不遇的,我遇到了两次
  6. 7.监控应用和数据可视化 7.1通用健康状态指引器
  7. 全网首发:JDK绘制文字:七、使用字体图像进行绘制
  8. 阿里巴巴正式开源全球化OpenMessaging和ApsaraCache项目
  9. 诺基亚E63凤凰刷机实战
  10. 基于C语言设计的仓库管理系统(小超市)
  11. 监听软键盘中的删除键
  12. 营销科学学会2021年年会揭晓玫琳凯博士论文奖得主
  13. 无需App!中国移动5G消息数字人民币钱包正式上线
  14. 在Groovy中使用字符串
  15. JavaSE 知识大纲
  16. 【电脑使用】硬盘无法引导进入系统,无法退出BIOS
  17. Vue3官网-高级指南(十五)Vue 与 Web Components
  18. 香蕉派BPI-M6 采用深蕾半导体Vs680芯片设计,板载4G LPDDR4和16G eMMC存储
  19. 字体大宝库:15款漂亮的手写艺术字体免费下载
  20. 北京汽车转型背后:“大北汽”棋局中的变与不变

热门文章

  1. 【网络推广】论坛发贴推广技巧
  2. 10个免费的HTML在线编辑工具
  3. photoshopcs6安装包
  4. Android 如何进入Android工程模式
  5. 添加打印机出现错误代码:0x000006d9
  6. React学习(六)-React中组件的数据-state
  7. cookie使用注意问题【cookie学习笔记】
  8. 图片识别——差异哈希算法
  9. Win10下CH340安装
  10. Qcom 平台 LK 阶段配置 I2C