计算机网络——运输层

文章目录

一、运输层协议概述

1.1 进程之间的通信

在这里插入图片描述
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。
网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层
网络核心部分中的路由器在转发分组时只用到下三层的功能

运输层的作用

以例子来说明:
设局域网LAN1上的主机A和局域网LAN2上的主机B通过互连的广域网WAN进行通信。
我们知道,IP协议能够 把源主机A发送出的分组,按照首部中的目的地址,送交给目的主机B,那么为什么还需要运输层呢
在这里插入图片描述
回答为什么需要运输层:运输层在网络层的基础山,为应用层进程之间的通信提供服务(①)
在这里插入图片描述

在这里提到了运输层的一个重要功能:复用(multiplexing)和分用(demultiplexing)(②)
那什么是复用和分用呢?
以上图的例子来说明:
在图中,主机A的应用进程AP1和主机B的应用进程AP3通信,而与此同时,应用进程AP2也和对方的应用进程AP4通信。
所以,
复用是指在发送方不同的应用进程都可以使用过同一个运输层协议传送数据(当然需要加上适当的首部)
分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。

什么是“运输层提供应用进程间的逻辑通信”?
逻辑通信的意思是:从应用层来看只要把应用层报文交给下面的运输层,运输层就可以把这报文传送到对方的运输层(哪怕双方相距很远,例如几千公里),好像这种通信就是沿水平方向直接传送数据
但事实上这两个运输层之间并没有一条水平方向的物理连接。数的传送是沿着图中的虚线方向(经过多个层次)传送的

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

运输层还要对收到的报文进行差错检测(在网络层,IP数据报首部中的检验和字段,只检验首部是否出现差错而不检查数据部分)(④)

提供可靠信道与不可靠信道(⑤)
在这里插入图片描述
当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。
但当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

1.2 运输层的两个主要协议

互联网的正式标准:
用户数据报协议 UDP (User Datagram Protocol)
传输控制协议 TCP (Transmission Control Protocol)
在这里插入图片描述

一些概念

两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
在TCP/IP体系中,根据所使用的协议是TCP或UDP分别称为 TCP 报文段 (segment)UDP 报文或用户数据报

UDP 与 TCP 的区别

UDP

传送数据之前不需要先建立连接
收到 UDP 报后,不需要给出任何确认
不提供可靠交付,但是一种最有效的工作方式。

TCP

提供可靠的、面向连接的运输服务。
不提供广播或多播服务。
开销较多。(如确认、流量控制、计时器以及连接管理,这不仅使协议数据单元的首部增大很多,还要占用许多的处理及资源)

使用 UDP 和 TCP 的典型应用和应用层协议

在这里插入图片描述
在这里插入图片描述

1.3 运输层的端口

前面已经提到过运输层的复用和分用功能。
复用:应用进程都可以通过运输层再传送到 IP 层(网络层)。
分用:运输层从 IP 层收到发送给应用进程的数据后,必须分别交付给指明的各应用进程。

但是我们如何给应用层的每个应用进程赋予一个非常明确的表示呢?

分析:
在这里插入图片描述
所以结局方法就是:
在这里插入图片描述
这些抽象终点的正式名称就是协议端口,一般简称为端口,每一个端口用一个称为端口号的正整数来标志

在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。把端口设为通信的抽象终点。
软件端口
协议栈层间的抽象的协议端口。
是应用层的各种协议进程与运输实体进行层间交互的地点。
不同系统实现端口的方法可以不同。
硬件端口
不同硬件设备进行交互的接口。
在这里插入图片描述

主机的操作系统提供了接口机制,使得进程能够通过这种机制找到所要找的端口。

当应用层要发送数据时,应用进程就把数据发送到适当的端口,然后运输层从该端口读取数据,然后进行后续的处理(把数据发送到目的主机)。
当运输层收到对方主机发来的数据时,就把数据发送到适当的端口,然后应用进程就从该端口读取这些数据。(显然,端口必须有一定容量的缓存来暂时存放数据)

TCP/IP 运输层端口的标志

端口用一个 16 位端口号进行标志,允许有 65,535 个不同的端口号。(这个数目对一个计算机来说是足够够用的)
端口号只具有本地意义,只是为了标志本计算机应用层中的各进程。
在互联网中,不同计算机的相同端口号没有联系。

