网络分层模型(OSI,TCP/IP)

  • 目前存在的两种网络分层模型:OSI模型TCP/IP模型
  • OSI模型一共分为七层
  • TCP/IP模型和OSI模型类似,但是只分为四层。

OSI模型

  • OSI的全程是Open Systems Interconncection,即开放系统互联,它由ISO(International Organization for Standardization)制定。
  • OSI是网络通信的一种通用框架,它分为七层,并且定义了在每一层上数据的处理方法。
层数 层名 备注
7 应用层(Application)
6 表示层(Presentation)
5 会话层(Session)
4 传输层(Transport)
3 网络层(Network) 路由器
2 数据链路层(Data Link) 交换机
1 物理层(Physical) 网卡、集线器(Hub)
  • 英语速记:All People Seem To Need Data Processing.

第七层——应用层(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数据报时,会检查它们的目标端口号,然后根据不同的目标端口号把数据分发给不同的应用程序(进程)。


TCP与UDP比较

5a1562ea9c5c913dc6000006


第三层——网络层(Network)

  • 网络层关心的主要是如何把数据从一个设备发送到另一个设备。
  • 网络层需要提供三个最基本的功能:地址、路由、分段和重组
    • 路由(route),一个终端到另一个终端的路径选择(跨网段)
  • 同时还需要一些附加的功能,比如错误处理和诊断。
  • 网络层上最重要的协议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转换成可以在物理介质上传输的信号。
    • 在把数据转换成信号后(如对于双绞线电缆则是电子脉冲信号),物理层负责信号的实际发送和接收。

OSI模型单位

  • PDU(Protocol Data Unit) : OSI标准不同层次的数据单位
PDU
物理层 PDU是数据位 bit
数据链路层 PDU是数据帧 frame
网络层 PDU是数据包 packet
传输层 PDU是数据段 segment
其它更高层次 PDU是消息 message

TCP/IP模型

  • TCP/IP
    • Transmission Control Protocol/Internet Protocol
    • 传输控制协议/ 因特网互联协议
  • TCP/IP 是一个Protocol Stack ,包括TCP、IP 、UDP 、ICMP 、RIP、TELNET、FTP 、SMTP 、ARP等许多协议

  • TCP/IP模型分为四层
    • 应用层(Application)
    • 传输层(Host-to-Host Transport)
    • 互联网层(Internet)
    • 网络接口层(Network Interface)。
  • 在TCP/IP模型中并不包含物理层。
  • 另外,两个重要的协议ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址转换协议),在OSI模型中一般被认为是在位于第二层数据链路层和第三层网络层之间,而在TCP/IP模型中则位于网络接口层。
  • 与ISO参考模型的分层有对应关系
    5a1561269c5c913dc6000005

总结

发送方应用程序的数据总是从最上层开始,层层向下,最终经由物理层发送出去;相应的,在接收方的物理层接收到数据后,层层向上,最终经由应用层分发到具体的应用程序进程中。

在数据层层向下的过程中,每一层都会对数据进行一些封装处理(如打包或者编码);而在数据层层向上的过程中,每一层都会对数据进行一些逆处理(如解包或者解码)。这些对数据的处理和逆处理的过程就是为了实现该层的服务。
5a15269d9c5c913dc6000000
5a1526b39c5c913dc6000001

 

  • OSI,TCP/IP模型区别
    5a1527509c5c913dc6000002

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89008

(1)
上一篇 2017-11-27 08:48
下一篇 2017-11-27 12:38

相关推荐

  • 网络配置——CentOS7

    CentOS 7 网络属性配置 使用传统命名方式: (1) 编辑/etc/default/grub 配置文件 GRUB_CMDLINE_LINUX ="rhgb quiet net.ifnames=0" 或:修改/boot/grub2/grub.cfg (2) 为grub2 生成其配置文件 grub2-mkconfig -o /etc/g…

    Linux干货 2016-09-11
  • Linux帮助文件的使用、history变量的使用和FHS

    怎样利用帮助文件来查询想要了解的信息? 这里以通过查找帮助文件来修改登陆信息为例子, 登陆的时候,我们可以看到CentOS的的版本和内核信息, 当我们查看该相关文件的时候,会发现,里面的文档和显示的不一致,由此可以了解到,该文档是调用某些参数来实现显示CentOS的版本和内核信息。 这个时候,我们该怎样去查看issue文档的相关信息? 首先我们可以查看一下通…

    Linux干货 2016-08-04
  • Linux基础知识(五)-文件查找命令find

    对grep 和 find 命令的操作 1、显示当前系统上root、fedora或user1用户的默认shell; 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 3、使用echo命令输出一个路径,使用grep取出其基名; 4、找出ifconfig命令结果中的1-255之间数字; 5、写一个…

    Linux干货 2016-10-24
  • 马哥教育网络班21期+第9周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登陆shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash while read line; do     if [[ $line&n…

    Linux干货 2016-09-01
  • 马哥教育网络班第19期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:一种网路装置,负责网路桥接,将网络的多个网段在数据链路层连接起来。 集线器:将多条以太网线或光纤集合连接在同一段物理介质下的装置。工作在物理层。 二层交换机:工作在数据链路层,交换机内部的CPU会在每个端口成功连接时,通过将MAC地址和端口对应,形成一张MAC表。在今后的通…

    Linux干货 2016-08-22
  • MHA安装包及其依赖包下载

    MySQL MHA是一款在业界广泛部署的MySQL高可用软件。但是在安装时,需要安装较多依赖包,并且有些依赖包在操作系统中默认的yum源是不存在的,因此需要到多个地方去寻找相应的包,费时费力。特别是在某些公司的网络政策,只允许少数机器连接外网,因此部署MHA更是苦不堪言。     为了方便大家也是方便以后我自己的使用,…

    Linux干货 2016-12-05