再识协议
上面的内容,我们只是懂了一些基本概念,还是达不到我们的目标,下面我们再次重
新理解协议和协议分层。 为什么要有 TCP/IP 协议?
• 首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和
内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:
SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自
的硬件中,通信的成本、问题比较少。
其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会
带来新的问题,有问题就得解决问题,所以需要新的协议咯
所以,为什么要有 TCP/IP 协议?本质就是通信主机距离变远了
什么是 TCP/IP 协议?
• TCP/IP 协议的本质是一种解决方案
• TCP/IP 协议能分层,前提是因为问题们本身能分层
TCP/IP 协议与操作系统的关系(宏观上,怎么实现的)
所以究竟什么是协议?
比特就业课
比特就业课
11 / 26
• 截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可
以试试了。
• OS 源代码一般都是用 C/C++语言写的。
下面,仔细看看下面的图
问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗?
回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,
用同样的代码实现协议,用同样的自定义数据类型,天然就具有"共识",能够识别
对方发来的数据,这不就是约定吗?
关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型
因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对
方的协议。
• 网络购物,快递单的例子
网络传输基本流程
局域网网络传输流程图
局域网(以太网为例)通信原理
• 首先回答,两台主机在同一个局域网,是否能够直接通信?是的
• 原理类似上课
• 每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址
认识 MAC 地址
MAC 地址用来识别数据链路层中相连的节点; • 长度为 48 位, 及 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:
08:00:27:03:fb:19) • 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的(虚拟机中的 mac 地
址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址). 后面我们详细谈论数据链路层的时候,会谈 mac 帧协议,此处我们做一个了解即可。
以太网中,任何时刻,只允许一台机器向网络中发送数据
• 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
• 所有发送数据的主机要进行碰撞检测和碰撞避免
• 没有交换机的情况下,一个以太网就是一个碰撞域
• 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标
mac 地址判定
• 这里可以试着从系统角度来理解局域网通信原理
初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程
报头部分,就是对应协议层的结构体字段,我们一般叫做报头
• 除了报头,剩下的叫做有效载荷
• 故,报文 = 报头 + 有效载荷
然后,我们在明确一下不同层的完整报文的叫法
• 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做
数据报 (datagram),在链路层叫做帧(frame). • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部
(header),称为封装(Encapsulation). • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是
什么等信息. • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理. 最后,在整体复盘一下:
在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交
付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进
行向上交付,下面是一张示意图。 数据包封装和分用
下图为数据封装的过程
跨网络传输流程图
网络中的地址管理 - 认识 IP 地址
IP 协议有两个版本, IPv4 和 IPv6. 我们整个的课程, 凡是提到 IP 协议, 没有特殊说明的, 默认都是指 IPv4
• IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址; • 对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数; • 我们通常也使用 "点分十进制" 的字符串表示 IP 地址, 例如 192.168.0.1 ; 用点
分割的每一个数字表示一个字节, 范围是 0 - 255;
跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或
多个路由器. 下面是一张示意图
首先理解一下 IP 地址的意义
• 为什么要去目标主机,先要走路由器?
• 目的 IP 的意义
对比 IP 地址和 Mac 地址的区别
• IP 地址在整个路由过程中,一直不变(目前,我们只能这样说明,后面在修正) • Mac 地址一直在变
• 目的 IP 是一种长远目标,Mac 是下一阶段目标,目的 IP 是路径选择的重要依
据,mac 地址是局域网转发的重要依据
提炼 IP 网络的意义和网络通信的宏观流程
IP 网络层存在的意义:提供网络虚拟层,让世界的所有网络都是 IP 网络,屏蔽
最底层网络的差异