企业资料通讯Week6 (3) | Transport Layer_婴儿食品版

现在进入了传输层,是OSI(Open Systems Interconnection )模型的第四层,送的那一端负责把应用层丢下来的Message 拆分成Segments并往下传到Network Layer;而收到的那一端就负责重组(reassembles)然後往上传到应用层。
协定上多使用TCP、UDP(其他还有很多)

- 提供服务:

  • Connection-oriented communication
  • Same order delivery
  • Reliability
  • Flow control
  • Congestion avoidance
  • Port Multiplexing

Transport Layer

Multiplexing 与 DeMultiplexing

参见:WIKI|Multiplexing
宅学习|多路复用

  • Multiplexing :在传送出去之前,在header 有添加位置资讯这个动作,以致不至於混淆目的地。
  • DeMultiplexing:依着header上面的资讯使讯息能够正确到达收件者那里。
    https://ithelp.ithome.com.tw/upload/images/20211103/20135414Sr0JdqlP6c.png

我们需要IP 与 Port 才能把讯息送到正确的socket
https://ithelp.ithome.com.tw/upload/images/20211103/201354147cTWZbCbsW.png

TCP 与 UDP 在Multiplexing上的差别

TCP 比 UDP 复杂很多,TCP 提供可靠、有序的「双向传输」,不仅会flow control(流量控制)、congestion control(阻塞控制)、connection setup(预先建立连线),此外还有报错功能;而UDP就是unreliable, unordered
的「单向传输」,而且是Connectionless的(TCP是Connection-oriented)!
可以看看:我之前的文章

https://ithelp.ithome.com.tw/upload/images/20211103/201354147k8mbveDrl.png
A:connectionless是不事先安排将消息从一个端点发送到另一端点。


下图是UDP的segment型式,前四个栏位为header部分,header每一栏位是16bits,这里逐一介绍:
https://ithelp.ithome.com.tw/upload/images/20211103/20135414upM6hja15N.png

  • source port:来源的port号
  • destination port:目的地的port号
  • length:整个segment(含header & payload)的资料长度,以Bytes记。
    注:length 最小是8 Bytes(因为header本身就占8Bytes),最大是65535Bytes(因为length是16bit数字=>2^16,实际上是更小)
  • checksum:检查错误用,使用2进位加法

下面那一大块写着"application data"的是主要内容,也叫(payload)

Checksum

稍微检查有无错误的机制,在UDP中如果发现错误直接丢掉此封包,不会报错(也会有漏网之鱼)
此外,世界上还有很多检查的算法,有的还有错误校正功能EX:哈明code
https://ithelp.ithome.com.tw/upload/images/20211103/201354146NuU2luIeb.png
参见:WIKI|Checksum
加完之後如果多一位,就把那多出的一位加在最右边,如此得到"sum",
sum 做 flip(0变1,1便0) 就是checksum。

名词解释:flipped bits:传送过程可能发生0变成1,1变成0的错误。
注:在UDP中,sender 与 receiver都会做相同的检查。

稍微说一下TCP

之後TCP会详细解释,这里稍微点一下。
因为TCP比较复杂,传输时需要4个数组(source IP 位址、source Port、目的地 IP 位址、目的地Port),
如此可以确认你开的socket是唯一的。
UDP 只要两个:目的地 IP 位址、目的地Port
https://ithelp.ithome.com.tw/upload/images/20211103/20135414Eu4fxYycJo.png

下图是多线程
https://ithelp.ithome.com.tw/upload/images/20211103/20135414B0DzoU7tdn.png

参见:
WIKI|传输层
Transport Layer


<<:  Ubuntu巡航记(3) -- Docker 安装

>>:  【第31天】番外篇-Windows + YOLOV4 本地端训练

PHP 扩展库(extension) 和 套件(package)

PHP extension 使用 C 语言遵循 PHP 介面开发让 PHP 功能增加的函式库, 一般...

DAY27 - 使用 Istio 的 Kiali 可视化後端的 Service Mesh

本文章同时发布於: Github(包含程序码) 文章为自己的经验与夥伴整理的内容,设计没有标准答案,...

Facade 外观模式

在 Structural patterns 当中,最後要来谈的是外观模式。 外观模式提供我们一个简单...

第26天~用电灯的照片代表连到感应器

开新档案- 布置一下design- 放入两张电灯照片当开关- Firebase网站连线- packa...

[Golang] Introduction to Variables

Decaliring Variables Let's update the hello.go exa...