计算机网络运输层

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 计算机网络运输层

运输层
通信的真正端点并不是主机而是主机中的进程

• 任务:运输层为相互通信的应用进程提供逻辑通信

• 功能:

○ 复用:发送方不同的应用进程都可以使用同一个运输层协议传送数据

○ 分用:接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程

• 网络层为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信

• 端口

○ 硬件端口:不同硬件设备进行交互的接口

○ 软件端口: 应用层的各种协议进程与运输实体进行层间交互的一种地址

○ 端口号只具备本地意义,即端口号只是为了标志本计算机应用层中的各进程

• UDP:

○ 无连接

○ 尽最大努力交互

○ 面向报文

○ 没有拥塞控制

○ 支持一对一、一对多、多对一、多对多

○ IP数据报的检验和只检验IP数据报的首部,但UDP的检验和是把首部和数据部分一起检验

• TCP:

○ 面向连接

○ 可靠交付

○ 全双工通信

○ 面向字节流

○ 一对一

○ 超时重传定时器

○ 拥塞控制

套接字 socket = ( IP地址 : 端口号 )

应用编程接口 API ( application programming interface )

TCP 如何保证可靠传输:

• 确认和超时重传

• 数据合理分片和排序

• 流量控制

• 拥塞控制

• 数据校验

TCP可靠传输的实现

• 以字节为单位的滑动窗口

• 超时重传时间

• 选择确认SACK

TCP的流量控制

• ->发送方的发送速率不要太快,接收方来得及接收

• 持续计时器

TCP的拥塞控制

• ->防止过多的数据注入网络中,这样可以使网络中的路由器或链路不致过载

• 控制算法: 慢开始 、 拥塞避免 、 快重传 、 快恢复

TCP的连接建立采用三报文握手机制

TCP的连接释放采用四报文握手机制

TCP首部中的确认号是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则表明:到序号N-1为止的所有数据都已正确收到。

TCP 与 UDP 的区别

• TCP 面向连接,UDP 是无连接的;

• TCP 提供可靠的服务,也就是说,通过 TCP 连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP 尽最大努力交付,即不保证可靠交付

• TCP 的逻辑通信信道是全双工的可靠信道;UDP 则是不可靠信道

• 每一条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一和多对多的交互通信

• TCP 面向字节流(可能出现黏包问题),实际上是 TCP 把数据看成一连串无结构的字节流;UDP 是面向报文的(不会出现黏包问题)

• UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 IP 电话,实时视频会议等)

• TCP 首部开销20字节;UDP 的首部开销小,只有 8 个字节

TCP 三次握手建立连接

【TCP 建立连接全过程解释]

  1. 客户端发送 SYN 给服务器,说明客户端请求建立连接;
  2. 服务端收到客户端发的 SYN,并回复 SYN+ACK 给客户端(同意建立连接);
  3. 客户端收到服务端的 SYN+ACK 后,回复 ACK 给服务端(表示客户端收到了服务端发的同意报文);
  4. 服务端收到客户端的 ACK,连接已建立,可以数据传输。

[TCP 为什么要进行三次握手]

【答案一】因为信道不可靠,而 TCP 想在不可靠信道上建立可靠地传输,那么三次通信是理论上的最小值。(而 UDP 则不需建立可靠传输,因此 UDP 不需要三次握手。)

【答案二】因为双方都需要确认对方收到了自己发送的序列号,确认过程最少要进行三次通信。

【答案三】为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。

TCP 四次挥手释放连接

【TCP 释放连接全过程解释】

  1. 客户端发送 FIN 给服务器,说明客户端不必发送数据给服务器了(请求释放从客户端到服务器的连接);
  2. 服务器接收到客户端发的 FIN,并回复 ACK 给客户端(同意释放从客户端到服务器的连接);
  3. 客户端收到服务端回复的 ACK,此时从客户端到服务器的连接已释放(但服务端到客户端的连接还未释放,并且客户端还可以接收数据);
  4. 服务端继续发送之前没发完的数据给客户端;
  5. 服务端发送 FIN+ACK 给客户端,说明服务端发送完了数据(请求释放从服务端到客户端的连接,就算没收到客户端的回复,过段时间也会自动释放);
  6. 客户端收到服务端的 FIN+ACK,并回复 ACK 给客户端(同意释放从服务端到客户端的连接);
  7. 服务端收到客户端的 ACK 后,释放从服务端到客户端的连接。

