第五章:探索网络协议——详解传输层:多路复用与解复用的过程与概览
受人启发,学习前不如先换个主题顺便来听首歌(?)国王排名的op,这个编曲真的怪喜欢的
说起来做这篇发现b站某网课老师的计网用的课件跟QMUL一模一样,不会全世界都这个吧
这章的重点是理解传输层的工作原理 + 学习Internet的传输层协议,先从了解传输层开始
写的太妙了,了解前摘抄一下:
最开始的连接层协议种类繁多(Ethernet、Wifi、ARP等等)。到了网络层只剩下一个IP协议。进入到传输层(transport layer),协议的种类又开始繁多起来(比如TCP、UDP、SCTP等)。就好像下面的大树,根部(连接层)分叉很多,然后统一到一个树干(网络层),到了树冠(传输层)部分又开始开始分叉,而每个树枝上长出更多的树叶(应用层)。我们在网络层已经看到,通过树干的统一,我们实现了一个覆盖全球的互联网络(Internet)。然而,我们可能出于不同的目的利用这张“网”,随之使用的方式也有所区分。不同的传输层协议(以及更多的应用层协议)正是我们使用“网”的不同方式的体现。
传输层概述
- 为在不同主机(hosts)上运行的应用程序进程之间提供逻辑通信(logical communication)
- 协议在终端(end systems)中运行
- 发送端(send side):将应用程序消息分成若干段(segments),传递到网络层
- 接收端(rcv side):将段重新组装成消息,传递到应用层
- 应用程序可使用多个传输协议
- 比如互联网同时使用TCP和UDP
判断题,应该没什么问题
传输层与网络层的比较
- 传输层:进程之间的逻辑通信
- 依赖、增强网络层服务
- 网络层:主机(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
- 上面的逆过程,数据流被分离成单独的部分,相当于解码
- 手机接收到的数据包流将被分割并发送到相应的网络、电子邮件、微信程序
发送端:处理来自多个套接字的数据,添加传输层头(IP和端口等,稍后用于解复用),然后一起往后面传
接收端:使用报头信息将收到的片段传送到正确的套接字
看不懂的话往下看!
工作原理
解复用
关于端口: IP协议进行的是IP地址到IP地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有多个通信通道,并将多个通信通道分配给不同的进程使用(关于进程,可以参考Linux进程基础)。一个端口就代表了这样的一个通信通道。正如我们在邮局和邮差中提到的收信人的概念一样。引入的端口号可以区分不同进程,TCP、UDP的端口号都是16bits,有6w+个端口号
- 主机接收IP数据报
- 每个IP数据报都有注明源IP地址、目标IP地址
- 每个数据报携带一个传输层段 transport-layer segment
- 每个segment都有源及目标的端口号
- 主机使用IP地址和端口号将网段定向到适当的套接字,进而连接到应用
概念测试
无连接的多路复用(@UDP)
无连接和面向连接在下一节解释
recall: 创建的套接字具有主机本地端口,如
DatagramSocket mySocket1 = new DatagramSocket(12534);
- 主机要发送:创建要发送到UDP套接字的数据报时,必须指定
- 目标IP地址
- 目标端口
- 主机接收UDP段时:
- 检查段中的目标端口
- 将UDP段定向到具有该端口的套接字
∴ 具有相同目的端口,但不同源IP地址或源端口号的。也将定向到同一目标socket
易知右边那玩意肯定也是要发向6428接口,源自然是5775
面向连接的解复用(@TCP)
区别不大,同样通过源于终点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)
上一篇: 给产品经理的简单优先级设定指南 - 英文版: RICE方法论
下一篇: Pack200.Packer