目录
网络发展
独立模式
网络互联
局域网LAN
广域网WAN
什么是协议
初识网络协议
协议分层
OSI七层模型
TCP/IP四层(或五层)模型
OSI和TCP/IP对比
网络传输流程
什么是报头
局域网通信原理
同网段的主机通讯
跨网段的主机通讯
数据包封装和分用
数据封装的过程
数据分用的过程
IP地址和MAC地址
IP地址
MAC地址
IP地址和MAC地址的感性理解
计算机的出现是要给人们提供计算任务的,人与人之间的生产和工作需要相互协作。比如:数据的获取,数据的整理,数据的分析以及应用,可能需要一大批人协同工作。人与人之间需要协作也就有了计算机之间相互协作的需求,这也能说明计算机网络发展的必然。
独立阶段的每个计算机之间是相互独立的。在这种模式下,假如有一项工作需要三个人共同完成,李华对数据进行汇总,小明对数据进行分析和筛选,而老王完成最后的测试和发布工作。在独立模式下,由于计算机之间相互独立,所以它们之间的工作模式就是串行的。如下图:小明在李华处理完工作前始终是等待状态,而老王在李华+小明处理工作期间一直处于等待状态。
网络互联的模式下,多台计算机连接在一起,完成数据共享。如下图所示:当多台计算机连接在一起后,每个人虽然使用的是各自的专属计算机,但是业务之间可以随时切换,共享数据由服务器集中管理。
当计算机数量越来越多的时候,就需要交换机和路由器连接在一起。局域网:是局部地区形成的一个区域网络,分布地区范围有限。
●交换机的主要功能是在局域网内部进行数据包的转发和过滤,以提高网络的传输效率和安全性。
●路由器的主要功能是在不同网络之间进行数据包的转发和路由选择,以实现网络之间的通信。
总的来说,交换机主要用于局域网内部的数据包转发和过滤,而路由器主要用于不同网络之间的数据包转发和路由选择。
如上图所示,寒假期间你组织高中班上的一批同学开展cs游戏比赛,他们分布在县城的各个地方,但是每个同学都有一个计算机,通过交换机和路由器连接在一起(当然这中间有很多细节,暂时不关心,重点理解什么是局域网),就可以愉快的进行游戏竞技了。
广域网:是连接不同地区局域网或城域网计算机通信的远程网。比如:将远隔千里的计算机连接在一起。
需要注意的是,所谓“局域网”和“广域网”只是相对的概念。上述场景中描述的广域网,也能将其看做一个较大的局域网。
“协议”是一种约定。
生活中的“约定”很好理解,比如你今天要和网友在公园见面,你们提前约定好了暗号。你先说“¥¥¥¥¥¥¥¥”,它回复“###########”。通过这个暗号,你们就能确定对方的身份。
计算机之间的传输媒介是光信号和电信号,通过“频率”和“强弱”来表示0和1这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。
计算机生产厂商有很多,操作系统有很多,计算机网络硬件设备也有很多。为了解决不同厂商之间生产的计算机能够相互顺畅的通信,就需要有人站出来,约定一个共同的标准,大家都遵守,这就是网络协议。
一台计算机的内部,也是一个小型的网络结构。计算机的体系结构中有网络,网络中有体系结构。
协议分层,将功能比较集中,耦合度比较高的模块分在一层(高内聚)。层与层之间一个改变不要影响其他层(低耦合)。每一层都要解决特定的问题。每一层都有自己匹配的协议,每一层协议解决当前层的问题。
通过一个例子理解协议分层:
示例场景:小明(A)和小红(B)都讲汉语,他们通过电话机进行通信。这个简单的通话场景,实际上在语言层将所说的汉语(汉语协议)以音频的方式通过听筒传递给电话机,在通讯设备层将音频转换为电信号(电话机协议)传递到对方的电话机,在转换为音频传递给对方。
场景变更1:通讯设备层保持不变,仅在语言层变更。小红(B)和小王(C)都讲英语。只要更改语言层的协议,就能让B和C完成通话。
场景变更2:语言层保持不变,仅在通讯设备层进行变更。小明(A)和小红(B)依然用汉语进行交流,但是通讯设备层改为用无线电。只需要更改通讯设备层。
需要注意的是,上述的例子中的协议只有两层,是为了方便描述。但是在实际的网络通信中会更加复杂,会有更多的层次划分。
●OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。
●OSI 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
●OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
●它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
●物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。
双绞线线序口诀:
●数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层。
●网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层。
●传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
●应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层。
计算机网络报头是指在计算机网络中传输的数据包中的一部分,用于描述数据包的一些基本信息。感性的去理解,就是类似快递单的东西。
两台局域网的主机能够直接通信。每一台机器都有网卡,每一张网卡都有自己的地址,MAC地址,能够标识其在局域网中的唯一性。
●在任何一个时刻,只允许一台主机在局域网中发送消息。否则会发生碰撞。
●假设Mac1给Mac7发送消息“我爱你!”,这个信息不仅仅Mac7收到。其余的“吃瓜群众2-6“也都看到了,但是通过分析知道这不是发送给自己的,就将其丢弃了。最后只有Mac7接受这个信息。
如下图所示,两台计算机通过TCP/IP协议通讯的过程:
●报文 = 报头+有效载荷。
如下图所示,跨网段的主机传输,数据从一台计算机到另一台计算机传输的过程中要经过一个或多个路由:
●不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
●应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装
(Encapsulation)。
●首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息。
●数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处。
IP协议有两个版本, IPv4和IPv6。下述的描述指的是IPV4:
●IP地址是在IP协议中, 用来标识网络中不同主机的地址。
●对于IPv4来说, IP地址是一个4字节, 32位的整数;通常使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.1.5 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255
MAC地址用来识别数据链路层中相连的节点:
●长度为48位, 即6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
●在网卡出厂时就确定了, 不能修改。 mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)。
IP地址:从“北京“ 去 “桂林” 旅游。终极目标。为我们未来的每一个阶段要做的选择,提供方向目标,进行路径选择。
MAC地址:上一站从哪来,下一站去哪里。“北京 -- 河南” “河南 -- 深圳” “深圳 -- 桂林”该类地址一直在变化。