计算机网络笔记--传输层

Transport Layer -- 传输层

传输层服务

传输层协议为运行在不同主机上的应用进程之间提供了逻辑连接

传输层协议运行在端系统上:

  • 发送端将应用层报文分解成报文段(segment),传输给网络层
  • 接收端将报文段重组为报文段传输给应用层

传输层协议:TCP、UDP

传输层与网络层关系

网络层提供了主机之间的逻辑通信,传输层提供了进程之间的逻辑通信


传输层概述

  • UDP--用户数据报协议
    提供不可靠、无连接的服务
  • TCP--传输控制协议
    可靠的、面向连接的服务
    • 拥塞控制
    • 流量控制
    • 面向连接

运输层分组被称为数据报

网际协议--IP

英特网网络层协议一个名字叫IP,为主机之间提供了逻辑通信。IP的服务模型为尽力而为交付服务(best-effort delivery service),该模型:

  • 不确保报文段的交付
  • 不保证报文段按序交付
  • 不保证报文段中数据的完整性

因此IP被称为不可靠服务

多路复用与多路分解

作用&原理

在一个主机上运行的多个进程中,每个进程都有着一个或多个套接字,主机需要将到达传输层的报文段定向到合适的套接字,为此,每个报文段中具有几个字段

  • 接收端检查这些字段,标识出对应的接收套接字,进而将报文段定向到该套接字,这一过程叫多路分解
  • 发送端从不同套接字中收集数据块,并为每个数据块封装上首部信息,从而生成报文段并将其传递到网络层,这一过程为多路复用

M&D


实际工作方式

运输层复用的要求

  1. 套接字有唯一标识符
  2. 报文段有特殊字段来指示要被交付到的套接字

这些特殊字段是指源端口号字段目的端口号字段

segment

端口号为以16bits的数,0 ~ 1023为周知端口号,使用受限,专门留给HTTP等周知的应用层协议

无连接的多路复用与多路分解

UDP套接字由一个二元组全面标识,该二元组包含一个目的IP地址和一个目的端口号。两个有不同源IP地址或端口号的UDP报文段,如果有相同的目的IP地址与目的端口号,则它们将通过相同的目的套接字定位到相同进程。

源端口号可被当做“返回地址”的一部分

面向连接的多路复用与多路分解

TCP套接字由一个四元组标识:

  • 源IP地址
  • 源端口号
  • 目的IP地址
  • 目的端口号

接收端使用全部的四个值将报文段定向到适当的套接字,与UDP不同,TCP会将不同源IP地址或端口号而具有相同目的IP与端口号的报文段定向到不同的套接字,除非TCP报文段携带了初始创建连接的请求

线程化处理

如今的高性能Web服务器通常只使用一个进程,但会为每个新的用户连接创建一个具有新的连接套接字的线程(可被看作是一个轻量级的子进程)。

UDP(User Datagram Protocol):无连接传输

无连接

基于UDP的应用程序直接与IP“打交道”。UDP从应用程序得到数据,附加上用于多路复用/分解的源和目的端口号字段以及其他两个小字段,将行程的报文段交给网络层,网络层将其封装到一个数据报中后尽力将其交付给接受主机。若报文传到,UDP将数据交付给相应进程。
在这一过程中,发送方与接收方的实体都没有进行握手,因此,UDP被称为是无连接的


UDP应用场景

部分应用更适合用UDP:

  • UDP关于发送什么数据以及何时发送数据的应用层上的控制更加精细
  • 无需建立连接
  • UDP的无连接状态
  • UDP分组首部开销更小

UDP报文结构

UDPSegment


UDP检验和(checksum)

UDP检验和提供了差错检测的功能,用于确定当UDP报文段从源到达目的地移动时,其中的比特是否发生了改变。

发送方

  1. 对报文段中所有16bits的字求和
  2. 求和中若溢出进行回卷
  3. 求反码

接收方

  1. 对接收到的段内容进行补码和计算
  2. 检查计算结果是否与收到的校验和相等

UDP提供差错检验,但对差错恢复没有能力,仅能在差错出现时提供警告

猜你喜欢

转载自www.cnblogs.com/Nreyab/p/12505435.html