TCP 为什么要进行四次挥手?

【问题一】TCP 为什么要进行四次挥手? / 为什么 TCP 建立连接需要三次,而释放连接则需要四次?

【答案一】因为 TCP 是全双工模式,客户端请求关闭连接后,客户端向服务端的连接关闭(一二次挥手),服务端继续传输之前没传完的数据给客户端(数据传输),服务端向客户端的连接关闭(三四次挥手)。所以 TCP 释放连接时服务器的 ACK 和 FIN 是分开发送的(中间隔着数据传输),而 TCP 建立连接时服务器的 ACK 和 SYN 是一起发送的(第二次握手),所以 TCP 建立连接需要三次,而释放连接则需要四次。

【问题二】为什么 TCP 连接时可以 ACK 和 SYN 一起发送,而释放时则 ACK 和 FIN 分开发送呢?(ACK 和 FIN 分开是指第二次和第三次挥手)

【答案二】因为客户端请求释放时,服务器可能还有数据需要传输给客户端,因此服务端要先响应客户端 FIN 请求(服务端发送 ACK),然后数据传输,传输完成后,服务端再提出 FIN 请求(服务端发送 FIN);而连接时则没有中间的数据传输,因此连接时可以 ACK 和 SYN 一起发送。

【问题三】为什么客户端释放最后需要 TIME-WAIT 等待 2MSL 呢?

【答案三】

  1. 为了保证客户端发送的最后一个 ACK 报文能够到达服务端。若未成功到达,则服务端超时重传 FIN+ACK 报文段,客户端再重传 ACK,并重新计时。
  2. 防止已失效的连接请求报文段出现在本连接中。TIME-WAIT 持续 2MSL 可使本连接持续的时间内所产生的所有报文段都从网络中消失,这样可使下次连接中不会出现旧的连接报文段。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
网络协议 安全 网络性能优化
计算机网络——传输层(五)
计算机网络——传输层(五)
57 0
计算机网络——传输层(五)
|
网络协议 网络性能优化
【计算机网络】第3章 运输层(上)
【计算机网络】第3章 运输层
|
3月前
|
网络协议 网络安全
计算机网络-传输层
计算机网络-传输层
|
6月前
|
网络协议 网络性能优化 网络安全
【计算机网络】IP协议
【计算机网络】IP协议
|
6月前
|
缓存 网络协议 算法
【计算机网络】传输层
【计算机网络】传输层
74 0
|
存储 缓存 网络协议
计算机网络-运输层
运输层概述 这里我们对运输层进行概述,之前文章所介绍的计算机网络体系结构中的物理层,数据链路层以及网络层,他们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信, 如图所示,局域网1上的主机与局域网2上的主机,通过互联的广域网进行通信,网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。 Ap是应用进程的英文缩写词,如何为运行在不同主机上的应用进程提供直接的通信服务,是运输层的任务,运输层协议又称为端到端协议,如图所示运输层的作用范围是应用进程到应用进程,也称为端到端。 接下来我们从计算机网络体系结构的角度来看运输层。
46 0
|
缓存 网络协议 算法
【计算机网络】第3章 运输层(下)
【计算机网络】第3章 运输层
|
网络协议 算法 安全
【计算机网络】第4章 网络层
【计算机网络】第4章 网络层
|
缓存 网络协议 算法
【计算机网络基础 五】运输层(中)
【计算机网络基础 五】运输层(中)
181 0
【计算机网络基础 五】运输层(中)
|
域名解析 存储 缓存
【计算机网络基础 五】运输层(上)
【计算机网络基础 五】运输层(上)
173 0