目录
一.网络发展
二.网络协议初识
1.分层
2.网络为什么分层
3.OSI七层模型
4.TCP/IP五层(或四层)模型
5.操作系统体系结构和网络协议栈的关系
三.网络传输的大致流程
1.同一个局域网内部
2.数据包封装和分用
3.跨网络传输
四.网络中的地址管理
1.认识IP地址
2.认识MAC地址
3.MAC地址和IP地址用途
![](http://img.e-com-net.com/image/info8/c1150f610f5c43c6ac98bfc095bf6cac.gif)
一.网络发展
独立模式: 计算机之间相互独立;
但是人与人之间需要交流和合作,所以计算机之间的沟通也就是必须的了。
![网络基础1_第1张图片](http://img.e-com-net.com/image/info8/41959bc833604549a6656a1cef3453dc.jpg)
网络互联: 多台计算机连接在一起, 完成数据共享;
![网络基础1_第2张图片](http://img.e-com-net.com/image/info8/491ef3ddbd694789a1cd37ab1d2bf27d.jpg)
局域网(LAN): 计算机数量更多了, 通过交换机和路由器连接在一起;
![网络基础1_第3张图片](http://img.e-com-net.com/image/info8/d947558b11fe41aa9125892c4fbd6b87.jpg)
广域网(WAN): 将远隔千里的计算机都连在一起;
![网络基础1_第4张图片](http://img.e-com-net.com/image/info8/e6c81d2471f3491f95f7c7dba24295f9.jpg)
所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如, 我们有 "天朝特色" 的广域网, 也可以看做一个比较大的局域网.
二.网络协议初识
1.分层
![网络基础1_第5张图片](http://img.e-com-net.com/image/info8/d702c5b6c6f544b0b7f9878339410c72.jpg)
- 上述途中打电话的例子,我们虽然是通过电话间接互相沟通的,但是我们认为我们之间是直接沟通的。
- 视角换成电话,电话和电话之间也是直接互相沟通的。
- 即使我们换了打电话的设备,我们依旧没有感觉到有什么差异,因为我们无需关心设备的原理。
- 即使我们换了通讯语言,通信设备也不会有什么差异,因为通信设备不需要关心通信语言。
这就是分层带来的好处:
- 软件分层以后,每一层都只需要关注自己同层的功能,只使用下层的接口。
- 任何一层出现了问题,都不会直接影响另外一层。
- 做到了高内聚,低耦合。
2.网络为什么分层
网络的出现是为了解决远距离计算机通信。
我们直到网络的分层协议栈是一种解决远距离传输的问题的方案。
那么网络分层的原因,必然和其解决的问题有关。
当两个计算机传输距离变得很远的时候,在数据传输时会出现以下的问题:
- 网络传输数据的类型多种多样,如何实现功能的适用于和多样。
- 如何保证数据的长距离有效,稳定的传输。
- 如何定位一个远距离的主机,如何转发,和找到远距离的一个主机。
- 如何发送数据信号即,01010101.
这些问题不是单一的,是有上下关系的,但是归根结底是传输距离远造成的。
有了对应的问题才会有对应的解决方案。因为问题是分层的,那么决绝方案也必然是分层的。
3.OSI七层模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
- 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机。
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输。
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
- 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解。
![网络基础1_第6张图片](http://img.e-com-net.com/image/info8/1cafff9eaeb14904bd263bf4fcf7d5d7.jpg)
4.TCP/IP五层(或四层)模型
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.
![网络基础1_第7张图片](http://img.e-com-net.com/image/info8/f3e84fbcba654f2f9960a4ba9eec6d19.jpg)
物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.
一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
- 对于一台路由器工作在网络层, 它实现了从网络层到物理层;
- 对于一台交换机工作在链路层, 它实现了从数据链路层到物理层;
- 对于集线器工作在物理层, 它只实现了物理层;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发),或者应用层的功能。
5.操作系统体系结构和网络协议栈的关系
我们刚刚看到了网络协议栈的层状结构,但是这样的结构,他是存在什么地方的呢?他的载体是什么?
![网络基础1_第8张图片](http://img.e-com-net.com/image/info8/4b84c083e2654050807d005da8db0a00.jpg)
说明:
- 网络本质是操作系统的一部分。
- 为什么网络可以单独拉出来作为一门学科,因为在所有的不同款的操作系统中,网络的实现都是一样的,严格遵守TCP/IP的模型。
- 为什么最终定下来的网络协议模型叫做,TCP/IP模型而不是其他名字呢,也是因为整个网络模型中最重要的核心,传输层和网络层,是可以嵌入到才做系统内部的,网卡可以有不同的厂商,有不同的驱动,但是最终在操作系统内部,不管是什么操作系统他们对网络的管理都是一样的。
- 在linux下一切皆文件,那么在操作系统看来,网卡这种资源也是文件,那么对网络的管理和操作,必然会以对文件的操作体现出来。
三.网络传输的大致流程
1.同一个局域网内部
同一个局域内部的主机即使没有连接到网络可以直接通信吗?可以。
大家有没有玩过一款经典的像素游戏:元气骑士。
这个游戏在之前比较早的时候,推出过局域网联机的功能,即使没有连通过网络,只要其中一个手机打开热点,另一个手机连接上,那么两个手机就可以联机玩了。利用的就是局域网通信原理。
局域网通信的原理:
某一台主机A想给另一台主机B发送信息的时候,不是单独指定给B主机发送信息,A也做不到单独给B发送信息,而是将信息发送给局域网内部的所有主机,每一个主句都会收到A发送的数据,但是由于A在给信息上表明了发送的对象,即使局域网内部的主机都受到了信息,但是他们看到信息不是给他的时候,就会将信息给自动屏蔽掉。在A和B看来,就是单独A和B在通信了。
![网络基础1_第9张图片](http://img.e-com-net.com/image/info8/e56db347a7584e09a0a4738113b29271.jpg)
TCP/IP通信过程:
![网络基础1_第10张图片](http://img.e-com-net.com/image/info8/783ebe0eb8c54e80bc2b1e84a086f22b.jpg)
2.数据包封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.
![网络基础1_第11张图片](http://img.e-com-net.com/image/info8/b8527ee192c843aa9c3563a6b676ec89.jpg)
下图为数据分用的过程:
![网络基础1_第12张图片](http://img.e-com-net.com/image/info8/5db4d71330cc4449becfa8f1982d2c04.jpg)
数据传输:
![网络基础1_第13张图片](http://img.e-com-net.com/image/info8/5b841e8553864b6387ee0674a444464c.jpg)
说明:
- 每一层,都会把上层交付给自己的数据,作为自己的有效载荷。
- 每一层,都会有自己的协议首部。
- 对应层,报头+有效载荷=自己要发送的数据,也就是封装。
- 在逻辑上,同层协议,都认为自己在和对方的同层协议在通信。
- 同层协议,能够相互认识对方的报头。
- 每层协议,都要具有将报头和有效载荷分离,将有效载荷交付给上一层的哪一个具体协议,这两个能力。
3.跨网络传输
跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
![网络基础1_第14张图片](http://img.e-com-net.com/image/info8/732384a451a84385b572acf38caed8bd.jpg)
- 在IP协议之上的协议封装都是和局域网内通信一样的,在添加IP协议报头的时候,会添加目标主机的IP地址。
- 路由器可以连接多个局域网,所以路由器必然数据各个局域网,所欲路由器里面会有多个IP地址。
- 路由器里面会有一张路由表,记录了该路由器所在局域网的都有哪些。
- 主机虽然虽然无法直接通过IP地址,但是主机可以通过对比直到,目的IP的主机在不在自己的局域网内部。如果不在自己的局域网的内部,将数据报文交给路由器,路由器查自己的路由表,再有路由表转发给其他的局域网。
- 路由器就充当了连接各个局域网的桥梁。
- 链路层的实现可能会有差异,有可能是以太网,令牌环网,无线局域网,但是在IP层以上看来是没有差异的,这里又体现了分层带来的好处,屏蔽下层差异。
四.网络中的地址管理
1.认识IP地址
IP协议有两个版本, IPv4和IPv6. 以后, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4。
IPv4地址,是一个4字节(32位)的整数,能够标识的主机,也就42亿多,实际上全球的网络设备,在就超过了这个数目,所以最治标治本的方法就是扩展IP地址的位数,然后就有了IPv6。IPv6地址是一个128位整数。能够标识的主机数远远多于IPv4。但是IPv6的普及并不是非常好。
我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
2.认识MAC地址
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
3.MAC地址和IP地址用途
IP地址在跨网络的传输中始终,目标主机的IP地址,我们称为目的IP,目标主机的MAC地址我们成为目的MAC。
在整个网络传输的过程中,目的主机的MAC主机的实惠一直变化的,但是目的IP地址是一直不变的。MAC地址更像是下一站的地址,IP地址更像是目标地地址。
举例:
西游记中,师徒四人,每到一个地方,有人问唐僧从哪里来的,到哪里去,唐僧都会回答:”贫僧从东土大唐,前往西天拜佛求经“,如果有人问唐僧那你上一站从哪里来,下一站又要往里走,唐僧说:”上一站刚从狮驼岭逃出来,下一站应该去女儿国了“。
这里的西天就是唐僧的目的IP,下一站的吗v而过就是唐僧的目的MAC地址。