做网站生意多吗,wordpress本地安装教程,提高怎样做网站的外链,公司宣传片制作多少钱目录
协议
网络协议
OSI七层模型
网络传输基本流程
网络传输流程图
局域网通信
数据包的封装和解包
广域网通信
网络地址管理
IP地址
MAC地址 协议 关于什么是局域网#xff0c;什么是广域网#xff0c;我这里就不过多赘述了#xff0c;我们直接来谈一下什么…目录
协议
网络协议
OSI七层模型
网络传输基本流程
网络传输流程图
局域网通信
数据包的封装和解包
广域网通信
网络地址管理
IP地址
MAC地址 协议 关于什么是局域网什么是广域网我这里就不过多赘述了我们直接来谈一下什么是协议。 “协议”其实就是一种约定双方想要通信就需要做某种约定通过这种约定来完成某种特定事情。比如小时候和同学做的约定敲一下门要做什么敲两下要做什么。 网络协议就是通信计算机双方必须共同遵守的约定所以用计算机语言将这种约定表达出来双方计算机才能识别约定的相关内容。但是计算机之间的传输媒介是光信号和电信号可能有的通过频率或者强弱来表示0或1这样的信息有的可能通过不同的策略因为计算机只认识0和1所以各个做硬件的厂商也要共同遵守某种约定让不同的计算机识别的信息是一样的。 那么操作系统要不要进行协议管理呢那就又是先描述再组织。协议本质上就是一个软件那么软件是可以“分层”的什么是分层呢曾经我们写过的各种类在类外中我们叫做使用这个类中的方法在类中就是方法的实现使用和实现就是两层面向对象的多态实现多态就要有继承体系每个继承体系就可以叫做一层软件层。 网络协议 所以协议在设计的时候也是要分层的。 两个人在打电话的时候你并没有直接跟对面的人说话而是把你的声音交给了手机你的手机把声音交给了对方的手机对方才能在手机中听到你的声音。 为什么要分层呢原因就是以后的通信场景变得很复杂了我们将功能解耦更便于维护某一层出了问题只需要解决某一层其他层不会受到影响。 这些都是分层的好处为了让网络通信也变的更好也对网路协议进行了分层。 OSI七层模型 我们通信的复杂程度主要和通信的距离是正相关的从通信的方面来说 如果两个人的通信距离过远会有没收到的情况这就叫做丢包。在发送的时候如何找到对方主机的位置这就是定位问题。通信距离远的时候我们的信息不可能直接发给对方需要通过多个路由器帮我们跳转那怎么保证下一个路由器是正确的。不管是发送还是接收信息都是通过信号的频率或强弱来识别的也要有硬件的支持。 再从我们应用的方面来说 为了实现通信我的数据一定是经过一些处理才发给对方的对方收到了也是要经过处理才能看得懂那如何处理数据也是一个问题。 为了解决上面的这些问题就有了网络协议的层状结构这些问题对应的层分别是传输层、网络层、数据链路层、物理层、应用层。 我们也把左边的网络协议层也叫做TCP/IP协议。 未来我们也是使用传输层提供的系统调用接口进行网络编程。 物理层 负责光电信号的传递他决定了最大传输速率、传输距离等。 数据链路层 负责设备之间的数据帧的传送和识别例如网卡驱动交换机就工作在数据链路层。数据链路层和物理层就负责数据的发送过程。 网络层 负责地址的管理和路由的选择路由器工作在网络层。 传输层 负责两台主机的数据传输确保数据的可靠发送。比如传输过程中可能会出现丢包问题。 应用层 负责应用程序之间的沟通应用层需要根据通信的目的对数据进行分析与处理达到某种业务性的目的。 这一层一层的结构也叫做网络协议栈网络协议栈的下三层主要的完成就是信息传输而应用层完成的就是数据分析和业务处理。 但其实最开始提出的协议层并不是TCP/IP协议而是OSI七层模型。 OSIOpen System Interconnection开放系统互联七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范。把网络从逻辑上分为了7层每一层都有相关、相对应的物理设备比如路由器工作在网络层交换机工作在数据链路层。OSI 七层模型是一种框架性的设计方法其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来概念清楚理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。但是, 它既复杂又不实用所以我们都是使用TCP/IP四层或五层模型物理层也不会考虑太多。 网络传输基本流程
网络传输流程图
局域网通信 同一个局域网下的两台主机的通信流程就是这样的 这幅图举个例子就很好理解了你住在一栋楼的10楼你现在要给另一栋也住在10楼的小伙伴送个东西那你一定要一层一层的下楼然后跑到他的楼下再一层一层的上楼这样你才能把东西送给他他也不会管你是怎么来的。 所以局域网中的两台主机是可以直接通信的。那我们接下来就要再说一下网络的概念 每层都有自己的协议定制方案。每层协议都要有自己的协议报头。从上到下交付数据的时候要添加报头。从下到上拿到数据的时候要去掉报头。 再来举个例子说一下什么是报头我们买东西的时候一定是在网上给卖家说我要买这个经过一系列的操作卖家要被快递交给物流物流拿到东西之后一定要给这个快递贴上快递的信息再经过一系列操作到了楼下的快递站我们从快递站拿到这个快递拆开就能用了。这个快递中的物品就好比是数据这个快递信息就好比是协议报头通过这个报头就可以送到我楼下的快递站我拿到了快递再拆开去掉协议报头就拿到了里面的数据。 数据包的封装和解包 不同的协议层对数据包有不同的称谓在传输层叫做段(segment)在网络层叫做数据报 (datagram)在数据链路层叫做帧(frame)。应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部报头称为封装。首部信息中包含了一些类似于首部有多长有效载荷有多长上层协议是什么等信息。数据封装成帧后发到传输介质上到达目的主机后每层协议再将报头和有效载荷分离根据首部中的 上层协议 字段 将数据交给对应的上层协议处理这叫做解包。 这次就不是快递了比如我们给同学发微信 通过对数据一层一层的封装送到另一台主机后再一层一层的解包所以两台主机在每一层都以为自己在和另一台主机的相同层在逻辑上直接通信所以不可能把以太网帧直接发给网络层或者其它层。 在同一个局域网中。除了当前正在通信的主机A和主机F还有其他主机那怎么只有主机F收到了呢 实际主机A发数据给主机F的时候其他主机也都收到了该数据只不过除了主机F以外其他主机识别到该数据并不是发给自己的此时其他主机就把收到的数据丢弃了。 如果主机A不仅在和主机F通信还和别的主机也在通信但是同一个局域网中使用的都是同一个通信信道每个主机发出的数据就可能会相互干扰。 每个局域网也可以看做一个碰撞域如果某个主机发送出去的数据与其他主机发送的数据之间产生了干扰这两台主机在该碰撞域中就发生了碰撞。 那么如何判断发生了碰撞呢当一个主机将数据发送到局域网它自己也可以收到这个数据收到后与之前发送的数据进行比较如果不同就说明发生了碰撞。 想要处理碰撞其实很简单当一个主机发送出去的数据产生了碰撞那么该主机可以选择等一段时间后再重新发送该数据。但是计算机处理的速度很快所以发生的概率不是很大。 广域网通信 上面说了局域网通信那我们再来说一下广域网通信前面我们提到过我要给很远的一台主机发送信息要先遵守应用层的协议通过传输层稳定的把数据发送过去通过网络层确定是那一台主机通过数据链路层和物理层发送和接收信号。 局域网之间都是通过路由器连接起来的一个路由器至少能够横跨两个局域网。这些被路由器连接的局域网都认为该路由器就是本局域网内的一台主机所以路由器可以和这些局域网内的任意一台主机进行直接通信。 主机A使用自己的MAC地址封装报头到了路由器时解包向上交付路由器看到IP地址后就知道要转发到哪一个主机下。所以在使用TCP/IP协议时IP及其向上的协议看到的报文都是一样的只有数据链路层的MAC会变成不同的这里只有一个路由器但事实上是会有很多路由器才能跳转到对应的主机的。 网络地址管理
IP地址 IP地址是在IP协议中标识网络中不同主机的地址。对于IPv4来说IP地址是一个4字节32位的整数。我们通常也使用“点分十进制”的字符串表示IP地址例如192.168.16.1用点分割的每一个数字表示一个字节范围是0-255。 需要注意的是IP协议有两个版本分别是IPv4和IPv6。IPv4用32个比特位来标识IP地址而IPv6用128个比特位来标识IP地址。 MAC地址 MAC地址用来识别数据链路层中相连的节点。长度为48位及6个字节一般用16进制数字加上冒号的形式来表示例如00:16:3e:03:92:10。在网卡出厂时就确定了不能修改。MAC地址通常是唯一的虚拟机中的MAC地址不是真实的MAC地址可能会冲突也有些网卡支持用户配置MAC地址。 那我们再来重新看一下广域网通信。 如果我在北京我要给上海的朋友发消息所以我在北京的主机的IP地址就叫做源IP上海的朋友的主机的IP地址就叫做目的IP比如这个信息要先传给当前地区的路由器这条信息封装了MAC地址这就是源MAC地址通过自己家里的路由器放到当前地区的路由器这就是下一站的MAC地址。 从消息发出到收到消息源IP和目的IP都是不会变的他要给下一站提供方向会变化的就是MAC地址通过当前地区的路由器就知道下一个路由器在哪里继续封装MAC地址这样一步步把消息传递过去。 上述的源IP和目的IP、源MAC和下一站MAC都分别保存在对应层的报头中。 在Linux中查看自己的MAC地址就要使用ifconfig命令。 这个ether就有以太的意思。