前言
参考王道书。
后续会进一步整理,包括添加笔记内容,标明参考资料。
更新中。。。
目录
一、传输层
- 只有主机才有的层次
- 使用网络层的服务
- 为应用层提供通信服务
从通信和信息处理的角度看,传输层属于面向通信部分的最高层,同时也是用户功能中的最低层。
传输层位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信
而网络层提供主机之间的逻辑通信
即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务。
通信子网中没有传输层,传输层只存在于通信子网以外的主机中
可以看出,网络的边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,只有主机的协议栈才有传输层和应用层,而路由器在转发分组时都只用到下三层的功能
传输单元
- 报文段
这里不进行细分
二、 传输层的功能
- 提供进程之间的逻辑通信(端到端通信)
- 复用和分用
- 对收到的报文进行差错检测
- 提供两种传输协议
1、提供进程之间的逻辑通信(端到端通信)
传输层向高层用户屏蔽了低层网络核心的细节(如网络拓扑、路由协议等),它使应用进程看见的是好像在两个传输层实体之间有一条端到端的逻辑通信信道。
这条逻辑通信信道对上层的表现却因传输层协议不同而有很大的差别。
当传输层采用面向连接的TCP时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。
但当传输层采用无连接的UDP时,这种逻辑通信信道仍然是一条不可靠信道。
逻辑通信
传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。
2、复用和分用
复用:
- 指发送方不同的应用进程都可使用同一个传输层协议传送数据;
分用:
- 指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程。
复用:
- 应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:
- 传输层从网络层收到数据后交付指明的应用进程。
注意:
- 传输层的复用分用功能与网络层的复用分用功能不同:
- 网络层的复用:是指发送方不同协议的数据都可以封装成IP数据报发送出去。
- 网络层的分用:是指接收方的网络层在剥去首部后把数据交付给相应的协议。
3、差错检测
4、提供两种传输协议
- TCP
面向连接的传输控制协议 - UDP
无连接的用户数据报协议
5、传输层与网络层功能对比
- 网络层提供主机之间的逻辑通信
- 传输层提供进程之间的逻辑通信
| 传输层 | 网络层 | |
|---|---|---|
| 逻辑通信 | 进程之间 | 主机之间 |
| 复用分用 | 复用:指发送方不同的应用进程都可使用同一个传输层协议传送数据 分用:指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程 |
复用:是指发送方不同协议的数据都可以封装成IP数据报发送出去 分用:是指接收方的网络层在剥去首部后把数据交付给相应的协议 |
| 差错检测 | 检查报文的首部和数据部分 | 只检查IP数据报的首部,不检验数据部分 |
| 提供传输协议 | 提供两种不同的传输协议,即面向连接的TCP和无连接的UDP | 无法同时实现两种协议 即在网络层要么只提供面向连接的服务(如虚电路)要么只提供无连接服务(如数据报),而不可能在网络层同时存在这两种方式 |
三、传输层的两个协议
-
传输控制协议TCP
面向连接 -
用户数据报协议UDP
无连接
1、传输控制协议(TCP)
- 提供面向连接服务
传输前必须建立连接,传输结束后要释放连接。 - 不提供广播或多播服务。
- 提供可靠的面向连接的传输服务导致开销增加:
确认、流量控制、计时器、连接管理 …
特点
- 可靠
- 面向连接
- 时延大
- 适用于大文件
- 适用于可靠性更重要的场合
如文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)等
TCP和网络层虚电路的区别
- TCP报文段在传输层抽象的逻辑信道中传输,对路由器不可见;
- 虚电路所经过的交换结点都必须保存虚电路状态信息。
- 在网络层若采用虚电路方式,则无法提供无连接服务;
- 传输层采用TCP不影响网络层提供无连接服务。
2、用户数据报协议(UDP)
- 提供无连接服务
- 传送数据之前不需要建立连接
- 收到UDP报文后也不需要给出任何确认
特点
- 不可靠
- 无连接
- 时延小
- 适用于小文件
如小文件传送协议(TFTP)、DNS、SNMP和实时传输协议(RTP)。
IP数据报和UDP数据报的区别
- IP数据报在网络层要经过路由的存储转发;
- UDP数据报在传输层的端到端的逻辑信道中传输,封装成IP数据报在网络层传输时,UDP数据报的信息对路由是不可见的。
四、传输层的寻址与端口
1、端口的作用
- 是传输层的SAP,标识主机中的应用进程。
- 逻辑端口/软件端口
端口能够让应用层的各种应用进程将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。
端口是传输层服务访问点(TSAP),它在传输层的作用类似于IP地址在网络层的作用或MAC地址在数据链路层的作用,只不过IP地址和MAC地址标识的是主机,而端口标识的是主机中的应用进程。
各层的服务访问点(SAP)
| 层 | 服务访问点(SAP) |
|---|---|
| 数据链路层 | MAC地址 |
| 网络层 | IP地址 |
| 传输层 | 端口 |
硬件端口和软件端口
在协议栈层间的抽象的协议端口是软件端口,它与路由器或交换机上的硬件端口是完全不同的概念。
- 硬件端口是不同硬件设备进行交互的接口
- 软件端口是应用层的各种协议进程与传输实体进行层间交互的一种地址。
传输层使用的是软件端口。
2、端口号
- 标识进程
- 长度为16bit,能表示65536个不同的端口号。
端口号只具有本地意义,即端口号只标识本计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的。
3、端口号分类
按范围分:
- 服务端使用的端口号
- 熟知端口号:0 ~ 1023
- 登记端口号:1024 ~ 49151
- 客户端使用的端口号:49152 ~ 65535
服务端使用的端口号
熟知端口号
- 范围:0 ~ 1023
指派给TCP/IP最重要的一些应用程序,让所有用户都知道。
- 由IANA(互联网地址指派机构)指派
登记端口号(注册端口号)
- 范围:1024 ~ 49151
为没有熟知端口号的应用程序使用的。
- 使用登记端口号必须在IANA登记,以防止重复。
客户端使用的端口号(动态端口号)
- 也称临时端口号、短暂端口号、动态端口号
- 范围:49152 ~ 65535
仅在客户进程运行时才动态选择。
4、套接字
- 唯一标识网络中的一个主机和其上的一个进程。
在网络中采用发送方和接收方的套接字组合来识别端点
套接字是一个通信端点,即:
套接字Socket = (主机IP地址, 端口号)
套接字唯一标识了网络中的一个主机和它上面的一个进程。