zoukankan      html  css  js  c++  java
  • 分层网络模型(一)

    一、五层互联网协议栈

    自上而下:应用层,传输层,网络层,链路层和物理层

    各层功能:

        物理层:使用物理手段(光纤等)连接主机,并传送0,1电信号
        链路层:给电信号分组(以太网帧),并以广播的方式在子网中传播(每一个接收者比较目标MAC地址和自己的MAC地址可知自己是不是对方要找的人)
        网络层:给主机分配IP地址,判断两个IP是否属于同一子网,是则通过链路层发送,否则交给网关转发,实现了数据从子网A到子网B的传送
        传输层:端到端的通信(以端口来标识,避免了接收主机收到的数据包不知道是哪个进程的)
        应用层:规定应用程序的数据格式,使得通信双方相互理解

    二、OSI(Open System Interconnect )参考模型

    自上而下:应用层,表示层,会话层,传输层,网络层,链路层,物理层

    各层功能:

        应用层,传输层,网络层,链路层,物理层:同上
        表示层:使得通信的应用程序能够解释交换数据的含义,包括数据压缩(如:说北上广深,能够知道是北京上海广州深圳),数据加密(如:说123+3能够知道是126)和数据描述(如:说鸡蛋,能够在脑海里产生鸡蛋的图像)
        会话层:提供数据交换定界(什么话能说,什么不能说)和同步功能

    OSI模型详细描述

    OSI的全程是Open Systems Interconncection,即开放系统互联,它由ISO(International Organization for Standardization)制定。OSI是网络通信的一种通用框架,它分为七层,并且定义了在每一层上数据的处理方法。
    第七层——应用层(Application)

    这里的“应用”要和应用程序相区别。
    当用户使用浏览器来打开网页时,需要利用DNS提供的域名解析服务,来获取网址对应的IP地址,然后再通过另外一个协议HTTP来下载页面内容。在这个过程中出现的两个协议(DNS和HTTP)都是工作在应用层上的协议。

    应用层的其他常用协议:

        FTP:文件传输协议,用来在客户机和FTP服务器之间传输文件。
        DHCP:动态主机配置协议,DHCP服务器为客户机动态分配IP地址。
        POP3:邮件接收协议,用于从POP3服务器接收邮件。
        SMTP:邮件发送协议,用户通过SMTP服务器发送邮件。

    第六层——表示层(Presentation)

    这里的“表示”是指数据的表示。
    该层的主要功能:转换,压缩和加密。
    工作在表示层的加密协议最常用的是SSL(Secure Sockets Layer)。加密协议并不一定需要工作在表示层,如IPSec(Internet Protocol Security,因特网协议安全)就工作在第三层网络层中。
    第五层——会话层(Session)

    可以把“会话”理解为两个应用程序进程之间的逻辑连接,两个应用程序通过这个逻辑连接在一段时间内交换数据。会话层的作用就是为创建、管理和终止会话提供必要的方法。这些方法一般以API(Application Program Interface,应用程序编程接口)的形式出现。常用的API由NetBIOS(Network Basic Input/Output System,网络基本输入/输出系统)、RPC(Remote Procedure Call,远程过程调用)和Socket API。

    会话层还负责管理和确定传输模式。计算机可以由三种模式来传输数据:单向(Simplex)、半双工(Half-Duplex)、全双工(Full-Duplex)。

        Simplex:数据只可以单向传输。
        Half-Duplex:允许数据单向传输,但是一个时刻只能有一个方向传输,不能同时双向传输。
        Full-Duplex:数据可以同时双向传输。

    第四层——传输层(Transport)

    传输层提供数据传输的服务。这里的“传输”指的是端对端(End-to-End)或者主机对主机(Host-to-Host)的传输。

    传输层上最重要的两个协议是TCP和UDP。TCP是面向连接的协议(Connection-Oriented),UDP是无连接的协议(Connection-Less)。
    TCP(Transmission Control Protocol,传输控制协议)

    TCP在传输数据之前必须先建立一个连接。TCP做了很多工作来提供可靠的数据传输,包括建立、管理和终止连接,确认和重传。同时TCP还提供分段和重组,流量控制(Flow Control)等。
    UDP(User Datagram Protocol,用户数据报协议)

    UDP是一种简单的传输层协议,所以它并不能提供可靠的数据传输。简单地说,UDP只是把应用程序发给它的数据打包成一个UDP数据报(UDP Datagram),然后再把这个数据报传给IP。
    TCP会把应用程序发来的数据根据需要分成若干个大小合适的TCP段(TCP Segment),而UDP却只是简单地把所有发送来的数据打包成一个UDP数据报,所以我们在编写使用UDP的程序时,不能一次性向UDP写入太多数据,否则可能会导致IP分段的后果。

    由于可能有很多应用程序同时在使用TCP/UDP,它们都会把数据交给TCP/UDP,而TCP/UDP也会接收来自IP的、包含指向不同应用程序的数据,所以就需要有一种方法来区别(标识)应用程序,这种方法就是通过端口号(Port)来进行多路复用或多路分解。端口号是一个16位的二进制整数,其取值范围是0~65535。

    多路复用(Multiplexing)
    多路复用是只当应用程序把数据交给TCP或UDP时,TCP会把这些数据分成若干个TCP段,UDP则会产生一个UDP数据报。在这些TCP段和UDP数据报中,会填入应用程序指定的源端口号和目标端口号,源端口号用于标识发送的应用程序(进程),目标端口号用于指明在目标机器上应该接收数据的目标应用程序。

    多路分解(Demultiplexing)
    多路分解是多路复用的逆过程。当在目标机器上的TCP或者UDP接收到TCP段和UDP数据报时,会检查它们的目标端口号,然后根据不同的目标端口号把数据分发给不同的应用程序(进程)。
    第三层——网络层(Network)【路由器】

    网络层关心的主要是如何把数据从一个设备发送到另一个设备。网络层需要提供三个最基本的功能:地址、路由、分段和重组。同时还需要一些附加的功能,比如错误处理和诊断。

    网络层上最重要的协议IP(Internet Protocol),就是为了这些功能而设计的。目前IP一共有两个版本IPv4和IPv6。两者最主要的区别是使用了不同位数的二进制整数作为地址:IPv4使用32位二进制地址,IPv6使用128位二进制地址。IPv4的地址表示方法一般为用点隔开的4个数字,每个数字的取值范围是0~255,即一个字节的大小,如192.168.1.1。IPv6的表示方法为用冒号隔开的8个字(word,16位二进制),每个字都用十六进制来表示,如2012:0000:4528:7D76:3C2B:05AD:3F57:1C98。
    第二层——数据链路层(Data Link)【交换机】

    网络层关心的是如何把数据从一个设备发送到另外一个设备,这另外一个设备有可能在本地网络中或者在一个很远的网络中。数据链路层关心的是如何把数据发送到本地网络中去。我们平时常说的LAN(Local Area Network,局域网)技术,如以太网(Ethernet)、令牌环网(Token Ring)、光纤分布数据接口(FDDI)和802.11(WiFi)都定义在这一层。
    数据链路层又分为两个子层:逻辑链路控制层(Logical Link Control)和介质访问控制层(Media Access Control)。

    数据链路层还有一个重要的概念,即MAC地址,也有人称其为物理地址、硬件地址、以太网地址等。每一个网卡(Network Interface Card)都有一个唯一的MAC地址,数据链路层通过MAC地址来确保数据能够正确被发送到目标设备。MAC地址是一个48位二进制整数,通常的表示方法是用-隔开的6个十六进制整数,如14-FE-B5-B0-2B-96。
    第一层——物理层(Physical)【集线器、网卡】

    物理层位于OSI的底层,所有其他层的数据最终都必须经由物理层才能发送出去。物理层的功能包括:

        硬件规范的定义,如电缆、连接器、无线接收器等的工作方式,网卡、集线器(Hub)等网络设备也工作在物理层。
        编码和信号,物理层把计算机中的二进制0和1转换成可以在物理介质上传输的信号。
        在把数据转换成信号后(如对于双绞线电缆则是电子脉冲信号),物理层负责信号的实际发送和接收。


    三、TCP/IP四层模型

    自上而下:应用层,传输层,网际互连层,网络接入层(主机-网络层,对应于链路层和物理层)

    功能同上

    在TCP/IP模型中并不包含物理层。另外,两个重要的协议ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址转换协议),在OSI模型中一般被认为是在位于第二层数据链路层和第三层网络层之间,而在TCP/IP模型中则位于网络接口层。

    参考博客:

    https://blog.csdn.net/foreverling/article/details/44302435

    https://www.cnblogs.com/quinlan/p/7715000.html

  • 相关阅读:
    go-elasticsearch 来自官方的 golang es client
    nginx unit nodejs 模块试用(续)
    WebSocket-Over-HTTP Protocol
    pushpin Server-sent events && openresty 集成试用
    Rendering on the Web
    pushpin openresty 集成试用
    100 webhook implementations
    streamdataio 实时数据分发平台
    Generic Realtime Intermediary Protocol
    Pushpin How it works
  • 原文地址:https://www.cnblogs.com/Pan-xi-yi/p/9045332.html
Copyright © 2011-2022 走看看