自顶向下 | 多路复用&多路分解

321 阅读1分钟

运输层协议工作在主机内。从紧邻其下的网络层接收数据,并交付给相应的应用进程称为多路分解;从不同的应用进程收集数据,并交付给网络层称为多路复用

学习过网络编程我们知道进程是通过套接字来进行网络通讯的,主机上每一个套接字都有唯一的标识符,使得运输层协议能够将从网络层接收的数据准确的交付给相应的进程。

多路分解中,运输层检查报文中相应字段,定向到唯一的套接字;多路复用中,为每个应用层数据封装首部信息后,交付到网络层。

一个udp套接字由一个二元组标识:(目的ip地址,目的端口号)。

一个tcp套接字由一个四元组标识:(源ip地址,源端口号,目的ip地址,目的端口号)。

udp报文段结构

tcp报文段结构

ipv4数据报格式

上面给出了udp、tcp、ip的报文格式,可以看到(源ip地址,目的ip地址)在网络层获取,(源端口号,目的端口号)在运输层获取。

udp报文段的源端口号用作“返回地址”的一部分,即当收方需要回发时,报文段中的目的端口号便从发方到收方的报文段中的源端口号中取值。