“段”在通信协议、数据库和内存管理中的概念

我在通信协议、数据库和内存管理中都遇到了这个概念,所以想做一下分析和对比。“段”(segment)基本特征都是一组连续的空间或数据。我觉得栈也是一种特殊的段,即只能先进后出的段。

在TCP/IP参考模型中,如果一台主机的某个应用程序要进行信息传输,要发送的数据首先在应用层进行封装,如设置Appl首部,然后在传输层进行封装,加TCP首部。


TCP封装会对数据进行分段,形成TCP“段“。这是因为物理通信网络有传输上限,所以数据链路层有最大传输单元(MTU)的规定,由硬件规范规定,如以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492个字节。
TCP每次传输的最大数据分段大小(MSS),是在TCP建立连接的三次握手时确定的。MSS在每次握手的SYN数据中,MSS值为MTU值减去IPv4 Header(20 Byte)和TCP header(20 Byte)得到。如果一方不接受另一方的MSS值则定为默认值536byte(Internet上最小的MTU,链路层网络为x2.5时为576)。
如果传输层是UDP封装,因为UDP没有握手阶段,就没有MSS,所以UDP数据报是不分“段"的,当长度超过了MTU时,就会在网络层进行IP分片。而TCP段加上IP首部后的长度不可能超过MTU,因此TCP段就不需要在网络层进行IP分片了。

在数据通信各层的数据名称:
1.报文(message)
报文包含了应用层的完整的数据信息。
2.数据段(segment)  3.数据报(datagram)
传输层的信息单元。数据报是面向无连接的数据传输,如传输层TCP的分组叫做数据段,UDP的叫做数据报。
4.数据包(packet)
数据包是网络层传输的数据单元。也称为IP包,包中带有足够寻址信息(IP地址),可独立地从源主机传输到目的主机。
5.帧(frame)
帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧,帧根据MAC地址寻址。
6.bit流(bit)
bit是在物理层的介质上直接实现无结构bit流传送的。

 

下图是各层的解封分用:

 

软件应用一般只要考虑应用层的封装即可,TCP及以下的封装,一般不需要自己动手。
抓包(packet capture)即拦截查看网络数据包。网络层的路由器进出的数据是真正意义上的包,不过抓包的“包”可以泛指某一层的数据,抓取的越是下层的数据,包含的信息越多,但分析相对越复杂一些。

下篇再复习数据库和内存管理中的段。。。

posted @ 2021-05-24 17:39  ltyan  阅读(472)  评论(0)    收藏  举报