由此可知,两个计算机中的进程要互相通信,不仅必须知道对方的端口号(为了找到对方计算机中的应用进程),而且还要知道对方的 IP 地址(为了找到对方计算机)。
通俗地说就是:
当我们给某人写信时,就必须在信封上写明它的通信地址(这是为了找到它的住所,相当于IP地址),并且写上收件人的姓名(这是因为在同一住所可能有好几个人,这相当于端口号)
在这里插入图片描述

两大类、三种类型的端口

在这里插入图片描述
在这里插入图片描述

服务器端使用的端口号

在这里插入图片描述

客户端使用的端口号

在这里插入图片描述

二、用户数据报协议 UDP

2.1 UDP 概述

UDP 只在 IP 的数据报服务之上增加了一些功能:
1.复用和分用
2.差错检测

UDP 的主要特点

1.无连接。发送数据之前不需要建立连接。(当然,发送数据结束时也没有连接可释放,因此减少了开销和发送数据之前的时延)
2.使用尽最大努力交付。即不保证可靠交付。(即不保证可靠交付,因此主机不需要维持复杂的连接状态表)
3.面向报文。UDP 一次传送和交付一个完整的报文。
在这里插入图片描述
在这里插入图片描述
总结:
发送方 UDP 对应用层交下来的报文,既不合并,也不拆分,按照样发送。
接收方 UDP 对 IP 层交上来的 UDP 用户数据报,去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。>由于一次交付一个完整的报文,所以应用程序必须选择合适大小的报文。
若报文太长,IP 层在传送时可能要
进行分片
,降低 IP 层的效率。
若报文太短,会使 IP 数据报的首部的相对长度太大,降低 IP 层的效率。

4.没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。
在这里插入图片描述

5.支持一对一、一对多、多对一、多对多等交互通信。
6.首部开销小,只有 8 个字节。

UDP 通信的特点:简单方便,但不可靠

UDP 通信和端口号的关系

UDP 基于端口的复用和分用

复用:将 UDP 用户数据报组装成不同的 IP 数据报,发送到互联网。
分用:根据 UDP 用户数据报首部中的目的端口号,将数据报分别传送到相应的端口,以便应用进程到端口读取数据。(如果接收方 UDP 发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由 ICMP 发送“端口不可达”差错报文给发送方。)
在这里插入图片描述

关系

以例子来说明:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 UDP 的首部格式

在这里插入图片描述
户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。

(1) 源端口:源端口号。在需要对方回信时选用。不需要时可用全 0。
(2) 目的端口:目的端口号。终点交付报文时必须使用。
(3)长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)。
(4) 检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。
UDP 的检验和是把首部和数据部分一起都检验
在这里插入图片描述
在这里插入图片描述
计算检验和的方法以及例子:
在这里插入图片描述
在这里插入图片描述
也就是在接收方再算一遍和检验和(在发送方就被算好了)比较,如果没变,则数据没有出差错

三、传输控制协议 TCP

3.1 传输控制协议 TCP 概述

3.1.1 TCP 最主要的特点

TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。

1.TCP 是面向连接的运输层协议。
在这里插入图片描述
2.每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
3.TCP 提供可靠交付的服务。(通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达)
4.TCP 提供全双工通信。
在这里插入图片描述

5.面向字节流
(1)TCP 中的“流”(stream) 指的是流入或流出进程的字节序列
(2)面向字节流的含义:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据仅仅看成是一连串无结构的字节流。
TCP并不知道所传送的字节流的含义
TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。(例如,发送方应用程序交给发送方的TCP共10个数据块。但接收方的TCP可能只用了4个数据块就把收到的字节流交付给上层的应用程序)
但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。(当然,接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。)
在这里插入图片描述
在这里插入图片描述

而由图也可知,TCP和UDP在发送报文时所采用的方式完全不同。
TCP 不关心应用进程一次把多长的报文发送到 TCP 缓存。TCP 根据对方给出的窗口值和当前网络拥塞程度来决定一个报文段应包含多少个字节,形成 TCP 报文段。(UDP发送的报文长度是应用进程给出的
也就是说
在这里插入图片描述
这也就是为什么说发送方发出的数据块数量和接收方所接受的数据块数量不匹配。

3.1.2 TCP 的连接

TCP 把连接作为最基本的抽象。
(TCP的许多特性都与TCP是面向连接的这个基本特性有关

我们都知道,每一条TCP连接有两个端点。那么TCP连接的端点是什么呢?

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值