互联网结构:TCP/IP协议栈
IP地址会改变,例如,如果您将笔记本电脑连接到家里的互联网,您将获得一个IP地址。如果您随后将其带到朋友家并连接到那里,您将获得另一个IP地址。 MAC地址 对分配给它们的设备是唯一的,每个网络接口都有一个MAC地址,包括手机、游戏机和无线网卡。当您考虑到一台计算机可以有多个网络接口时,这一点非常重要。例如,对于笔记本电脑,您可能有一个 cat-6 网络卡和一个无线网卡,一个处理BitTorrent,另一个处理网页浏览。当您收到消息时,应该将其发送到哪个网络接口?MAC地址意味着可以将消息定向到特定网络接口,即无线网卡或cat-6网卡。您很快就会看到我们如何在TCP/IP协议栈中使用MAC地址。
扩展:访问您的MAC地址
|
互联网上最常见的协议是传输控制协议/互联网协议(TCP/IP)。要通过TCP/IP网络发送数据,需要四个步骤或层。
层名称 | 描述 |
---|---|
应用程序 | 对要发送的数据进行编码 |
传输 | 将数据拆分为可管理的块,添加端口号信息 |
网络/互联网 | 添加IP地址,说明数据来自哪里以及去往哪里 |
链路 | 添加MAC地址信息,以指定消息来自哪个硬件设备以及要发送到哪个硬件设备 |
为了向您展示TCP/IP协议栈的工作原理,我们将使用以下数据作为示例。
Matt, Mark, Luke, John
应用程序层确保数据以接收方可以理解的格式发送。这意味着将数据格式化为适用于该应用程序的标准方式,例如HTTP、FTP等。在本例中,我们将使用XML标签包装每段数据。
<gospel>Matt</gospel><gospel>Mark</gospel><gospel>Luke</gospel><gospel>John</gospel>
传输层查看要发送的数据,并将其拆分为可以放入数据包中的块。然后它为每个块附加一个编号,指定该块的顺序,这使接收方能够在另一端正确地将数据重新组合在一起。然后,它将端口号附加到每个数据包,该端口号取决于正在使用的应用程序。在本例中,我们将数据发送到端口60。
- 将数据拆分为块并添加顺序号
- 添加端口号
传输头 | 数据 |
---|---|
:60 | 1/4 | <gospel>Matt</gospel> |
:60 | 2/4 | <gospel>Mark</gospel> |
:60 | 3/4 | <gospel>Luke</gospel> |
:60 | 4/4 | <gospel>John</gospel> |
网络层附加发送者的IP地址,以便接收者知道是谁发送的以及向谁发送确认消息。它还必须附加它要发送数据的宿主的IP地址,这样它就不会丢失!在本例中,我们发送到102.231.4.189,并从98.1.232.99发送。结合端口号,这创建了一个数据发送的套接字和数据发送到的套接字,即102.231.4.189:60。
- 附加发送者IP地址
- 附加目标IP地址以创建套接字
网络头 | 传输头 | 数据 |
---|---|---|
102.231.4.189 98.1.232.99 |
:60 | 1/4 | <gospel>Matt</gospel> |
102.231.4.189 98.1.232.99 |
:60 | 2/4 | <gospel>Mark</gospel> |
102.231.4.189 98.1.232.99 |
:60 | 3/4 | <gospel>Luke</gospel> |
102.231.4.189 98.1.232.99 |
:60 | 4/4 | <gospel>John</gospel> |
最后,链路层附加发送者和接收者的MAC地址,使数据包能够定向到IP地址主机上的特定网络接口。在本例中,发送者使用MAC地址为00-17-4F-08-5D-69的无线网卡,目标MAC地址为:11-22-33-44-55。
- 附加发送者MAC地址
- 附加目标MAC地址
链路头 | 网络头 | 传输头 | 数据 |
---|---|---|---|
11-22-33-44-55 00-17-4F-08-5D-69 |
102.231.4.189 98.1.232.99 |
:60 | 1/4 | <gospel>Matt</gospel> |
11-22-33-44-55 00-17-4F-08-5D-69 |
102.231.4.189 98.1.232.99 |
:60 | 2/4 | <gospel>Mark</gospel> |
11-22-33-44-55 00-17-4F-08-5D-69 |
102.231.4.189 98.1.232.99 |
:60 | 3/4 | <gospel>Luke</gospel> |
11-22-33-44-55 00-17-4F-08-5D-69 |
102.231.4.189 98.1.232.99 |
:60 | 4/4 | <gospel>John</gospel> |
然后可以将这四个数据包发送到互联网,它们包含足够的信息来
- 到达目的地(来自网络层和传输层的套接字)
- 找到正确的网络接口(来自链路层的MAC地址)
- 找到正确的服务(来自传输层的端口号)
- 以正确的顺序重新组装(来自传输层的顺序信息)
- 传递预期消息(来自应用程序层的数据)
扩展:UDP TCP/IP在确保您请求的数据正确发送以及您发送的数据被接收方面做得很好。但是,正如您所看到的,有时数据可能会在互联网上丢失,或者数据包到达的顺序与您发送的顺序不同。对于像电脑游戏或电信这样的东西,您不能等待慢速数据包找到它在互联网上的路径。这会导致语音消息变慢,电脑游戏变得无响应。还有另一种名为UDP的协议,它不要求确认数据包是否已接收。这种协议在网络电脑游戏和语音 over IP 中被大量使用,因为丢失一个或多个数据包并不会对游戏体验或语音对话产生太大影响。当您玩电脑游戏时,您可能会看到类似“丢失数据包 = xyz”的信息,或者在进行网络会议时,语音或视频的质量可能会短暂下降。这是数据包丢失的实际情况,也是使用UDP的结果。 |
练习 TCP/IP 协议栈 命名并描述 TCP/IP 协议栈的四个层次。 答案
IP地址和端口号组合在一起构成什么? 答案 套接字 在TCP/IP协议栈中,MAC地址的作用是什么? 答案 MAC 地址是分配给网络设备的唯一标识符。链路层使用它将消息定向到指定 IP 地址的特定网络接口。 展示发送以下数据的步骤
答案
|