网络协议5:【传输层】概述+传输过程中的多路复用和解复用
受人启发,学习前不如先换个主题顺便来听首歌(?)国王排名的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)
作者:有氧
链接:https://juejin.cn/post/7030017056737067015