当前位置:首页>微思动态 > >详情
全国热线电话 400-881-4699

在线留言

【收藏】OSI参考模型和TCP / IP参考模型

发布作者:微思网络   发布时间:2022-09-27   浏览量:0

图片


应用于数据

⼤部分应⽤所产⽣数据需要在不同的设备之间传输。对于⼀名⽹络⼯程师来说,更需要关注数据的端到端传输的过程。计算机只能识别0和1组成的电⼦数据(digital data)。⽽对⼈来说,我们不具备读取电⼦数据的能⼒,所以在读取信息的时候,需要将数据转成⼈能理解的信息。



区域限电通知

OSI参考模型是由国际标准化组织ISO于1984年发布的⽤于开放⽹络互联的模型,它由七个层级构成。(OSI参考模型:Open Systems Interconnection Reference Model)


层级作用

应用层

为应用程序提供接口

表示层

进行数据格式的转换,以确保一个系统生成的应用层数据能够被另一个系统的应用层所识别和理

会话层

在通信双方之间建立、管理和终止会话

传输层

建立、维护和取消一次端到端的数据传输过程。控制传输节奏的快慢,调整数据的排序等

网络层

定义逻辑地址,实现数据从源到目的地的转发

数据链路层

将分组数据封装成帧,在数据链路上实现数据的点到点、或点到多点方式的直接通信以及差错检测

物理层

在媒介上传输比特流,提供机械的和电气的规约



TCP/IP参考模型

OSI参考模型较为复杂,且TCP和IP两⼤协议在业界被⼴泛使⽤,所以TCP/IP参考模型成为了互联⽹的实际参考模型。

TCP/IP把表示层和会话层都归⼊应⽤层,数据链路层和物理层合并为⽹络接⼝层,所以分成4层模型,考虑数据链路层和物理层⼀般是分开处理的,所以⼀般采⽤最右边的TCP/IP对等模型。

图片



TCP/IP协议栈常⻅协议

TCP/IP协议栈定义了⼀系列的标准协议。

图片



应用层

应⽤层为应⽤软件提供接⼝,使应⽤程序能够使⽤⽹络服务。应⽤程序会基于某⼀种传输协议,以

及定义传输层所使⽤的端⼝号。

典型应⽤层协议

HTTP:超⽂本传输协议,提供测览⽹⻚服务。

Telnet:远程登陆协议,提供远程管理服务。

FTP:⽂件传输协议,提供互联⽹⽂件资源共享服务。

SMTP:简单邮件传输协议,提供互联⽹电⼦邮件服务。

TFTP:简单⽂件传输协议,提供简单的⽂件传输服务。



FTP

FTP(File Transfer Protocol)是⼀个⽤于从⼀台主机传送⽂件到另⼀台主机的协议,⽤于⽂件的“下载”和“上传”,它采⽤C/S(Client/Server)结构。使⽤FTP传输数据时,需要在服务器和客户机之间建⽴控制连接和数据连接。


FTP连接的建⽴分为主动模式和被动模式,两者的区别在于数据连接是由服务器发起还是由客户端发起。


当需要穿越防⽕墙的时候,需要⽤被动模式。缺省情况下采⽤主动模式,⽤户可以通过命令切换。服务器的端⼝21⽤于传输控制命令,端⼝20⽤于传输数据。


FTP连接主动模式建⽴过程:

  • 服务器打开端⼝21,启动监听,等待连接;

  • 客户端发起控制连接的建⽴请求,服务器响应;

  • 客户端通过控制连接发送PORT命令,将客户端数据连接的临时⼝号告诉服务器;

  • 服务器的20端⼝与客户建⽴起数据连接。


FTP连接被动模式建⽴过程:

  • 服务器打开端⼝21,启动监听,等待连接;

  • 客户端发起控制连接的建⽴请求,服务器响应;

  • 客户端通过控制连接发送命令字PASV,告知服务器处于被动模式;

  • 服务器回应,将数据连接的临时端⼝号告诉客户;

  • 客户端与服务器的临时⼝建⽴起数据连接。



SFTP

