前面讲了网络层,接下来就是传输层的内容,本文先介绍传输层的功能,以及传输层的协议概述。
1 传输层的功能
首先需要明确的是传输层是只有主机才有的层次,路由器最多只有三个层次,即最多能够到达网络层。
其次,网络层根据IP地址可以实现两台主机的通信,但是真正进行通信的实体是主机中的进程(如QQ、微信等),IP协议虽然能够把分组送到目的主机,但是这个分组还停留在主机网络层还没有交付给主机中的应用进程。
传输层的功能:
(1) 提供应用进程和进程之间的逻辑通信。
这里逻辑通信的意思是:在应用层看来,只要把应用层的报文封装交给下面的传输层,传输层就可以将这报文传送给对方的运输层,看起来是两主机在传输层水平传输,但是实际上并不是按照这样的水平传输,而是向网络层、链路层最后到物理层,中途经过转发等一系列复杂的过程实现的,但是运输层向高层用户屏蔽了下面网络核心细节。
网络层为主机之间的逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信。
(2) 复用和分用
复用:是指发送方不同的应用进程都可以使用同一个运输层协议传送数据。如QQ和微信都可以使用传输层协议传送消息。
分用:是指接收方的运输层在剥去报文首部后能够把这些数据正确的交付给正确的应用进程。如QQ发送的数据就交付给给接收方的QQ进程接收,微信发送的数据就交付给接收方的微信进程接收。
(3) 差错检测
在网络层,IP数据报首部中的校验和字段,只校验首部是否出差错而不检查数据部分,运输层需要对收到的报文进行差错检测。
2 传输层的协议
传输层的协议有两种重要的协议:TCP协议和UDP协议。
(1) 用户数据报协议UDP(User Datagram Protocol)
(2) 传输控制协议TCP(Transmission Control Protocol)
TCP协议是面向连接的,而UDP是无连接的。
TCP在传送数据之前必须建立连接,数据传送结束要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输层服务,因此不可避免的增加了许多开销,如确认、流量控制、计时器以及连接管理等。
UDP 在传送数据前不需要建立连接,收到UDP报文后也不需要给出任何确认。
所以,TCP可靠、面向连接,时延大,适用于大文件。UDP不可靠,无连接、时延小,适用于小文件。
3 传输层的寻址与端口
前面说了传输层的复用和分用功能,应用层的所有应用进程都可以通过传输层再传送到IP层(网络层),这就是复用。传输层从IP层收到发送给各应用进程的数据后,必须分别交付给各应用进程,这就是分用。
传输层如何找到与之相对应的进程?传输层通过使用协议端口号(protocol port number),通常简称为端口来标识主机中的应用进程。
这里要和路由器和交换机上的硬件端口相区别,硬件端口是不同硬件设备进行交互的接口,是真实存在的,而这种在协议栈间的抽象的协议端口是软件端口,是一种逻辑端口。
在UDP和TCP的首部格式中,都存在源端口和目的端口两个重要字段。当传输层收到IP层交上来的传输层报文时,就能根据首部中的目的端口号把数据交付给应用层的目的应用进程。
端口号只具有本地意义,它只是为了标志本计算机应用层中各个进程在和传输层交互时的层间接口。在因特网中不同计算的相同端口是没有联系的。
端口号长度为16bit,能表示65535个不同的端口号。
这就好比两个家庭之间通信,A家庭的a成员要给B家庭的b成员写信,a寄信时不仅要填写B的家庭地址,同时还要填写b的名字,因为B家庭可能有多个人,不写名字不知道是给谁的,这里的B家庭地址相当于IP地址,b的名字相当于端口。
端口号分为两大类:服务器使用的端口号和客户端使用的端口号。
(1) 服务器断使用的端口号
服务器端使用的端口号又分为两类:熟知端口号和登记端口号。
1) 熟知端口号又称系统端口号,数值范围0~1023,这些值是给TCP/IP 最重要的一些应用程序,让所有用户都知道。下图给出了常用的系统端口号。
2) 登记端口号:数值是1024~49152。这类端口号为没有熟知端口号的应用程序使用。
(2) 客户端使用的端口号:数值为49152~65535.这类端口号仅在客户进程运行时才动态选择,因此又叫短暂端口号。
4 小结
本文完