精华内容
下载资源
问答
  • 一 OSI与TCP/IP各层的结构与功能,都有哪些协议五层协议的体系结构学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。...

    4ebc4d8207c2a1b1b2f58525c045b9db.png

    相对与上一个版本的计算机网路面试知识总结,这个版本增加了 “TCP协议如何保证可靠传输”包括超时重传、停止等待协议、滑动窗口、流量控制、拥塞控制等内容并且对一些已有内容做了补充。

    一 OSI与TCP/IP各层的结构与功能,都有哪些协议

    五层协议的体系结构

    学习计算机网络时我们一般采用折中的办法,也就是中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构,这样既简洁又能将概念阐述清楚。

    b1297ce7cda99be1d731589cdccca346.png

    结合互联网的情况,自上而下地,非常简要的介绍一下各层的作用。

    1 应用层

    应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。

    域名系统

    域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。(百度百科)例如:一个公司的 Web 网站可看作是它在网上的门户,而域名就相当于其门牌地址,通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名,类似的还有:IBM 公司的域名是 http://www.ibm.com、Oracle 公司的域名是 http://www.oracle.com、Cisco公司的域名是 http://www.cisco.com 等。

    HTTP协议

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的 WWW(万维网) 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。(百度百科)

    2 运输层

    运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务,分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。

    运输层主要使用以下两种协议

    1. 传输控制协议 TCP(Transmisson Control Protocol)--提供面向连接的,可靠的数据传输服务。
    2. 用户数据协议 UDP(User Datagram Protocol)--提供无连接的,尽最大努力的数据传输服务(不保证数据传输的可靠性)。

    UDP 的主要特点

    1. UDP 是无连接的;
    2. UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态(这里面有许多参数);
    3. UDP 是面向报文的;
    4. UDP 没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如 直播,实时视频会议等);
    5. UDP 支持一对一、一对多、多对一和多对多的交互通信;
    6. UDP 的首部开销小,只有8个字节,比TCP的20个字节的首部要短。

    TCP 的主要特点

    1. TCP 是面向连接的。(就好像打电话一样,通话前需要先拨号建立连接,通话结束后要挂机释放连接);
    2. 每一条 TCP 连接只能有两个端点,每一条TCP连接只能是点对点的(一对一);
    3. TCP 提供可靠交付的服务。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达;
    4. TCP 提供全双工通信。TCP 允许通信双方的应用进程在任何时候都能发送数据。TCP 连接的两端都设有发送缓存和接收缓存,用来临时存放双方通信的数据;
    5. 面向字节流。TCP 中的“流”(Stream)指的是流入进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。

    3 网络层

    在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包进行传送。在 TCP/IP 体系结构中,由于网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称 数据报

    这里要注意:不要把运输层的“用户数据报 UDP ”和网络层的“ IP 数据报”弄混。另外,无论是哪一层的数据单元,都可笼统地用“分组”来表示。

    这里强调指出,网络层中的“网络”二字已经不是我们通常谈到的具体网络,而是指计算机网络体系结构模型中第三层的名称.

    互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Intert Prococol)和许多路由选择协议,因此互联网的网络层也叫做网际层IP层

    4 数据链路层

    数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装程帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。

    在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。 控制信息还使接收端能够检测到所收到的帧中有误差错。如果发现差错,数据链路层就简单地丢弃这个出了差错的帧,以避免继续在网络中传送下去白白浪费网络资源。如果需要改正数据在链路层传输时出现差错(这就是说,数据链路层不仅要检错,而且还要纠错),那么就要采用可靠性传输协议来纠正出现的差错。这种方法会使链路层的协议复杂些。

    5 物理层

    在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。 使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

    在互联网使用的各种协中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议,而往往表示互联网所使用的整个TCP/IP协议族。

    总结一下

    展开全文
  • 一、基于TCP的应用层协议有:SMTP、TELNET、HTTP、FTP 基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、RIP(路由选择协议)、DHCP、BOOTP(是DHCP的前身)、IGMP(Internet组管理协议) ...

    参考博文01:https://blog.csdn.net/Wu000999/article/details/89293717
    博文02 https://blog.csdn.net/u014082714/article/details/44994719
    这个面试的时候面试官经常会问我,然后就总结了一下。

    在这里插入图片描述
    TCP/IP四层模型(数网传应):数据链路层(网络接口层)、网络层、传输层和应用层
    OSI七层模型:物数网传会表应。

    一、 基于TCP/UDP协议的应用层协议有哪些?

    TCP/UDP都是传输层的协议 (上面是应用层,下面是网络层IP层)

    1、基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH

    协议 全称 默认端口
    HTTP ( 用的最多) HyperText Transfer Protocol(超文本传输协议) 80
    FTP File Transfer Protocol (文件传输协议) 20用于传输数据,21用于传输控制信息
    SMTP Simple Mail Transfer Protocol (简单邮件传输协议) 25
    TELNET Teletype over the Network (网络电传) 23
    SSH Secure Shell 22

    2、基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、SNMP:简单网络管理协议

    协议 全称 默认端口
    DNS Domain Name Service (域名服务) 53
    TFTP Trivial File Transfer Protocol (简单文件传输协议) 69
    SNMP Simple Network Management Protocol (简单网络管理协议) 通过UDP端口161接收,只有Trap信息采用UDP端口162。
    NTP Network Time Protocol (网络时间协议) 123

    二、应用层协议介绍

    (博文02原文链接:https://blog.csdn.net/mellymengyan/article/details/51115521)

    在这里插入图片描述
    在TCP/IP模型中,应用层是最高层。应用层包括所有的高层协议,并且不断有新的协议加入。

    TCP/IP参考模型中应用层和下层协议之间的关系如下:

    应用层的许多协议都是基于(C/S client /server)方式的。

    下面为我们就图片上的应用层协议来进行下简单的介绍:

    基于TCP协议的都用C/S模式(客户端/服务器模式)

    一:TELNET (远程登录) (C/S)(tcp)

    *概述:
    远程登录,它是Tnternet中用来进行远程访问的重要工具之一。远程登录功能允许用户与远程计算机进行动态交互,即用自己的键盘,鼠标等输入设备操纵远程计算机,运行远程计算机上的软件,在自己的显示器上了解运行情况,查看运行结果。

    通信过程:
    用户的终端实际上与本地的TELNET客户机程序进行通信,远程主机与远程TELNET服务器进行通信。然后通过TCP进行连接, 客户机与服务器之间采用NVT标准进行通信。

    1:建立与服务器的TCP连接;
    2:从键盘上接收用户输入的字符;
    3:把用户输入的字符串变成标准格式并送给服务器;
    4:从远程服务器接收输出的信息;
    5:把该信息显示在用户的屏幕上。

    二:FTP (文件传送协议)(C/S)(TCP)

    概述:
    文件传输协议,负责将文件从一台计算机传送到另一台计算机上,并且保证其传输的可靠性。
    客户端提出文件传输请求,服务器接收请求并提供服务。首先在本地计算机上启动FTP客户程序,利用他与远程计算机建立连接,远程计算机上的服务端FTP程序被激活。这样本地的FTP程序成为一个客户,而远程FTP程序成为服务器,他们之间通过TCP建立连接,端口号为21.

    FTP协议的客户机与服务器之间需要建立两个连接, 一个用于控制数据传输(端口21), 一个用于数据传输(端口20)。数据连接主要用于数据传输,完成文件内容的传输。控制连接主要用于传输FTP控制命令和服务器的回送消息。

    FTP的功能:

    1:可以从本地上传和从服务器下载文件;
    2:能够传输各种类型的文件,包括文件,图片, 视频等;
    3:能够提供对本地和远程计算机的目录操作。
    4:对文件进行改名删除等操作。

    FTP的服务获取有两种方式:一种是通过输入用户名和登录口令, 另一种是输入anonymous作为用户名,邮箱地址作为登录口令进行登录。

    FTP客户与服务器之间可以通过命令和回答进行交互。

    FTP的控制与数据连接
    在这里插入图片描述

    三:SMTP (简单邮件传输协议)(TCP)(C/S)

    概述:
    SMTP协议包括两个标准子集, 一个标准定义电子邮件信息的格式,另一个是传输邮件的标准。在互联网中,电子邮件的传送是依靠SMTP协议进行的。SMTP的主要任务是负责服务器之间的邮件传送,最大的特点是简单。只规定了电子邮件如何在互联网中通过TCP协议在发送方和接收方之间进行传送。

    工作方式:
    基于客户/服务器方式进行的。发送人的主机为客户方,收件人的邮件服务器为服务方。在传送邮件的过程中,需要使用TCP协议进行连接(默认端口号为25)。发送主机先将邮件发送到本地SMTP服务器上,本地SMTP服务器与接收方的邮件服务器建立可靠的TCP连接,从而保证了邮件传输的可靠性。

    注意:
    接收方必须使用POP3协议才能取得自己邮箱中的邮件。

    POP3协议的主要任务是实现用户计算机和邮件服务器的俩节,从邮件服务器的电子邮箱中读取邮件。
    SNMP邮件传输过程
    在这里插入图片描述
    四:HTTP (超文本传输协议)(C/S)(TCP)

    详细内容在我的上一个博客里面有详细的介绍:HTTP协议基本知识另见博客

    五:DNS (域名解析系统)(UDP)

    概述:
    用域名系统来处理IP地址和主机名之间的转换, 在DNS中主机名即为域名。
    DNS也是一个应用层协议,为了提供主机名到IP地址的转换服务,DNS是运行在UDP协议之上,使用53号端口。

    DNS通常被其他应用层协议(HTTP, SMTP, FTP)所使用, 以便将用户提供的主机名解析为IP地址。
    域名是一种分布式并具有层次结构的命名机制:

    例如:www.sina.com.cn, 其中最高域名是cn, 表示这台主机在中国。 第二级域名是com, 表示这个主机属于公司机构; 接下来是sina表示这台主机属于新浪网, 最左边的是www,表示该主机是一台web服务器。人们可以很容易的就记住它的域名,而不用他的IP地址。

    查询方法:

    1:递归解析:
    当收到请求时, 域名服务器应返回所要求的解析结果,不论该服务器是否有相关的信息。该服务器没有相关信息时, 那么就该向其他的服务器进行请求,直到获得结果或者错误信息,然后把结果返回给解析请求者。

    2:重复解析:
    接收到请求时, 域名服务器若有该域名的相关信息,则返回IP地址给解析请求者。若无该域名的相关消息,则该服务器不再进一步向其他域名服务器请求解析,而是返回一个可用的域名服务器的地址给解析请求者,让解析请求这自己去向该域名服务器作进一步的解析请求。

    二者的区别在于:前者将域名解析的工作交给域名服务器完成, 而后者则将主要的工作交给请求域名服务的主机来完成。

    六:SNMP (简单网络管理协议)(UDP)

    概述:
    SNMP:“简单网络管理协议”,用于网络管理的协议。SNMP用于网络设备的管理。SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了“读”操作;管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。
    SNMP被设计为工作在TCP/IP协议族上。SNMP基于TCP/IP协议工作,对网络中支持SNMP协议的设备进行管理。所有支持SNMP协议的设备都提供SNMP这个统一界面,使得管理员可以使用统一的操作进行管理,而不必理会设备是什么类型、是哪个厂家生产的。

    管理方式:
    SNMP管理方式
    在这里插入图片描述
    Get:读取网络设备的状态信息
    Set:远程配置设备参数
    Trap:管理站及时获取设备的重要信息

    七:TFTP (UDP)

    概述:
    TFTP协议全称为Trivial File Transfer Protocol。目标是在UDP之上上建立一个类似于FTP的但仅支持文件上传和下载功能的传输协议,所以它不包含FTP协议中的目录操作和用户权限等内容;

    工作流程:
    l server在端口为69的UDP上等待Client发出写文件请求包
    l Client通过UDP发送符合TFTP请求格式的WRQ包给Server。从UDP包角度看,该UDP包的源端口由Client随意选择,而目标端口则是Slient的69。
    l Server收到Client的这个请求包后,需发送ACK给Client。对于写请求包,Server发送的ACK包确认号为0。
    l Client发送DATA数据给Server,Sver接收数据并写文件
    l 当Client发送的DATA数据长度小于512字节时,Server认为这次WRQ请求完成

    优点:
    l 每个数据包大小固定,这样在内存分配处理的时候比较直接
    l 实现简单
    l 每个数据包都有确认机制,可以实现一定程度的可靠性

    缺点:
    l 传输效率不高
    l 滑动窗口机制太简单,并且该窗口仅有一个包的大小
    l 超时处理机制并不完善,RFC1350并没有给出详细的处理机制说明

    三、TCP、UDP和HTTP关系

    1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
    在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
    在传输层中有TCP协议与UDP协议。
    在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
    因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

    2、HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
    HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。
    另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。

    3、结论:虽然HTTP本身是一个协议,但其最终还是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。

    展开全文
  • 欲参加2017年下半年软考程序员考试的同学,...下面是希赛小编为大家整理的部分软考程序员课程中的知识点,下文主讲常用的应用层协议。供各位学习。 常用的应用层协议如下: 运行在TCP协议上的协议: HTTP(Hyp...

       欲参加2017年下半年软考程序员考试的同学,现在可以着手复习了。下面是希赛小编为大家整理的部分软考程序员课程中的知识点,下文主讲常用的应用层协议。供各位学习。      

           常用的应用层协议如下:

           运行在TCP协议上的协议:

           HTTP(HypertextTransfer Protocol,超文本传输协议),主要用于普通浏览。

           HTTPS(HypertextTransfer Protocol over Secure Socket Layer,or HTTP over SSL,安全超文本传输协议),HTTP协议的安全版本。

           FTP(File Transfer Protocol,文件传输协议),由名知义,用于文件传输。

           POP3(PostOffice Protocol,version 3,邮局协议),收邮件用。

           SMTP(SimpleMail Transfer Protocol,简单邮件传输协议),用来发送电子邮件。

           TELNET(Teletypeover the Network,网络电传),通过一个终端(terminal)登陆到网络。

           SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陆。

           运行在UDP协议上的协议:

           BOOTP(BootProtocol,启动协议),应用于无盘设备。

           NTP(Network Time Protocol,网络时间协议),用于网络同步。

     

    转载于:https://my.oschina.net/u/3466162/blog/1002595

    展开全文
  • 1.应用层如何定义接下来所解读的应用层协议主要是ISO15031这几个协议,ISO150317个协议,如下图所示。它们分别定义什么内容很清晰,按照我们的学习风格只看对我们项目有用的协议,其它可以暂时不用看。其中红色框...

    1. 应用层如何定义

    接下来所解读的应用层协议主要是ISO15031这几个协议,ISO15031有7个协议,如下图所示。

    7b9ab7750c6f8b3a56bf66be4ebd5065.png

    它们分别定义什么内容很清晰,按照我们的学习风格只看对我们项目有用的协议,其它可以暂时不用看。其中红色框第五部分和第六部分是我们必须要研究的。第五部分是ISO15031-5定义排放相关的诊断服务,第六部分是ISO15031-6是定义诊断故障码的。功能性描述的协议主要还是看ISO15031-5协议,如下图所示ISO15031-5目录。

    11ef301318830ffa669adbe1b65296e8.png 

    当前我们解读的ISO15765-4协议应用层主要是看目录第七章内容,其中我们的C300开发板第一版软件使用到的协议主要是小红色框圈起来部分内容,分别是Service$01当前动力总成诊断数据,Service$03排放相关故障码,Service$09 车辆信息中的车架号,所以小红色框圈起来的内容C300开发板也没完全使用完,比如车量信息中只使用了车架号这个协议。第一版软件用到什么内容我们先讲解什么内容。其它协议我们会在后续版本软件中继续解读。

    Service$01当前动力总成诊断数据(以下简称“当前数据流”),在具体讲解当前数据流的定义前,先了解下什么是Supported PID。

    6c1b0f6c1ae8636296b8a05a6695a01d.png

    上图所示,前面讲解中我们提到过ISO15765-4协议初始化命令采用SID(服务字节)是0x01,PID(参数识别号)是0x00。这里的PID=0x00是作为Supported PIDs来使用。Supported PIDs顾名思义就是识别支持的数据流参数。Supported PIDs在C300开发板第一版软件中并没有具体实现代码,它被定于第二版本软件中使用。这里提前解读,对大家自行阅读协议有比较大的帮助。对比初始化命令EntCmd15765和数据流命令DSCmd15765的值是完全一样的,其实DSCmd15765命令的PID就是第三个字节0x00,是随着请求具体数据流的不同,程序自动对其赋值,所以它的PID并不是0x00。但是这两个命令使用相同的SID=0x01,请求的是相同的服务,即当前数据流。下面我们看下当前数据流是如何请求和响应的。

    请求Supported PIDs,如下图所示。

    ee44364b4081d35f100ecbe5e2e040cf.png

    读当前数据流之前,可以先读Supported PIDs,这是诊断仪最标准做法。表格中列出了请求命令的应用层数据。第一字节 0x01 是当前数据流的SID。第二字节是PID,但是这个PID是用于请求Supported PIDs 。这些PID的值有哪些呢?表中告诉我们可以看Annex A 这个列表。从协议截图出来如下图所示。

    db17bc425816ce60d8bcc38add9e3788.png

    Supported PIDs的PID取值范围从0x00到0xE0。这个表格我们暂时只看PID取值,其它内容接下来再继续讲。回到Table125表格,第三字节往后也是Supported PIDs的PID,但是表格中有一列Cvt,标注是M表示不可或缺的,标注U表示用户可选的,从第三字节开始就是用户可选项。U = User Optional — PID may be included to avoid multiple PID supported request messages.

    意思就是这些Supported PIDs的PID可以被包含在命令里以避免太多的Supported PIDs的请求信息。根据这个协议的定义可以构建下面两种请求命令。方便起见,我以标准CAN为例写出这些命令。

    第一种,以SingleFrame依次请求命令如下

    7DF 8 02 01 00 00 00 00 00 00  

    7DF 8 02 01 20 00 00 00 00 00

    7DF 8 02 01 40 00 00 00 00 00

    7DF 8 02 01 60 00 00 00 00 00

    7DF 8 02 01 80 00 00 00 00 00

    7DF 8 02 01 A0 00 00 00 00 00

    7DF 8 02 01 C0 00 00 00 00 00

    7DF 8 02 01 E0 00 00 00 00 00

    第二种,以MultipleFrame传输一次性请求命令如下

    7DF 8 10 09 01 00 20 40 60 80

    7E0 8 21 A0 C0 E0 00 00 00 00 (如果流控帧标识符是7E8,此帧标识符是7E0)

    SingleFrame请求,必须发送一帧SingleFrame请求获得一次响应,总共8帧请求分别8次响应。如果以MultipleFrame请求,就会获得一次性响应。关于响应的数据格式和规则如下图所示。

    3d9d920ada40a4107575c172a8858bde.png

    第一字节是当前数据流的响应SID=0x41,接下来每5个字节对应一个Supported PIDs的PID的响应。当然如果您是以SingleFrame请求获得的响应也是SingleFrame的响应。以MultipleFrame请求就会获得多组5个字节的Supported PIDs的PID的响应。这5个字节的第1字节是Supported PID,后4个字节表示支持的数据流,怎么表示呢?看下图的举例。

    ae3f66be86e196f304ba0e6dddb38efc.png

    表中PID=0x00响应的数据第三字节为0xBF,转换为二进制是10111111,在Annex A表格中定义1表示支持,0表示不支持,而表示的PID值按照从高字节到低字节,从高位到低位表示PID=0x01,0x02,0x03,0x04,0x05,0x06......  第三字节的10111111分别表示PID=0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08。而支持与否的结果是PID=0x01,0x03,0x04,0x05,0x06,0x07,0x08支持,但是PID=2不支持。第四字节一样是0xBF,这时候PID=0x09,0x0B,0x0C,0x0D,0x0E,0x0F,0x10支持,但是PID=0x0A不支持。以此类推剩下两个字节表示PID=0x11到0x20是否支持的情况。接下来是PID=0x20响应的Supported PIDs的情况。从而可以知道一个Supported PIDs的PID的响应由四个字节表示,每一个比特位表示一个PID是否支持的情况,也就是一个Supported PIDs的PID的响应可以获知32个PID是否支持的情况。上面的表格如果是实际通信的数据是怎么样的呢?我们下面还原下帮助大家整体理解,以标准CAN,汽车由ECU#1响应为例。

    7DF 8 03 01 00 20 00 00 00 00  

    7E8 8 10 00 41 00 BF BF A8 91  

    7E0 8 30 00 00 00 00 00 00 00  

    7E8 8 21 20 80 00 00 00 00 00  

    在读取PID支持列表后,就可以按照支持的情况直接读取当前系统支持的数据流了。这里以发动机转速和车速为例告诉大家如何读取这两个数据流数值。首先在Annex B 中找到发动机转速和车速的定义。如下图所示。

    aa1256f032e965d11a9580e0c8d0b10a.png

    666a5e12be24d5a10fe1e2ee524a3b5d.png

    它们的PID分别是0x0C和 0x0D,这时候就可以构建它们的请求命令。以标准CAN为例。

    发动机转速请求命令:  7DF 8 02 01 0C 00 00 00 00 00

    车速请求命令:        7DF 8 02 01 0D 00 00 00 00 00

    下面我们从C300开发板和模拟器通信数据看下响应数据是否与上面表格定义一致。

    设置模拟器发动机转速为1820.50 RPM,车速为117KM/H.

    f1b20ebc9b3ab3b2f3089cb8b0f4f8b0.png 

    C300开发板服务器网站显示值如下图所示,与模拟器模拟值一致。

    a10ba0668f09bb0606476eb05a259e2e.png

    OBD分析仪采集到的通信数据如下图所示。

    4e20764dd1f823350f91619f847bfd54.png 

    发动机转速响应数据 7E8 8 07 41 0C 1C 72 00 00 00

    数据中应用层数据为 41 0C 1C 72, 41是响应SID,0C是发动机转速PID,转速值就是1C72.

    按照上面TableB.13表格定义换算 1/4rmp/bit,且 DataByte值是AB,意思是将两个字节取值除以4即可得到发动机转速。将0x1C72转换成十进制是7282,7282/4=1820.5.

    C300读到的值一致。

    车速响应数据 7E8 8 07 41 0D 75 00 00 00 00

    数据中应用层数据为41 0D 75, 41是响应SID,0D是车速PID,车速值就是75.按照上面TableB.14表格定义换算1km/h per bit,  DataByte值是A,意思就是一个字节取值乘以1,其实就是0x75十进制的值117.

    展开全文
  • 基于TCP的应用层协议 与基于UDP的应用层协议分别有哪些
  • 基于TCP的应用层协议、与基于UDP的应用层协议分别有哪些?  2011-11-4 14:55 提问者: li491623644 | 浏览次数:2054次| 该问题已经合并到>> 我来帮他解答 检举 | 2011-11-4 15:...
  • 应用层协议: 1、远程登录协议(Telnet) 2、文件传输协议(FTP) 3、超文本传输协议(HTTP) 4、域名服务协议(DNS) 5、简单邮件传输协议(SMTP) 6、邮局协议(POP3)   其中,从网络上...
  • 基于TCP的应用层协议有:POP3、SMTP(简单邮件传输协议)、TELNET(远程登陆协议)、HTTP(超文本传输协议)、HTTPS(超文本传输安全协议)、FTP(文件传输协议) 基于UDP的应用层协议:TFTP(简单文件传输协议)、...
  • 应用层协议设计有感

    2019-09-25 10:46:55
    或者说一个好的应用层协议应该有哪些属性? 好的应用层协议是可伸缩的。一些应用层协议比如HTTP,会建立几条并行的链接的到服务端,这样做可以减少延迟,增加吞吐量,但是在传输层和服务端看来,这些链接相互之间...
  • 在互联网中实际使用的是TCP/IP参考模型。实际存在的协议主要包括在:物理层、数据链路层、网络层、传输层和应用层。各协议也分别对应这5个层次而已。
  • TCP对应的应用层协议

    2021-04-10 11:37:19
    文章目录一、TCP对应的应用层协议二、FTP协议1、主动模式和被动模式2.查看ftp服务器上的文件3、下载文件4、上传文件5、 其他FTP命令三、SMTP协议(邮件传送协议)四、万维网和HTTP协议万维网超文本传输协议HTTPHTTP的...
  • OSI七层参考模型每一层都有哪些协议 第七层应用层 协议:DHCP • DNS • FTP • Gopher • HTTP • IMAP4 • IRC • NNTP • XMPP • POP3 • SIP • SMTP • SNMP • SSH • TELNET • RPC • RTCP • ...
  • 网络层协议:包括:IP协议、ICMP协议、ARP协议、RARP协议。 传输层协议:TCP协议、UDP协议。 应用层协议:FTP、Telnet、SMTP、HTTP、RIP、NFS、DNS 数据链路层:ppp点对点协议
  • OSI(开放系统互连) TCP/IP 应用层 应用层 表示层 会话层 传输层 数据段 
  • OSI七层模型的每一层都有哪些协议 lisa890608 2012-11-27 20:13:07 45385 收藏 18 展开 TCP/IP: 数据链路层:ARP,RARP 网络层: IP,ICMP,IGMP 传输层:TCP ,UDP,UGP 应用层:Telnet,FTP,SMTP,SNMP. OSI: 物理层:EIA...
  • 文章目录一、UDP对应的应用层协议?二、DNS1、什么是DNS?2、DNS的工作原理?3、为什么域名解析用UDP协议?4、为什么区域传送用TCP协议?5、DNS解析过程6、 DNS负载均衡是什么策略?7、DNS查询方式有哪些? 一、UDP...
  • 写在前:由于在10月份的时候参加了2013百度校园招聘笔试,其中就是一道有关osi的题目,要求写出七模型和相应的几个应用协议。今天心血特来,便写下来,以作后记。 OSI七网络模型百科:  OSI(Open System ...
  • 应用协议

    2018-10-13 10:58:36
    和大家分享一些我们常用基本的应用层协议有哪些?服务和协议:DNS、SMTP POP3 HTTP HTTPS FTP TFTP TELNET SSH DHCP应用层作用:用户的接口 、、利用基础网络交换应用程序专用的数据 协议 DNS:域名解析系统...
  • TCP/IP:数据链路层:ARP,RARP网络层: IP,ICMP,IGMP传输层:TCP ,UDP,UGP应用层:Telnet,FTP,SMTP,SNMP.OSI:物理层:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS...
  • TCP/IP 四中分别有哪些协议

    万次阅读 2018-03-28 13:16:45
    四层:链路层、网络层(IP)、运输层(TCP)、应用层1.Telnet 、FTP、SMTP、NFS、Rlogin、 SNMP(UDP)是应用层协议2.运输层:TCP、UDP3.网络层:ICMP(ping tracerute) RIP(路由协议使用UDP)4.数据链路层:ARP、RARP、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 750
精华内容 300
关键字:

应用层协议有哪些