linux网络编程系列(二)--OSI七层模型和TCP-IP四层模型

1. ISO七层网络模型

为使不同计算机厂家之间的计算机能够互相通信,以便在更大的范围内建立计算机网络,国际标准化组织ISO在1981年正式推出了一个网络系统结构--OSI七层网络模型,此后各大计算机厂商迅速向它靠拢,大大推动了计算机网络的发展。
OSI七层网络模型分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

1.1 应用层

应用层是最靠近用户的OSI层,这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务,主要负责对软件提供接口以使程序能使用网络服务,从实现上讲,其实就是使用了特定的端口号和特定的数据格式封装了tcp或者udp,从而产生了应用层协议。

1.2 表示层

表示层是应用程序和网络之间的翻译官,可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。在表示层,数据将按照网络能理解的方案进行格式化,这种格式化也因所使用网络的类型不同而不同。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符,如有必要,表示层会通过使用一种通用格式来实现多种数据格式之间的转换。
一些典型的应用如下:

  • 数据的解密与加密,如系统口令的处理;
  • 对图片和文件格式信息进行解码和编码;

1.3 会话层

会话层负责在网络中的两节点之间建立、维持和终止通信。会话层的功能包括:建立通信连接,保持会话过程通信连接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时从何处开始重新发送。你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的 ISP (因特网服务提供商)请求连接到因特网时,ISP 服务器上的会话层向你与你的PC客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。

1.4 传输层

传输层是OSI七层模型中最重要的一层,传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大于1 5 0 0 字节的数据包,发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一个序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。工作在传输层的一种服务是 T C P / I P 协议套中的T C P (传输控制协议),另一项传输层服务是I P X / S P X 协议集的S P X (序列包交换)。

1.5 网络层

网络层主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B的最佳路径。由于网络层处理,并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。
网络层负责在源机器和目标机器之间建立它们所使用的路由,这一层本身没有任何错误检测和修正机制,因此,网络层必须依赖于端端之间可靠传输服务。   
网络层用于本地LAN网段之上的计算机系统建立通信,它之所以可以这样做,是因为它有自己的路由地址结构,这种结构与第二层机器地址是分开的、独立的。这种协议称为路由或可路由协议。路由协议包括I P、N o v e l l公司的I P X以及A p p l e Ta l k协议。 网络层是可选的,它只用于当两个计算机系统处于不同的由路由器分割开的网段这种情况,或者当通信应用要求某种网络层或传输层提供的服务、特性或者能力时。例如,当两台主机处于同一个L A N网段的直接相连这种情况,它们之间的通信只使用L A N的通信机制就可以了(即OSI 参考模型的一二层)。

1.6 数据链路层

数据链路层控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。
数据链路层的功能独立于网络和它的节点和所采用的物理层类型,它也不关心是否正在运行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些连接设备,如交换机,由于它们要对帧解码并使用帧信息将数据发送到正确的接收方,所以它们是工作在数据链路层的。
数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。 数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

1.7 物理层

物理层是最底层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面P C上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。
用户要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,有人把物理媒体当做第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit比特。
主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。

2. TCP/IP四层模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。

2.1 四层模型

TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

  • 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。 负责应用程序的网络访问,这里通过端口号来识别各个不同的进程。

  • 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。 负责端对端之间的通信会话连接和建立。传输协议的选择根据数据传输方式而定。

  • 网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。 负责将数据帧封装成IP数据报,并运行必要的路由算法。

  • 数据链路层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据,实现网卡接口的网络驱动程序。负责将二进制流转换为数据帧,并进行数据帧的发送和接收。

2.2 四层模型分别有哪些协议

应用层{http超文本传输协议 ftp文件传输协议 telnet远程登录 ssh安全外壳协议 stmp简单邮件发送 pop3收邮件}
传输层{tcp传输控制协议,udp用户数据包协议}
网络层{ip网际互联协议 icmp网络控制消息协议 igmp网络组管理协议}
数据链路层{arp地址转换协议,rarp反向地址转换协议,mpls多协议标签交换}

部分协议注解如下:
ARP:(地址转换协议)用于获得同一物理网络中的硬件主机地址。
MPLS:(多协议标签交换)很有发展前景的下一代网络协议。
IP:(网际互联协议)负责在主机和网络之间寻址和路由数据包。
ICMP:(网络控制消息协议)用于发送报告有关数据包的传送错误的协议。
IGMP:(网络组管理协议)被IP主机用来向本地多路广播路由器报告主机组成员的协议。
TCP:(传输控制协议)为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到相应的应用程序。
UDP:(用户数据包协议)提供了无连接通信,且不对传送包进行可靠的保证。适合于一次传输少量数据。

2.3 最常见的应用层协议

注意:可以使用cat /etc/services来查看有哪些应用层协议,以及他们使用了传输层的哪些协议。
通常我们是使用ip地址后面跟上端口号来唯一确定一个连接:ip用来定位主机,port区别应用(进程)。
例如:
http-->80 ssh-->22 telnet-->23 ftp-->21
系统使用端口号一般是1-1024,用户可使用的是1025-65536。

本人在上写的内容均为本人原创,转载需经本人同意,欢迎转载分享,请注明出处。

你可能感兴趣的:(linux网络编程系列(二)--OSI七层模型和TCP-IP四层模型)