计算机网络笔记(三):运输层

运输层位于应用层和网络层之间,主要协议包括TCP和UDP(面向有连接和无连接)。

3.1 概述

    运输层协议为不同主机上的应用进程间提供了逻辑通信(logic communication),在应用程序的角度来看,逻辑通信让运行不同进程的主机好像直连一样;这也就将主机间通过无数的链路、路由器相连接这一事实封装了起来,应用进程只需在运输层提供的逻辑通信功能上发送报文,而不用考虑实际上底层物理复杂链路。运输层把应用程序进程接收到的报文转换成运输层分组,又称为报文段(segment),在发送时传递给网络层,网络层将其封装为网络层分组并向目的地发送。运输层和网络层的区别在于,运输层提供的是进程间的逻辑通信,要与具体应用绑定(前文提到过有的应用采取TCP,有的采取UDP),而网络层提供的是主机间的通信(host to host)。

3.1.1 因特网中的运输层

    因特网(TCP/IP网络)为应用层提供了两种运输层协议,大名鼎鼎的TCP(传输控制协议)和UDP(用户数据报协议),前者是可靠的,面向连接的,而后者反之。在详细介绍这两种协议之前,要先介绍一下网络层,网络层协议有一个名字叫IP,也就是网际协议。IP为主机间提供了逻辑通信,其服务模型为尽力而为交付服务(best-effort delivery service)。这意味着IP尽它最大的努力在通信主机间交付报文段,但它并不做保证,意思是:它不确保报文段的交付、不保证报文段的按序交付、不保证报文段中数据的完整性。因此,IP又被称作是不可靠服务。每台主机至少有一个网络层地址,也就是被人熟知的IP地址。

    在上述的基础上,UDP和TCP的责任是将端系统间IP的交付服务扩展为运行在端系统上的两个进程间的交付服务。将主机间交付扩展到进程间交付被称为运输层的多路复用(transport-layer multiplexing)和多路分解(demultiplexing)。UDP和TCP还能够在报文段首部中通过差错检查字段提供完整性检查,也就是说进程间的数据交付和差错检查是运输层的两个最低限度服务。此外,TCP提供了几种附加服务,比如为人熟知的可靠数据传输(reliable data transfer)拥塞控制(congestion control),防止任何一条TCP连接用过多流量来淹没通信主机间的链路和交换设备,力求为每个通过一条拥塞网络链路的连接平等地共享网络链路带宽。相反,UDP流量不可调节,应用程序可以以其想要的任意速率发送数据。

3.2 多路复用和多路分解

    上文中提到,运输层将网络层的主机间交付扩展到了应用程序的进程间交付,这一过程为多路复用和多路分解。在目的主机,运输层从紧邻其下的网络层接收报文段,运输层负责将报文段中的数据交付给主机上适当的进程。一个进程有一个或多个套接字(socket),它是从网络向进程传递数据或是向网络传递数据的门户。如图一所示,运输层其实并不是将数据直接交给某个进程,而是交付给了一个套接字,每个套接字有唯一的标识符。

    运输层是如何将报文段送往适当的套接字的?针对这点,运输层报文段中有几个字段,在接收端,运输层检查这些字段,标识出接受套接字,进而定位到正确的套接字。将报文段中的数据交付到正确的套接字的工作就称为多路分解。相反的,源主机从不同套接字收集数据,为数据添加首部信息从而生成报文段,然后将报文段送往网络层,这些工作称为多路复用

    为了将数据送往指定的套接字,运输层要求套接字有唯一标识符、每个报文段有特殊字段来指示报文要交付给的套接字。这些特殊字段姐是源端口号字段和目的端口号字段,端口号是一个16bit的数,大小在0~65535之间,0~1023范围的端口号为周知端口号(well-known port number),它们是保留给一些已经存在的有名的应用的端口,(如之前介绍的HTTP 80端口)。简单来看,目前为止多路复用和多路分解的过程是:源主机将数据封装到报文段并在其中指定目的端口号,目的主机的运输层接到报文段并通过端口号将数据派发给对应的套接字。

T图一 运输层多路复用和多路分解

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

    UDP中的多路复用和分解比较简单,和上述的一般流程近似,需要注意的是:一个UDP套接字是由一个二元组来标识的,包含一个IP地址和一个端口号。到目前为止源端口号貌似还没有起到作用,实际上它在需要返回值的传输过程中是有用的。比如:A主机给B主机发送了数据,当B主机要返回给A主机一些信息(如确认信息等)时,需要找到A的进程套接字,这时源端口号就起到了作用。

3.2.2 有连接的多路复用与多路分解

    TCP套接字和UDP套接字的不同处在于TCP套接字由四元组(源IP地址,源端口号,目的IP地址,目的端口号)来标识的,另一点不同处在于两个具有不同源IP地址或源端口号的到达的TCP报文段,就算目的端口号相同也会被定向到不同的

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值