3.2-复用和分用

多路复用/分用

接收端进行多路分用

传输层根据头部信息将收到的Segment交给正确的Socket(不同进程)

发送端进行多路复用

从多个Socket接受数据,为每块数据封装上头部信息,生成Segment,交给网络层

分用如何工作

  • 主机接收到IP数据报(datagram)
    • 每个数据报携带源IP地址、目的IP地址
    • 每个数据报携带一个传输层的段(Segment)
    • 每个段携带源端口号和目的端口号
  • 主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket
    • TCP做更多处理

image-分用如何工作

无连接分用

  • 利用端口号来创建Socket
DatagramSocket mySocket1 = new DatagramSocket(99111);
DatagramSocket mySocket2 = new DatagramSocket(99222);
  • UDP的Socket用二元组标识
    • 目的IP地址
    • 目的端口号
  • 主机收到UDP段后
    • 检查段中的目的端口号
    • 将UDP段导向绑定在该端口号的Socket
  • 来自不同IP地址和/或源端口号的IP数据包被导向同一个Scoket

image-无连接分用

面向连接的分用

  • TCP的Socket用四元组标识
    • 源IP地址
    • 源端口号
    • 目的IP地址
    • 目的端口号
  • 接收端利用所有的四个值将Segment导向合适的Socket
  • 服务器可能同时支持多个TCP Socket
    • 每个Socket用自己的四元组标识
  • Web服务器为每个客户端开不同的Socket

每个进程开启一个Socket
image-面向连接的分用1

每个进程开启多个线程,每个线程开启一个Socket
image-面向连接的分用2

posted @ 2020-03-22 12:01  Quaint  阅读(2302)  评论(0编辑  收藏  举报
……