学校网站建设培训方案模板,wordpress伪静态301错误,游戏工作室招聘信息,杭州大的做网站的公司#xff08;本文是网络的宏观的概念铺垫#xff09;
目录
计算机网络背景
网络发展
认识 协议
网络协议初识
协议分层
OSI七层模型
TCP/IP 五层(或四层)模型
报头
以太网
碰撞
路由器
IP地址和MAC地址
IP地址与MAC地址总结
IP地址
MAC地址 计算机…本文是网络的宏观的概念铺垫
目录
计算机网络背景
网络发展
认识 协议
网络协议初识
协议分层
OSI七层模型
TCP/IP 五层(或四层)模型
报头
以太网
碰撞
路由器
IP地址和MAC地址
IP地址与MAC地址总结
IP地址
MAC地址 计算机网络背景
网络发展 是最开始先有的计算机计算机后来因为多项技术的水平升高逐渐的计算机变的小型化、高效化。后来因为计算机其本身的计算能力比较的快速
独立模式计算机之间相互独立。 如有三个人每个人做的不同的事物但是是需要协作的完成。 而这三个人所做的事是需要进行协作的然而刚开始因为每一台计算机之间都是互相独立的。所以前面的人处理完了就需要将数据内容放入到光盘中等才能交给下一个人。传输具有人为操作这样效率就会十分的低下所以在这样的需求下也就有了网络。
网络互联多台计算机连接在一起, 完成数据共享。 于是想到了将三人的计算机链接到一个主计算机上于是前一个人完成将数据推送到主计算机上然后下一个人来获取。于是便提高了效率这就是初步的网络雏形。
局域网LAN计算机数量更多了, 通过交换机和路由器连接在一起。 后来随着协作人数的增加计算机数量的大量增加于是多台计算机直接通过交换机和路由器连接在一起。 广域网WAN将远隔千里的计算机都连在一起。 每一个协作群体都有一个局域网但是有时候需要协作群体之间进行协作于是有了广域网WAN将远隔千里的计算机都连在一起。 局域网与广域网只是为了在学术上而区分出来的但是从技术的角度。其二者只是一个相对的概念无非就是主机数变的更多了并没有明显的局域网和广域网的区别。但是由于不同场景下的描述问题所以这个概念也是重要的。 局域网与广域网看网络规模。 认识 协议 协议 本质上就是一种约定。通过这种约定来让我们在某些通信场景当中达到更快速的进行通讯的目的。 #问为什么需要协议这个东西 主要原因是因为如果我们加了网络两台主机的通讯的距离就变得非常得长了主机A想向主机B发送数据。数据也是有类别的如有一些数据就是单纯的数据用户信息有一些数据具有特殊的含义比如说有一些数据是想让目标主机进行数据的删除、控制对方的主机等所以说数据是具有类型的。 就如同文件文件 文件中数据和代码内容 文件的属性信息其本质上在计算机的体现是都是0、1。但是需要我们在认知的时候我们需要知道数据是具有类别的所以因为数据是具有不同类别的所以对应不同类别的数据需具有不同的处理方式。 为了能够快速的让两个相隔千里之外的计算机能够区分出数据是哪些类别每一种特别类型种的某一些特别的数据的含义所以就需要通过以提前约定好的方式来减少双方通讯成本的问题。 计算机之间的传输媒介是光信号和电信号. 通过 频率 和 强弱 来表示 0 和 1 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式。理解协议的一个小故事 假如一天用手机打电话变的很贵很贵然后我们出门在外需要向家里进行告知自己情况的时候。 我们与家里的父母规定 电话响一声我们过的和好不用担心也就是报平安。电话响二声我们的资金不够了需要一些资金。电话响三声我们有紧急事情需要进行电话的沟通。 我们通过在离家之前与家里人进行了约定之后这种电话响几声的约定就是所谓的达成的协议。之所以立这么一个协议就是因为这样可以减少我们的成本也就是此故事当中的电话费。 如果我们没有进行约定那么如报平安就需要进行口头上的一大堆话对于都是报平安行为这就是浪费资源的、效率很低的。如果我们提前约定好那么我们只需要发一个很简单的数据对方就能立即的知道我们表达的是什么。对方可以按照最短的预期做出行为 —— 通讯更高效 #问是不是只需要通信的两台主机, 约定好协议就可以了? 并不是这样的就比如不同语言的人约定后使用1来表示干什么事情但是由于二者的语言不一样所以就导致了虽然传递的是同一个约定的协议但是对方却不能理解。 如此虽然本质上的约定是成立了但是表达发送层面上根本无法识别对方的含义。
计算机生产厂商有很多。计算机操作系统, 也有很多。计算机网络硬件设备, 还是有很多。#问如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 所以约定了一个共同的标准大家都来遵守这就是网络协议软件维护 —— 也就是行业标准。硬件标准、软件协议二者缺一不可 Note 只要网络存在网络就是一个一定具有硬件上有标准、软件上有协议的一个结合体才能正常的进行于是才能在全球将网络的范围扩大。 网络协议初识
协议是由软件来维护的约定 1、计算机内部是可以存在多种协议的所以操作系统需要对多种协议进行管理 —— 先描述再组织。所以所有的协议约定在操作系统内核内核层面上就是结构体对象。 2、协议的本质就是软件软件是可以进行分层的。 软件分层 C中所写的各种类所写好的类就可以在main函数中进行创建对象然后使用类当中的方法这就是一种软件分层。main函数里的创建对象就叫做使用对象编写类的时候类内部就叫做方法的具体实现所以就相当于将方法的实现和使用的这两层就叫做软件层。 Linux中的一切皆文件Linux内核为了维护文件看待方式的通用性所以将所有的文件都看作对应的struct_file对象即使用内部包含的指针来指向底层的不同的方法。这也叫做软件层。 多态的继承关系有基类、有派生类每一层继承的体系就是可以理解为一个软件层。 Note 软件是可以被分层的。 3、所以软件在设计的时候就是被层状的划分的
协议分层
现实生活中的分层打电话 在技术层面上A与C并不是直接的在沟通交流而是A通过将说话的声音交给了手机然后A的手机再和C的手机进行通讯然后C的手机通过将A手机发过来的信息进行解码然后转换为语音播放给C。 日常的打电话就是一种分层的概念 人的语言层利用语言的沟通。底层是两部手机通过它们的语言在互相通讯。所以可以说人打电话至少是两层协议两层通讯的机制。 而当有两个外国人使用手机打电话的时候相当于将上层协议切了切成由汉语体系变为英语体系。这个时候并不影响下层协议于是双方依旧可以使用电话进行通讯。 然而如果将底层的手机通讯变为了无线电通讯或者再如何的交换都不会影响上层语言的沟通。
从此我们可以理解一个问题 #问为什么要划分为层状结构 场景复杂。比如说两个人很闲咸鱼就坐在一起但是说话还需要人来传达这是不合理的。 比如说两个人很忙老板需要沟通一些事以为太忙碌了所以让助手进行信息的传达这就是合理的。
功能解耦 —— 每一层解决不同的问题便于人们进行各种维护。人打电话电话与人的关注不同人想着传达什么信息电话想着这么传递信息。这其中人和电话关注的点是不同的但是必须是人和电话共同来完成打电话这么一个行为 —— 所以软件分层的时候就让同层对应的角色关注于自己本层的功能。不同层的关注不同的然后通过接口式的互相调用。 便于维护电话出问题就修电话与上层无关。
由于层状结构的优点所以网络协议也是层状的。 通讯的复杂本质上是和距离成正相关的 #问复杂体现在哪里—— 正是协议栈要解决的问题。 通讯范畴
丢包 —— 发出的数据对方没有收到。定位问题 —— 如何找到对应的主机。解决下一跳主机的问题 —— 主机信息传递中所经路由器。所以只要大方向上完成以上三个问题最后数据才能够被对方接收到。于是对于这各种问题在软件分层当中一一解决。但是还有一个问题就是可以这些信息是干什么的所以我们需要表明目的 —— 数据处理。
应用范畴
如何处理数据 —— 将收到的信息做处理。Note 所以单纯的将对应的数据从A主机运送到B主机我们需要以下的层数 这个对应的层数划分就是对应的5层协议分别叫做应用层、传输层、网络层、数据链路层、物理层。将基于这样的分层的方式在现在的应用层的场景当中一般叫做基于TCP / IP协议定制好的层状协议。 协议既包含上层应用怎么写又包括操作系统怎么做这就叫做网络协议。 所以网络通讯时实际上我们用的是传输层向上提供的系统调用然后我们通过系统调用完成网络通讯。 融汇贯通的理解 所以网络编程依旧是系统编程因为我们用的依旧是操作系统。所以学习网络也就是学习操作系统。 其中以此五层的通讯方式称为TCP / IP协议。而传输层中最重要的协议就是TCP网络层中最重要的协议就是IP所以这种协议叫做TCP / IP。原因就在于这两种协议在操作系统中实现是两个最重要的通讯范畴的核心协议于是整个协议以TCP / IP来进行命名了。 然而事实上在当初的整个网络协议定制的标准化组织在定义协议的时候并不是严格按照我们上面说所的方案来定的其是按照自己的方案定出来的我们称之为OSI七层模型。
OSI七层模型
OSIOpen System Interconnection开放系统互连七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范。把网络从逻辑上分为了7层每一层都有相关、相对应的物理设备比如路由器交换机。OSI 七层模型是一种框架性的设计方法其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来概念清楚理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。其中下四层和之间所说的TCP / IP协议完全一样然而上面的三层被压缩成一层叫做应用层。 融会贯通的理解 首先是先有OSI的7层模型。后有TCP / IP的5层模型。它们二者之间就和蓝图和具体实现的关系一样。 OSI理想状态定出来的7层模型标准不一定就是定标准的人来写代码实现标准所以实现的时候因为应用层比较复杂没有办法在操作系统实现采取了将上三层变为一层交给用户自己来解决。 TCP/IP 五层(或四层)模型 TCP/IP是一组协议的代名词它还包括许多协议组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求。物理层负责光 / 电信号的传递方式。比如现在以太网通用的网线双绞线、早期以太网采用的的同轴电缆现在主要用于有线电视、光纤现在的wififi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器Hub、调制解调器Modem工作在物理层第一个用于信号放大第二个数字信号与模拟信号互相转化等。数据链路层负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步就是说从网线上检测到什么信号算作新帧的开始、冲突检测如果检测到冲突就自动重发、数据差错校验等工作。有以太网、令牌环网无线LAN等标准。交换机Switch工作在数据链路层。数据链路层就是对应的局域网局域网工作的位置。网络层负责地址管理和路由选择。例如在IP协议中通过IP地址来标识一台主机并通过路由表的方式规划出两台主机之间的数据传输的线路路由。路由器Router工作在网路层。传输层负责两台主机之间的数据传输。如传输控制协议TCP能够确保数据可靠的从源主机发送到目标主机。可以说工作的是发送数据的主机自己。应用层负责应用程序间沟通如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问协议Telnet等。我们的网络编程主要就是针对应用层。物理层属于硬件层所以考虑知道的不用过多。因此很多时候也可以称为 TCP/IP四层模型。
一般而言以下不是全面的是最基本的对于一台主机从操作系统内核实现了从传输层到网络层的功能然后再到数据链路层实现驱动层。对于一台路由器它实现了从网络层到物理层。对于一台交换机它实现了从数据链路层到物理层。对于集线器它只实现了物理层。补充 但是并不绝对。很多交换机也实现了网络层的转发很多路由器也实现了部分传输层的内容比如端口转发。 同一个网段内的两台主机进行文件传输每一个网络分层也就是软件分成都有其的功能。 每一层都有其代表性的协议 为了将上述图讲清而需要引入的概念。 #问如果两台主机在同一个局域网之下那这两个主机能不能直接通讯 能够通讯并且还会通讯的很顺畅。数据在局域网当中通讯时我们的数据是可以直接在局域网当中两台主机是可以直接通讯的。就如同玩游戏时联机的局域网。 我们的数据并不能凭空的从对应的应用层到对方的应用层 从逻辑上讲我们认为应用层和对方的应用层在直接通信。从物理上讲对应的应用层是无法将其的数据发送到对方的应用层。所以学习网络要站在物理结构上。 每层都要有自己的协议定制方案每层协议都要有自己的协议报头
从上到下交付数据的时候要添加报头。从下到上递交数据的时候要去掉报头。
报头 #问什么是协议报头 一个故事帮助理解就如同我们在网购之后商家将货物的寄出不可能将我们所购买的商品放在盒子里就直接给顺丰而是需要填对应的快递发货单。 然后将快递发货单贴到对应的包裹上我们在拿到包裹也就可以确认信息然后信息就没有用了直接扔掉。
快递发货单是给顺丰我们完全可以不看。于是可以将这个行为想象成两层的模型
卖家买家最关心的是我要买你要卖。但是对应的卖家要将商品给我们需要将商品向下交付的时候就要让顺丰结合卖家将单子填好填好的单子既不给卖家看也不给买家看是给顺丰看的。这样顺丰才知道是谁发是谁收。于是买家收货的时候收到单子 收到报文。这个时候我们所收到的东西多了一个报文不是关心的多出来的单子 报头。 协议报头当上层把数据交给下层时下层也是有自己的协议的那么下层需要做的就是将上层给予的数据结合它那一层所对应的报头给其多添加一部分的报头的数据。以供对方的同层协议未来的解报头来对数据进行读取 —— 直说同层当中收到一个数据之后在数据之外多出来的部分 报头。 报头的意义发送方和接受方互相传递属性字段的非常重要的概念。 对应的层就可以通过对应的该层的报头知晓有效载荷对应哪一层并将有效载荷交给上层。同样的每一层依次的识别对应的报头然后依次的传递有效载荷依次的交付。以此自底向上的好处就是对方发送你好接收方收到你好。 总结
封装的本质添加报头。解报的本质去掉报头 展开分析。
可以将封装的时候理解为压栈解报的时候理解为出栈。 融汇贯通的理解 之所以其能够完美的执行是因为对应的协议层只能够协议通行。所以在每一层之下每一层都认为自己在与对方进行逻辑上的沟通。 以太网 #两台主机如何在局域网下通讯。 我们用以太网链接的这两个对应的主机对应的就叫做的局域网我们可以将这个以太网的横线想象成网线以太网是局域网的一种它的通讯的原理可以简易的想象成 就如同一个班级在进行点名老师A进行一一的点名当点同学F的时候老师A点名的这个行为学生B、C、D、E是都听到了的在坐的所有人都是听到的但是只有学生F答了一声到。而学生F向老师A说的时候同样的学生B、C、D、E也是都听到了的在坐的所有人都是听到的。所以可以说A和B是在进行众目睽睽之下进行定向的通讯。 而之所以学生B、C、D、E并未做出反应是因为老师A并未喊道他们而他们之所以能知道喊的不是他们就是因为他们也听到了的接收到了的。
局域网通讯实际上 发出数据的主机在全部局域网中进行大声开麦。与同学一样每一台主机都是具有自己的名字的。也就是说其实每一台主机都是接收到信息的但是它会将主机名进行对比发现叫的不是自身于是就会将报头对应的数据直接进行抛弃所以只会有对应的主机拿到对应的数据进而进行向上交付从而拿到地址。
碰撞 如果有一天B、D进行正常的交流A一看不开兴的居然不带他于是他开始捣乱我们知道网线的传输其实就是物理的光电信号于是会不会导致A发出的信号将B发出的信号出现杂糅于是信息就出现无法识别这就叫做 —— 局域网内数据通讯时发生了碰撞问题。就如同课上有人聊天导致无法听清老师讲课。
碰撞问题的处理 局域网里的主机是可能进行对应的叫做碰撞避免说白了就是出现碰撞就等一等然后等一段时间后再进行从发课上需要聊天的同学等到下课聊。 融汇贯通的理解 所以有趣上可以说我们如果想黑掉一个局域网去对应的局域网里乱说话就可以了发一堆垃圾数据来影响大家无法正常通讯就是攻击。 对于发一堆垃圾数据我们是需要通过一定的方式绕过以太网驱动程序 —— 不要乱搞!!要就玩自己的局域网 局域网中表示主机的唯一性MAC地址 —— 每台主机对应的名字是由48位的二进制数构成的查看的时候一般是以十六进制进行显示。MAC地址是一个写入到网卡的地址在我们的笔记本出厂的时候网卡的MAC地址就确定了全球唯一。并不排除有一些虚拟策略能够帮我们虚拟化出很多的网卡、MAC地址 我们可以使用对应的ifconfig命令查看Linux下的网络设备设置。 总结 主机发送数据向下封装。主机交互数据自底向上进行交付。主机网络中通信采用局域网通讯原理。#问不在同一个局域网之下的主机是如何进行通讯的 这个时候我们就需要一个关键的点路由器。
路由器 三个设备主机、路由器、主机。两个局域网使用局域网进行连接。左侧主机想将数据交给右侧主机的时候需要进行封装然后并不能将数据直接通过网络交给右侧主机一个使用以太网一个使用令牌环网。 左侧主机向左侧主机发送信息必须经过设备路由器因为两个主机不在同一个局域网所以没法直接通讯左侧主机因为和路由器同局域网所以只能交给路由器。同样的路由器也是一个主机所以其能够将数据发送交给与其处于同一个局域网的右侧主机。 路由器通过路由器的间接的方式实现不同局域网的主机之间的通讯。 在如上面的不同局域网下的主机进行通讯的问题。A主机向让B主机接收到他所发的信息拿到B主机的MAC地址是没有任何用处的因为无法直接向B主机通讯不在同一个网。这个时候A主机只能够使用B主机的IP地址。 #问A主机是怎么拿到的B主机的IP地址 这个IP地址是有人给A主机的。如访问网页的地址就是通过分析它而得到的对应的IP地址。
IP地址和MAC地址
就如同我们唐僧的取经路 唐僧的出发地到目的地东土大唐 - 西天。唐僧的长途跋涉途中东土大唐 - …… - 车迟国 - 黑风岭 - …… -西天。源IP - 目的IP是永远都不会改变的。源MAC - 目的MAC会根据当前所处的位置不断的进行变化。
目的MAC是受目的IP的影响的以此到达目地的IP。
下面的MAC是不同的 Note 在IP层及其往上层的协议看来数据都是一样的差异化主要体现在IP层以下的最底层。在使用TCP / IP协议的网络中IP及其向上的协议看到的报文都是一样的。 于是通过IP协议的存在向中间的路由器向上交付的时候托一层 路由器向下交付的时候穿一层使得在不同子网中有着适配的功能。底层网络的差异化通过IP协议的存在而产生了对应的虚拟化策略以此让上层看到的同层数据都是一样的利用MAC地址的差别实现与恒定不变的IP地址实现。
用于理解的草图 不同的协议层对数据包有不同的称谓在传输层叫做段segment在网络层叫做数据报 datagram在链路层叫做帧frame。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部header称为封装Encapsulation。首部信息中包含了一些类似于首部有多长载荷payload有多长上层协议是什么等信息。数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部根据首部中的 上层协议字段 将数据交给对应的上层协议处理。下图为数据分用的过程。 接收方接收到了底层的对应的数据帧以太网驱动程序要在对应的数据帧中根据相关以太网首部能够解析出其对应的有效载荷应该交给上层的哪一个协议。 IP地址与MAC地址总结 IP地址 IP协议有两个版本IPv4和IPv6。 IP地址是在IP协议中用来标识网络中不同主机的地址。对于IPv4来说IP地址是一个4字节32位的整数。我们通常也使用 点分十进制 的字符串表示IP地址例如 192.168.0.1。用点分割的每一个数字表示一个字节范围是 0 - 255。 MAC地址 MAC地址用来识别数据链路层中相连的节点。长度为48位, 及6个字节。一般用16进制数字加上冒号的形式来表示例如: 08:00:27:03:fb:19在网卡出厂时就确定了不能修改。mac地址通常是唯一的虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址。