协议
协议就是网路协议,代表通信计算机双方必须遵守的一种约定
协议分层
- 分层的原因:网络协议比较复杂,需要划分成简单的多层
- 分层的好处:
- 拆分成多个层相当于拆分成多个模块。同时降低了整个系统的耦合程度
- 根据实际需要,随时可以替换其中的某一层协议
OSI七层模型
按照服务/接口/协议对整个复杂的网络通信环境进行层次划分,形成标准,实现网络互联
应用层-表示层-会话层-传输层-网络层-链路层-物理层
- OSI模型分的太细,比较麻烦,所以基本上只存在于图书中
- 分层:
- 7 应用层 :针对特定应用的协议
- 6 表示层 :设备固有数据格式和网络标准数据格式的转换
- 5 会话层 :通信管理,房租额建立和断开通信连接
- 4 传输层 :管理两个节点之间的数据传输(负责可靠传输)
- 3 网络层:地址管理与路由选择
- 2 数据链路层:互联设备之间传送和识别数据帧
- 数据帧:数据链路层的协议数据单元,它包括三部分:帧头,数据,帧尾。
- 1 物理层:以高低电压,灯光闪灭(光电信号)描述连接器和网线的规格
TCP/IP五层(或四层)模型
四层:不包括物理层
- 5 应用层:负责应用程序之间的数据沟通;HTTP,FTP,DNS…
- 4 传输层:负责端与端之间的数据传输;TCP/UDP
- 3 网络层:地址管理与路由选择;IP;路由器
- 2 链路层:相邻设备之间的数据传输;Ethernet;交换机
- 1 物理层:负责光电信号的传输;以太网协议;集线器
一般而言
- 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容
- 对于一台路由器,它实现了从网络层到物理层
- 对于一台交换机,它实现了从数据链路层到物理层
- 对于集线器,它只实现了物理层
网络传输
网络传输流程
数据流通的方向是实线的方向,虚线的是逻辑上的顺序。
数据的封装和分用
上下层协议之间交互数据的时候进行的操作,包括封装和分用。
从上到下的顺序:应用层,传输层,网络层,链路层,物理层
网络中的地址管理
两种:IP,MAC
两种地址表示方式的原因:IP和MAC地址的发明者都不知道对方的存在
IP地址:IPv4,IPv6
- IP地址:网络中用来唯一标识一台主机
- 端口:在一台主机上唯一标识一个进程
- IPv4:uint32_t IP地址不够用
- IPv6:uint8_t addr[16] 不向前兼容IPv4,因为成本问题没有推广起来
- 通常还会使用点分十进制来表示IP地址,例如:192.168.12.86;用点分割的每个字表示一个字节,范围是0-255;
MAC地址
- MAC地址用来识别数据链路层中相连的节点
- 长度为48位,即6个字节,一般用16进制数字加上冒号的形式表示:(12:12:12:01:cf:12)
- 网卡出厂时就已经确定,不能修改,MAC地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突,也有些网卡支持用户配置mac地址)
网络字节序
字节序:CPU在内存中对数据进行存取的顺序
主机字节序:
大端字节序:低地址存高位
小端字节序:低地址存低位
主机字节序取决于CPU的架构:X86-小端 MIPS-大端