阅读 120

网络协议5:【传输层】概述+传输过程中的多路复用和解复用

受人启发,学习前不如先换个主题顺便来听首歌(?)国王排名的op,这个编曲真的怪喜欢的

说起来做这篇发现b站某网课老师的计网用的课件跟QMUL一模一样,不会全世界都这个吧


这章的重点是理解传输层的工作原理 + 学习Internet的传输层协议,先从了解传输层开始

写的太妙了,了解前摘抄一下:

最开始的连接层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层只剩下一个IP协议。进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP、UDP、SCTP等)。就好像下面的大树,根部(连接层)分叉很多,然后统一到一个树干(网络层),到了树冠(传输层)部分又开始开始分叉,而每个树枝上长出更多的树叶(应用层)。我们在网络层已经看到,通过树干的统一,我们实现了一个覆盖全球的互联网络(Internet)。然而,我们可能出于不同的目的利用这张“网”,随之使用的方式也有所区分。不同的传输层协议(以及更多的应用层协议)正是我们使用“网”的不同方式的体现。image.png

传输层概述

  • 为在不同主机(hosts)上运行的应用程序进程之间提供逻辑通信(logical communication)

  • 协议在终端(end systems)中运行

    • 发送端(send side):将应用程序消息分成若干段(segments),传递到网络层

    • 接收端(rcv side):将段重新组装成消息,传递到应用层

  • 应用程序可使用多个传输协议

    • 比如互联网同时使用TCP和UDP

判断题,应该没什么问题

image.png

传输层与网络层的比较

  • 传输层:进程之间的逻辑通信

    • 依赖、增强网络层服务

  • 网络层:主机(hosts)之间的逻辑通信

【课件上的小比喻】Ann的12个孩子给Bill家的12个孩子写信:
主机=房屋,进程=儿童,应用程序消息=信封中的信件,传输协议=Ann and Bill who give letter to correct child,网络层协议=邮政服务

传输层用到网络协议

可靠的、保序的传输:TCP
多路复用、解复用;拥塞控制;流量控制;建立连接

不可靠、不保序的传输:UDP
多路复用、解复用;没有为尽力而为的IP服务添加更多的其它额外服务(no-frills extension of“best-effort” IP)

都不提供的服务:
延时保证;带宽保证

多路复用和解多路复用

简要概念

  • 多路复用:multiplexing(Mux)

    • 将多个数据流(streams)合并为一个数据流;把传给不同人的数据压在了一起

    • e.g.:你的的手机正在浏览网页,刷新电子邮件,同时连接到微信。所有这些连接都通过同一链路发送

  • 解多路复用:demultiplexing

    • 上面的逆过程,数据流被分离成单独的部分,相当于解码

    • 手机接收到的数据包流将被分割并发送到相应的网络、电子邮件、微信程序

多路复用.png

发送端:处理来自多个套接字的数据,添加传输层头(IP和端口等,稍后用于解复用),然后一起往后面传
接收端:使用报头信息将收到的片段传送到正确的套接字

看不懂的话往下看!

工作原理

解复用

关于端口: IP协议进行的是IP地址到IP地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有多个通信通道,并将多个通信通道分配给不同的进程使用(关于进程,可以参考Linux进程基础)。一个端口就代表了这样的一个通信通道。正如我们在邮局和邮差中提到的收信人的概念一样。引入的端口号可以区分不同进程,TCP、UDP的端口号都是16bits,有6w+个端口号

  • 主机接收IP数据报

    • 每个IP数据报都有注明源IP地址、目标IP地址

    • 每个数据报携带一个传输层段 transport-layer segment

    • 每个segment都有源及目标的端口号

TCP/UDP segment format.png

  • 主机使用IP地址和端口号将网段定向到适当的套接字,进而连接到应用

概念测试

image.png

无连接的多路复用(@UDP)

无连接和面向连接在下一节解释

recall: 创建的套接字具有主机本地端口,如

DatagramSocket mySocket1 = new DatagramSocket(12534); 复制代码

  • 主机要发送:创建要发送到UDP套接字的数据报时,必须指定

    • 目标IP地址

    • 目标端口

  • 主机接收UDP段时:

    • 检查段中的目标端口

    • 将UDP段定向到具有该端口的套接字

∴ 具有相同目的端口,但不同源IP地址或源端口号的。也将定向到同一目标socket

image.png

易知右边那玩意肯定也是要法向6428接口,源自然是5775

面向连接的解复用(@TCP)

image.png

区别不大,同样通过源于终点IP、端口判定 (称之为四元组,要记住),但是

  • 服务器能够在一个TCP端口上同时支持多个TCP套接字:

    • 每个套接字由其四元组标识(有不同的源IP和源PORT)

    • dest port同样是80的数据被解到了不同的sockets

  • Web服务器对每个连接客户端有不同的套接字

    • 非持久对每个请求有不同的套接字

顺便,一些常用的端口

  • Port 80: 标准HTTP(超文本传输协议)浏览web

  • Port 22: ssh(secure shell)从远程计算机登录

  • Port 25: SMTP(简单邮件传输协议)通过此主机发送邮件

  • Port 143: IMAP(Internet邮件访问协议)阅读您的电子邮件

  • Port 443: HTTPS(安全HTTP)浏览web安全

题目

判断正误

  • Multiplexing is performed when traffic is received.

    • False (multiplexing is combining)

  • In a connection-oriented demux only one process can receive data set to a given port.

    • False (one port can connect to many processes).

  • In a connection-oriented demux we need 4 pieces of information to identify the process to receive a packet.

    • True (source+dest port plus source + dest IP address)

  • Connectionless demux is more efficient.

    • False (it depends on circumstances which is efficient)

image.png


作者:有氧
链接:https://juejin.cn/post/7030017056737067015


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