网络传输流程图
在数据链路层有一个标识:每一台主机的唯一符:MAC地址。
MAC地址:计算机的网卡在出厂时就打上了一串数据:MAC 地址,其通常是唯一的。
所以局域网中发消息必须加上目的主机的MAC地址。
两台计算机通过 TCP/IP 协议通讯的过程如下所示:
数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器。
TCP/IP 通讯过程:多台主机 —— 局域网
假若有两台主机 A 和 B 发消息:
A主机发了一条消息给B主机,局域网上的所有主机都收到了,但是只有主机B接收这条消息。其他主机也收到了,但是直接丢弃了这条消息。收到消息之后只有B主机会响应数据给A主机。
A 主机在发消息的时候可能另外的一台主机也发消息,进而导致以太网着一根线上跑了很多的电线号。进而导致它们的电信号互相混合。发消息的两台主机发完消息之后立马做碰撞检测,若检测到没有碰撞,消息已经被对方接受了。若检测到碰撞了,则两台主机做等待处理,即碰撞避免。
局域网通信原理:
- 局域网内通信 A 主机和 B 主机通信,所有主机都收到了消息,但是所有主机都答消息丢弃了。
- 在任何时刻,局域网中只有一个人发消息,如果有多个人发消息,局域网中就会产生数据碰撞。所以每一台主机都有一个基本的功能叫碰撞检测。
- 碰撞检测完成一旦发现由有碰撞就应该执行自己的碰撞避免算法,算法的本质就是等待,在合适的时候再发消息。
如何保证每个消息收到:任何时候只有一个人说话。
局域网的数据碰撞:两个人或多个人同时说话。每个人都要做碰撞检测,一旦检测到则做碰撞避免。
数据包封装和分用
下面是数据封装的过程:
不同的协议层堆数据包有不同的称谓:
- 传输层:段
- 网络层:数据报
- 数据链路层:帧
当数据从上层到下层交付的时候,要进行封装,到了堆端之后要进行解包,在解包的时候要决定数据交给上层,还有一个动作叫分用。
数据必须通过物理层(硬件)。
-
封装:封装数据前加报头,包头后面被封装的叫有效载荷。
-
解包:每一层报头当中必须要提供一种在那个机制,将报头和有效载荷分离。
-
分用:解包交付的时候必须要明确要交给上一层的谁。确定交给谁的信息必须在当前层的报头当中包含。(确定信息在当前层的报头)
每一层的共性肯定也要有一个功能:将报头和有效载荷分离(下三层)。