传输层提供的服务
传输层的功能
- 传输层的功能如下:
- 传输层提供应用进程之间的逻辑通信(即端到端的通信)。与网络层的区别是:网络层提供的是主机之间的逻辑通信
- 复用和分用
复用是指发送方不同的应用进程都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程(网络层也有复用分用的功能,但网络层的复用是指发送方不同协议的数据都可以封装成IP数据报发送出去;分用是指接收方的网络层在剥去首部后把数据交付给相应的协议) - 传输层要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检验数据部分是否出错。
- 提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接的服务,如数据报,而不可能在网络层同时存在这两种方式)
传输层的寻址与端口
- 端口的作用:端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程
- 数据链路层的SAP(服务访问点)是MAC地址,网络层的SAP是IP地址,传输层的SAP是端口
- 应用进程通过端口号进行标识,端口号长度为16bit,能够表示25536(
2
16
2^{16}
216)个不同的端口号
端 口 号 ( 按 范 围 分 ) { 服 务 端 使 用 的 端 口 号 { 熟 知 端 口 号 ( 0 − 1023 ) : 给 T C P / I P 最 重 要 的 一 些 应 用 程 序 , 让 所 有 用 户 都 知 道 登 记 端 口 号 ( 1024 − 49151 ) : 为 没 有 熟 知 端 口 号 的 应 用 程 序 使 用 的 客 户 端 使 用 的 端 口 号 ( 49152 − 65535 ) : 仅 在 客 户 进 程 运 行 时 动 态 选 择 , 通 信 结 束 后 , 刚 用 过 的 客 户 端 口 号 就 不 复 存 在 端口号(按范围分)\begin{cases} 服务端使用的端口号 \begin{cases} 熟知端口号(0-1023):给TCP/IP最重要的一些应用程序,让所有用户都知道 \\ 登记端口号(1024-49151):为没有熟知端口号的应用程序使用的 \\ \end{cases} \\ 客户端使用的端口号(49152-65535):仅在客户进程运行时动态选择,通信结束后,刚用过的客户端口号就不复存在 \end{cases} 端口号(按范围分)⎩⎪⎨⎪⎧服务端使用的端口号{熟知端口号(0−1023):给TCP/IP最重要的一些应用程序,让所有用户都知道登记端口号(1024−49151):为没有熟知端口号的应用程序使用的客户端使用的端口号(49152−65535):仅在客户进程运行时动态选择,通信结束后,刚用过的客户端口号就不复存在
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP |
---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 |
- 在网络中通过IP地址来标识和区分不同的主机,通过端口号来标识和区分一台主机中的不同应用进程,端口号拼接到IP地址即构成套接字Socket。在网络中采用发送方和接收方的套接字来识别端点。套接字,实际上是一个通信端点,即套接字Socket=(IP地址:端口号)
无连接服务与面向连接服务
- 面向连接服务就是在通信双方进行通信之前,必须建立连接,在通信过程中,整个连接的情况一直被实时地监控和管理。当通信结束后,则应该释放这个连接。
- 无连接服务是指两个实体之间的通信不需要先建立好连接,需要通信时,直接将信息发送到"网络"中,让该信息的传递在网上尽力而为地往目的地传送