目录
为了让不同厂家之间的设备能够相互兼容,所以提出了OSI参考模型。
OSI 模型分为七层,每层都负责不同的功能。

会话层提供的进程 ID,在每个进程中都是不一样的,即使是同一个应用开了多个。
例:打开多个「火狐」,查看每个「火狐」的进程 ID。

虽然提出了 OSI 参考模型,但是现在并没有使用,而是使用 TCP/IP 协议栈,每层都有不同的协议。协议栈可以理解为多个协议的集合。


常见协议:HTTP、Telnet、FTP ...
常见协议:TCP、UDP ...
TCP 传输效率低但可靠,UDP 传输效率高但不可靠
TCP:可靠的传输层协议,确保数据传输完整。建立「三次握手」(在传输数据前的确认机制)。

源端口号、目的端口号
端口号取值范围:0 ~ 65535(2^16)
端口分为知名端口(1 ~ 1023)(已分配给常用协议)、非知名端口(1024 及以上)(未分配)
一般来说,客户端访问应用服务,源端口为非知名端口的随机值。
序列号
用于表示一个 TCP 报文,一个 TCP 会话中第一个 TCP 报文的序列号为随机值。
确认应答号
用于确认已收到报文,只有在确认时才有数值,否则为 0。
标志位
每个标志位占 1 比特,默认为 0。
「三次握手」步骤(客户端向服务器发送数据为例)
1、客户端发送报文,其中 SYN 置位(置为 1)(SYN:请求建立连接的报文,只有主动方才置位),序列号为随机值(假设为A),确认应答号为 0。
2、服务器收到报文,发送回应报文(ACK 置位)(ACK:确认收到报文则置位),SYN 置位(数据的通信是双向的),序列号为 随机值(假设为B),确认应答号为 A+1。
3、客户端回应 PC2 请求的建立连接,ACK 置位,SYN 不置位(已不是主动方),序列号为 A+1,确认应答号为 B+1。
「三次握手」结束后的传输数据(HTTP 为例)
1、客户端将「三次握手」最后一次发送的数据原封不动发送给服务器并附上 HTTP 请求。
2、服务器回应客户端,ACK 置位(确认收到请求),序列号 = 客户端的确认应答号,确认应答号 = 客户端的序列号+收到数据的字节数
3、客户端回应服务器,ACK 置位,序列号 = 服务器的确认应答号,确认号 = 服务器的序列号 + 收到数据的字节数
UDP:无法保证数据传输完整,不会确认对方是否收到数据。

为报文头部加上 IP 地址
常用协议:IPv4
IPv4 报文格式:

版本号:区分 IPv4 还是 IPv6
协议:区分 TPC 还是 UDP
头部长度:IP 头部的长度,最少固定 20 字节,可选长度为 0~40 字节
总长度:整个数据的长度 - 头部长度
生存时间:每传给一个设备生存时间 -1,防止环路
为报文头部加上 MAC 地址,只负责链路之间的传输
常见协议:ARP

MAC地址:烧录在设备上的物理地址,本地有效,共 48 比特,由十六进制表示,每 24 比特为一段,第一段标识厂商,第二段由厂商分配。
为什么有 IP 地址了还需要 MAC 地址?
1、因为 IP 地址只能作用于网络层。
2、网络分为「点到点」和「多路访问」,当网络为多路访问时,需要额外的地址来帮助访问。
传输数据时,MAC 地址起主要作用(随着链路而改变),IP 地址起辅助作用(不变)。(铁打的 IP,流水的 MAC)。

当传输数据时,需要对报文头部封装 MAC 地址,若本地的 ARP 表中没有对应 IP 的 MAC 地址信息,则会发送 ARP 获取该信息。
ARP 表:

查看 ARP 表:
display arp
ARP 过程:
当 R1向 R2 发送数据时,会先查看 ARP 表中有没有 R2 的 IP 所对应的 MAC 地址。


若没有,则 R1 会发送一个 ARP 的广播,寻找 R2 的 IP 所对应的 MAC 地址。

查到之后,将此 MAC 地址放入 ARP 表中对应的 IP 之后。

当 R2 收到 R1 发来的报文之后,也会将对应的 IP 与 MAC 放入自己的 ARP 表中。