我对数据如何在 TCP/IP 模型的各个层中流动感到困惑,所以我将告诉我我认为它会发生什么(使用电子邮件示例),如果您能指出我的错误,我将不胜感激。
假设 A 想通过 gmail 向 B 发送电子邮件。A 打开 gmail,写入文本并发送。此时,gmail 调用Application Layer,它将为 gmail 提供正确的电子邮件协议(在本例中是 IMAP,但它可以是 SMTP 或 POP3)。这些协议所做的就是将该电子邮件变成一个“盒子”,其中仅包含该电子邮件的二进制表示,其方式只有相同的协议可以解释:它可以被加密、压缩等。在此之前,没有“盒子”中的地址,只有纯数据,而“盒子”是单个数据单元(可以非常大)。“盒子”的名称是data。
然后,数据被提供给传输层(假设它使用 TCP),它将处理端口。我的困惑从这里开始。假设 gmail 选项卡使用端口 1000 来建立连接,IMAP 端口是 143。我读过传输层会在数据太大时将数据分成多个部分。在每个部分(称为段)中,它添加了一些东西:源端口和目标端口以及一些安全/完整性信息(校验和等)。
- 这些始发港和目的港是什么?
- 是将大文件分成几部分的传输层还是已经从应用层中分离出来?
然后是Internet 层,它获取分段并在其上添加源 IP 地址和目标 IP 地址,将分段转换为数据包。
- Internet 层如何找出目标 IP 地址?
最后,网络访问层使用 ARP 协议,找出目标 IP 的 MAC 地址,并将源 MAC 地址和目标 MAC 地址添加到数据包中,将它们转换为帧,然后使用以下协议在网络上物理发送,例如WiFi、以太网等