计算机网络——运输层

运输层协议

进程之间的通信

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

运输层的作用

  • 逻辑通信”的意思是“好像是这样通信,但事实上并非真的这样通信”。
  • 从IP层来说,通信的两端是两台主机。但“两台主机之间的通信”这种说法还不够清楚。
  • 严格地讲,两台主机进行通信就是两台主机中的应用进程互相通信
  • 从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信是应用进程之间的通信。

运输层的两个主要协议

TCP

  • 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工可靠信道
  • TCP 传送的数据单位协议是 TCP 报文段
  • 一种面向连接的协议
    • 提供面向连接的服务。
    • TCP 不提供广播或多播服务。
    • 由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

UDP

  • 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道
  • UDP 传送的数据单位协议是 UDP 报文或用户数据报。
  • 一种无连接协议
    • 提供无连接服务。
    • 在传送数据之前不需要先建立连接。
    • 传送的数据单位协议是 UDP 报文或用户数据报。
    • 对方的运输层在收到 UDP 报文后,不需要给出任何确认。
    • 虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

运输层的端口

  • 运行在计算机中的进程是用进程标识符来标志的
  • 但运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。
  • 为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

端口号 (protocol port number)

需要解决的问题

  • 由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程。
  • 有时我们会改换接收报文的进程,但并不需要通知所有发送方。
  • 我们往往需要利用目的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。

端口号的提出

解决这个问题的方法就是在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。
虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。

常用端口计算机网络——运输层# TCP协议

主要特点

  • 是面向连接的运输层协议。
  • 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)
  • TCP 提供可靠交付的服务。
  • TCP 提供全双工通信。

套字节socket

计算机网络——运输层

TCP传输过程

无差错

计算机网络——运输层

有差错

计算机网络——运输层

确认丢失和确认迟到

计算机网络——运输层

TCP报文首部

计算机网络——运输层