名词
- UDP 用户数据协议 不可靠 无连接
- TCP 传输控制协议 可靠 、面向连接
- segment 运输层分组为报文段
- ip 网络协议
- best-effort delivery service 尽力而为交付服务
- unreliable service 不可靠服务
- transport-layer multiplexing 运输层多路复用
- demultiplexing 多路分解
- congestion control 拥塞控制
- Finite-state Machine FSM 有限状态机
- positive acknowledgement 肯定确认
- negative acknowledgment 否定确认
- Automatic Repeat reQuest ARQ协议 自动重传请求
- duplicate data packet 冗余数据分组
- countdown timer 倒计数定时器
1、运输层与网络层关系
网络层协议,也即是ip协议,为主机之间提供逻辑通信。每台主机至少有一个网络层地址,即所谓的IP地址。
TCP和UDP的基本职责是,将两个端系统之间ip的交付服务扩展为运行在端系统上的两个进程之间的交付服务。
将主机间交付扩展到进程间通信交付被称为运输层的多路复用 与多路分解
一个例子
1、多路复用
一个进程有一个或多个套接字(socket),相当于从网络向进程传递数据和从进程向网络传递数据的门户。
在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息(在以后用于分解)从而生成报文段,然后将报文段传递到网络层,这些工作称为多路复用 multiplexing
多路复用要求:①套接字具有唯一标识符②每个报文段有特殊字段指示该报文所要交付到的套接字。源端口号字段 和目的端口号字段。
端口号:16比特的数,大小在0-65535之间。0-1023范围端口号称为周知端口号,如80(HTTP用到)21(FTP用到)等。
2、多路分解
每个运输层报文段中具有几个字段,接收端,运输层检查这些字段,标识出接收套接字,进而将报文段定向到该套接字。将运输层中的数据交付到正确的套接字的工作称为多路分解。
2、无连接UDP
1、UDP报文结构
UDP首部只有4个字段,每个字段有两个字节组成。长度字段指示在UDP报文中字节数(首部加数据)。
2、UDP校验和
UDP校验和提供了差错校测功能。校验和用于确定当UDP报文段从源到目的地移动时,其中比特是否发生了改变。
发送的UDP对报文段中的16比特字的和进行反码运算,求和时遇到任何溢出都会被回卷(加1在最后面)。
二进制求和:
:0+0=0,0+1=1 ,1+0=1, 1+1=10(向高位进位);即7=111
二进制反码运算 (所有的0换成1,所有的1换成0)
3、可靠数据传输原理
为上层实体提供的服务抽象是:数据可通过一条可靠的信道进行传输。实现这种服务抽象是可靠数据传输协议 reliable data transfer protocol 。
自动重传请求协议 Automatic Repeat reQuest ARQ 协议
需要其他三种协议
- 差错检测 比如上面udp 使用因特网校验和字段 正是为了这个目的。
- 接收方反馈 如“肯定确认” ACK 和“否定确认” NAK
- 重传 接收方收到有差错的分组时,发送方将重传该分组文。
考虑 ACK和NAK 3种可能性