传输层协议为运行在不同主机上的应用进程之间提供了逻辑通信。
传输层运行在应用层和网络层之间,他将不同进程通过套接字传递下来的报文(message)收集在一起(多路复用),交付给网络层,当收到网络层传递上来的消息,它把他们分解通过不同的套接字交付给相应的应用进程(多路分解)。
传输层是运行在网络边缘端系统上的协议,在网络核心中不处理有关传输层的报文。
传输层的功能明显受制于底层网络层协议提供的服务,比如网络层无法为主机到主机之间发送的传输层报文段提供时延和带宽的保证,传输层也就为应用进程之间的通信无法提供时延和带宽的保证。
因特网传输层为应用层提供两种服务
将网络层提供主机到主机之间的服务扩展成进程到进程逻辑通信的服务。
通过使用封装在传输层的首部的端口(port)来区分不同的套接字。
无连接的多路复用与多路分解
一个UDP的套接字是由一个(src.ip, src.port)的二元组来标识的,当一个分组的(src.ip, src.port)相同时他们会被定向到相同的套接字。
面向连接的多路复用与多路分解:
与UDP套接字不同,TCP套接字是由(src.ip, src.port, dst.ip, dst.port)四元组来标识,通信时首先要三次握手建立连接。
client_socket.connect() # 客户端
conn_socket = server_socket.accept() # 服务端等待连接
然后这个conn_socket 就和client_socket 绑定了,通过套接字向下交付的数据都会原原本本地通过另一个套接字交给对方进程。
原文:https://www.cnblogs.com/yiwei-jun/p/14801384.html