网上做期末试卷的网站,网络规划设计师岗位职责,可视方便建站微网站,书店网站模板分层模型
OSI七层模型 OSI模型
1 物理层#xff1a;主要定义物理设备标准#xff0c;如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流#xff08;就是由1、0转化为电流强弱来进行传输#xff0c;到达目的地后再转化为1、0#…分层模型
OSI七层模型 OSI模型
1 物理层主要定义物理设备标准如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流就是由1、0转化为电流强弱来进行传输到达目的地后再转化为1、0也就是我们常说的数模转换与模数转换。这一层的数据叫做比特。
2 数据链路层定义了如何让格式化数据以帧为单位进行传输以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正以确保数据的可靠传输。如串口通信中使用到的115200、8、N、1
3 网络层在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加而网络层正是管理这种连接的层。
4 传输层定义了一些传输数据的协议和端口号WWW端口80等如TCP传输控制协议传输效率低可靠性强用于传输可靠性要求高数据量大的数据UDP用户数据报协议与TCP特性恰恰相反用于传输可靠性要求不高数据量小的数据如QQ聊天数据就是通过这种方式传输的。 主要是将从下层接收的数据进行分段和传输到达目的地址后再进行重组。常常把这一层数据叫做段。
5 会话层通过传输层(端口号传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求设备之间需要互相认识可以是IP也可以是MAC或者是主机名。
6 表示层可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如PC程序与另一台计算机进行通信其中一台计算机使用扩展二一十进制交换码(EBCDIC)而另一台则使用美国信息交换标准码ASCII来表示相同的字符。如有必要表示层会通过使用一种通格式来实现多种数据格式之间的转换。
7 应用层是最靠近用户的OSI层。这一层为用户的应用程序例如电子邮件、文件传输和终端仿真提供网络服务。
8 TCP/IP四层模型 TCP/IP网络协议栈分为应用层Application、传输层Transport、网络层Network和链路层Link四层。如下图所示 TCP/IP模型 一般在应用开发过程中讨论最多的是TCP/IP模型。
通信过程
两台计算机通过TCP/IP协议通讯的过程如下所示 TCP/IP通信过程 上图对应两台计算机在同一网段中的情况如果两台计算机在不同的网段中那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器如下图所示
跨路由通信
链路层有以太网、令牌环网等标准链路层负责网卡设备的驱动、帧同步即从网线上检测到什么信号算作新帧的开始、冲突检测如果检测到冲突就自动重发、数据差错校验等工作。交换机是工作在链路层的网络设备可以在不同的链路层网络之间转发数据帧比如十兆以太网和百兆以太网之间、以太网和令牌环网之间由于不同链路层的帧格式不同交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。
网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识 Inter-net上有大量路由器负责根据IP地址选择合适的路径转发数据包 数据包从Internet上的源主机到目的主机往往要经过十多个路由器。 路由器是工作在第三层的网络设备同时兼有交换机的功能可以在不同的链路层接口之间转发数据包 因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性数据包在传输过程中可能丢失可靠性可以在上层协议或应用程序中提供支持。网络层负责点到点ptoppoint-to-point的传输这里的“点”指主机或路由器而传输层负责端到端etoeend-to-end的传输这里的“端”指源主机和目的主机。传输层可选择TCP或UDP协议。
TCP是一种面向连接的、可靠的协议有点像打电话双方拿起电话互通身份之后就建立了连接然后说话就行了这边说的话那边保证听得到并且是按说话的顺序听到的说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接之后由TCP协议保证数据收发的可靠性丢失的数据包自动重发上层应用程序收到的总是可靠的数据流通讯之后关闭连接。
UDP是无连接的传输协议不保证可靠性有点像寄信信写好放到邮筒里既不能保证信件在邮递过程中不会丢失也不能保证信件寄送顺序。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。
目的主机收到数据包后如何经过各层协议栈最后到达应用程序呢
其过程如下图所示
1 以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷payload指除去协议首部之外实际传输的数据
是IP、ARP还是RARP协议的数据报然后交给相应的协议处理。2 假如是IP数据报IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP
然后交给相应的协议处理。3 假如是TCP段或UDP段TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址而端口号就是同一台主机上标识不同进程的地址IP地址和端口号合起来标识网络中唯一的进程。
虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧但是从功能上划分
ARP和RARP属于链路层
IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报但是从功能上划分
ICMP、IGMP与IP同属于网络层
TCP和UDP属于传输层。协议格式
数据包封装
传输层及其以下的机制由内核提供应用层由用户进程提供后面将介绍如何使用socket API编写应用程序应用程序对通讯数据的含义进行解释而传输层及其以下处理通讯的细节将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时每层协议都要加上一个数据首部header称为封装Encapsulation如下图所示
不同的协议层对数据包有不同的称谓**在传输层叫做段segment在网络层叫做数据报datagram在链路层叫做帧frame。**数据封装成帧后发到传输介质上到达目的主机后每层协议再剥掉相应的首部最后将应用层数据交给应用程序处理。 以太网帧格式 以太网的帧格式如下所示 其中的源地址和目的地址是指网卡的硬件地址也叫MAC地址长度是48位是在网卡出厂时固化的。可在shell中使用ifconfig命令查看“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值分别对应IP、ARP、RARP。帧尾是CRC校验码。 以太网帧中的数据长度规定最小46字节最大1500字节ARP和RARP数据包的长度不够46字节要在后面补填充位。最大值1500称为以太网的最大传输单元MTU不同的网络类型有不同的MTU如果一个数据包从以太网路由到拨号链路上数据包长度大于拨号链路的MTU则需要对数据包进行分片fragmentation。ifconfig命令输出中也有“MTU:1500”。注意MTU这个概念指数据帧中有效载荷的最大长度不包括帧头长度。 ARP数据报格式 在网络通讯时源主机的应用程序知道目的主机的IP地址和端口号却不知道目的主机的硬件地址而数据包首先是被网卡接收到再去处理上层协议的如果接收到的数据包的硬件地址与本机不符则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求询问“IP地址是192.168.0.1的主机的硬件地址是多少”并将这个请求广播到本地网段以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播目的主机接收到广播的ARP请求发现其中的IP地址与本机相符则发送一个ARP应答数据包给源主机将自己的硬件地址填写在应答包中。 每台主机都维护一个ARP缓存表可以用arp -a命令查看。缓存表中的表项有过期时间一般为20分钟如果20分钟内没有再次使用某个表项则该表项失效下次还要发ARP请求来获得目的主机的硬件地址。
想一想为什么表项要有过期时间而不是一直有效
ARP数据报的格式如下所示
源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次
对于链路层为以太网的情况是多余的但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型1为以太网协议类型指要转换的地址类型
0x0800为IP地址后面两个地址长度对于以太网地址和IP地址分别为6和4字节op字段为1表示ARP请求op字段为2表示ARP应答。看一个具体的例子。
请求帧如下为了清晰在每行的前面加了字节计数每行16个字节 以太网首部14字节 0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06 ARP帧28字节 0000: 00 01 0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37 0020: 00 00 00 00 00 00 c0 a8 00 02 填充位18字节 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00 以太网首部目的主机采用广播地址源主机的MAC地址是00:05:5d:61:58:a8上层协议类型0x0806表示ARP。
ARP帧硬件类型0x0001表示以太网协议类型0x0800表示IP协议硬件地址MAC地址长度为6协议地址IP地址长度为4op为0x0001表示请求目的主机的MAC地址源主机MAC地址为00:05:5d:61:58:a8源主机IP地址为c0 a8 00 37192.168.0.55目的主机MAC地址全0待填写目的主机IP地址为c0 a8 00 02192.168.0.2。
由于以太网规定最小数据长度为46字节ARP帧长度只有28字节因此有18字节填充位填充位的内容没有定义与具体实现相关。 应答帧如下 以太网首部 0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06 ARP帧 0000: 00 01 0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02 0020: 00 05 5d 61 58 a8 c0 a8 00 37 填充位 0020: 00 77 31 d2 50 10 0030: fd 78 41 d3 00 00 00 00 00 00 00 00 以太网首部目的主机的MAC地址是00:05:5d:61:58:a8源主机的MAC地址是00:05:5d:a1:b8:40上层协议类型0x0806表示ARP。
如果源主机和目的主机不在同一网段ARP请求的广播帧无法穿过路由器源主机如何与目的主机通信
ARP一般只在局域网同网段中起作用部分路由器有ARP代理功能但也不可能所广域网上所有的地址都代理了。 在跨网段访问时当发现目的地址不是本网段IP时将会把数据包发送给网关处理一般网关就是路由器来做的路由器此时就发挥他的路由功能进行IP路由. 当到达目的网段后再在目的网段使用ARP解析出目的主机的MAC地址实现通信。 综上ARP只用于同一局域网通信特殊情况下可以跨网段ARP代理时当源和目的不在同一网段时跨网段这部分由中间的具有路由功能的设备来进行处理如路由器。
具体过程
、主机A有数据发往主机B数据封装IP之后发现没有主机B的mac地址
然后查询ARPARP回应“我在192.168.3.0/24网段目标地址在192.168.4.0/24,不属于同一网段需要使用默认网关”
ARP发现默认网关是192.168.3.2但是没有网关mac地址需要先进行查询2、主机将数据包先放到缓存中然后发送ARP查询报文
封装自己的mac地址为源mac目标mac地址写全F的广播地址请求网关192.168.3.2的mac地址。然后以广播方式发送出去3、路由器收到广播数据包首先将原192.168.3.1添加到自己的mac地址表中对应mac地址为0800.0222.2222。
路由发现是请求自己的mac地址然后路由回复一个ARP应答
封装自己的IP地址为源IP自己的mac地址为源mac主机A的IP为目的IP主机A的mac为目的mac
发送一个单播应答“我是192.168.3.2.我的mac地址为 0800.0333.2222”4、主机收到应答后将网关mac地址对应192.168.4.2跨网关通信其他网段IP地址的mac地址均为网关mac
然后将缓存中的数据包封装网关mac地址进行发送5、路由收到数据包检查目的IP地址发现不是给自己的决定要进行路由然后查询路由表
需要发往192.168.4.0网段中的192.168.4.2地址。路由准备从相应接口上发出去然后查询mac地址表发现没有主机B的映射。
路由器发送arp请求查询主机B的mac地址原理同2、3步主机B收到请求后首先会添加网关的mac地址然后单播回复arp请求。6、路由器收到主机B的mac地址后将其添加到路由mac地址表中
然后将缓存中的数据2层帧头去掉封装自己的mac地址为源mac主机B的mac地址为目的mac源和目的IP地址不变
加上二层帧头及校验发送给主机B。7、主机B收到数据之后进行处理发送过程结束。