SFTP(Secure File Transfer Protocol,安全⽂件传输协议)是⼀种基于SSH(Secure Shell)提供⽂件安全传输的⽹络协议。


FTP vs SFTP

FTP:明⽂传输不安全,双通道协议,端⼝号20 21

SFTP:传输的认证信息和数据进⾏加密, 单通道协议端⼝号22



Telnet

Telnet是数据⽹络中提供远程登录的标准协议,Telnet可以为⽤户实现在本地计算机上操作远程设备。⽤户通过Telnet客户端程序连接到Telnet服务器。⽤户在Telnet客户端中输⼊命令, 这些命令会在服务器端运⾏,就像直接在服务端的控制台上输⼊⼀样。



STelnet

STelnet(Secure Telnet)是⼀种安全的Telnet服务,使⽤户可以从远端安全登录到设备,所有交互数据均经过加密,实现安全的会话连接。Telnet是明⽂传输的,并不安全,使⽤STelnet可以极⼤提升安全性。


Telnet vs STelnet

Telnet:明⽂传输,端⼝22

STelnet:通过SSH密⽂传输,端⼝22


STelnet服务端与客户端的协商过程包括以下五个阶段:

版本协商阶段:SSH⽬前包括SSHv1和SSHv2两个版本,双⽅通过版本协商确定使⽤的版本。

算法协商阶段:SSH⽀持多种加密算法,双⽅根据本端和对端⽀持的算法,协商出最终使⽤的加密算

法。

密钥交换阶段:通过密钥交换算法⽣成会话密钥,此后双⽅的会话均通过会话密钥加密。

⽤户认证阶段:SSH客户端向服务器端发起认证请求,服务器端对客户端进⾏认证。

会话交互阶段:认证通过后,服务器端和客户端进⾏信息的交互。



HTTP

HTTP(Hyper Text Transfer Protocol)超⽂本传输协议是互联⽹上应⽤最为⼴泛的⼀种⽹络协议。设计HTTP最初的⽬的是为了提供⼀种发布和接收HTML⻚⾯的⽅法。WWW是World Wide Web的缩写,⼜称为3W或Web,中⽂译为“万维⽹”。



HTTPS

HTTPS(Hypertext Transfer Protocol Secure,超⽂本传输安全协议),是以安全为⽬标的HTTP通道。HTTP vs HTTPSHTTP:明⽂传输,端⼝80HTTPS:加⼊TLS据传输提供身份验证、加密及完整性校验,端⼝443,主流⽹站都⽤HTTPS。



DNS

在浏览⽹⻚时,我们输⼊⽹址这个字符串,但计算机去访问这个⽹址时,真正需要知道的是⽹址对应域名的IP地址,这时就需要由专⻔的域名解析系统(Domain Name System,简称DNS)来完成。


域名解析分为动态域名解析和静态域名解析。在解析域名时,⾸先采⽤静态域名解析的⽅法,如果静态解析不成功,再采⽤动态域名解析的⽅法。


IPv4静态域名解析是通过静态域名解析表进⾏的,即⼿动建⽴域名和IPv4地址之间的对应关系表,该表的作⽤类似于Windows操作系统下的hosts⽂件,动态域名解析需要专⽤的域名解析服务器(DNS Server)运⾏域名解析服务器程序,提供从域名到IP地址的映射关系,负责处理客户端提出的域名解析请求。



传输层

传输层协议接收来⾃应⽤层协议的数据,封装上相应的传输层头部,帮助其建⽴“端到端”的连接。传输层负责建⽴主机之间进程与进程之间的连接。

传输层协议:

TCP:⼀种⾯向连接的、可靠的传输层通信协议,由IETF的RFC 793定义。

UDP:⼀种简单的⽆连接的传输层协议,由IETF的RFC 768定义。



TCP和UDP - 报⽂格式

图片

图片



TCP报⽂头部

Source Port:源端⼝,标识哪个应⽤程序发送。⻓度为16⽐特;

Destination Port:⽬的端⼝,标识哪个应⽤程序接收。⻓度为16⽐特;

Sequence Number:序号字段,TCP连接中传输的数据流每个字节都编上⼀个序号。序号字段的值指的是本报⽂段所发送数据的第⼀个字节的序号。⻓度为32⽐特;

