计算机网络笔记25 运输层(运输层概述、用户数据报协议UDP、传输控制协议TCP)

运输层概述

运输层的位置和作用

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层

在这里插入图片描述
运输层为相互通信的应用进程提供了逻辑通信。
在这里插入图片描述
和网络层的区别:
网络层是为主机之间提供逻辑通信, 而运输层为应用进程之间提供端到端的逻辑通信
在这里插入图片描述
• 在一台主机中经常有多个应用进程同时分别和另一台主机中的多个应用进程通信。
• 这表明运输层有一个很重要的功能——复用(multiplexing)和分用 (demultiplexing)。
• 根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的 TCP无连接的 UDP

基于端口的分用和复用:
在这里插入图片描述

屏蔽作用:
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道
在这里插入图片描述

两种协议

TCP/IP 的运输层有两个主要协议:
• (1) 用户数据报协议 UDP (User Datagram Protocol)
• (2) 传输控制协议 TCP (Transmission Control Protocol)
在这里插入图片描述
• 运输层这条逻辑通信信道对上层的表现因运输层使用的不同协议而有很大的差别。
TCP提供面向连接的服务,但不提供广播或多播服务,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道
• 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道

使用两种协议的各种应用层协议:
在这里插入图片描述

协议端口号

• 运行在计算机中的进程是用进程标识符来标志的。
但运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。
• 为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP 体系的应用进程进行标志。
• 解决这个问题的方法就是在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。
• 虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点。
• 端口用一个 16 位端口号进行标志。
• 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程
• 在互联网中,不同计算机的相同端口号是没有联系的。
由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的 IP 地址,而且还要知道对方的端口号。

两大类端口号:
(1) 服务器端使用的端口号
熟知端口,数值一般为 0-1023。
登记端口号,数值为 1024-49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
(2) 客户端使用的端口号
– 又称为短暂端口号,数值为 49152-65535,留给客户进程选择暂时使用。
– 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

常用的熟知端口号:
在这里插入图片描述

用户数据报协议UDP

• User Datagram Protocol
• 协议传送单元叫做 UDP 报文用户数据报
• UDP 只在 IP 的数据报服务之上增加了很少一点的功能:
– 复用和分用的功能
– 差错检测的功能
• 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。适用于高实时性的场合,比如音视频播放。

UDP主要特点

• UDP 是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
• UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
• UDP 是面向报文的。
• UDP 支持一对一、一对多、多对一和多对多的交互通信。
• UDP 的首部开销小,只有 8 个字节。

面向报文的UDP:
• 发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
• 应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。
• 接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。
• 应用程序必须选择合适大小的报文。
在这里插入图片描述

UDP首部格式

用户数据报 UDP 有两个字段:数据字段首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。
在这里插入图片描述
在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。

传输控制协议TCP

TCP协议特点

• Transmission Control Protocol
• 协议传送单元叫做 TCP 报文段
• TCP是面向连接的运输层协议。
• 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
• 提供可靠传输
• TCP 提供全双工通信,收发两端都有缓存。
• 面向字节流

面向字节流的概念:
在这里插入图片描述

TCP的连接

• 每一条 TCP 连接有两个端点。
• TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。
• TCP 连接的端点叫做套接字(socket)或插口
套接字 socket = (IP地址: 端口号)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。
TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2: port2)}

• TCP 连接是一条虚连接而不是一条真正的物理连接。
• TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。
• TCP 根据对方给出的窗口值当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
• TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

TCP报文格式

在这里插入图片描述
源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。

保留字段——占 6 位,保留为今后使用,但目前应置为 0。

紧急 URG —— 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

确认 ACK —— 只有当 ACK = 1 时确认号字段才有效。当 ACK = 0 时,确认号无效。

推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

复位 RST (ReSeT) —— 当 RST =1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。

同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。

终止 FIN (FINish) —— 用来释放一个连接。FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。

窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。

检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。

紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”

填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。

TCP的运输连接管理

运输连接三个阶段:
• TCP 是面向连接的协议。
• 运输连接就有三个阶段,即:连接建立数据传送连接释放
• 连接建立过程中要解决以下三个问题:
– 要使每一方能够确知对方的存在。
– 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。
– 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。

• TCP连接的建立采用客户服务器方式
• 主动发起连接建立的应用进程叫做客户(client)
• 被动等待连接建立的应用进程叫做服务器(server)。

TCP的连接建立

• TCP 建立连接的过程叫做握手
• 握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

TCP的连接释放

• TCP 连接释放过程比较复杂。
• 数据传输结束后,通信的双方都可释放连接。
• TCP 连接释放过程是四报文握手
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
MSL——Maximum Segment Lifetime,最长报文寿命
A 必须等待 2MSL 的时间?
• 第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。
• 第二,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值