精华内容
下载资源
问答
  • 一、OSI网络分层参考模型 网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、...

    一、OSI网络分层参考模型
    网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、时限和测试比较容易。协议划分的一个主要原则是确保目标系统有效且效率高。为了提高效率,每个协议只应该注意没有被其他协议处理过的那部分通信问题;为了主协议的实现更加有效,协议之间应该能够共享特定的数据结构;同时这些协议的组合应该能处理所有可能的硬件错误以及其它异常情况。为了保证这些协议工作的协同性,应当将协议设计和开发成完整的、协作的协议系列(即协议族),而不是孤立地开发每个协议。 
    在这里插入图片描述
    在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。下图表示了OSI分层模型。在这里插入图片描述
    第一层物理层 
     第一层负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。所有比物理层高的层都通过事先定义好的接口而与它通话。如以太网的附属单元接口(AUI),一个DB-15连接器可被用来连接层一和层二。
    第二层数据链路层 
     数据链路层通过物理网络链路提供可靠的数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。物理编址(相对应的是网络编址)定义了设备在数据链路层的编址方式;网络拓扑结构定义了设备的物理连接方式,如总线拓扑结构和环拓扑结构;错误校验向发生传输错误的上层协议告警;数据帧序列重新整理并传输除序列以外的帧;流控可能延缓数据的传输,以使接收设备不会因为在某一时刻接收到超过其处理能力的信息流而崩溃。数据链路层实际上由两个独立的部分组成,介质存取控制(Media Access Control,MAC)和逻辑链路控制层(Logical Link Control,LLC)。MAC描述在共享介质环境中如何进行站的调度、发生和接收数据。MAC确保信息跨链路的可靠传输,对数据传输进行同步,识别错误和控制数据的流向。一般地讲,MAC只在共享介质环境中才是重要的,只有在共享介质环境中多个节点才能连接到同一传输介质上。IEEE MAC规则定义了地址,以标识数据链路层中的多个设备。逻辑链路控制子层管理单一网络链路上的设备间的通信,IEEE 802.2标准定义了LLC。LLC支持无连接服务和面向连接的服务。在数据链路层的信息帧中定义了许多域。这些域使得多种高层协议可以共享一个物理数据链路。 
    第三层网络层 
     网络层负责在源和终点之间建立连接。它一般包括网络寻径,还可能包括流量控制、错误检查等。相同MAC标准的不同网段之间的数据传输一般只涉及到数据链路层,而不同的MAC标准之间的数据传输都涉及到网络层。例如IP路由器工作在网络层,因而可以实现多种网络间的互联。
    第四层传输层 
     传输层向高层提供可靠的端到端的网络数据流服务。传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。流控管理设备之间的数据传输,确保传输设备不发送比接收设备处理能力大的数据;多路传输使得多个应用程序的数据可以传输到一个物理链路上;虚电路由传输层建立、维护和终止;差错校验包括为检测传输错误而建立的各种不同结构;而差错恢复包括所采取的行动(如请求数据重发),以便解决发生的任何错误。传输控制协议(TCP)是提供可靠数据传输的TCP/IP协议族中的传输层协议。  
    第五层会话层 
     会话层建立、管理和终止表示层与实体之间的通信会话。通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现。它还包括创建检查点,使通信发生中断的时候可以返回到以前的一个状态。  
    第六层表示层 
     表示层提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息可以被另一个系统应用层识别。表示层的编码和转化模式包括公用数据表示格式、性能转化表示格式、公用数据压缩模式和公用数据加密模式。  公用数据表示格式就是标准的图像、声音和视频格式。通过使用这些标准格式,不同类型的计算机系统可以相互交换数据;转化模式通过使用不同的文本和数据表示,在系统间交换信息,例如ASCII(American Standard Code for Information Interchange,美国标准信息交换码);标准数据压缩模式确保原始设备上被压缩的数据可以在目标设备上正确的解压;加密模式确保原始设备上加密的数据可以在目标设备上正确地解密。  表示层协议一般不与特殊的协议栈关联,如QuickTime是Applet计算机的视频和音频的标准,MPEG是ISO的视频压缩与编码标准。常见的图形图像格式PCX、GIF、JPEG是不同的静态图像压缩和编码标准。  
    第七层应用层 
     应用层是最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件直接相互作用的。注意,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(Application Program Interface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。应用层的功能一般包括标识通信伙伴、定义资源的可用性和同步通信。因为可能丢失通信伙伴,应用层必须为传输数据的应用子程序定义通信伙伴的标识和可用性。定义资源可用性时,应用层为了请求通信而必须判定是否有足够的网络资源。在同步通信中,所有应用程序之间的通信都需要应用层的协同操作。 
      OSI的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等。在这里插入图片描述
    二、TCP/IP分层模型
    TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。下图表示了TCP/IP分层模型的四层。在这里插入图片描述
    TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。在这里插入图片描述
    TCP/IP分层模型的四个协议层分别完成以下的功能: 
    第一层网络接口层
      网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。 
    第二层网间层
      网间层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。 
    第三层传输层
      传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务
    第四层应用层 
      应用层对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等,

    展开全文
  • 一、体系结构 计算机网络的各层及其协议的集合被称为网络的体系结构,按照不同的维度,其常被分为七层、五层、四层网络结构: 1.1 七层网络模型 开放式系统互联模型(Open ...1.2 四层网络模型 互联网协议套件(...

    一、体系结构

    计算机网络的各层及其协议的集合被称为网络的体系结构,按照不同的维度,其常被分为七层、五层、四层网络结构:

    1.1 七层网络模型

    开放式系统互联模型(Open System Interconnection Model,简称为 OSI 模型)是一种概念模型,由国际标准化组织提出,并试图成为计算机在世界范围内互连为网络的标准框架,它具有七层网络结构。

    1.2 四层网络模型

    互联网协议套件(Internet Protocol Suite,IPS)是多个网络传输协议的集合,它为网际网络的基础通信提供架构支撑。由于该协议族中最核心的两个协议分别为 TCP(传输控制协议)和 IP(网际协议),因此它也被称为 TCP/IP 协议族(TCP/IP Protocol Suite 或 TCP/IP Protocols),简称 TCP/IP,它具有四层网络结构 。

    1.3 五层网络模型

    OSI 七层网络模型由国际标准化组织进行制定,它是正统意义上的国际标准。但其实现过于复杂,且制定周期过长,在其整套标准推出之前,TCP/IP 模型已经在全球范围内被广泛使用,所以 TCP/IP 模型才是事实上的国际标准。TCP/IP 模型定义了应用层、传输层、网际层、网络接口层这四层网络结构,但并没有给出网络接口层的具体内容,因此在学习和开发中,通常将网络接口层替换为 OSI 七层模型中的数据链路层和物理层来进行理解,这就是五层网络模型:

    https://github.com/heibaiying

    1. 应用层 (application layer):直接为应用进程提供服务。应用层协议定义的是应用进程间通讯和交互的规则,不同的应用有着不同的应用层协议,如 HTTP协议(万维网服务)、FTP协议(文件传输)、SMTP协议(电子邮件)、DNS(域名查询)等。
    2. 传输层 (transport layer):有时也译为运输层,它负责为两台主机中的进程提供通信服务。该层主要有以下两种协议:
      • 传输控制协议 (Transmission Control Protocol,TCP):提供面向连接的、可靠的数据传输服务,数据传输的基本单位是报文段(segment);
      • 用户数据报协议 (User Datagram Protocol,UDP):提供无连接的、尽最大努力的数据传输服务,但不保证数据传输的可靠性,数据传输的基本单位是用户数据报。
    3. 网络层 (internet layer):有时也译为网际层,它负责为两台主机提供通信服务,并通过选择合适的路由将数据传递到目标主机。
    4. 数据链路层 (data link layer):负责将网络层交下来的 IP 数据报封装成帧,并在链路的两个相邻节点间传送帧,每一帧都包含数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
    5. 物理层 (physical Layer):确保数据可以在各种物理媒介上进行传输,为数据的传输提供可靠的环境。

    二、物理层

    物理层考虑的是如何在各种媒介上传输数据,它定义了与传输媒介相关的接口特性,如:

    • 机械特性:指明接口所用的接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。
    • 电气特性:指明在接口电缆的各条线上出现的电压的范围。
    • 功能特性:指明某条线上出现的某一电平的电压的意义。
    • 规程特性:指明对于不同功能的各种可能事件的出现顺序。

    2.1 传输媒介

    物理层并不指具体的传输媒介,相反物理层希望能够尽量屏蔽不同媒介间的差异。这些传输媒介可以分为以下两类:

    • 导引型传输媒介:信号被导引沿着固体媒介进行传播,如双绞线、同轴电缆、光缆。
    • 非导引型传输媒介:信号在自由空间内进行传播,如短波通信、微波通信。

    2.2 信道分类

    信道是指信息传输的基本通道,它可以分为以下三类:

    • 单工信道:只能有一个方向的通信而没有反方向的通信;
    • 半双工信道:通信的双方都能发送信息,但双方不能同时发送或接收信息。
    • 全双工信道:通信的双方可以同时发送和接收信息。

    2.3 信道复用

    信道复用是信息传输当中最常使用的技术,用于提高信息传输的效率,根据采用技术的不同,可以分为以下几类:

    1. 频分复用

    频分复用(FDM,Frequency Division Multiplexing)是将用于传输信道的总带宽划分成若干个子频带(或称子信道),每个子信道传输一路信号:

    https://github.com/heibaiying

    2. 时分复用

    时分复用(TDM,Time Division Multiplexing) 是指采用同一物理连接的不同时段来传输不同的信号:

    https://github.com/heibaiying

    如上图所示,在一个时分复用帧中,不同用户的信号周期性出现,如果某个用户处于闲置状态,则其对应的帧上也会出现空闲:

    https://github.com/heibaiying

    为了解决时分复用的这个缺点就产生了统计时分复用。

    3. 统计时分复用

    在统计时分复用(Statistic TDM)模式下,各用户将数据发送到集中器的输入缓存中,然后由集中器进行顺序扫描并放入到 STDM 帧中:

    https://github.com/heibaiying

    4. 波分复用

    波分复用(WDM,Wavelength Division Multiplexing)是将两种或多种不同波长的光载波信号在发送端经复用器汇合在一起,并耦合到光线路的同一根光纤中进行传输;在接收端,经分用器将各种波长的光载波分离,然后由光解调器作进一步处理以恢复原信号:

    https://github.com/heibaiying

    5.码分复用

    码分复用(CDM,Code Division Multiplexing)是靠不同的编码来区分各路原始信号的一种复用方式。

    三、数据链路层

    3.1 基本功能

    1. 封装成帧

    数据链路层会将网络层传递下来的数据拆分为多段,并在每段数据前后分别添加首部和尾部,以构成一个完成的帧,帧是链路层传输的基本数据单元。帧首部用控制字符 SOH 表示,帧尾部用控制字符 EOT 表示:

    https://github.com/heibaiying

    2. 透明传输

    透明传输是指不论何种数据都应当能够在链路上进行安全地传输。由于我们采用控制字符来封装帧,当传输数据中出现了控制字符时,就会导致无法正确区分出帧头帧尾,此时需要使用转移字符 ESC 来进行转义:

    https://github.com/heibaiying

    3. 差错检测

    由于现实环境中的通信链路都是不理想的,因此比特在传输过程中可能会产生差错:1 可能会变成 0,而 0 也可能变成 1,这称为比特差错。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率。为了解决这个问题,数据链路层将待发送的数据分为多组,并采用循环冗余校验(CRC,Cyclic Redundancy Check)技术为每组数据生成冗余校验码,之后将每组数据和其校验码共同构成一帧后再发送出去。

    3.2 PPP 协议

    点到点协议(PPP,Point to Point Protocol)是目前使用最为广泛的数据链路层协议,主要用于建立点对点的连接来传输数据单元。它由以下三部分组成:

    • 一个将 IP 数据报封装到串行链路的方法;
    • 链路控制协议 (LCP) :一种扩展链路控制协议,用于建立、配置、测试和管理数据链路连接。
    • 网络控制协议 (NCP) :协商该链路上所传输的数据包格式与类型,建立、配置不同的网络层协议。

    3.3 Mac 地址

    MAC 地址(Media Access Control Address),直译为媒体存取控制地址,也称为局域网地址(LAN Address)或物理地址(Physical Address)。MAC 地址用于在网络中唯一标识一个网卡,一台设备若有多个网卡,则每个网卡都会有一个唯一的 MAC 地址。链路层通过 Mac 地址来识别需要发送数据的目标节点。

    MAC地址为 48 位的(6 个字节),通常表示为 12 个 16 进制数,每两个 16 进制数之间用冒号隔开,如 08:00:20:0A:8C:6D,前 3 字节为组织机构唯一标识(OUI,Organizationally Unique Identifier),由 IEEE 的注册管理机构统一分配给硬件生产厂家,以确保在全球范围内的唯一;后 3 字节由厂家自行分配。

    3.4 局域网

    局域网(LAN,Local Area Network)是连接住宅、学校、实验室、大学校园或办公大楼等有限区域内计算机的网络。 按照 IEEE802 标准,局域网体系结构分为三层,即物理层,媒体链路控制层(MAC),逻辑链路控制层(LLC)。实际上是两层,该标准将数据链路层拆分为更具体的媒体链路控制层和逻辑链路控制层。

    3.5 以太网

    以太网(Ethernet)是目前使用范围最广的局域网,以常用的以太网 v2 标准为例,其帧格式如下:

    https://github.com/heibaiying

    其中 Mac Header 分别记录了目的地的 Mac 地址和来源地的 Mac 地址。

    四、网络层

    4.1 网际协议 IP

    网际协议(Internet Protocol)是网络层中最重要的协议,也是 TCP\IP 两大核心协议之一,所有需要互联的计算机网络都需要遵循该协议,以便能够将不同网络在全世界范围内连接起来。该层传输的基本数据单元是 IP 数据报,其格式如下:

    https://github.com/heibaiying

    各字段的含义如下:

    • 版本:占 4 位,指 IP 协议的版本(IPv4 或 IPv6)。
    • 首部长度:占 4 位,可表示的最大十进制数是 15 。
    • 区分服务:只有在使用区分服务时,该字段才有用,一般情况下不会用到。
    • 总长度:指首部长度和数据长度之和,单位为字节。该字段为 16 位,因此数据报最大长度为 65535 个字节,由于数据链路层规定了一个帧中数据字段的最大长度 MTU(Maximum Transfer Unit,最大传送单元),以以太网为例,该值为 1500,所以当数据报长度超过 MTU 时,需要对数据进行分片。
    • 标识:占 16 位,由 IP 软件内部的计数器维护,每产生一个数据报,计数器就加 1,用于发生分片时,将相同数据报标识的分片重组为原数据报。
    • 标志:占 3 位,目前只有两位有意义:
      • 最低位 MF(More Fragment):为 1 时表示后面还有分片,为 0 时表示该数据报分片已经是最后一个;
      • 中间位 DF(Don’t Fragment):代表不能分片,只有将其设为 1 时,才允许分片。
    • 片偏移:占 13 位,标识该片在原数据报中的偏移位置。
    • 生存时间:TTL,每经过一个路由器,其值就会减 1,当值为 0 时,就将该数据报丢弃。这样做是为了避免数据报目的地址不存在时,数据报一直在网络中无限制转发。
    • 协议:占 8 位,指明数据报携带的数据所使用的协议。
    • 首部校验和:占 16 位,其只校验数据报的首部,不包括数据部分。
    • 源地址:占 32 位,数据来源的 IP 地址;
    • 目的地址:占 32 位,目的地的 IP 地址。

    4.2 ARP 协议

    IP 数据报中的源地址和目标地址均是 IP 地址,而数据链路层的帧中的源地址和目标地址均是 Mac 地址,那么怎样根据 IP 地址获得 Mac 地址?这就需要使用到 ARP 协议。互联网络中的每台主机都有一个 ARP 缓存表,存储了本局域网内各主机和路由器的 IP 地址与 Mac 地址的映射关系,示例如下:

    主机名称IP地址MAC地址
    A192.168.38.1000-AA-00-62-D2-02
    B192.168.38.1100-BB-00-62-C2-02
    C192.168.38.1200-CC-00-62-C2-02
    D192.168.38.1300-DD-00-62-C2-02
    E192.168.38.1400-EE-00-62-C2-02

    你也可以使用 arp -a 来查看你本机的 ARP 缓存表 。

    拥有 ARP 表后,数据链路层中帧的发送过程如下:

    • 主机 A 发送数据前, 会先查看自己的 ARP 表中是否有目标 IP 对应的 Mac 地址,如果有则将其封装到帧里,然后发送;
    • 如果没有找到,主机 A 则会以广播的方式向同一网段内的所有主机发出对该 IP 地址的询问;
    • 对应 IP 地址的主机接收到这个消息后以单播的方式将对应的 Mac 地址回复给主机 A 。

    4.3 IP 地址分类

    IP 地址由 ICANN(The Internet Corporation for Assigned Names and Numbers,互联网名称与数字地址分配机构)进行分配,它是一个在全世界范围内唯一的 32 位标识符,最早的 IP 地址采用两级分类,只由 网络号 + 主机号 组成,分为以下五类:

    A,B,C 三类是最常使用的类型,其类别位分别为 0,10,110 。需要注意的是另外并非所有 IP 地址都可用来分配,限制如下:

    网络号限制

    • 网络号全为 0 的 IP 地址是保留地址,代表 “本网络”(B,C 两类地址的网络号开头都是 1,所以不存在全 0 的情况);
    • 网络号为 127(即 01111111)也是保留地址,作为回环测试使用(同上,B 和 C 两类地址也不存在该情况);
    • B 类地址 128.0.0.0 (网络号为 10000000 00000000)不能用于分配;
    • C 类地址 192.0.0.0 (网络号为 11000000 00000000)不能用于分配;

    主机号限制

    • 全 0 主机号表示该 IP 地址是本主机所连接到的单个网络地址,如 IP 地址为 5.6.7.8 的主机所在的网络地址就是 5.0.0.0,该地址不能用于分配;
    • 全 1 主机号表示该网络上的所有主机,因此也不能被分配。

    综上所述,每种网络类型所能分配到 IP 地址的情况如下:

    网络类别最大可分配的网络数第一个可分配的网络号最后一个可分配的网络号每个网络的最大主机数
    A126(27-2)112616 777 215(224-2)
    B16 383(214-1)128.1191.25565 534(216-2)
    C2 097 151(221-1)192.0.1223.255.255254(28-2)

    从该表我们可以看出来,两级 IP 地址灵活性不足,且利用率较低,假设你现在的公司有 4 个机房(每个机房 20 台主机),出于信息安全的考虑,每个机房的网络需要彼此隔离,在两级 IP 的架构下你就只能申请 4 个 C 类地址,此时你浪费的 IP 数量为 (254-20)*4 ,为解决两级 IP 地址灵活性不足问题,就产生了三级 IP 地址,即划分子网。此时你只需要申请一个 C 类地址,然后将其划分为 4 个子网。

    4.4 划分子网

    划分子网方案诞生与 1985 年,它从主机号借用若干位作为子网号,从而将 IP 地址划分为三级:网络号 + 子网号 + 主机号。假设网络地址为 192.168.10.0,利用子网掩码 255.255.255.224 对其进行划分子网,此时可以划分为四个子网:

    https://github.com/heibaiying

    由于子网对外是不可见的,所以需要使用子网掩码来辅助路由,假设目标 IP 地址为 192.168.10.198,想要正确到达该地址,必须先正确到达网络地址 192.168.10.192 。网络地址,子网掩码和主机 IP 之间的关系如下:

    IP 地址:192.168.10.198             二进制IP地址:11000000.10101000.00001010.11000110
    子网掩码:255.255.255.224           二进制掩码:11111111.11111111.11111111.11100000
    网络地址:192.168.10.192            按位逻辑与运算结果为:11000000.10101000.00001010.11000000
    

    现代互联网标准规定:所有网络都必须使用子网掩码,同时路由器的路由表中也必须包含子网掩码这一项。因为路由表包含了 IP 地址和子网掩码,所以通过位运算就能很快计算出网络地址。

    最后,如果一个网络不划分子网掩码,则其子网掩码取默认值,各类 IP 地址默认的掩码如下:

    类别子网掩码的二进制数值子网掩码的十进制数值
    A11111111 00000000 00000000 00000000255.0.0.0
    B11111111 11111111 00000000 00000000255.255.0.0
    C11111111 11111111 11111111 00000000255.255.255.0

    4.5 构成超网

    无类别域间路由(CIDR,Classless Inter-Domain Routing)是一个给用户分配 IP 地址以及在互联网上有效地路由 IP 数据报的地址归类方法。它消除了传统的 A 类,B 类 和 C 类地址以及划分子网的概念,采用无分类的两级编址:

    IP地址 ::= {<网络前缀>,<主机号>}
    

    并使用斜线记法进行表示:

    128.14.35.7 / 20 = 10000000 00001110 00100011 00000111

    此时表示前 20 位都是网络前缀,该地址所处的地址块中的最小地址和最大地址则分别为:

    十进制二进制
    最小地址128.14.32.010000000 00001110 00100000 00000000
    最大地址128.14.47.25510000000 00001110 00101111 11111111

    每个地址块可以使用地址块中的最小地址和网络前缀的位数进行指定,例如上面的地址块可以记为 128.14.32.0 / 20 ,也可以简称为 /20地址块 。为更方便的进行路由选择,CIDR 使用 32 位的地址掩码,斜线后面的数字同时表示地址掩码中 1 的个数,例如 /20地址块 的地址掩码为 11111111 11111111 11110000 00000000 。

    由于一个 CIDR 地址块可以包含多个地址,所以路由表就利用 CIDR 地址块来查找目标网络,这种地址聚合常称为路由聚合,也称为构成超网。通过路由聚合,可以极大减少路由表中项目的数量,从而提高网络的整体性能。

    4.6 ICMP 和 IGMP

    在网络层,除了上面介绍的 IP 协议和 ARP 协议外,最常使用的还有以下两个协议:

    • 互联网控制消息协议 (ICMP,Internet Control Message Protocol):为了提高 IP 数据报的交付率,ICMP 允许主机或路由器报告差错情况和提供异常报告给发送者,以便发送者进行补偿行为。
    • 网路群组管理协议 (IGMP,Internet Group Management Protocol) :是用于管理网路协议多播组成员的一种通信协议。IP 主机和相邻的路由器可以利用 IGMP 来建立多播组的组成员。

    4.7 专用地址

    RFC 1918 中指明了一些专用地址(Private Address),这些地址只能用于一个机构的内部通信,但不能用于和互联网上的主机进行通信。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。下面是三个专用的地址块:

    • 10.0.0.0 – 10.255.255.255(或记为 10.0.0.0/8 ,又称为 24 位块);
    • 172.16.0.0 – 172.31.255.255(或记为 172.16.0.0/12 ,又称为 20 位块);
    • 192.168.0.0 – 192.168.255.255(或记为 192.168.0.0/16 ,又称为 16 位块)。

    因为不同机构可以采用相同的专用地址,因此其也被称为可重用地址。

    4.8 VPN

    如果一个机构内使用的是由专用地址构成的专用网,但该机构的部门却分布在不同的、远距离的地理位置上,此时可以利用公共的互联网作为本机构内各专用网之间的通信载体,这样的专用网称为虚拟专用网(Virtual Private Network)。此时通过公共互联网的数据可以使用 IPSec(IP Security)协议加密来保证安全性。

    4.8 NAT

    当某台主机获取到的地址是专用地址时,其是无法和外部互联网进行通讯的,如果想要和外部互联网进行通讯,可以采用 NAT(Network Address Translation,网络地址转换)技术来实现。该方法需要在专用网连接到互联网的路由器上安装 NAT 软件,NAT 路由器需要至少一个有效的全球 IP 地址,当使用专用地址的主机在和外界进行通信时,NAT 路由器会将其转换为全球 IP 地址。

    由上面的原理也可以看出,具有 n 个全球 IP 地址的路由器最多只允许 n 台主机同时接入到互联网。 为了解决这个问题,现在常用的 NAT 转换表会把传输层的端口号也利用上。

    https://github.com/heibaiying

    4.9 IPv6

    上面我们介绍过 IPv4 的长度为 32 位,因此所有可分配的 IP 地址大约为 42 亿个,到 2011 年 2 月,所有可分配地址均已耗尽,因此产生了 IPv6,IPv6 的地址长度为 128 位,采用十六进制表示。

    五、传输层

    传输层负责为两台主机中的进程提供通信服务,它使用 16 位的端口号来标识端口,当两个计算机中的进程要进行通讯时,除了要知道对方的 IP 地址外,还需要知道对方的端口。该层主要有以下两个协议:用户数据报协议(UDP,User Datagram Protocol)和传输控制协议(TCP,Transmission Control Protocol):

    5.1 UDP

    用户数据报协议 UDP 具有以下特点:

    • UDP 是无连接的;

    • UDP 提供尽最大努力的交付服务,但不保证交付的可靠性;

    • UDP 是面向报文的;

    • UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低;

    • UDP 支持一对一、一对多、多对一和多对多的交互通信;

    • UDP 的首部开销较小,只有 8 个字节,远小于 TCP 的 20 个字节。首部共由四个字段组成,每个字段两个字节:

      • 源端口号:在需要对方回信时选用,不需要时可用全 0 表示;
      • 目标端口号;
      • 长度:UDP 用户数报的总长度;
      • 校验和:检测 UDP 用户数据报在传输中是否有错,如果有错则丢弃。

      https://github.com/heibaiying

    5.2 TCP 简介

    传输控制协议 TCP 具有以下特点:

    • TCP 是面向连接的;

    • TCP 提供可靠的交付服务;

    • TCP 提供全双工的通信,两端都设有缓存,用来临时存放通信数据;

    • 面向字节流,这里的流指的是流入或流出进程的字节序列;

    • 每一条 TCP 连接唯一地被通信两端的两个端点所确定,即:

      TCP 连接 ::= {socket1,socket2} = {(IP1,port1),(IP2,port2)}
      

    5.3 TCP 报文首部

    TCP 虽然是面向字节流的,但其传输的基本数据单元则是报文段。一个 TCP 报文段分为首部和数据两部分,TCP 首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项(n 为整数),具体格式如下:

    https://github.com/heibaiying

    各字段的含义如下:

    1. 源端口和目的端口:各占 2 个字节。

    2. 序号:占 4 字节,序号范围为 [ 0 , 232 - 1 ] ,序号增加到 232 - 1 后又会回到 0 。在一个 TCP 连接中,传送的字节流中的每一个字节都要按顺序进行编号。

    3. 确认号:占 4 字节,表示期望收到对方下一个报文段的第一个数据字节的序号。例如 B 收到 A 的报文,序号值为 501 ,数据长度为 200 字节(序号 501 ~ 700),此时表明 B 正确收到了序号 700 及其之前的所有数据,因此 B 在发送给 A 的确认报文段中确认号的值为 701。

    4. 数据偏移:占 4 位,其所能表达的最大数字是 15 。数据偏移表示该数据报中数据的起始位置,由于数据报是由 首部+数据 组成,所以实际上就是指报文段的首部长度。数据偏移的单位是 32 位字(即以 4 字节长为单位),所以数据偏移的最大长度是 60 (15*4)字节,即 TCP 报文段的首部长度不能超过 60 字节,对应的选项长度不能超过 40 字节。

    5. 保留:占 6 位,保留为今后使用,目前应置为 0 。

    6. 六个控制位:其作用分别如下:

      • 紧急 URG (URGent):当值为 1 时,表明紧急指针字段有效,代表此报文中有紧急数据,应尽快传送,而无需按原来的排队顺序传送。
      • 确认 ACK (ACKnowledgment):当值为 1 时,确认号有效;值为 0 时,确认号无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置为 1。
      • 推送 PSH (Push):当值为 1 时,表示接受方应该将数据立即交付给应用进程,而不是等待缓存填满后再向上交付。
      • 复位 RST (Reset):当值为 1 时,表明 TCP 连接出现严重差错,必须立即释放,然后再重新建立连接;也可以用来拒绝一个非法的报文段或拒绝打开一个连接。
      • 同步 SYN (SYNchronization):在连接建立时用来同步序号。当 SYN = 1 而 ACK = 0 时,表明这是一个连接请求报文段;对方若同意建立连接,则应在响应的报文段中使 SYN = 1 和 ACK = 1 。
      • 终止 FIN (FINis):当值为 1 时,表明此报文段发送方的数据已发送完毕,并要求释放连接。
    7. 窗口:占 2 字节,取值范围为 [ 0 , 216 - 1 ] 之间的整数。窗口字段保持动态变化,用于指明接收方允许发送方发送的数据量。

    8. 校验和:占 2 字节,校验的字段范围包括首部和数据。

    9. 紧急指针:占 2 字节,仅在 URG = 1 时才有意义,用于指明紧急数据的结束位置,位于结束位置之后的就是普通数据。

    10. 选项:长度可变,最长可达 40 字节。可用的选项有:最大报文段长度 ,窗口扩大选项、时间戳选项等。

    5.4 三次握手

    TCP 建立连接的过程叫做握手,握手需要在客户和服务器之间交换三个 TCP 报文段,具体如下:

    1. 服务器进程 B 首先创建传输控制模块 TCB,然后进入 LISTEN(收听)状态,准备接受客户端的连接请求;

    2. 客户端进程 A 首先创建传输控制模块 TCB,然后发出连接请求报文段,此时同步位 SYN = 1 ,同时选择一个初始序号 seq = x ,之后进入 SYN-SENT(同步已发送)状态;

    3. B 收到连接请求报文段后,如果同意建立连接,则发送确认报文段,此时 SYN 和 ACK 都置为 1,确认号 ack = x + 1 ,并为自己选择一个初始序号 seq =y ,之后进入 SYN-RCVD(同步收到)状态;

    4. A 收到来自 B 的确认后,发出最后的确认,确认报文段的 ACK 为 1,确认号 ack = y + 1,序号 seq = x + 1。TCP 标准规定,ACK 报文段可以携带数据也可以不携带,如果不携带则该序号不被消耗,下一个数据报文段的序号仍然是 seq = x + 1。之后 A 进入 ESTABLISHED(已连接)状态;

    5. 当 B 收到 A 的确认后,也进入 ESTABLISHED 状态。

    5.5 四次挥手

    数据传输结束后,通信的双方都可以释放连接,具体过程如下:

    1. 假设应用进程 A 先主动关闭连接,此时需要发送连接释放报文段:首部终止控制位 FIN 为 1,序号 seq = u,其中 u 等于前面传送过的数据的最后一个字节的序号加 1 。之后 A 进入 FIN-WAIT-1(终止等待 1)状态;

    2. 应用进程 B 收到连接释放报文段后立即发出确认,确认号 ack = u + 1,序号 seq = v ,其中 v 等于前面传送过的数据的最后一个字节的序号加 1 。之后 B 进入 CLOSE-WAIT(关闭等待)状态,并通知高层应用进程。此时 TCP 连接处于半关闭状态,即 A 已经没有数据需要发送,但如果 B 发送数据,A 仍要接收;

    3. A 收到来自 B 的确认后就进入 FIN-WAIT-2(终止等待 2)状态,等待 B 发出连接释放报文段;

    4. 若高层应用进程已经没有数据要发送,则通知 B 释放 TCP 连接。此时 B 发出释放连接报文段:首部终止控制位 FIN 为 1,序号 seq = w(在半关闭状态下 B 可能又发送了一些数据),另外还需要重复上次已经发送过的确认号 ack = u + 1。之后 B 进入 LAST-ACK(最后确认)状态;

    5. A 收到 B 的连接释放报文段后,发出最后确认:ACK 为 1,确认号 ack = w + 1,序号 seq = u + 1,然后进入 TIME-WAIT(有时间限制的等待)状态;

    6. B 收到来自 A 的最后确认后进入 CLOSED(关闭)状态;

    7. A 经过 2 倍的 MSL(Maximum Segment Lifetime,最长报文段寿命)后,才进入 CLOSED 状态。

    RFC 793 建议 MSL 设置为 2 分钟,现在的网络环境已经有了质的提升,该值可以按需缩短。A 之所以要等待两倍的 MSL 时间后才进入 CLOSED 状态,主要基于以下两个原因:

    • 为了保证 A 发送的最后一个 ACK 报文段能够到达 B。如果 B 没有收到该最后确认,则会进行超时重发 FIN+ACK 报文段,A 在 2MSL 等待时间内会响应该报文段并重发最后确认;
    • 确保本次连接内产生的所有报文段都从网络消失,进而确保下一个新的连接中不会出现旧的连接请求报文段。

    5.6 可靠传输的原理

    1. 停止等待协议

    想要实现可靠性传输,最基本的可以使用停止等待协议:每发送完一个数据单元就停止发送,并等待对方的确认。

    https://github.com/heibaiying

    此时面临两个问题:

    • 如果 A 给 B 发送数据的过程中出现了丢失,此时 B 无法收到数据,自然也不会返回确认,那么程序就会一直等待;
    • 如果 B 给 A 发送确认的过程中出现了丢失或经过很长时间才到达 A,那么程序也会持续等待。

    针对第一个问题,解决方案是如果在给定的时间内没有收到确认,则进行超时重传:

    https://github.com/heibaiying

    针对第二个问题,其解决方案依然是超时重传,具体细分为以下两种情况:

    • 如果 B 收到了 M1,只是返回的确认丢失了,当超时重传后,B 需要丢弃重复收到的 M1;

    • 如果 B 的返回确认没有丢失,只是超过了重传时间后才到达 A,此时 A 可能会收到两次确认,一次是补传得到确认,一次是原有的延迟到达的确认,A 需要丢弃延时到达的确认,不做任何处理:

      https://github.com/heibaiying

    在基本的停止等待协议中,一次只发送一个数据单元,此时信道利用率非常低,为了解决这个问题,可以采用流水线传输,一次发送多个数据单元:

    https://github.com/heibaiying

    当使用流水线传输时,为保证可靠性,需要配合使用连续 ARQ 协议和滑动窗口协议。

    2. 连续 ARQ 协议

    连续ARQ(Automatic Repeat reQuest)协议指发送方维持着一个一定大小的发送窗口,位于发送窗口内的所有分组都可连续发送出去,中途不需要等待对方的确认,发送方在每收到一个确认时就把发送窗口向前滑动一个分组的位置:

    https://github.com/heibaiying

    通常接收方一般都是采用累积确认的方式。此时接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,它表示:这个分组及其之前的所有分组都已正确到达。

    5.7 TCP 的可靠传输

    TCP 的滑动窗口以字节为单位,并采用以下方法来计算超时重传时间 RTO(Retransmission Time Out):

    RTO = RTT_S + 4 × RTT_D
    

    其中 RTTS 表示加权平均往返时间,计算方式如下:

    新的 RTT_S = (1-α) × 旧的 RTT_S +  α × 新的 RTT 值
    
    • RTT (Round Trip Time)代表报文段的往返时间,它记录一个报文段从发出去到收到确认的时间长度;
    • 第一次测量时, RTTS 的值就等于 RTT 的值,之后的 RTTS 则采用上面的公式进行计算;
    • 其中 0 ≤ α<1 ,RFC 6298 推荐其值取 0.125 。

    RTTD 是 RTT 偏差的加权平均值,计算方式如下:

    新的 RTT_D = (1-β) × 旧的 RTT_D +  β × |RTT_S - 新的 RTT 值|
    
    • 第一次测量时,RTTD 的值就等于 RTT 值的一半,之后的 RTTD 则采用上面的公式进行计算;
    • β 值是一个小于 1 的系数,RFC 6298 推荐其值取 0.25 。

    5.8 流量控制

    流量控制(flow control)是指控制发送方的发送速率,以便接收方来得及接收。假设 A 向 B 发送数据,在连接建立时,B 会将自己接收窗口(rwnd,receiver window)的大小告诉 A ,而 A 需要保证发送窗口的大小不能超过 B 接收窗口的大小,通过该机制就可以实现对发送方的流量控制。

    5.9 拥塞控制

    网络拥塞(congestion)是指传输的数据量超过节点承受能力而导致传输能力下降的情况。而拥塞控制就是防止过多的数据注入到网络中而造成路由器和链路过载。TCP 采用四种算法来进行拥塞控制,分别是:慢启动(slow start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)和快恢复(fast recovery):

    1. 慢启动

    慢开始和拥塞避免都是基于窗口的拥塞控制:发送方会维持一个名为拥塞窗口 cwnd(congestion window)的状态变量,其值取决于网络的拥塞程度,并会动态变化,同时发送方会让自己的发送窗口等于拥塞窗口。

    慢启动的思路如下:由于不知道网络的负载能力,所以最好的选择就是逐步探测,即由小到大成倍地增大发送窗口,也就是说,由小到大成倍地增大拥塞窗口的值。

    2. 拥塞避免

    拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢地增大:每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是像慢启动阶段那样加倍地增长。慢启动和拥塞避免通常是配合使用,以保证启动速度,一开始使用慢启动进行成倍增长,当达到某一个阈值 ssthresh 后采用拥塞避免进行稳步尝试:

    https://github.com/heibaiying

    3. 快重传和快恢复

    快重传算法要求接收方不要等待自己发送数据时才进捎带确认,而是要立即发送确认,即使收到了失序报文段也要立即发出对已收到的报文段的重复确认。示例如下:

    https://github.com/heibaiying

    如上图所示,当 M3 丢失时,之后发送 M4 , M5 , M6 时收到的都是对于 M2 的重复确认,此时发送方就可以知道 M3 已经丢失,需要立即进行重传。由于此时只是个别报文出现了丢失,而不是网络拥塞,所以执行快恢复:发送方调整 ssthresh = cwnd / 2,并设置 cwnd = ssthresh = 8 (图中点5),并开始执行拥塞避免算法。

    https://github.com/heibaiying

    六、应用层

    6.1 域名系统 DNS

    目前我们都是使用易于理解的域名来访问互联网应用,但传输层需要的则是 IP 地址,因此需要使用域名系统(DNS,Domain Name System)来进行域名与 IP 地址之间的转换 。

    域名是一个逻辑上的概念,分为多级域名,其中最基础的是根域名,其次是顶级域名,顶级域名共分为四类:

    • 国家顶级域名 nTLD:如 cn 表示中国,us 表示美国;
    • 通用顶级域名 gTLD:如 com 表示公司企业,org 表示非盈利性组织,net 表示网络服务机构;
    • 基础结构域名:又称为反向域名,用于反向域名解析,该顶级域名只有一个 arpa;
    • 新顶级域名 New gTLD:ICANN 机构在 2011 年 6 月 20 日批准新顶级域名,允许任何满足条件的公司或机构进行申请。

    https://github.com/heibaiying

    6.2 文件传输协议 FTP

    文件传输协议(FTP,File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,允许客户指明文件的类型和格式,并获得文件的存储权限。FTP 的服务器进程由两大部分组成:

    • 一个主进程:负责接收新的请求;
    • 若干个从属进程:负责处理单个请求。

    因此一个 FTP 服务器进程可以同时为多个客户端进程提供服务。

    6.3 远程终端协议 TELNET

    Telnet 协议是 Internet 远程登录服务的标准协议和主要方式,它为用户提供了在本地计算机上访问远程主机的能力。Telnet 能将用户的击键传到远程主机,同时也能将远程主机的输出通过 TCP 连接返回到用户屏幕,这种服务是透明的,用户感觉键盘和显示器好像都是直接连在远程主机上,因此 Telnet 又称为终端仿真协议。

    6.4 万维网 WWW

    万维网是一个分布式的超媒体系统,它是超文本系统的扩展。它包含以下重要概念:

    1. 统一资源定位符 URL

    用于定位互联网上资源的位置和访问这些资源的方法,其格式如下:

    <协议>://<主机>:<端口>/<路径>
    

    2. 超文本传送协议 HTTP

    HTTP 协议定义了浏览器如何向万维网请求文档,以及服务器如何把文档传送给浏览器。

    3. 超文本标记语言 HTML

    超文本标记语言 HTML 是一种标识性的语言,包括一系列标签,这些标签可以用于说明文字、图形、动画、声音、表格、链接等各种类型的资源,并能将网络文档格式进行统一。

    6.5 动态主机配置协议 DHCP

    通常连接到互联网的计算机的协议软件都需要配置多个项目,如 IP 地址,子网掩码,默认路由器的 IP 地址以及域名服务器的 IP 地址等等,为了省去配置的麻烦,现在互联网普遍采用动态主机配置协议 DHCP(Dynamic Host Configuration Protocol),它提供了一种即插即用联网的机制。此时你只需要采用默认的配置即可,如下所示:

    https://github.com/heibaiying

    此时需要进行联网的主机在启动时候会广播发现报文(DHCP DISCOVER),其目的地址为 255.255.255.255(即受限广播地址),此时本地网络上的所有主机都能接收到这个广播报文,但只有 DHCP 服务器才会通过提供报文(DHCP OFFER)对此广播进行响应。DHCP 服务器先在其数据库中查找该计算机的配置信息,若找到,则直接返回;若找不到,则从服务器的 IP 地址池取一个地址分配给该计算机。

    通常不是每个网络都有 DHCP 服务器,但每个网络都至少有一个 DHCP 中继代理(通常是路由器),它配置了 DHCP 服务器的 IP 地址信息。当 DHCP 中继代理收到主机 A 的发现报文后,就以单播的方式向 DHCP 服务器进行转发;并等待其回复后,再转发回主机 A 。

    DHCP 服务器分配给 DHCP 客户的 IP 地址是临时性的,只能在一段时间内使用,该时间称为租用期,由 DHCP 服务器进行设置。

    参考资料

    1. 谢希仁 . 计算机网络(第七版). 电子工业出版社 . 2017-01
    2. James F. Kurose / Keith W. Ross . 计算机网络 —— 自顶向下方法(第七版). 机械工业出版社 . 2018-06
    3. 子网划分详解与子网划分实例精析
    4. 网络基础之 – IP 数据报、分片策略、路由表
    5. 完全理解 ICMP 协议

    更多文章,欢迎访问 [全栈工程师手册] ,GitHub 地址:https://github.com/heibaiying/Full-Stack-Notes

    展开全文
  • 网络理论知识1(四层、七层网络模型

    万次阅读 多人点赞 2018-07-17 08:51:10
    一、TCP/IP四层网络模型 TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。图2表示了TCP/IP分层模型的四层。  ┌──────...

    一、TCP/IP四层网络模型

    TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。图2表示了TCP/IP分层模型的四层。
      ┌────────────┐┌─┬─-┬─-┬─┬─-┬─┬─-┬─┬─-┬─┬─-┐
      │          ││D│F│W│F│H│G│T│I│S│U│ │
      │          ││N│I│H│T│T│O│E│R│M│S│其│
      │第四层,应用层      ││S│N│O│P│T│P│L│C│T│E│ │
      │          ││ │G│I│ │P│H│N│ │P│N│ │
      │          ││ │E│S│ │ │E│E│ │ │E│它│
      │          ││ │R│ │ │ │R│T│ │ │T│ │
      └────────────┘└─┴─-┴─-┴─┴─-┴─┴─-┴─┴─-┴─┴─-┘
      ┌────────────┐┌─────────┬───────────┐
      │第三层,传输层 ││      TCP    │  UDP     │
      └────────────┘└─────────┴───────────┘
      ┌────────────┐┌─────┬─────┬─────────┐
      │        ││     │ICMP│       │
      │第二层,网间层 ││     └─────┘        │
      │        ││       IP         │
      └────────────┘└─────────────────────┘
      ┌────────────┐┌──────────┬───────────┐
      │第一层,网络接口   ││ARP/RARP│  其它     │
      └────────────┘└──────────┴───────────┘
          图2 TCP/IP四层参考模型 
      TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。
      TCP/IP分层模型的四个协议层分别完成以下的功能:

    第一层 网络接口层

    网络接口层包括用于协作IP数据在已有网络介质上传输的协议。

    协议:ARP,RARP

    第二层 网间层

    网间层对应于OSI七层参考模型的网络层。负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。

    协议:本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),ICMP协议。

    第三层 传输层

    传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。

    其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。

    第四层 应用层

    应用层对应于OSI七层参考模型的应用层和表达层。

    因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。

    二、协议详解

    ARP:

    ARP:将32位的IP地址转换为48位的物理地址。

    IP地址是网络层的地址,连上互联网的每一台主机的每一个接口都会有一个IP地址,每台主机的每个网卡均有唯一的物理地址,物理地址在生产时就已经定死,无法改变,而每个网卡的IP地址是可以改变的(例如连上不同的wifi,IP地址也会不同)。

    为什么有了IP地址还要有MAC地址,有MAC地址还要有IP地址?

    首先要明白,物理网络是有许多结构的,不同的物理网络具有不同的mac地址格式,为了让不同的网络进行通信,那么就使用统一的IP地址好了,

    mac地址是数据链路层的地址,并且mac地址出现时间比IP地址要早,保留mac地址很可能是为了向后兼容已有的网卡芯片,同时,并不是所有的网络都使用IP协议

    ARP报文格式如下:

    硬件类型(16位):指定物理地址的类型,1表示以太网。

    上层协议类型(16位):指定要将MAC地址映射成什么协议的地址。0x0800表示IP地址。

    MAC地址长度(8位):指定MAC地址的长度,单位是字节。

    协议地址长度(8位):指定协议地址的长度,单位为字节。

    操作类型:1表示ARP请求、2表示ARP回应、3表示RARP请求,4表示RARP回应。

    接下来为发送源的物理地址和协议地址(由于回应时要知道发送个谁,以此来封装以太帧),目的物理地址和协议地址。

    封装ARP请求时,发送源除了目的物理地址外都会填写。

    当路由器或主机选择了某条路由时,首先会查找ARP缓存,若缓存中有对应IP地址的物理地址,则以此封装以太帧,否则会广播(为二层广播)ARP报文,每个主机接收到ARP请求报文后,会缓存发送源的IP——MAC对到ARP缓存中,目的主机会发送ARP回应(此时为单播),当发送源接收到回应时,会将目的方的IP——MAC对存放在ARP缓存中。在点到点的物理连接中,是不会用到ARP报文的,在启动时双方都会通告对方自己的IP地址,此时物理层的封装不需要MAC地址。windows上可以使用arp -a查看本机的ARP缓存。ARP缓存中的每个条目的最大存活时间为20分钟(从条目创建时开始计时)。

    ARP代理:

    之前说ARP请求是广播的,我们知道路由器是分割广播域的(这部分在CCNA总结中会讲),如果我们要查询的IP地址在外网怎么办?此时就需要ARP代理,当发送源广播ARP请求时,本地网络上不会有主机回应(因为IP地址是外网的),此时路由器会将回应该请求,则发送源误认为路由器就是目的主机,会将报文全部转发给它,在由路由器转发报文,则该路由器就被称为ARP代理。

    免费ARP:

    在主机开机配置时,会发送一个目的IP地址为自己IP地址的ARP请求报文,该报文称为免费ARP,其作用如下:

    1、让主机确认本地网络上是否有与自己IP地址相同的主机,若有,则ICMP错误报文被返回。

    2、若接收主机ARP缓存中本身就有发送源主机的IP——MAC对,则会更新,否则,会缓存发送源的IP——MAC对。

    ICMP:

    ICMP协议及报文格式

    ICMP(Internet Control Message Protocol)因特网控制报文协议。它是IPv4协议族中的一个子协议,用于IP主机、路由器之间传递控制消息。控制消息是在网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然不传输用户数据,但是对于用户数据的传递起着重要的作用。
    ICMP协议与ARP协议不同,ICMP靠IP协议来完成任务,所以ICMP报文中要封装IP头部。它与传输层协议(如TCP和UDP)的目的不同,一般不用来在端系统之间传送数据,不被用户网络程序直接使用,除了想Ping和Tracert这样的诊断程序。

    ICMP消息类型

    ICMP报告无法传送的数据报的错误,并帮助对这些错误进行疑难解答。例如,如果IPv4不能讲数据报传送到目标主机,则路由器上的或目标主机上的ICMP会向主机发送一条“无法到达目标”消息。下表为最常见的ICMP消息。

    ICMP消息类型用途说明
    回显请求Ping工具通过发送ICMP回显消息检查特定节点的IPv4连接以排查网络问题。类型值为0
    回显应答节点发送回显答复消息响应ICMP回显消息。类型值为8
    重定向路由器发送“重定向”消息,告诉发送主机到目标IPv4地址更好的路由。类型值为5
    源抑制路由器发送“源结束”消息,告诉发送主机它们的IPv4数据报将被丢弃——因为路由器上发生了拥塞。于是,发送主机将以较低的频度发送数据报。类型值为4
    超时这个消息有两种用途。第一,当超过IP生存期时向发送系统发出错误信息。第二,如果分段的IP数据报没有在某种期限内重新组合,这个消息将通知发送系统。类型值为11
    无法到达目标路由器和目标主机发送“无法到达目标”消息,通知发送主机它们的数据无法传送。类型值为3

    其中无法到达目标消息中可以细分为一下几项

    无法到达目标消息说明
    不能访问主机路由器找不到目标的IPv4地址的路由时发送“不能访问主机”消息
    无法访问协议目标IPv4节点无法将IPv4报头中的“协议”字段与当前使用的IPv4客户端协议相匹配时会发送“无法访问协议”消息
    无法访问端口IPv4节点在UDP报头中的“目标端口”字段与使用该UDP端口的应用程序相匹配时发送“无法访问端口”消息
    需要分段但设置了DF当必须分段但发送节点在IPv4报头中设置了“不分段(DF)”标志时,IPv4路由器会发送“需要分段但设置了DF”消息

    ICMP协议只是试图报告错误,并对特定的情况提供反馈,但最终并没有使IPv4成为一个可靠的协议。ICMP消息是以未确认的IPv4数据报传送的,它们自己也不可靠。

    ICMP报头格式

    ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。

    ICMP报头格式

    各字段说明

    • 类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。第一类是取值为1~127的差错报文,第2类是取值128以上的信息报文。
    • 代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。
    • 校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。
    • 标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。

    常见的ICMP报文

    相应请求

    我们日常进行的Ping操作中就包括了相应请求(类型字段值为8)和应答(类型字段值为0)ICMP报文。一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。

    目标不可达,源抑制和超时报文

    这三种报文的格式是一样的。目标不可到达报文(类型值为3)在路由器或者主机不能传递数据时使用。例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回类型字段值3、代码字段值为3的ICMP报文。常见的不可到达类型还有网络不可到达(代码字段值为0)、主机不可达到(代码字段值为1)、协议不可到达(代码字段值为2)等等。
    源抑制报文(类型字段值为4,代码字段值为0)则充当一个控制流量的角色,通知主机减少数据报流量。由于ICMP没有回复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。最后,无连接方式网络的问题就是数据报回丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定的时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。
    超时报文(类型字段值为11)的代码域有两种取值:代码字段值为0表示传输超时,代码字段值为1表示分段重组超时。

    时间戳请求

    时间戳请求报文(类型值字段13)和时间戳应答报文(类型值字段14)用于测试两台主机之间数据报来回一次的传输时间。传输时,主机填充原始时间戳,接受方收到请求后填充接受时间戳后以类型值字段14的报文格式返回,发送方计算这个时间差。有些系统不响应这种报文。

    三、OSI七层网络模型

    在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。图1表示了OSI分层模型。

      ┌───────┐
      │ 应用层 │←第七层
      ├───────┤
      │ 表示层 │
      ├───────┤
      │ 会话层 │
      ├───────┤
      │ 传输层 │
      ├───────┤
      │ 网络层 │
      ├───────┤
      │数据链路层│
      ├───────┤
      │ 物理层 │←第一层
      └───────┘ 
      图1 OSI七层参考模型

    第一层 物理层

    作用:负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。所有比物理层高的层都通过事先定义好的接口而与它通话。

    协议:如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。

    第二层 数据链路层

    作用:数据链路层通过物理网络链路提供可靠的数据传输。

    协议:ATM,FDDI等。 

    第三层 网络层

    作用:这层对端到端的包传输进行定义,他定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。

    协议:IP,IPX等

    第四层 传输层

    作用:传输层向高层提供可靠的端到端的网络数据流服务。传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。流控管理设备之间的数据传输,确保传输设备不发送比接收设备处理能力大的数据;多路传输使得多个应用程序的数据可以传输到一个物理链路上;虚电路由传输层建立、维护和终止;差错校验包括为检测传输错误而建立的各种不同结构;而差错恢复包括所采取的行动(如请求数据重发),以便解决发生的任何错误。

    协议:TCP,UDP,SPX。

    第五层 会话层

    作用:会话层建立、管理和终止表示层与实体之间的通信会话。通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现。它还包括创建检查点,使通信发生中断的时候可以返回到以前的一个状态。

    协议:RPC,SQL等

    第六层 表示层

    作用:这一层的主要功能是定义数据格式及加密。

    协议:FTP,加密

    第七层 应用层

    作用:应用层是最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件直接相互作用的。注意,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(Application Program Interface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。应用层的功能一般包括标识通信伙伴、定义资源的可用性和同步通信。因为可能丢失通信伙伴,应用层必须为传输数据的应用子程序定义通信伙伴的标识和可用性。定义资源可用性时,应用层为了请求通信而必须判定是否有足够的网络资源。在同步通信中,所有应用程序之间的通信都需要应用层的协同操作。
    协议:telnet,HTTP,FTP,WWW,NFS,SMTP等。
     

    OSI分层的优点: 

    (1)人们可以很容易的讨论和学习协议的规范细节。 
    (2)层间的标准接口方便了工程模块化。 
    (3)创建了一个更好的互连环境。 
    (4)降低了复杂度,使程序更容易修改,产品开发的速度更快。 
    (5)每层利用紧邻的下层服务,更容易记住个层的功能。 

    展开全文
  • 1.OSI网络7层模型  网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、...

    1.OSI网络7层模型

      网络协议设计者不应当设计一个单一、巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议。这样做使得每个协议的设计、分析、时限和测试比较容易。协议划分的一个主要原则是确保目标系统有效且效率高。为了提高效率,每个协议只应该注意没有被其他协议处理过的那部分通信问题;为了主协议的实现更加有效,协议之间应该能够共享特定的数据结构;同时这些协议的组合应该能处理所有可能的硬件错误以及其它异常情况。为了保证这些协议工作的协同性,应当将协议设计和开发成完整的、协作的协议系列(即协议族),而不是孤立地开发每个协议。
      在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七层参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质(底部) ,OSI参考模型把功能分成七个分立的层次。图表示了OSI分层模型。

      ┌─────┐
              │ 应用层 │←第七层
      ├─────┤
      │ 表示层 │
      ├─────┤
      │ 会话层 │
      ├─────┤
      │ 传输层 │
      ├─────┤
      │ 网络层 │
      ├─────┤
      │数据链路层│
      ├─────┤
              │ 物理层 │←第一层
       └─────┘ 
      OSI七层参考模型


    OSI中的层 功能 TCP/IP协议族
    应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet
    表示层 数据格式化,代码转换,数据加密 ASCII、ASN.1、JPEG、MPEG
    会话层 解除或建立与别的接点的联系 NetBIOS、ZIP
    传输层数据段提供端对端的接口 TCP,UDP,SPX
    网络层数据包选择路由,拥塞控制、网际互连 IP,ICMP,OSPF,BGP,IGMP,ARP,RARP,IPX、RIP、OSPF
    数据链路层 传输有地址的以及错误检测功能 SLIP,CSLIP,PPP,MTU,ARP,RARP,SDLC、HDLC、PPP、STP、帧中继
    物理层二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2,EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45

     

    OSI模型的七层分别进行以下的操作:

    第一层:物理层

           负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的连接器。如最常用的RS-232规范、10BASE-T的曼彻斯特编码以及RJ-45就属于第一层。所有比物理层高的层都通过事先定义好的接口而与它通话。如以太网的附属单元接口(AUI),一个DB-15连接器可被用来连接层一和层二。

    第二层:数据链路层

           通过物理网络链路提供可靠的数据传输。不同的数据链路层定义了不同的网络和协议特征,其中包括物理编址、网络拓扑结构、错误校验、帧序列以及流控。物理编址(相对应的是网络编址)定义了设备在数据链路层的编址方式;网络拓扑结构定义了设备的物理连接方式,如总线拓扑结构和环拓扑结构;错误校验向发生传输错误的上层协议告警;数据帧序列重新整理并传输除序列以外的帧;流控可能延缓数据的传输,以使接收设备不会因为在某一时刻接收到超过其处理能力的信息流而崩溃。数据链路层实际上由两个独立的部分组成,介质存取控制(Media Access Control,MAC)和逻辑链路控制层(Logical Link Control,LLC)。MAC描述在共享介质环境中如何进行站的调度、发生和接收数据。MAC确保信息跨链路的可靠传输,对数据传输进行同步,识别错误和控制数据的流向。一般地讲,MAC只在共享介质环境中才是重要的,只有在共享介质环境中多个节点才能连接到同一传输介质上。IEEE MAC规则定义了地址,以标识数据链路层中的多个设备。逻辑链路控制子层管理单一网络链路上的设备间的通信,IEEE 802.2标准定义了LLC。LLC支持无连接服务和面向连接的服务。在数据链路层的信息帧中定义了许多域。这些域使得多种高层协议可以共享一个物理数据链路。

    第三层:网络层

            负责在源和终点之间建立连接。它一般包括网络寻径,还可能包括流量控制、错误检查等。相同MAC标准的不同网段之间的数据传输一般只涉及到数据链路层,而不同的MAC标准之间的数据传输都涉及到网络层。例如IP路由器工作在网络层,因而可以实现多种网络间的互联。

       

    第四层:传输层

          向高层提供可靠的端到端的网络数据流服务。传输层的功能一般包括流控、多路传输、虚电路管理及差错校验和恢复。流控管理设备之间的数据传输,确保传输设备不发送比接收设备处理能力大的数据;多路传输使得多个应用程序的数据可以传输到一个物理链路上;虚电路由传输层建立、维护和终止;差错校验包括为检测传输错误而建立的各种不同结构;而差错恢复包括所采取的行动(如请求数据重发),以便解决发生的任何错误。传输控制协议(TCP)是提供可靠数据传输的TCP/IP协议族中的传输层协议。

    第五层:会话层

            建立、管理和终止表示层与实体之间的通信会话。通信会话包括发生在不同网络应用层之间的服务请求和服务应答,这些请求与应答通过会话层的协议实现。它还包括创建检查点,使通信发生中断的时候可以返回到以前的一个状态。

    第六层:表示层

          提供多种功能用于应用层数据编码和转化,以确保以一个系统应用层发送的信息可以被另一个系统应用层识别。表示层的编码和转化模式包括公用数据表示格式、性能转化表示格式、公用数据压缩模式和公用数据加密模式。
          公用数据表示格式就是标准的图像、声音和视频格式。通过使用这些标准格式,不同类型的计算机系统可以相互交换数据;转化模式通过使用不同的文本和数据表示,在系统间交换信息,例如ASCII(American Standard Code for Information Interchange,美国标准信息交换码);标准数据压缩模式确保原始设备上被压缩的数据可以在目标设备上正确的解压;加密模式确保原始设备上加密的数据可以在目标设备上正确地解密。

          表示层协议一般不与特殊的协议栈关联,如QuickTime是Applet计算机的视频和音频的标准,MPEG是ISO的视频压缩与编码标准。常见的图形图像格式PCX、GIF、JPEG是不同的静态图像压缩和编码标准。

    第七层:应用层

          最接近终端用户的OSI层,这就意味着OSI应用层与用户之间是通过应用软件直接相互作用的。注意,应用层并非由计算机上运行的实际应用软件组成,而是由向应用程序提供访问网络资源的API(Application Program Interface,应用程序接口)组成,这类应用软件程序超出了OSI模型的范畴。应用层的功能一般包括标识通信伙伴、定义资源的可用性和同步通信。因为可能丢失通信伙伴,应用层必须为传输数据的应用子程序定义通信伙伴的标识和可用性。定义资源可用性时,应用层为了请求通信而必须判定是否有足够的网络资源。在同步通信中,所有应用程序之间的通信都需要应用层的协同操作。

          OSI的应用层协议包括文件的传输、访问及管理协议(FTAM) ,以及文件虚拟终端协议(VIP)和公用管理系统信息(CMIP)等。


    2. TCP/IP4层模型

      TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)。

           ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OSI参考模型的对比示意图。

    TCP/IP四层参考模型 

      TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。ICP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。

      TCP/IP分层模型的四个协议层分别完成以下的功能:

      第一层:网络接口层
      包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。
      第二层:网间层
      对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。
      第三层:传输层
      对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。
      第四层:应用层

      对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。


    3.TCP/IP协议栈与数据包封装

               TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层,如下图所示。


    TCP/IP协议栈

              两台计算机通过TCP/IP协议通讯的过程如下所示。


    TCP/IP通讯过程

           传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示。


    TCP/IP数据包的封装

    TCP/IP数据包的封装

                 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

                上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示。


    跨路由器通讯过程

    跨路由器通讯过程

                  其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。

                 链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。

    网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。

                 网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到端(end-to-end)的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协议。TCP是一种面向连接的、可靠的协议,有点像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。UDP协议不面向连接,也不保证可靠性,有点像寄信,写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

                目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示。


     Multiplexing过程

    Multiplexing过程

               以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。

                  注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。本文对RARP、ICMP、IGMP协议不做进一步介绍,有兴趣的读者可以看参考资料。


    4.以太网的帧格式

              

               其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。用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这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。



    5.ARP数据报格式

             在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。

            每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。


    6.IP协议

             

              iPv4的IP地址长度为4字节,通常采用点分十进制表示法(dotted decimal representation)例如0xc0a80002表示为192.168.0.2。Internet被各种路由器和网关设备分隔成很多网段,为了标识不同的网段,需要把32位的IP地址划分成网络号和主机号两部分,网络号相同的各主机位于同一网段,相互间可以直接通信,网络号不同的主机之间通信则需要通过路由器转发。

              ipv4把所有IP地址分为五类:

                                                                      A类 0.0.0.0到127.255.255.255IP地址类

    B类 128.0.0.0到191.255.255.255
    C类 192.0.0.0到223.255.255.255
    D类 224.0.0.0到239.255.255.255
    E类 240.0.0.0到247.255.255.255

             一个A类网络可容纳的地址数量最大,一个B类网络的地址数量是65536,一个C类网络的地址数量是256。D类地址用作多播地址,E类地址保留未用。

             随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址,导致B类地址很快就分配完了,而A类却浪费了大量地址。这种方式对网络的划分是flat的而不是层级结构(hierarchical)的,Internet上的每个路由器都必须掌握所有网络的信息,随着大量C类网络的出现,路由器需要检索的路由表越来越庞大,负担越来越重。

              针对这种情况提出了新的划分方案,称为CIDR(Classless Interdomain Routing)。网络号和主机号的划分需要用一个额外的子网掩码(subnet mask)来表示,而不能由IP地址本身的数值决定,也就是说,网络号和主机号的划分与这个IP地址是A类、B类还是C类无关,因此称为Classless的。这样,多个子网就可以汇总(summarize)成一个Internet上的网络,例如,有8个站点都申请了C类网络,本来网络号是24位的,但是这8个站点通过同一个ISP(Internet service provider)连到Internet上,它们网络号的高21位是相同的,只有低三位不同,这8个站点就可以汇总,在Internet上只需要一个路由表项,数据包通过Internet上的路由器到达ISP,然后在ISP这边再通过次级的路由器选路到某个站点。

               下面举两个例子:

    IP地址 140.252.20.68 8C FC 14 44
    子网掩码 255.255.255.0 FF FF FF 00
    网络号 140.252.20.0 8C FC 14 00
    子网地址范围 140.252.20.0~140.252.20.255  
    IP地址 140.252.20.68 8C FC 14 44
    子网掩码 255.255.255.240 FF FF FF F0
    网络号 140.252.20.64 8C FC 14 40
    子网地址范围 140.252.20.64~140.252.20.79

            可见,IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0。

            如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址,这些地址不会出现在Internet上,如下表所示。

    • 10.*,前8位是网络号,共16,777,216个地址

    • 172.16.*到172.31.*,前12位是网络号,共1,048,576个地址

    • 192.168.*,前16位是网络号,共65,536个地址

           使用私有IP地址的局域网主机虽然没有Internet的IP地址,但也可以通过代理服务器或NAT(网络地址转换)等技术连到Internet上。

           还有一些不能用作主机IP地址的特殊地址:

    • 目的地址为255.255.255.255,表示本网络内部广播,路由器不转发这样的广播数据包。

    • 主机号全为0的地址只表示网络而不能表示某个主机,如192.168.10.0(假设子网掩码为255.255.255.0)。

    • 目的地址的主机号为全1,表示广播至某个网络的所有主机,例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。

    7.路由

             路由(名词): 数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。          路由(动词): 某个路由节点为数据报选择投递方向的选路过程。          路由节点 一个具有路由能力的主机或路由器,它维护一张路由表,通过查询路由表来决定向哪个接口发送数据包。          接口 路由节点与某个网络相连的网卡接口。          路由表 由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接口发送,其中最后一条是缺省路由条目。         路由条目 路由表中的一行,每个条目主要由目的网络地址、子网掩码、下一跳地址、发送接口四部分组成,如果要发送的数据包的目的网络地址匹配路由表中的某一行,就按规定的接口发送到下一跳地址。          缺省路由条目 路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。





    展开全文
  • 【计算机网络】OSI七层模型和TCP/IP四层模型

    千次阅读 多人点赞 2019-08-16 16:06:14
    OSI七层模型和TCP/IP四层模型概述OSI七层模型和TCP/IP四层模型的对应二者的差别数据封装过程数据传输过程协议栈及概念应用层传输层网络层数据链路层物理层 概述 ISO是国际标准化组织, 该组织对网络体系结构进行了...
  • 目录 一、简介 二、相关概念 三、名词解释 ...网络参考模型 4.1、OSI参考模型 4.2、TCP/IP模型 4.3、OSI与TCP/IP模型比较 【扩展资料】 一、简介 互联网协议(Internet Protocol S...
  • 1. 应用: 应用(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。用户接口:应用是用户...
  • 网络分层模型OSI和TCP/IP四层模型

    万次阅读 2018-08-12 08:17:12
    网络分层模型OSI和TCP/IP四层模型 网络分层模型OSI和TCP/IP四层模型 OSI模型,即开放式通信系统互联参考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是国际标准...
  • TCP/IP四层模型

    万次阅读 多人点赞 2018-09-30 16:06:58
    TCP/IP协议族是一个四层协议系统,自底而上分别是数据链路层、网络层、传输层和应用层。每一层完成不同 的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。 数据链路层 数据链路层实现了网卡接口的...
  • 文章目录网络协议TCP/IP协议IP协议TCP协议(传输控制协议)HTTP协议(超文本传输协议)网络参考模型1、OSI参考模型(开放系统互连参考模型 )2、TCP/IP参考模型(简化的七OSI模型网络协议 网络协议为计算机...
  • 因为最近的工作会涉及网络这方面的知识,所以对网络这一块基础内容进行一个回顾,之前在学校学习都是马马虎虎,再次回顾一下这些基础内容,再结合实际工作...一、OSI七层网络模型 OSI是Open System Interconnecti...
  • TCP/IP四层模型各层主要协议详述

    万次阅读 多人点赞 2019-08-02 00:46:00
    1、一张表理清 OSI七层和TCP/IP四层的关系 2、TCP/IP模型 (1)物理层 物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性,确保原始的数据可在各种物理...
  • 网络层模型

    万次阅读 多人点赞 2018-07-24 22:26:12
    最近又看到这个七层模型了,一直都记不住这个七层模型,就算背住了也很快忘记。主要原因还是因为没有真实的使用场景,也没能理解其中的原理。但是这个东西是计算机网络的基础,既然碰巧看到就顺便整理一下吧。很多...
  • 一、OSI七层参考模型 OSI(Open System Interconnection)开放系统互联参考模型,定义了网络互连的七层框架,由低到高...二、TCP/IP四层协议模型 TCP/IP四层协议和OSI的七层协议对应关系如下: 在每一层都工作着...
  • 应用: 为用户提供所需要的各种协议,负责传送最终形态的数据,是直接和用户打交道,HTTP,FTP(file transfer protocol)(这两个都是属于TCP协议的),DNS(domain nane system)和SMTP(simple mail transfer protocol)也...
  • TCP四层模型及各层的作用

    千次阅读 2018-10-17 20:58:06
    四层: 应用层 传输层 网络层 数据链路层 作用: 应用层:应用层是在用户空间实现的,负责处理众多业务逻辑,如文件传输、网络管理。 传输层:为应用程序隐藏了数据包跳转的细节,负责数据包的收发、链路...
  • 四层: TCP/IP模型 ,现在实际应用的这一层 网际接口层->互联网层->传输层->应用层物理层: 主要定义的是—传输介质 比如 RJ-45等 这一层没啥协议,都是规范啥的数据链路层:就是平时的局域网,局域网内的数据传输 ...
  • OSI七层模型和tcp/ip四层模型的区别

    千次阅读 2019-06-28 18:03:04
    OSI体系是七层协议,而TCP/IP体系是四层协议, 1.OSI七层模型是国际标准化组织ISo制定的开放系统互连基本参考模型,是法律上的国际标准 而TCP/IP是事实上的国际标准 ... TCP/IP四层协议分别为网络接口层...
  • TCP/IP四层模型简单介绍

    千次阅读 2018-11-21 17:23:55
    OSI七参考模型 OSI(Open System Interconnection 开放系统互联)参考模型,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。 OSI分为七 应用:为用户提供服务和协议 表示:...
  • 计算机网络中的七层模型详细总结

    万次阅读 多人点赞 2019-08-02 00:08:17
    可是一直都记不住这个七层模型,就算背住了也很快忘记肿么办哩,很是苦恼呢!主要原因还是因为没有真实的使用场景,也没能理解其中的原理。其实七之间关系紧密,如果理解其原理和各之间的功能及关系,丝毫不夸张...
  • 一、OSI七层网络模型 在网络历史的早期,国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版了开放系统互联的七参考模型。一台计算机操作系统中的网络过程包括从应用请求(在协议栈的顶部)到网络介质...
  • OSI七层网络模型 第一 物理  第一负责最后将信息编码成电流脉冲或其它信号用于网上传输。它由计算机和网络介质之间的实际界面组成,可定义电气信号、符号、线的状态和时钟要求、数据编码和数据传输用的...
  • 简述tcp ip四层模型

    千次阅读 2018-12-04 18:45:09
    简述tcp ip四层模型 1、主机到网络层   实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将...
  • OSI/ISO七层模型和TCP/IP四层模型(4)

    千次阅读 2018-08-12 20:56:55
    OSI/ISO七层模型 OSI:开放系统互联的简称 ISO:一个组织 物理:设备之间的比特流的传输、物理接口、电气特性等 数据链路: 成帧、用MAC地址访问媒介、错误检测与修正 网络层:提供逻辑地址、选路 传输...
  • 0. 前言 TCP/IP协议族(TCP/IP Protocol Suite),简称TCP/IP。 该协议族的两个核心协议为:TCP(传输控制协议,...OSI参考模型(Open System Interconnection,开放系统互连),全称为开放系统互联参考模型
  • 计算机网络中的OSI七层网络模型

    万次阅读 多人点赞 2018-09-04 12:03:45
    第一种模型是OSI七层模型,OSI为(Open System interconnect)的缩写,自上而下分别是应用、表示、会话、传输网络层、数据链路、物理   物理:网卡,网线,集线器,中继器,调制解调器 数据链路...
  • ISO/OSI七层协议模型、TCP/IP四层模型

    千次阅读 2021-02-26 13:44:33
    ISO/OSI七层协议模型、TCP/IP四层模型网络七层架构(ISO/OSI协议参考模型)物理层数据链路层网络层传输层会话层表示层应用层TCP/IP 原理网络访问层(Network Access Layer) / 网络接口层 / 数据链路层网络层(Internet ...
  • TCP/IP四层模型和OSI七层模型的概念(模型分层的作用是什么) 一、总结 一句话总结: 减轻问题的复杂程度,一旦网络发生故障,可迅速定位故障所处层次,便于查找和纠错; 在各层分别定义标准接口,使具备相同...
  • OSI七层协议模型和TCP/IP四层模型

    万次阅读 多人点赞 2017-09-14 17:40:26
    TCP/IP 协议栈及 OSI 参考模型详解:...OSI七层网络模型,TCP/IP四层网络模型与网络协议解析:http://www.360doc.com/content/13/1123/17/7267612_331579105.shtml [网络必学]TCP/IP四层模型讲解...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,716
精华内容 111,886
关键字:

网络模型四层