zoukankan      html  css  js  c++  java
  • 计算机网络概述

    分层

    四层协议系统

    网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如 TCP/IP,是一组不同层次上的多个协议的组合。TCP/IP 通常被认为是一个四层协议系统,每一层负责不同的功能:

    1. 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节
    2. 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。
    3. 运输层,主要为两台主机上的应用程序提供端到端的通信
    4. 应用层,负责处理特定的应用程序细节

    假设在一个局域网(LAN)如以太网中有两台主机,二者都运行 FTP 协议,该过程所涉及到的所有协议。

    分层的意义

    大多数的网络应用程序都被设计成客户—服务器模式,服务器为客户提供某种服务,例如 FTP 协议就是访问服务器所在主机上的文件。在同一层上,双方都有对应的一个或多个协议进行通信。应用程序通常是一个用户进程,而下三层则一般在(操作系统)内核中执行。顶层与下三层之间还有另一个关键的不同之处,应用层关心的是应用程序的细节,而不是数据在网络中的传输活动,下三层对应用程序一无所知,但它们要处理所有的通信细节。网络接口层和应用层的目的是很显然的——前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序(FTP、Telnet 等)。
    因此我们可以得出分层的意义所在:分层可以为上层隐藏下层的细节,这样上层的程序就不需要考虑下层的具体实现,只需要使用对应的接口即可。互联网的目的之一,就是在应用程序中隐藏所有的物理细节

    网络层和传输层

    从表面上看,网络层和运输层之间的区别不那么明显,为什么要把它们划分成两个不同的层次呢?为了理解这一点,我们必须把视野从单个网络扩展到一组网络。在 80 年代,网络不断增长的原因之一是:大家都意识到只有一台孤立的计算机构成的“孤岛”没有太大意义,于是就把这些孤立的系统组在一起形成网络。到了 90 年代,我们又逐渐认识到这种由单个网络构成的新的更大的“岛屿”同样没有太大的意义,于是人们又把多个网络连在一起形成一个网络的网络,或称作互连网 (internet)。
    如图是一个包含两个网络的互连网,通过一个路由器互相连接,我们可以划分出端系统(两边的两台主机)和中间系统(中间的路由器)。应用层和运输层使用端到端(End-to-end)协议,在图中只有端系统需要这两层协议。但是网络层提供的是逐跳(Hop-by-hop)协议,两个端系统和每个中间系统都要使用它。

    在 TCP/IP 协议族中,网络层 IP 提供的是一种不可靠的服务,它只是尽可能快地把分组从源结点送到目的结点。而另一方面,TCP 在不可靠的 IP 层上提供了一个可靠的运输层,通过超时重传、发送和接收端到端的确认分组等机制提供了可靠传输服务。由此可见,运输层和网络层分别负责不同的功能。

    TCP/IP 协议分层

    TCP 和 UDP 是两种最为著名的运输层协议,都使用 IP 作为网络层协议。虽然 TCP 使用不可靠的 IP 服务,但它却提供一种可靠的运输层服务。UDP 为应用程序发送和接收数据报,但是与 UDP 是不可靠的,它不能保证数据报能安全无误地到达最终目的。
    IP 是网络层上的主要协议,同时被 TCP 和 UDP 使用。TCP 和 UDP 的每组数据都通过端系统和每个中间路由器中的 IP 层在互联网中进行传输。ICMP 是 IP 协议的附属协议,IP 层用它来与其他主机或路由器交换错误报文和其他重要信息。IGMP 是 Internet 组管理协议。它用来把一个 UDP 数据报多播到多个主机。
    ARP(地址解析协议)和 RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 IP 层和网络接口层使用的地址。

    数据的收发

    封装

    当应用程序用 TCP 传送数据时,数据将被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络,每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。TCP 传给 IP 的数据单元称作 TCP 报文段或简称为 TCP 段(TCPs egment),UDP 传给 IP 的信息单元称作 UDP 数据报(UDP datagram),IP 传给网络接口层的数据单元称作 IP 数据报(IP datagram),通过以太网传输的比特流称作帧(Frame)

    由于 TCP、UDP、ICMP 和 IGMP 都要向 IP 传送数据,因此 IP 必须在 IP 首部中表明数据属于哪一层,在 IP 数据报中使用协议域字段实现。类似地许多应用程序都可以使用 TCP 或 UDP 来传送数据,运输层协议在生成报文首部时要存入一个应用程序的标识符,这就是所谓的端口号,TCP 和 UDP 把源端口号和目的端口号分别存入报文首部中。网络接口分别要发送和接收 IP、ARP 和 RARP 数据,因此也必须在以太网的帧首部中加入标识指明生成数据的网络层协议,这就是所谓的帧类型域

    分用

    当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用,协议使用目的端口号、源 IP 地址和源端口号进行解包的。

    客户-服务器模型

    大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。可以将这种服务分为两种类型:重复型或并发型。

    重复型服务器通过以下步骤进行交互:

    1. 等待一个客户请求的到来。
    2. 处理客户请求。
    3. 发送响应给发送请求的客户。
    4. 返回第 1 步。

    并发型服务器采用以下步骤:

    1. 等待一个客户请求的到来。
    2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
    3. 返回第 1 步。

    并发服务器的优点在于,它是利用生成其他服务器的方法来处理客户的请求,也就是说每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。对服务器而不是对客户进行分类的原因,是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。

    资料来源

    《TCP/IP 详解 卷1:协议》(美)W.Richard Stevens 著,范建华 胥光辉 张涛 等译,谢希仁 校

  • 相关阅读:
    蜘蛛禁止访问文件
    基于PhalApi的Smarty拓展 (视图层的应用)
    MySQL数据库存表情
    查看PHP版本等相关信息
    读取数据库表信息
    nginx简介
    Redis发布订阅
    Redis持久化
    Redis主从复制
    Redis的Java客户端Jedis
  • 原文地址:https://www.cnblogs.com/linfangnan/p/13252843.html
Copyright © 2011-2022 走看看