Acknowledgment Number:确认序列号,是期望收到对⽅下⼀个报⽂段数据的第1个字节的序号,即上次已成功接收到的数据段的最后⼀个字节数据的序号加1。只有ACK标识为1,此字段有效。⻓度为32⽐特;

Header Length:头部⻓度,指出TCP报⽂头部⻓度,以32⽐特(4字节)为计算单位。若Option字段⽆内容,则该字段为5,即头部为20字节;

Reserved:保留,必须填0。⻓度为6⽐特;

Control bits:控制位,包含FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段;

Window:窗⼝TCP的流量控制,这个值表明当前接收端可接受的最⼤的数据总数(以字节为单位)。窗⼝最⼤为65535字节。⻓度为16⽐特;

Checksum:校验字段,是⼀个强制性的字段,由发端计算和存储,并由收端进⾏验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报⽂段的前⾯加上12字节的伪头部。⻓度为16⽐特;

Urgent:紧急指针,只有当Urgent标志置1时紧急指针才有效。TCP的紧急⽅式是发送端向另⼀端发送紧急数据的⼀种⽅式。紧急指针指出在本报⽂段中紧急数据共有多少个字节(紧急数据放在本报⽂段数据的最前⾯)。⻓度为16⽐特;

Options:选项字段(可选),⻓度为0-40字节。



UDP报⽂头部

Source Port:源端⼝,标识哪个应⽤程序发送。⻓度为16⽐特;

Destination Port:⽬的端⼝,标识哪个应⽤程序接收。⻓度为16⽐特;

Length:该字段指定UDP报头和数据总共占⽤的⻓度。可能的最⼩⻓度是8字节,因为UDP报头已经占⽤了8字节。由于这个字段的存在,UDP报⽂总⻓不可能超过65535字节(包括8字节的报头,和65527字节的数据);

Checksum:覆盖UDP头部和UDP数据的校验和,⻓度为16⽐特。


TCP和UDP - 端⼝号

TCP和UDP使⽤端⼝号来区分不同的服务。客户端使⽤的源端⼝⼀般随机分配,⽬标端⼝则由服务器的

应⽤指定。源端⼝号⼀般为系统中未使⽤的,且⼤于1023的端⼝。⽬的端⼝号为服务端开启的应⽤(服

务)所侦听的端⼝,如HTTP缺省使⽤80。



⽹络层

⽹络层则负责数据从⼀台主机到另外⼀台主机之间的传递。

⽹络层作⽤:负责将分组报⽂从源主机发送到⽬的主机。为⽹络中的设备提供逻辑地址。负责数据

包的寻径和转发。常⻅协议如IPv4、IPv6、ICMP和IGMP等。



IP报⽂头部
图片



IP报⽂转发

源设备发出的报⽂会在其⽹络层头部携带源及⽬的设备的⽹络层地址。具备路由功能的⽹络设备(例如路由器等)会维护路由表。当这些⽹络设备收到报⽂时,会读取其⽹络层携带的⽬的地址,并在其路由表中查询该地址,找到匹配项后,按照该表项的指示转发数据。


采⽤IP作为⽹络层协议,通信双⽅的IP都是唯⼀的,IP是32位的⼆进制数,可以⽤点分⼗进制表示,⽐如192.168.1.1


IP数据包的封装与转发:

  • ⽹络层收到上层(如传输层)协议传来的数据时候,会封装⼀个IP报⽂头部,并且把源和⽬的IP地址都添加到该头部中;

  • 中间经过的⽹络设备(如路由器),会维护⼀张指导IP报⽂转发的“地图”——路由表,通过读取IP数据包的⽬的地址,查找本地路由表后转发IP数据包;

  • IP数据包最终到达⽬的主机,⽬的主机通过读取⽬的IP地址确定是否接受并做下⼀步处理。

IP协议⼯作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建⽴路由表,ICMP帮忙进⾏⽹络的控制和状态诊断。



ICMP协议

