? 为什么分七层
? 支持异构网络的互联互通。
? 七层分别负责的内容(功能)
? OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
? (1) 物理层
? 任务:透明地传输比特流。
? 功能:为数据段设备提供传送数据通路
? 传输单位:比特
? 所实现的硬件:集线器,中继器
? (2)数据链路层
? 任务:将网络层传输下来的IP数据报组装成帧
? 功能:a. 链路连接的建立、拆除和分离
? b. 帧定界和帧同步
? c.差错检测
? 传输单位:帧
? 所实现的硬件:交换机、网桥
? 协议:PPP,HDLC、SDLC、STP、ARQ
? (3)网络层
? 任务:a. 将传输层传下来的报文段封装成分组
? b.选择合适的路由,使得传输层传下来的分组能够交付到目的主机
? 功能:a. 为传输层提供服务
? b. 组包和拆包
? c. 路由选择
? d.拥塞控制
? 传输单位:数据段
? 所实现的硬件:路由器
? 协议:ICMP、ARP、RARP、IP、IGMP、OSPF
? (4)传输层
? 任务:负责主机中两个进程之间的通信
? 功能:
? a. 为端到端连接提供可靠的服务
? b. 为端到端连接提供流量控制、差错控制、服务质量等管理服务
? 传输单位:报文段(TCP)或用户数据报(UDP)
? 协议:TCP、UDP
? (5)会话层
? 任务:不同主机上各进程间的对话
? 功能:管理主机间的会话进程,包括建立、管理以及终止进程间的会话。是一种端到端的服务
? (6)表示层
? 负责处理在两个内部数据表示结构不同的通信系统之间交换信息的表示格式,为数据加密和解密以及为提高传输效率提供必需的数据压缩以及解压等功能。
? (7)应用层
? 任务:提供系统与用户的接口
? 功能:
? a.文件传输
? b. 访问和管理
? c. 电子邮件服务
? 协议:FTP、SMTP、POP3、HTTP、DNS、TELnet
? 五层网络体系结构分分别为:应用层、运输层、网络层、数据链路层、物理层。各层功能分别如下:
? 第五层——应用层(application layer)
? (1) 应用层(application layer):是体系结构中的最高。直接为用户的应用进程提供服务。
? (2) 在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等等。
? 第四层——运输层(transport layer)
? (1) 运输层(transport layer):负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。
? a. 复用,就是多个应用层进程可同时使用下面运输层的服务。
? b. 分用,就是把收到的信息分别交付给上面应用层中相应的进程。
? (2) 运输层主要使用以下两种协议: **(1) 传输控制协议TCP(Transmission Control Protocol):**面向连接的,数据传输的单位是报文段,能够提供可靠的交付。 **(2) 用户数据包协议UDP(User Datagram Protocol):**无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。
? 第三层——网络层(network layer)
? 网络层(network layer)主要包括以下两个任务:
? (1) 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层残生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。
? (2) 选中合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
? 第二层——数据链路层(data link layer)
? **数据链路层(data link layer):**常简称为链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。
? 在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上“透明”地传送帧中的数据。
? 每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。
? 注意:”透明”是一个很重要的术语。它表示,某一个实际存在的事物看起来却好像不存在一样。”在数据链路层透明传送数据”表示无力什么样的比特组合的数据都能够通过这个数据链路层。因此,对所传送的数据来说,这些数据就“看不见”数据链路层。或者说,数据链路层对这些数据来说是透明的。 (1) 在接收数据时,控制信息使接收端能知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提取出数据部分,上交给网络层。 (2) 控制信息还使接收端能检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出了差错的帧,以免继续传送下去白白浪费网络资源。如需改正错误,就由运输层的TCP协议来完成。
? 第一层——物理层(physical layer)
? **物理层(physical layer):**在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。
? 了解,客户端发送给服务器端的请求,可以根据统一资源定位系统(uniform resource locator,URL)来确定具体使用的协议。
? 答案解析
? 一个完整的URL包括–协议部分、网址、文件地址部分。协议部分以//为分隔符,在interner中,我们可以使用多种协议:
? HTTP——HyperText Transfer Protocol(超文本传输协议)
? FTP——File Transfer Protocol(文件传输协议)
? Gopher——The Internet Gopher Protocol(网际Gopher协议)
? File——本地文件传输协议
? HTTPS——安全套接字层超文本传输协议(http的安全版)
? 例如百度网址:http://baidu.com,可以看出使用的是http协议。
? TCP、HTTP、FTP分别属于传输层、应用层、应用层。
? 解析
? TCP协议简介
? (1)TCP协议的特性
? TCP是面向连接的,提供全双工的服务,数据流可以双向传输。也是点对点的,即在单个发送放方和单个接收方之间的连接。
? (2)TCP 报文段结构
? 序号:TCP 的序号是数据流中的字节数,不是分组的序号。表示该报文段数据字段首字节的序号。
? 确认号:TCP 使用累积确认,确认号是第一个未收到的字节序号,表示希望接收到的下一个字节。
? 首部长度:通常选项字段为空,所以一般 TCP 首部的长度是 20 字节。
? 选项字段(可选与变长的):用于发送方与接收方协商 MSS(最大报文段长),或在高速网络环境下用作窗口
? 调节因子。
? 标志字段
? ACK:指示确认字段中的值是有效的
? RST,SYN,FIN:连接建立与拆除
? PSH:指示接收方应立即将数据交给上层
? URG:报文段中存在着(被发送方的上层实体置位)“紧急”的数据
? 接收窗口:用于流量控制(表示接收方还有多少可用的缓存空间)。
? TCP RFC 并没有规定失序到达的分组应该如何处理,而是交给程序员。可以选择丢弃或保留。如果发生超时,TCP 只重传第一个已发送而未确认的分组,超时时间间隔会设置为原来的 2 倍。
? (3)流量控制
? 如果应用程序读取数据相当慢,而发送方发送数据太多、太快,会很容易使接收方的接收缓存溢出,流量控制就是用来进行发送速度和接收速度的匹配。发送方维护一个“接收窗口”变量,这个变量表示接收方当前可用的缓存空间。
? HTTP(超文本传输协议)简介
? (1)HTTP协议的特性
? HTTP 协议一共有五大特点:a. 支持客户/服务器模式;b. 简单快速;c. 灵活;d. 无连接;e. 无状态。
? **无连接含义:**限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
? **无状态含义:**指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即我们给服务器发送 HTTP 请求之后,服务器根据请求,会给我们发送数据过来,但是,发送完,不会记录任何信息。
? (2)HTTP 客户机及服务器
? HTTP 客户机:web 浏览器
? HTTP 服务器:web 服务器,包含 web 对象(HTML 文件、JPEG 文件、java 小程序、视频片段等)
? (3)HTTP 方法字段:
? GET:绝大部分 HTTP 请求报文使用 GET 方法
? POST:用户提交表单时(如向搜索引擎提供关键字),但提交表单不一定要用 POST 方法
? HEAD:类似于 GET,区别在于服务器返回的响应报文中不包含请求对象(常用于故障跟踪)
? PUT:用于向服务器上传对象
? DELETE:用于删除服务器上的对象
? (4)HTTP 状态信息
? 301 Permanently Moved 被请求的资源已永久移动到新位置,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
? 302 Found 请求的资源现在临时从不同的URL响应请求。301是永久重定向,而302是临时重定向。
? 200 OK 表示从客户端发来的请求在服务器端被正确处理
? 304 Not Modified 304状态码是告诉浏览器可以从缓存中获取所请求的资源。
? 400 bad request 请求报文存在语法错误
? 403 forbidden 表示对请求资源的访问被服务器拒绝
? 404 not found 表示在服务器上没有找到请求的资源
? 500 internal sever error 表示服务器端在执行请求时发生了错误
? 503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求
? (4)HTTP中常见的文件格式
? text/html: HTML格式
? text/plain:纯文本格式
? image/jpeg:jpg图片格式
? application/json: JSON数据格式
? application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
? multipart/form-data: 在表单中进行文件上传时使用
? FTP(文件传输协议简介)
? FTP 使用两个并行的 TCP 连接来传输文件:
? (1)**控制连接(持久):**传输控制信息,如用户标识、口令、改变远程目录命令、文件获取上传的命令;
? (2)**数据连接(非持久):**传输实际文件。
? FTP 客户机发起向 FTP 服务器的控制连接,然后在该连接上发送用户标识和口令、改变远程目录的命令。FTP服务器收到命令后,发起一个到客户机的数据连接,在该连接上准确地传送一个文件并关闭连接。
? 有状态的协议:FTP 服务器在整个会话期间保留用户的状态信息。服务器必须把特定的用户账号和控制连接
? 联系起来。
? 传输层简介
? (1)传输层的服务基本原理
? a. 多路复用和解复用(分路)技术
? **复用:**发送方的不同的应用进程都可以使用同一个传输层协议传送数据;
? 分路技术:接收方的传输层剥去报文首部之后能把这些数据正确的传输到正确的应用进程上。
? b. 可靠数据传输
? c. 流量控制和拥塞控制
? (2)传输层提供的服务
? a. 传输层寻址和端口
? 端口号就是用来标识应用进程的数字标识。其端口号的长度为16Bit;也就是能够标识2^16个不同的端口号。另外端口号根据端口范围分为2类。分别为服务端使用的端口号(熟知端口号数值范围:0-1023;登记端口号数值范围:1024-49151)和客户端使用的端口号(数值范围为49152-65535)。常见端口号如下:
? FTP:21
? TELNET:23
? SMTP:25
? DNS:53
? TFTP:69
? HTTP:80
? SNMP:161
? b. 无连接服务和面向连接服务
? (3)流量控制和拥塞控制
? a. **流量控制:**如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。
? b. **拥塞控制:**拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
? 两者的区别:流量控制是为了预防拥塞。如:在马路上行车,交警跟红绿灯是流量控制,当发生拥塞时,如何进行疏散,是拥塞控制。流量控制指点对点通信量的控制。而拥塞控制是全局性的,涉及到所有的主机和降低网络性能的因素。
? 应用层简介
? 应用层的具体内容就是规定应用进程在通信时所遵循的协议。应用层协议分类如下:
? (1). 域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。
? (2). 文件传输协议(File Transfer Protocol,FTP):用于实现交互式文件传输功能。
? (3). 简单邮件传送协议(Simple Mail Transfer Protocol, SMTP):用于实现电子邮箱传送功能
? (4). 超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。
? (5). 简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。
? (6). 远程登录协议(Telnet):用于实现远程登录功能。
? TCP/IP协议定义
? TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
? TCP/IP协议组成
? TCP/IP结构模型分为**应用层、传输层、网络层、链路层(网络接口层)**四层,以下是各层的详细介绍:
? (1)应用层
? 应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
? a. 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。
? b. 应用层还能加密、解密、格式化数据。
? c. 应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
? (2)传输层
? 作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
? (3)网络层
? 网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。
? (4)链路层(网络接口层)
? 在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层。所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。
? TCP/IP协议特点
? TCP/IP协议能够迅速发展起来并成为事实上的标准,是它恰好适应了世界范围内数据通信的需要。它有以下特点:
? (1)协议标准是完全开放的,可以供用户免费使用,并且独立于特定的计算机硬件与操作系统;
? (2)独立于网络硬件系统,可以运行在广域网,更适合于互联网;
? (3)网络地址统一分配,网络中每一设备和终端都具有一个唯一地址;
? (4)高层协议标准化,可以提供多种多样可靠网络服务。
? ARP协议即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。
? 工作原理
? ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
? 工作过程
? 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
? 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
? 当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
? 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
? 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
? 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
? 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
? 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
? ARP报文格式
?
? 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
? 协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
? 硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
? 操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
? 发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
? 发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
? 发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
? 发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
? 目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
? 目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
? 目标IP地址(0-3字节):目的主机的IP地址。
? IP所包含字段结构图如下:
?
? IP协议包含字段如下:
? **4位版本号:**指定IP协议的版本,对于IPv4来说就是4
? **4位头部长度:**IP头部长度有多少个4字节,所以头部最大长度就是15*4=60字节
? **8位服务类型:**3位优先权(已弃用),4位TOS字段,1位保留字段(必须设置为0)。4为TOS为:最小延时,最大吞吐量,最高可靠性,最小成本,这四个只能选择一个
? **16位总长度:**IP数据报整体占多少字节
? **16为标识:**唯一的标识主机发送的报文,IP报文在数据链路层被分片,那么每一个片中的标识都是相同的
? **3位标志字段:**第一位保留,第二位置1表示进制分片(报文长度超过MTU,丢弃报文),第三位更多分片,最后一个分片是1,其他是0
? **13位分片偏移:**相对于原始IP报文开始处的偏移
? **8位生存时间:**数据报到达目的地的最大报文跳数,每经过一个路由,TTL-=1,一直到0都没有到达目的地,报文丢弃。
? 8位协议:表示上层协议类型,把IP交给TCP还是UDP,其中ICMP是1,TCP是6,UDP是17
? **16位头部校验和:**使用CRC校验,鉴别头部是否损坏
? **32位源地址和32位目标地址:**表示发送端和接收端
? 应用层包含的协议有DNS、FTP、SMTP、HTTP、SNMP、Telnet等,其作用分别如下:
? 解析
? 应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递消息。特别是定义了:
? **应用层数据(报文)向外发送时,数据是由最上面的应用层向下经过一层层封装后发送给物理层;而接收数据时,数据是由物理层向上经过一层层解封后发给应用层。**数据的封装和解封过程如下:
? 数据的封装过程简介
? 传输层及其以下的机制由内核提供, 应用层由用户进程提供, 应用程序对通讯数据的含义进行解释, 而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。 应用层数据通过协议栈发到网络上时,每层协议都要加上一个相对应的头部(header ),该过程称为封装封装过程如下图所示:
?
? 数据的解封过程简介
? 不 同 的 协 议 层 对 数 据 包 有 不 同的 称 谓 ,在 传 输 层 叫 做 段(segment ),在网络层叫做数据报( datagram) ,在链路层叫做帧(frame )。数据封装成帧后发到传输介质上,到达目的主机后,每层协议再剥掉相应的头部,最后将应用层数据交给应用程序处理,该过程称为解封。解封过程如下图所示:
?
? 举例说明数据封装和解封装过程
? (1)从计算机 A 的应用层内网通软件向计算机 B 发出一个消息,生成数据;
? (2)请求从计算机 A 的应用层下到 计算机A 的传输层,传输层在上层数据前面加上 TCP报头,报头中包括目标端口以及源端口;
? (3)传输层数据下到网络层,计算机A 在网络层封装,源 IP地址为 计算机A地址,目标 IP地址为 计算机 B 地址;
? (4)计算机 A 将计算机B 的 IP 地址和子网掩码与自己做比对,可以发现 计算机 B 与自己处于相同的子网。所以数据传输不必经过网关设备;
? (5)数据包下到 计算机 A 的数据链路层进行封装,源 MAC 地址为 计算机A的 MAC地址,目标 MAC 地址查询自己的 ARP 表。
? (6)计算机 A 把帧转换成 bit 流,从物理接口网卡发出;
? (7)物理层接收到电信号,把它交给数据链路层进行查看帧的目标 MAC 地址,和自己是否相等,如果相等说明该帧是发送给自己的,于是将MAC帧头解开并接着上传到网络层;
? (8)网络层查看目标 IP 地址和自己是否匹配,如果匹配即解开 IP 头封装。然后再把数据上传到传输层;
? (9)传输层解开对应的包头之后,继续把数据传给应用层,计算机 B 即可接收到计算机 A 发的消息。
? 答案解析
? 报文、报文段、分组、包、数据报、帧、数据流的概念区别如下:
? 报文(message)
? 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。报文包含了将要发送的完整的数据信息,其长短不需一致。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,那些就是报文头。
? 报文段(segment)
? 通常是指起始点和目的地都是传输层的信息单元。
? 分组/包(packet)
? 分组是在网络中传输的二进制格式的单元,为了提供通信性能和可靠性,每个用户发送的数据会被分成多个更小的部分。在每个部分的前面加上一些必要的控制信息组成的首部,有时也会加上尾部,就构成了一个分组。它的起始和目的地是网络层。
? 数据报(datagram)
? 面向无连接的数据传输,其工作过程类似于报文交换。采用数据报方式传输时,被传输的分组称为数据报。通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
? 帧(frame)
? 帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。
? 数据单元(data unit)
? 指许多信息单元。常用的数据单元有服务数据单元(SDU)、协议数据单元(PDU)。
? SDU是在同一机器上的两层之间传送信息。PDU是发送机器上每层的信息发送到接收机器上的相应层(同等层间交流用的)。
?