基础概念
网络通信协议:网络中相同的格式约定
网络通信标准协议:统一的协议标准
IP地址:唯一定位网络中的主机,定位起点到终点
port端口:识别一台主机的进程
mac地址:定位相邻的设备
协议分层
对网络通信的整个过程进行了分层,每一层用什么协议,实现什么功能,应该提供什么服务,应该提供什么接口,方便形成标准,便于使用
OSI七层参考模型 | TCP/IP五层模型 | 功能 | 具体协议 |
应用层 | 应用层 | 负责应用程序之间的沟通 | HTTP/DNS/FTP |
表示层 | |||
绘画层 | |||
传输层 | 传输层 | 负责端与端之间的数据传输 | TCP/UDP |
网络层 | 网络层 | 负责地址管理急路由选择 | IP(路由器) |
链路层 | 链路层 | 负责相邻设备间数据帧传输 | Etherne(交换机) |
物理层 | 物理层 | 负责光电传输 | 以太网协议 |
网络传输基本流程
不同网络段数据传输,每一层都有自己的协议存在,数据在一边往下层层封装,发送给另一边往上层层解读,实现这边的数据传输给另一端。
数据的封装
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络络层叫做数据报 (datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上⼀个数据首部(header),称为封装(Encapsulation)。
- ⾸部信息中包含了⼀些类似于首部有多长,载荷(payload)有多长, 上层协议是什么等信息。
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。
网络字节序
字节序:cpu对数据在内存中的存取顺序
计算机的字节序取决于cpu架构
x86-64 小端
MIPS 大端
在网络通信中,使用大端计算机发送数据给小端计算机,会造成数据二义性
为解决这个问题,在网络上通信时,通信双方使用网络字节序
网络字节序是大端字节序