文章目录
不同分类模型对应关系
TCP/IP协议分层模型有:四层模型、五层模型、七层模型
四层:物理接口层、网络层、传输层、应用层
五层:物理层、数据链路层、网络层、传输层、应用层
七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
不同人员关注的模型不一样
对于大众人员会更关注四层模型,因为物理层和数据链路层都是跟网卡和物理线路有关,会话层、表示层、应用层都属于上层制定协议规则的人员决定。
对于网络设备公司,可能更关注五层协议,因为他们生产的设备要明确区分物理层和数据链路层,物理设备更关注数据的传输,相对不太关注应用层协议定制。
对于制定应用层协议的人员,就要更关注七层协议,选择TCP还是UDP,数据的加解密方式,压缩格式等,SSH、HTTPS这些协议的,就要关注并区分会话层、表示层、应用层负责处理哪些功能。
每层的简述
物理层
涉及物理实体,电缆/光缆传输的是高低电平0/1的比特流。
数据链路层
涉及物理实体,每个网络设备都最少有一个网卡(运营商网络路由器的每个端口是一个网卡),每个网卡有网卡地址也叫硬件地址(英文缩写MAC),数据链路层的协议数据单元数据帧(PDU)的首部信息里面有自身MAC和目的MAC,这也是属于物理层范畴,因为需要涉及具体的物理设备连接。
数据链路层主要有两个功能 :帧编码和误差纠正控制。帧编码意味着定义一个包含信息频率、位同步、源地址、目标地址以及其他控制信息的数据包。数据链路层协议又被分为两个子层 :逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。
在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些规程或协议的硬件和软件加到物理线路,这样就构成了数据链路,从数据发送点到数据接收点所经过的传输途径。当采用复用技术时,一条物理链路上可以有多条数据链路。
网络层
逻辑链路的第一层,根据目的IP进行发送,一般都是IP路由转发协议,而它最终会转化到数据链路层。需要使用到链路层的ARP协议,ARP协议可以根据网络层PDU的IP地址获得物理地址,这样就可以使得数据链路层能知道发送到哪个MAC,MAC地址只需要局域网内部唯一就可以正确转发到目的MAC。
网络层用到了路由表,路由表里面存放了路由信息,路由有几个核心参数:目的IP、下一跳IP(要想去到目的IP,需要跳转到的中专IP,因为本机不能直接访问到目的IP,所以需要让下一跳进行转发),路由又分为静态路由和动态路由,静态路由是每条都手工添加,而动态路由表是根据路由发现协议自动采集。RARP可以根据MAC反查IP,可以用于数据链路层的数据包还原成网络层的数据包。(注意:路由是单向的,比如A和B两个机器,A有指向B的路由,而B没有指向A的路由,那么B能收到A发来的包,而B无法发送包给A)
传输层
主要负责向两个主机中进程之间的通信提供服务,目前最广泛就是socket(IP加端口,决定应用程序连接唯一性)。主要实现协议有:TCP、UDP。
注意因为路由是单向的,所以数据包的发送也是单向的,而平时我们称TCP相对UDP是有连接的,实际上TCP就是通信双方,通过三次握手(3个数据包的交互)双方内部维护了一个连接状态的字段,双方通过该状态来判断连接是否有效,一般通过定期发送心跳包的方式,然后等待对方响应心跳包来判断对方是否在线。
正常的断开连接是通过四次挥手(4个数据包交互)告知对方关闭连接,4次交互过程中通过不断修改内部维护的那个连接状态字段,直到最终在操作系统撤销Socket资源。
会话层
属于四/五层协议的应用层,是由应用程序网络服务接口控制,控制传输层的连接、断开、重连等。
表示层
属于四/五层协议的应用层,是由应用程序网络服务接口控制,表示层为应用层提供的服务有三项内容:
语法转换:语法转换涉及代码转换和字符集的转换,数据格式的修改、数据结构操作的适配、数据压缩、数据加密等。
语法选择:语法选择是提供初始选择的一种语法和随后修改这种选择的手段。
联接管理:利用会话层提供的服务建立表示联接,管理在这一联接之上的数据运输和同步控制,以及正常或非正常地终止联接。
应用层
属于四/五层协议的应用层,是由应用程序网络服务接口控制,首先确认一点,应用层定义的是应用程序用于请求网络服务的接口,而不是指应用程序本身。应用层主要定义了应用程序能够从网络上请求使用哪种类型的服务,并且规定了在从应用程序接收消息或向应用程序发送消息时,数据所必须采用的格式。
数据包传输过程
每层都有自己的协议数据单元PDU,数据包的传输过程中,每层都会有封包和拆包的过程。
数据包传输调用关系
数据包发送
应用程序调用系统调用,将数据发送给socket
socket检查数据类型,调用相应的send函数
send函数检查socket状态、协议类型,传给传输层
tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)
ip(网络层协议)添加ip头,比如ip地址、检验和
如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据包传给链路层
链路层写到网卡队列
网卡调用响应中断驱动程序,发送到网络
数据包接收
数据包从网络到达网卡,网卡接收帧,放入网卡buffer,在向系统发送中断请求
cpu调用相应中断函数,这些中断处理程序在网卡驱动中
中断处理函数从网卡读入内存,交给链路层
链路层将包放入自己的队列,置软中断标志位
进程调度器看到了标志位,调度相应进程
该进程将包从队列取出,与相应协议匹配,一般为ip协议,再将包传递给该协议接收函数
ip层对包进行错误检测,无错,路由
路由结果,packet被转发或者继续向上层传递
如果发往本机,进入链路层
链路层再进行错误侦测,查找相应端口关联socket,包被放入相应socket接收队列
socket唤醒拥有该socket的进程,进程从系统调用read中返回,将数据拷贝到自己的buffer,返回用户态。
各层协议
OSI:物理层
EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
数据链路层
Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
网络层
IP,IPX,AppleTalk DDP,【ARP,RARP】
传输层
TCP,UDP,SPX
会话层
RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
表示层
TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
应用层
FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP,HTTP
协议所属分层和解释
TCP
协议类型:传输层
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。
TCP旨在适应支持多网络应用的分层协议层次结构。连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
UDP
协议类型:传输层
Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据报的方法。
Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的的事情。面向连接的是 TCP,该协议几乎做了所有的事情。
Telnet
协议类型:应用层,TCP,文本格式
端口23
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法
SSH
协议类型:应用层,TCP,文本格式,加密
利用SSL加密的命令行协议,端口22
netconf
协议类型:应用层,TCP,文本格式,加密
端口830
通过SSH传输XML格式命令报文
ICMP
协议类型:网络层,文本格式
ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。 它属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。
ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。ping 和 tracert是两个常用网络管理命令,ping 用来测试网络可达性,tracert 用来显示到达目的主机的路径。ping和 tracert 都利用 ICMP 协议来实现网络功能,它们是把网络协议应用到日常网络管理的典型实例。
SNMP
协议类型:应用层,UDP,文本格式
简单网络管理协议。
161端口
SNMP 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。
SNMP是管理进程(NMS)和代理进程(Agent)之间的通信协议。它规定了在网络环境中对设备进行监视和管理的标准化管理框架、通信的公共语言、相应的安全和访问控制机制。网络管理员使用SNMP功能可以查询设备信息、修改设备的参数值、监控设备状态、自动发现网络故障、生成报告等。
基于TCP/IP互联网的标准协议,传输层协议一般采用UDP。
自动化网络管理。网络管理员可以利用SNMP平台在网络上的节点检索信息、修改信息、发现故障、完成故障诊断、进行容量规划和生成报告。
屏蔽不同设备的物理差异,实现对不同厂商产品的自动化管理。SNMP只提供最基本的功能集,使得管理任务与被管设备的物理特性和实际网络类型相对独立,从而实现对不同厂商设备的管理。
简单的请求—应答方式和主动通告方式相结合,并有超时和重传机制。
报文种类少,报文格式简单,方便解析,易于实现。
SNMPv3版本提供了认证和加密安全机制,以及基于用户和视图的访问控制功能,增强了安全性。
DHCP
协议类型:应用层,UDP,报文结构复杂,最终解析出也是文本格式
DHCP是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:用于内部网或网络服务供应商自动分配IP地址;给用户用于内部网管理员作为对所有计算机作中央管理的手段。
HTTP
协议类型:应用层,TCP,文本格式
HTTP–Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。
HTTPS
协议类型:应用层,TCP,文本格式,在表示层进行了加解密。
-
https协议需要到ca申请证书或自制证书。
-
http的信息是明文传输,https则是具有安全性的ssl加密。
-
http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。
-
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
syslog
协议类型:应用层,UDP,文本格式
设备系统日志,使用UDP协议,服务端程序监听514端口,设备主动推送上报设备的日志信息。
Trap
协议类型:应用层,UDP,文本格式
简单网络管理协议SNMP(Simple Network Management Protocol)SNMP协定在OSI模型的应用层(第七层)运作,从第一版开始就定义trap为核心PDU报文之一。SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生。此事件可以是告警、告警恢复、通知等。如接口UP/DOWN,IP地址更改等。
服务端启动监听162端口,设备主动上报trap告警。
重点:syslog是日志信息,trap是告警信息
MPLS
协议类型:网络层和数据链路层之间,2.5层协议
MPLS(多协议标签交换),即多协议标记交换,介于网络层和数据链路层之间,是一种标记(label)机制的包交换技术,通过简单的2层交换来集成IP Routing 的控制。
MPLS在传统的如以太网帧的源MAC地址前增加了32比特的头,其中1-20比特用来标识标签,21-23用来标识优先级,类似于IP头的TOS字段,24比特用来标识是否有标签嵌套。最后8比特为TTL。
1、MPLS是介于2层和3层之间的协议,主要应用在城域网中,作为集客专线、基站等承载VPN技术的关键技术。
2、MPLS利用MPLS标签进行转发,先通过IP单播路由的方式沿途分配好MPLS标签,分配完成后,沿途路由器只需要根据MPLS标签进行转发,比IP查表效率高很多,但是,IP查表虽然是软件实现,但是CPU的性能已经很高,所以,MPLS转发性能优势已经不存在,MPLS优势在于VPN,可以实现高附加值的功能,例如,MPLS VPN FRR,QOS等。
3、MPLS可以用静态分配标签的方式,也可以通过LDP进行动态分发标签。
ARP
协议类型:网络层。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的报头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。
RARP
协议类型:网络层。
反向地址解析协议,通过MAC获取IP。
OSPF
协议类型:网络层,路由协议都是网络层
OSPF路由协议是用于网际协议(IP)网络的链路状态路由协议。OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU(Link State Update)报文描述,通过可靠的泛洪与自治系统AS(Autonomous System)内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新。
ISIS
协议类型:网络层,路由协议都是网络层
ISIS是一个分级的链接状态路由协议,基于DECnet PhaseV 路由算法,实际上与OSPF非常相似,它也使用Hello协议寻找毗邻节点,使用一个传播协议发送链接信息。ISIS可以在不同的子网上操作,包括广播型的LAN、WAN和点到点链路。
LLDP
协议类型:数据链路层
链路层发现协议(Link Layer Discovery Protocol,LLDP)。
网络设备可以通过在本地网络中发送LLDPDU(Link Layer Discovery Protocol Data Unit)来通告其他设备自身的状态。是一种能够使网络中的设备互相发现并通告状态、交互信息的协议。