计算机网络:运输层 - 概述

计算机网络:运输层 - 概述


运输层的任务

物理层数据链路层以及网络层,他们共同解决了将主机通过网络互联起来所面临的问题,实现了主机到主机的通信。

网络层的作用范围是主机到主机,但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。

AP1AP2 是局域网LAN1上主机A中与网络通信相关的两个应用进程。

AP3AP4 是局域网LAN2上主机B中的与网络通信相关的两个应用进程。

如何为运行在不同主机上的应用进程提供直接的通信服务?是运输层的任务。运输层协议又称为端到端协议。运输层的作用范围是应用进程到应用进程,也称为端到端。

运输层最重要的两个协议是TCPUDP

  • 用户数据报协议UDP

传输的协议数据单元是UDP报文或者UDP用户数据报UDP在传输数据之前不需要先建立连接,对方的运输层在收到UDP报文后,不需要给出任何确认。

常见的使用UDP的应用层协议:DNSDHCPTFTP

  • 传输控制协议TCP

传输的协议数据单元是TCP报文段TCP提供面向连接的服务,在传输数据前必须先建立连接,数据传输结束后要释放连接,接收方收到TCP报文后也要给出去确认。因此TCP也只能提供一对一的服务。

常见的使用TCP的应用层协议:HTTPSMTPFTPTELNET


端口号

如图,假设AP1要和AP4通信,那么当主机B接收到了主机A发来的报文后,主机B怎么知道这个数据报要交给AP3还是AP4?也就是说运输层面临的第一个问题就是如何标识一个进程。

计算机上的进程是使用进程标识符 PID 来标志的。然而因特网上的计算机并不是使用统一的操作系统,不同操作系统使用不同格式的进程标识符。为了使运行不同操作系统的计算机的应用进程之间能够进行网络通信,就必须使用统一的方法对 TCP/IP 体系的应用进程进行标识。

运输层使用端口号来区分应用层的不同应用进程

端口号长度为16bit,取值范围是 0-65535,分为:熟知端口号登记端口号短暂端口号

熟知端口号

取值范围是 0-1023。因特网数字分配机构 IANA 把这些端口号指派给了 TCP/IP 体系中最重要的一些应用协议。常见的端口号如下:

协议 端口号
DHCP 67 和 68
DNS 53
TFTP 69
SNMP 161
SNMP(trap) 162
SMTP 25
FTP 21 和 20
TELNET 23
HTTP 80
HTTPS 443

登记端口号

取值范围是 1024-49151,为没有熟知端口号的服务器所使用。这类端口号必须在 IANA 按照规定的手续登记,以防止重复。

例如,微软远程桌面应用程序使用的端口号是3389。

短暂端口号

取值范围是 49152-65535,留给客户进程选择,暂时使用当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。


复用与分用

接下来我们介绍发送方的复用和接收方的分用,如图所示:

这是收发双方的应用进程,发送方的某些应用进程所发送的不同应用报文在运输层使用 UDP 协议进行封装,这称为 UDP 复用。而另一些应用进程所发送的不同应用报文在运输层使用 TCP 协议进行封装,这称为 TCP 复用

运输层使用端口号来区分不同的应用进程,不管是使用运输层的 UDP 协议封装成的 UDP 用户数据报,还是使用 TCP 协议封装成的 TCP 报文段。在网络层都需要使用 IP 协议封装成 IP 数据报,这称为 IP 复用

IP 数据报首部中协议字段的值,用来表明 IP 数据报的数据载荷部分封装的是何种协议数据单元:取值为6,表示封装的是TCP报文段;取值为17,表示封装的是UDP用户数据报。

接收方的网络层收到 IP 数据报后进行 IP 分用

IP 数据报首部中协议字段的值为17,则把 IP 数据报的数据载荷部分所封装的 UDP 用户数据报上交运输层的 UDP。若协议字段的值为6,则把 IP 数据报的数据载荷部分所封装的 TCP 报文段上交运输层的 TCP

运输层对 UDP 用户数据报进行 UDP 分用,对 TCP 报文段进行 TCP 分用,也就是根据端口号将它们交付给上层相应的应用进程。


接下来我对TCPUDP两个协议做一个简单讲解,只是了解它们的基本特点,不深入讲解,后续会有其它博客讲解具体细节。

UDP协议

UDP协议具有一下特点:

  • UDP 是无连接的,即发送数据之前不需要建立连接
  • UDP 使用尽最大努力交付,即不保证可靠交付
  • UDP 是面向报文的,即一次发送和交付一个完整的报文
  • UDP 没有拥塞控制,很适合实时通信,因为实时通信要求源主机以恒定的速率发送数据,并允许丢失部分数据
  • UDP 支持一对一、一对多、多对一和多对多的交互通信
  • UDP 的首部开销小,只有 8 个字节

首部格式

UDP数据报的首部只要8 byte,由四个字段组成,每个字段都是2 byte,如图:

  • 源端口目的端口用与标识两个不同主机上的进程。
  • 长度为整个UDP数据报的长度
  • 校验和用于检验数据报是否出错

在计算校验和时,还会引入一个伪首部的概念:

伪首部不是一个真实存在的首部,只有计算校验和是,会把这个伪首部也计算进来。


TCP协议

TCP协议有以下特点:

  • TCP 是面向连接的运输层协议。TCP 在传送数据之前,必须先建立连接;在传送数据完毕后,必须释放已经建立的连接。
  • 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。
  • TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复,并且按序到达
  • TCP 提供全双工通信。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。

面向字节流

  • 面向字节流,指的是一连串的字节序列。

发送方的 TCP 把应用进程交付下来的数据块,仅仅看作是一连串的无结构的字节流,TCP 并不知道这些带传送的字节流的含义,仅将他们编号并存储在自己的发送缓存。

TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块,具有对应大小的关系。

接收方要具有还原字节流的能力,接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。


相关推荐
速盾cdn4 小时前
速盾:CDN是否支持屏蔽IP?
网络·网络协议·tcp/ip
yaoxin5211234 小时前
第二十七章 TCP 客户端 服务器通信 - 连接管理
服务器·网络·tcp/ip
内核程序员kevin4 小时前
TCP Listen 队列详解与优化指南
linux·网络·tcp/ip
PersistJiao5 小时前
Spark 分布式计算中网络传输和序列化的关系(一)
大数据·网络·spark
黑客Ash8 小时前
【D01】网络安全概论
网络·安全·web安全·php
->yjy8 小时前
计算机网络(第一章)
网络·计算机网络·php
摘星星ʕ•̫͡•ʔ9 小时前
计算机网络 第三章:数据链路层(关于争用期的超详细内容)
网络·计算机网络
.Ayang10 小时前
SSRF漏洞利用
网络·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构
好想打kuo碎10 小时前
1、HCIP之RSTP协议与STP相关安全配置
网络·安全