Linux初识网络
网络"协议"
"协议" 是一种约定
计算机之间的传输媒介是光信号和电信号
. 通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式.
而计算机的生产厂家有很多,操作系统和各种网络设备也各式各样,不同厂商之间的软件和硬件之间的通信协议如何保持一致,这时候就得权威机构来预定一个共同的通信标准数据格式,各个厂商都来遵守,就有了网络协议
协议分层
以打电话为例子
语言之间的通信是一种协议,而通信设备之间的通信也是一种协议,这里把协议分为两层,
而实际的网络通信会更加复杂,需要更多层次
- 分层可以让人们探讨和理解每层协议的许多细节
- 可以降低各个层的之间的耦合
- 可以把复杂的网络划分成为更容易管理的层
OSI七层模型
七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据输
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
七层模型从上到下依次是:
- 应用层:协议有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP
- 表示层:数据的表示、安全、压缩。格式有,JPEG、ASCll、DECOIC、加密格式等
- 会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会话
- 传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层
- 网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP
- 数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。
- 物理层:建立、维护、断开物理连接。
但是七层模型分的太多,太过于细节,很复杂也不太实用,所以我们通常学习TCP/IP四层模型
TCP/IP五层(四层)模型
TCP/IP是一组协议的代名词
,它还包括许多协议,组成了TCP/IP协议簇
.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层:负责
光电信号的传递方式
,比如现在以太网同用的网线(双绞线),早期以太网采用同轴电缆,而光纤,WIFI等都属于物理层的概念。物理层的能力决定了最大传输速、传输距离,抗干扰性等,集线器(Hub)工作在物理层
- 数据链路层:负责设备之间的
数据帧的传送和识别
,例如网卡设备的驱动
,帧同步(
就是说从网线上检测到什么信号算作新帧的开始),冲突检测
(如果检测到冲突就自动重发),数据差错校验
等工作,有以太网,令牌环网,无线LAN等标准,交换机(Switch)工作在数据链路层
- 网络层:负责
地址管理和路由选择
,例如在IP协议中,通过IP地址来表示一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器工作在网络层
- 传输层:负责
两台主机之间的数据传输
,如传输控制协议(TCP)
,能够确保数据可靠的从源主机发送到目标主机 - 应用层:负责应用程序间够用,如简单电子邮件传输(SMTP),文件传输协议(FTP),网络远程访问协议(Telent)等,网络编程主要针对应用层
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
网络传输基本流程
两个计算机之间的通信之间是发送数据包
- 数据包=包头+数据(有效载荷)
- 几乎所有的协议,都要解决包头和有效何在的分解问题
- 自底向上,需要确认自己的有效载荷要交给上层的哪个协议,确认分离后,将自己的有效载荷交付给上层的协议,就叫做分用
- 局域网中,所有的主机可以直接通讯,在数据链路层中,有一个mac地址,
网卡硬件地址
,或者序列号
,全球唯一
的 - 在传输过程中,将
目标主机的mac地址
添加到数据包的包头
中,在目标主机解包
过程中分析mac地址
如果是本机的mac地址,就继续解包,如果不是就丢弃
。
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
数据包封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做
段
(segment),在网络层叫做数据报
(datagram),在链路层叫做帧
(frame) - 应用层数据通过协议栈发到网络上时,每层协议都要加上一个
数据首部
(header),称为封装(Encapsulation) - 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理
数据封装的过程
数据分用的过程
网络中的地址管理
IP地址
IP协议有两个版本, IPv4和IPv6
- IP地址是在IP协议中,用来
标识网络中不同主机的地址
- 对于IPV4来说,IP地址是一个4字节,32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
MAC地址
- MAC地址用来识别数据链路层中相连的节点
长度为48位
, 即6个字节
. 一般用16进制数字加上冒号的形式来表示- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).