Internet控制消息协议ICMP是IP协议的辅助协议。(ICMP:Internet Control Message Protocol)ICMP协议⽤来在⽹络设备间传递各种差错和控制信息,对于收集各种⽹络信息、诊断和排除各种⽹络故障等⽅⾯起着⾄关重要的作⽤。ICMP消息封装在IP报⽂中,IP报⽂头部Protocol值为1时表示ICMP协议。

图片

ICMP字段解析:

  • ICMP消息的格式取决于Type和Code字段,其中Type字段为消息类型,Code字段包含该消息类型的具体参数。

  • Checksum校验和字段⽤于检查消息是否完整。

  • ICMP消息中包含32 bit的可变参数,这个字段⼀般不使⽤,通常设置为0。

  • 在ICMP重定向消息中,这个字段⽤来指定⽹关IP地址,主机根据这个地址将报⽂重定向到指定⽹关;

  • 在Echo请求消息中,这个字段包含标识符和序号,源端根据这两个参数将收到的回复消息与本端发送的Echo请求消息进⾏关联。尤其是当源端向⽬的端发送了多个Echo请求消息时,需要根据标识符和序号将Echo请求和回复消息进⾏⼀⼀对应。

TypeCode描述
00Echo  Reply
30网络不可达
31主机不可达
32协议不可达
33端口不可达
50重定向
80Echo  Request

ICMP差错检测

  • ICMP Echo Request和ICMP Echo Reply消息常⽤于诊断源和⽬的地之间的⽹络连通性,同时还可以提供其他信息,如报⽂往返时间等。

  • ICMP的⼀个典型应⽤是Ping。


ICMP错误报告

ICMP定义了各种错误消息,⽤于诊断⽹络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。


ICMP的另⼀个典型应⽤是Tracert。

  • Tracert基于报⽂头中的TTL值来逐跳跟踪报⽂的转发路径。源端⾸先将报⽂的TTL值设置为1。该报⽂到达第⼀个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。

  • 然后源端将报⽂的TTL值设置为2,报⽂到达第⼆个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报⽂到达⽬的地。

  • 这样,源端根据返回的报⽂中的信息可以跟踪到报⽂经过的每⼀个节点,并根据时间戳信息计算往返时间。


ICMP定义了各种错误消息,⽤于诊断⽹络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。

  • 如果⽹络中发⽣了环路,导致报⽂在⽹络中循环,且最终TTL超时,这种情况下⽹络设备会发送TTL超时消息给发送端设备;

  • 如果⽬的地不可达,则中间的⽹络设备会发送⽬的不可达消息给发送端设备。⽬的不可达的情况有多种




OSPF协议

不同⽹络间的互通,需要通过路由实现。路由的获取⽅式有:直连路由、静态路由、动态路由。动态路由因灵活性⾼、可靠性好、易扩展等特点被⼴泛应⽤于⽹络中。


OSPF是企业⽹络中应⽤最⼴的动态路由协议。LSDB(Link State Database, 链路状态数据库),OSPF设备之间会同步链路状态信息,⽤于计算路由,保存这些信息的数据库就是LSDB。


OSPF区域

OSPF Area⽤于标识⼀个OSPF的区域。区域是从逻辑上将设备划分为不同的组,每个组⽤区域号(Area ID)来标识。

企业⽹络可以根据规模和需求规划为单区域或多区域组⽹。OSPF区域可以划分为⻣⼲区域和⾮⻣⼲区域。⻣⼲区域为Area0,其他区域为⾮⻣⼲区域。⼤型企业⽹络中可以进⾏分层次的OSPF区域规划,如可以将出⼝设备和核⼼设备间规划为⻣⼲区域Area0,核⼼设备和汇聚设备之间规划为⾮⻣⼲区域,如Area10,Area20。


OSPF路由表

对于OSPF的路由表,需要了解:1、OSPF路由表包含Destination、Cost和NextHop等指导转发的信息;2、使⽤命令display ospf routing查看OSPF路由表。



数据链路层

数据链路层位于⽹络层和物理层之间,可以向⽹络层的IP和IPv6等协议提供服务。以太⽹(Ethernet)是最常⻅的数据链路层协议。

