【网络协议笔记】网络基础整理
2019-07-03 本文已影响25人
58bc06151329
文前说明
作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。
本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。
1. 概念
- 端系统(各种联网设备)通过 通信链路(communication link) 和 分组交换机(packet switch) 连接到一起。
- 不同的链路能够以不同的速率传输数据,链路的 传输速率(transmission rate)以比特/秒(bit/s,或 bps)度量。
- 当一台端系统向另外一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,由此形成的信息包称为 分段(packet)。
- 分组交换机从它的一条入通信链路接收到达的分组,并从它的一条出通信链路转发该分组。
- 市面上最流行的分组交换机有 路由器(router) 和 链路层交换机(link-layer switch)。
- 链路层交换机通常用于接入网中,路由器通常用于网络核心中。
- 从发送端系统到接收端系统,一个分组所经历的一系列通信链路和分组交换机称为通过该网络的 路径(route 或 path)。
- 分组类似于卡车,通信链路类似于高速公路和公路,分组交换机类似于交叉口,端系统类似于建筑物。
- 端系统通过 因特网服务提供商(Internet Service Provider,ISP)接入因特网。
- 端系统、分组交换机和其他因特网部件都要运行一系列 协议(protocol),这些协议控制因特网中信息的接收和发送。
-
因特网标准(Internet standard)由 因特网工程任务组(Internet Engineering Task Force,IETF)研发。
- IETF 的标准文档称为 请求评论(Request For Comment,RFC)。
- 与因特网相连的端系统提供了一个 套字节接口(socket interface),该接口规定了运行在一个端系统上的程序请求因特网基础设施向运行在另一个端系统上的特定目的地程序交付数据的方式。
- 两个(或多个)通信实体必须运行相同的协议。
- 在因特网中,涉及两个(或多个)远程通信实体的所有活动都受协议的制约。
- 协议定义了在两个(或多个)通信实体之间交换的报文的格式和顺序,以及报文发送和 / 或接收一条报文或其他事件所采取的动作。
- 端系统到任何其他远程端系统的路径上的第一台路由器称为 边缘路由器(edge router)。
- 在各种网络应用中,端系统彼此交换的是 报文(message)。
- 为了从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,这就是分组,每个分组通过通信链路和分组交换机传送(交换机主要为路由器和链路层交换机)。
- 多数分组交换机在链路的 输入端 使用 存储转发传输(store-and-forward transmission)机制,需要接收完该分组的所有比特后(接收到部分比特先缓存),才开始向出链路传输(即转发),这会造成了 存储转发时延。
- 发送一个 L 比特小大的分组,假设链路的传输速率为 R 比特/秒,则传输该分组的时间为 L/R 秒,因为不是接收到比特马上转发,需要等待整个分组,因此时延为 L/R。
- 假设通过由 N 条速率均为 R 的链路组成的路径(在源和目的地之间有 N-1 台路由器),从源到目的地发送一个分组,时延为 N*(L/R)。
- 每台分组交换机有多条链路与之相连,对于每条相连的链路,该分组交换机具有一个 输出缓存(output buffer,也称为 输出队列(output queue)),用于存储路由器准备发送那条链路的分组。
- 如果到达的分组需要传输到某条链路,但发现该链路正在忙于传输其他分组,该到达的分组就在输出缓存中等待(排队),这就造成了 排队时延(queuing delay)。
- 因为缓存空间大小有限,一个到达的分组可能发现该缓存已被其他等待传输的分组完全充满,则会出现 分组丢失(丢包)(packet loss),到达的分组或已经排队的分组之一将被丢弃。
- 在因特网中,每个端系统具有一个 IP 地址。
- 当源端向目的端发送一个分组时,该分组的首部会包含一个目的地的 IP 地址。
- 当一个分组到达网络中的路由器时,路由器检查该分组的目的地址的一部分,并向相邻的一台路由器转发该分组。
- 每台路由器具有一个 转发表(forwarding table),用于将目的地址(或目的地址的一部分)映射成为输出链路。
- 当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索其转发表,以发现适当的出链路,路由器则将分组导向该出链路。
- 路由器是通过 路由选择协议(routing protocol),自动地设置这些转发表的。例如,一个路由选择协议可以决定从每台路由器到每个目的地的最短路径,并使用这些最短路径结果来配置路由器中的转发表。
- 通过网络链路和交换机移动数据有两种方法,分组交换(packet switching)和 电路交换(circuit switching)。
- 链路中的电路通过 频分复用(Frequency-Division Multiplexing,FDM)或 时分复用(Time-Division Multiplexing,TDM)实现。
- 电路交换因为 静默期(silent period)专用电路空闲而不够经济。
- 分组交换的性能也优于电路交换。
- 检查分组首部和决定将该分组导向何处所需要的时间是 处理时延 的一部分。
- 处理时延还包括检查比特级别的差错。
- 假定分组以先到先服务方式传输,当所有已经到达的分组被传输后,才能传输刚到达的分组,将所有分组的比特推向链路(即传输,或者说发射)所需要的时间,称为 传输时延。
- 一旦一个比特被推向链路,该比特需要向下一个路由器传播。从该链路的起点到下一个路由器传播所需要的时间是 传播时延。
- 传输时延是路由器推出分组所需要的时间(分组长度 / 传播速率),传播时间是一个比特从一台路由器传播到另一台路由器所需要的时间(两台路由器之间的距离 / 传播速率)。
- 定义处理时延为 dproc,传播时延为 dprop,传输时延为 dtrans,那么端到端时延为。
- dend-end = N(dproc + dtrans + dprop)
2. 协议分层
-
网络设计者以 分层(layer)的方式组织协议以及实现这些协议的网络硬件和软件。
- 各层的所有协议被称为 协议栈(protocol stack)。
-
国际标准化组织(International Standard Organization,ISO)公布了开放系统互连参考模型(OSI/RM)。OSI/RM 是一种分层的体系结构,参考模型共有 7 层。
-
因特网的协议栈有 5 个相对独立的层次:应用层、运输层、网络层、链路层 和 物理层,其中链路层和物理层常称为物理网层。
-
互联网协议栈与 ISO/OSI 参考模型对比
ISO/OSI 模型 | 协议 | 互联网协议栈 |
---|---|---|
应用层 Application | DotNetFtpLibrary、SMTP web API、SSH.NET、SnmpSharpNet、HTML Class、HTTP API server | 应用层 |
表示层 Presentation | CSS、GIF、HTML、XML、JSON、S/MIME | |
会话层 Session | RPC、SCP、NFS、PAP、TLS、FTP、HTTP、HTTPS、SMTP、SSH、Telnet | |
运输层 Transport | NBF、TCP、UDP | 运输层 |
网络层 Network | IP(IPv4、IPv6)、AppleTalk、ICMP、IPsec | 网络层 |
数据链路层 Data link | ARP、RARP、IEE 802.2、L2TP、LLDP、MAC、PPP、ATM、MPLS | 数据链路层 |
物理层 Physical | DOCSIS、DSL、Ethernet physical layer、ISDN、RS-232 | 物理层 |
2.1 应用层
- 使应用程序能够直接运行于运输层之上,直接为用户提供服务。
- 应用层也称为应用实体(AE),它由若干个特定应用服务元素(SASE)和一个或多个公用应用服务元素(CASE)组成。
- 应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。
- 应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理等。
- 包含的主要协议有文件传输协议(File Transfer Protocol,FTP)、简单邮件传送协议(Simple Mail Transfer Protocol, SMTP)、远程登录协议、域名服务协议(Domain Name Service,DNS)、网络新闻传送协议(Network News Transfer Protocol,NNTP)和超文本传输协议(Hyper Text Transfer Protocol,HTTP)等。
- 应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组,这种位于应用层的信息分组称为 报文(message)。
2.2 运输层
- 主要功能是对应用层传递过来的用户信息分成若干数据报,加上报头,便于端到端的通信。
- 当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求。当网络层服务质量较好时,它只用很少的工作。运输层还可进行复用,即在一个网络连接上创建多个逻辑连接。
- 运输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。运输层在给定的链路上通过流量控、分段/重组和差错控制。一些协议是面向链接的。这就意味着运输层能保持对分段的跟踪,并且重传那些失败的分段。
- 包括的协议有基本字节的面向连接应用层的传输 TCP 协议,TCP 为应用程序之间的数据传输提供可靠连接;面向无连接的用户数据报 UDP 协议,UDP 的传送不保证数据到达目的地,也不保证数据报的顺序,不提供重传机制;提供声音传送服务的 NVP 协议。
- 运输层的分组称为 报文段(segment)。
2.3 网络层
- 该层采用的协议称为 互联网协议,提供了跨 多个网络 的 寻址选路 功能。
- 包括的协议有网际 IP 协议;网际控制报文协议 ICMP;将 IP 地址转换成物理网层地址的 ARP 协议;将物理网地址转换成 IP 地址的 RARP 协议;还有一些路由协议。
- 地址解析和路由是这一层的重要目的。
- 网际层还可以实现拥塞控制、网际互连等功能。
- 网际层协议的代表包括:IP、IPX、RIP、OSPF 等。
- 路由器工作在网际层。
- 以太网采用广播方式发送数据包,所有计算机接收,不仅效率低,而且局限在发送者所在的子网络,如果两台计算机不在同一个子网络,广播无法传播。
- 互联网是无数子网络共同组成的一个巨型网络,每一个子网络有一个网络地址。
- MAC 地址和网络地址之间没有任何联系,MAC 地址绑定在网卡上,网络地址则由管理员分配,两者只是随机组合在一起。
- 网络地址确定计算机所在的子网络,MAC 地址则将数据包送到该子网络中的目标网卡。
- 网络层负责将称为 数据报(datagram)的网络层分组从一台端系统移动到另一台端系统。
2.4 链路层
- 链路层负责与物理传输的连接媒介打交道,主要功能是接收数据包,并把接收到的数据包发送到指定的网络中去。
- 在 " 物理层 " 的上方,确定了 0 和 1 的 分组 方式。
- 只有有了数据包的定义、网卡的 MAC 地址、广播的发送方式,网络接口层才可以在多台计算机之间传送数据。
- 网络接口层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。
- 交换机主要工作在网络接口层,但也有多层交换机。
以太网协议
- 以太网规定,一组电信号构成一个数据包,叫做 帧(Frame)。每一帧分成两个部分:标头(Head)和 数据(Data)。
- 标头包含数据包的一些说明项,比如发送者、接受者、数据类型等。
- 数据则是数据包的具体内容。
- 标头的长度,固定为 18 字节,数据的长度,最短为 46 字节,最长为 1500 字节。因此,整个帧最短为 64 字节,最长为 1518 字节。如果数据很长,就必须分割成 多个帧 进行发送。
MAC 地址
- 以太网规定,连入网络的所有设备,都必须具有 " 网卡 " 接口。
- 数据包必须是从一块网卡,传送到另一块网卡。
- 网卡的地址,就是数据包的发送地址和接收地址,叫做 MAC 地址。
- 每块网卡出厂的时候,都有一个全世界独一无二的 MAC 地址,长度是 48 个二进制位,通常用 12 个十六进制数表示。
- 前 6 个十六进制数是厂商编号,后 6 个是该厂商的网卡流水号。有了 MAC 地址,就可以定位网卡和数据包的路径了。
广播
- 以太网数据包必须知道接收方的 MAC 地址,然后才能发送。
- 以太网不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。
- 每台计算机都会读取这个包的标头,找到接收方的 MAC 地址,然后与自身的 MAC 地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。
- 这种发送方式就叫做 广播(broadcasting)。
2.5 物理层
- 物理层利用物理媒介为 比特流(Bit)提供物理连接,一般将网络接口层和物理层统称 TCP/IP 协议的物理网。
- 把电脑连接起来的物理手段(可以用光缆、电缆、双绞线、无线电波等方式),主要规定了网络的一些电气特性,作用是负责传送 0 和 1 的电信号。
- 属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45 等。
- 集线器工作在物理层。
2.6 封装
- 在每一层,一个分组具有两种类型的字段。
- 首部字段 和 有效载荷字段(payload field)。
- 有效载荷字段通常是来自上一层的分组。
- 一个应用层报文(Message)被传送到传输层,在最简单的情况下,运输层收取到报文(Message)并附加运输层首部信息(Hs),该首部将被接收端的运输层使用。应用层报文(Message)和运输层首部信息(Hs)一起构成了运输层报文段(Segment),附加的信息包含。
- 允许接收端运输层向上向适当的应用程序交付报文的信息。
- 差错检测位信息。
- 运输层向网络层传递报文段(Segment),网络层增加如源和目的端系统地址等网络层首部信息(Hd),生成网络层数据报(Datagram)。
- 网络层数据报(Datagram)传递给链路层,链路层增加链路层首部信息(Hf)并生成链路层帧(Frame)。
- 其中路由器和链路层交换机并不是实现了协议栈中的所有层次。
- 链路层交换机实现了第一层和第二层。
- 路由器实现了第一层到第三层。