【tcp】自顶向下 ,带你遨游传输层

2022-04-26  本文已影响0人  Bogon

运输层为运行在不同主机上的应用程序之间提供逻辑通信。

通过运输层协议,两台电脑仿佛直接相连一样。

应用无需知道底层内部实现的原理和细节,比如怎么把远隔世界两地电脑上的数据进行相互传输。

为了做到为不同主机 (host) 上的应用或者说进程提供逻辑通信这一目的,运输层协议必须能分辨出数据的来源和去向。

为此,运输层存在着两种行为,【多路复用】和 【多路分解

多路复用:当运输层收到来自上方应用层的数据时,运输层会为数据封上一些头部信息,根据所有协议不同,封上的信息也不一样。

多路分解:当运输层收到下方网络层传输来的数据时,运输层会检查多路复用时封上的信息,从而正确的把数据定向到相应的进程

如何使用运输层的协议?

操作系统提供了被称为socket的接口api供编程人员调用,对socket的形象理解是其是一种抽象,将复杂的实现 (tcp/udp) 协议的各种行为抽形成简单的几个函数给开发人员使用。

就像浏览器将发送请求报文这一http协议规定的行为,抽象成我们只需要输入url然后回车即可。

这里需要注意的一点是:

在一般情况下,一个计算机端口只能被一个进程占用

一个进程可以创建多个Socket,多个TCP Socket可以监听同一个端口,并保证接受的数据依旧是正确的

多个UDP Socket就无法监听同一端口,这其中的差异源于TCP和UDP协议的不同

UDP和TCP的多路复用和分解

Q1:UDP的多路复用和分解

一个UDP Socket通过一个二元组 (目的IP地址,目的端口号) 来标识,当输入层收到数据时,通过检查这个二元组,来定向数据该去往哪一个UDP Socket。这也是多个UDP Socket无法监听同一个端口的原因

Q2:TCP的多路复用分解

一个TCP Socket通过一个四元组 (源IP,源端口,目的IP,目的端口号) 来标识,这也解释为什么多个TCP Socket可以监听同一个端口,尽管目的IP和目的端口号是一样的,但是源IP和源端口的组合总是不同的

参考

Linux | 对于UDP的学习

https://blog.csdn.net/qq_40399012/article/details/85983221

一文遨游运输层

https://mp.weixin.qq.com/s/_mPgRU1JnGDLnbeXB_4f0Q

自顶向下 ,带你遨游运输层

https://www.pianshen.com/article/85921424643/

https://blog.csdn.net/lxw1844912514/article/details/106687469

TCP和UDP为何可以共用同一端口?

https://cloud.tencent.com/developer/article/1746827

计算机网络太难?了解这一篇就够了

https://zhuanlan.zhihu.com/p/385851671

上一篇 下一篇

猜你喜欢

热点阅读