现在进入了传输层,是OSI(Open Systems Interconnection )模型的第四层,送的那一端负责把应用层丢下来的Message 拆分成Segments并往下传到Network Layer;而收到的那一端就负责重组(reassembles)然后往上传到应用层。
协定上多使用TCP、UDP(其他还有很多)
- 提供服务:
Connection-oriented communicationSame order deliveryReliabilityFlow controlCongestion avoidancePort MultiplexingTransport Layer
Multiplexing 与 DeMultiplexing
参见:WIKI|Multiplexing
宅学习|多路複用

我们需要IP 与 Port 才能把讯息送到正确的socket
TCP 与 UDP 在Multiplexing上的差别
TCP 比 UDP 複杂很多,TCP 提供可靠、有序的「双向传输」,不仅会flow control(流量控制)、congestion control(阻塞控制)、connection setup(预先建立连线),此外还有报错功能;而UDP就是unreliable, unordered
的「单向传输」,而且是Connectionless的(TCP是Connection-oriented)!
可以看看:我之前的文章
A:connectionless是不事先安排将消息从一个端点发送到另一端点。
下图是UDP的segment型式,前四个栏位为header部分,header每一栏位是16bits,这里逐一介绍:
注:length 最小是8 Bytes(因为header本身就占8Bytes),最大是65535Bytes(因为length是16bit数字=>2^16,实际上是更小)checksum:检查错误用,使用2进位加法
下面那一大块写着"application data"的是主要内容,也叫(payload)
Checksum
稍微检查有无错误的机制,在UDP中如果发现错误直接丢掉此封包,不会报错(也会有漏网之鱼)
此外,世界上还有很多检查的算法,有的还有错误校正功能EX:哈明code
参见: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
下图是多线程
参见:
WIKI|传输层
Transport Layer