数据链路层位于⽹络层和物理层之间:

  • 数据链路层向⽹络层提供“段内通信”;

  • 负责组帧、物理编址和差错控制等功能;

  • 常⻅的数据链路层协议有:以太⽹、PPPoE和PPP等。



以太⽹帧结构

以太⽹技术所使⽤的帧为以太⽹帧(Ethernet Frame)。以太帧有Ethernet II格式和IEEE 802.3格式两个标准。

MAC(Media Access Control)地址在⽹络中唯⼀标识⼀个⽹卡。MAC地址有48 bit,如00-1E-10-DD-DD-02。MAC地址⽤于同⽹段内的通信。Ethernet II以太帧:

DMAC:6字节,⽬的MAC地址,该字段标识帧的接收者;

SMAC:6字节,源MAC地址,该字段标识帧的发送者;

Type:2字节,协议类型。常⻅值:

0x0800:Internet Protocol Version 4(IPv4);

0x0806:Address Resolution Protocol(ARP)。


IEEE 802.3 LLC以太帧:

SNAP:Sub-network Access Protocol,⼦⽹访问协议。SNAP由机构代码(Organization Code)和类型(Type)字段组成;

FCS:Frame Check Sequence,帧校验序列,这是⼀个32位的循环冗余校验码,主要⽤于校验⼆层数据帧在传输过程中是否发⽣差错;逻辑链路控制LLC(Logical Link Control)由⽬的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成;

DSAP:1字节,⽬的服务访问点,若后⾯类型为IP,该字段值设为0x06。服务访问点的功能类似于Ethernet II帧中的Type字段或TCP/UDP传输协议中的端⼝号;

SSAP:1字节,源服务访问点,若后⾯类型为IP,该字段值设为0x06;

Ctrl:1字节,该字段值通常设为0x03,表示⽆连接服务的IEEE 802.2⽆编号数据格式。

图片


地址解析协议 (ARP)

ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址的⼀个TCP/IP协议。根据已知的IP地址解析获得其对应的MAC地址。

ARP是IPv4中必不可少的⼀种协议,它的主要功能是:

  • 将IP地址解析为MAC地址;

  • 维护IP地址与MAC地址的映射关系的缓存,即ARP表项;

  • 实现⽹段内重复IP地址的检测。



数据封装过程

发送⽅数据封装

图片

假设你正在通过⽹⻚浏览器访问华为官⽹,当你输⼊完⽹址,敲下回⻋后,计算机内部会发⽣下列事情:

  • IE浏览器(应⽤程序)调⽤HTTP(应⽤层协议),完成应⽤层数据的封装(图中Data还应包括HTTP头部,此处省略);

  • HTTP依靠传输层的TCP进⾏数据的可靠性传输,将封装好的数据传递到TCP模块;

  • TCP模块给应⽤层传递下来的Data添加上相应的TCP头部信息(源端⼝、⽬的端⼝等)。此时的PDU被称作Segment(段);

  • 在IPv4⽹络中,TCP模块会将封装好的Segment传递给⽹络层的IPv4模块(若在IPv6环境,会交给IPv6模块进⾏处理);

  • IPv4模块在收到TCP模块传递来的Segment之后,完成IPv4头部的封装,此时的PDU被称为Packet(包);

  • 由于使⽤了Ethernet作为数据链路层协议,故在IPv4模块完成封装之后,会将Packet交由数据链路层的Ethernet模块(例如以太⽹卡)处理;

  • Ethernet模块在收到IPv4模块传递来的Packet之后,添加上相应的Ethernet头部信息和FCS帧尾,此时的PDU被称为Frame(帧);

  • 在Ethernet模块封装完毕之后,会将数据传递到物理层;

  • 根据物理介质的不同,物理层负责将数字信号转换成电信号,光信号,电磁波(⽆线)信号等;

  • 转换完成的信号在⽹络中开始传递。


接收⽅数据解封装

图片

经过⽹络传递之后,数据最终到达⽬的服务器。根据不同的协议头部的信息,数据将被⼀层层的解封装并做相应的处理和传递,最终交由Web服务器上的应⽤程序进⾏处理。



返回顶部