zoukankan      html  css  js  c++  java
  • 运输层多路复用与多路分解

    一--- 导读

    我们现在来看这样一个案例,张三家很有钱,川普是张三家的老管家。张三有两个儿子,大三和二三,一个女儿,姗姗。李四也是富豪,李四的管家叫巴马,李四也有两个儿子一个女儿。大李,二李,和莉莉。

    现在两家因为是亲戚,所以子女间会有书信往来,大三,二三,莉莉写完信以后,交给管家川普去封装,写上张三家的地址还有各自所在的房间门牌号。于是把信交给邮递员。另一边,邮递员到达李四家以后,李四 的管家 巴马开始收信,然后检查信上的目的房间,如果是大李的就送到大李那里去,是莉莉的就送到莉莉那里。邮递员相当于网络层,两个管家相当于运输层。门相当于套接字。门牌号就是端口号,川普收信的过程相当于多路复用,而巴马分发信的过程相当于多路分解。儿子女儿就相当于应用层的进程。

    二---多路复用与多路分解的种类 

      正如我们所猜测的那样,多路复用与多路分解分为有连接的和无连接的,因为运输层协议分为可靠的 ,面向连接的TCP协议和不可靠不面向连接的UDP协议,这里想象成两个管家,一个靠谱一个不靠谱即可

    A:无连接的多路复用与多路分解技术

    进程(少爷或小姐)需要发送UDP数据报时,首先要创建一个UDP套接字(少爷或小姐的门),然后应用层通过这个UDP套接字将数据传递到运输层(管家),运输层为数据加上源端口号(房间门牌号)以及目的端口号,封装成数据报后交给网络层(邮递员),网络层再为数据报封装上源IP(张三家地址)以及目的IP(李四家地址)。由于UDP协议仅仅只是将数据发出,所以对于UDP报文来说,最重要的就是目的地址的所在。一个UDP套接字的标识就是目的IP+目的端口号(张三家地址,莉莉的房间门牌号)。因此对于多个不同的UDP数据报,只要它们的目的IP+端口号相同,就算源地址不同,也会在目的主机中被定向到同一个UDP套接字中,被同一个进程所接收。目的IP决定了数据报将要发送到哪台主机,而目的端口号为运输层的的分解提供了标识。

    B:有连接的多路复用与多路分解技术

    既然有无连接的实现,自然就有连接的实现。运输层乃至整个计算机网络最著名的协议——TCP协议,就是一个面向连接的协议。TCP是一个面向连接,可靠的运输层协议。既然面向连接,那它就需要关注两个方面:源地址和目的地址,因为TCP的传输,需要两边协作完成。正因为TCP的特性,导致TCP的套接字和UDP也有所区别。TCP套接字的标识是一个四元组,即源IP+源端口+目的IP+目的端口UDP是目的IP+目的端口)

    三--实例演示

    当我们在浏览器中请求一个页面时,将经历以下过程:

    1. Web服务器监听80端口,等待客户端的连接;(也叫做欢迎套接字)
    2. 用户在浏览器输入一个URL,回车后,浏览器进程创建一个套接字,此套接字由服务器IP,服务器80端口,本地IP,本地进程端口,四部分标识;
    3. 浏览器进程将数据通过此套接字从应用层传入运输层,运输层为TCP报文加上首部(包括源端口和目的端口)后,交给网络层,网络层为其加上网络层首部(包括源IP和目的IP)传输传输到Web服务器;
    4. Web服务器接收到此数据报后,检测到数据报请求的是端口80,于是检测80端口正在运行,且允许连接,则创建一个新的套接字(把门打开),此套接字由服务器IP,服务器80端口,源IP,源端口,这四部分标识;
    5. 此后到达的Web服务器的数据报,若以上四部分完全相等,则将进入此套接字中;
  • 相关阅读:
    positio:absolute与position:relative的区别
    angular过滤器
    docker常用命令
    Promise的用法
    import和require
    webStrom支持Vue
    搭建Vue2+Vuex+Webpack+Pug(jade)+Stylus环境
    需要转义的正则表达式符号
    改变input光标颜色与输入字体颜色不同
    网络编程套接字,osi七层架构各层协议最全讲解
  • 原文地址:https://www.cnblogs.com/YXBLOGXYY/p/14220067.html
Copyright © 2011-2022 走看看