常见报文类型

本文介绍了HTTP协议的基础知识,包括Request和Response的格式,接着详细讲解了HTML作为标记语言的角色,然后探讨了XML的起源、应用及影响力,最后提到了JSON这种轻量级的数据交换格式及其使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、超文本传输协议

  超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

1> Request和Response的格式

Request格式:
HTTP请求行
(请求)头
空行
可选的消息体
注:请求行和标题必须以<CR><LF> 作为结尾(也就是,回车然后换行)。空行内必须只有<CR><LF>而无其他空格。在HTTP/1.1 协议中,所有的请求头,除Host外,都是可选的。

实例:

GET / HTTP/1.1
Host: gpcuster.cnblogs.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 25 May 2009 03:19:18 GMT

Response格式:
HTTP状态行
(应答)头
空行
可选的消息体

实例:

HTTP/1.1 200 OK
Cache-Control: private, max-age=30
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Mon, 25 May 2009 03:20:33 GMT
Last-Modified: Mon, 25 May 2009 03:20:03 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 25 May 2009 03:20:02 GMT
Content-Length: 12173
­消息体的内容(略)
2> HTML

  文本标记语言,即HTML(Hypertext Markup Language),是用于描述网页文档的一种标记语言。
  一个网页对应于一个HTML文件,HTML文件以.htm或.html为扩展名。可以使用任何能够生成TXT类型源文件的文本编辑来产生HTML文 件。 超文本标记语言标准的HTML文件都具有一个基本的整体结构,即HTML文件的开头与结尾标志和HTML的头部与实体2大部分。有3个双标记符用于页面整 体结构的确认。

<html>
<head>
<title>Document name goes here</title>
</head>
<body>
Visible text goes here   404 file not found
</body>
</html>

<a href="http://www.example.com/">This is a Link</a>
<a href="http://www.example.com/"><img src="URL"
alt="Alternate Text"></a>
<a href="mailto:webmaster@example.com">Send e-mail</a>A named anchor:
<a name="tips">Useful Tips Section</a>
<a href="#tips">Jump to the Useful Tips Section</a>

总结:HTML是超文本标记语言,HTTP是协议,HTML在HTTP协议上运行的;通过HTTP协议也可以传输声音、图像、数据。等等。

2、XML报文

  XML为Extensible Markup Language的缩写,即可扩充标注语言。它是由SGML所精简而来的一种通用标注语言,主要是要简化SGML烦杂的结构,强化HTML过于简单而不够严谨的语法。微软是XML技术的推动者之一,它希望能够建立一个可以为WWW 广泛使用语言环境,推动程序的兼容与协同,从而降低成本,刺激增长。
  虽然XML创立之初只是被当作一项基础技术,但其发展早已超出设计者原先的构想。不论是学术界还是商业界都将其视为下一代网络的基石。XML现在已经成为一股不可抵挡的技术潮流。
  现有的XML主要应用在四个方面:一是应用于具有不同复杂格式的不同数据源间的交互;二是应用于大量运算负荷分布在客户端的情况,用户可以根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只需发出同一个XML文件;三是应用于将同一数据以不同的形式表现出来;四是应用于网络代理对所取得的信息进行编辑、增减以适应个人用户的需要,形成具有个人特色的数据文件。
  事实上,XML技术的潜能还远未被充分挖掘。据一份最新的研究指出,以XML为基础的内容生命周期产品,将在今后5年以10倍的速度快速成长,在2008年达到116亿美元的营业规模。以XML和Web服务为主的研究公司Zap Think在研究报告中也指出,这些以XML为基础并包括Web服务的工具,是将旧有系统再度激活的新希望。
  “XML最大的影响在于XML软件大量兴起:XML剖析器、XML程序语言库、XSLT处理器、XSL FO处理器、数据库接受XML——不只如此,还有网络浏览器也接受XML。”XML工作小组创始会员C.M. Sperberg-McQueen如是认为。也正因为如此,IBM、微软、SUN、惠普、Oracle等大公司纷纷进入这个市场。
  而在XML最大应用之一的数据格式转换领域,Adobe、微软、Core都在各自相关的软件产品中充分利用了XML技术。以程序关联为特色的Office 2003更是将XML的格式转换特性发挥到了极致,以至于这个软件套装几乎成为了一个独立的数据系统。

<!DOCTYPE project [
 	<!ENTITY Common SYSTEM "common.xml">
	%Common;
]>

<!--
  Bouncy Castle Build Configuration (midp)

  This is the JDK 1.1 specific build file.  

  $RCSfile: jdk11.xml,v $
  $Author: bouncy $
  $Date: 2005/07/06 13:02:52 $
  $Revision: 1.1.1.1 $
-->
<project name="jdk11" default="init" basedir=".">

	<property environment="env" />
	<property file="${env.CRYPTO_PROP}" />

	<!-- Public callable targets -->
	<target name="clean" depends="common-clean" />
	<target name="test" depends="common-test" />
	<target name="dist" depends="common-dist" />
	<target name="package" depends="common-package" />
	<target name="compile" depends="init, local-compile" />
	<target name="jdoc" depends="common-jdoc" />

	<!-- include common targets, properties -->
	<property name="master.jdk" value="jdk11" />
	&Common;

	<!-- ** Private properties -->
	<patternset id="jdk11.lw-compatibility" >
		<include name="java/**" />
	</patternset>

	<patternset id="jdk11.jce-compatibility">
		<include name="org/**" />
	</patternset>

	<patternset id="jdk11.lw-extras" >
		<include name="org/bouncycastle/crypto/test/*.java" /> 
	</patternset>

	<patternset id="orgbc.javax">
		<include name="javax/**" />
	</patternset>

	<patternset id="orgbc.lw-source" >
		<include name="org/bouncycastle/math/ec/*.java" />
		<include name="org/bouncycastle/crypto/**" />
		<include name="org/bouncycastle/util/**" />
		<include name="org/bouncycastle/asn1/**" />
	</patternset>

	<patternset id="orgbc.jce-source" >
		<include name="org/bouncycastle/jce/**" />
		<exclude name="org/bouncycastle/jce/netscape/*" />
		<exclude name="org/bouncycastle/jce/provider/X509CertificateObject.java" /> 
		<exclude name="org/bouncycastle/jce/provider/RSAUtil.java" />
		<exclude name="org/bouncycastle/jce/provider/JDKX509CertificateFactory.java" /> 
		<exclude name="org/bouncycastle/jce/provider/test/RSATest.java" /> 
		<exclude name="org/bouncycastle/jce/provider/test/RegressionTest.java" /> 
		<!-- to make the friggin thing compile -->
		<exclude name="org/bouncycastle/jce/provider/test/DSATest.java" /> 
		<exclude name="org/bouncycastle/jce/provider/test/DHTest.java" /> 
		<exclude name="org/bouncycastle/jce/provider/test/Netscape*.java" /> 
		<exclude name="org/bouncycastle/jce/provider/test/Named*.java" /> 
	</patternset>

	<property name="build.compiler" value="classic" />
	<property name="bcp" value="${env.JAVA_HOME}/lib/classes.zip" />

	<path id="compile.cp">
		<pathelement location="${master.classes}" />
		<pathelement location="${bcp}" />
	</path>

	<target name="local-compile" depends="llw-compile, ljce-compile" />

	<!-- extra targets used in this file -->
	<target name="llw-compile" if="is.lw">
		<echo message="jdk11.lw-compatibility" />
		<javac srcdir="${master.home}/jdk1.1"
			destdir="${master.classes}" 
			includeAntRuntime="no"
			includeJavaRuntime="no"
			debug="off"
			optimize="off"
			target="1.1">
			<patternset refid="jdk11.lw-compatibility" /> 
			<classpath refid = "compile.cp" />
		</javac>

		<echo message="orgbc.lw-source" />
		<javac srcdir="${master.src}"
			destdir="${master.classes}" 
			includeAntRuntime="no"
			includeJavaRuntime="no"
			debug="off"
			optimize="off"
			target="1.1">
			<patternset refid="orgbc.lw-source" /> 
			<classpath refid = "compile.cp" />
		</javac>

	</target>

	<target name="ljce-compile" if="is.jce" >
		<!-- cheat a bit here to remove duplication -->
		<antcall target="llw-compile">
			<param name="is.lw" value="true" />
		</antcall>

		<!-- now do the extra bits for the JCE -->
		<echo message="orgbc.jce-source" />
		<javac srcdir="${master.src}"
			destdir="${master.classes}" 
			includeAntRuntime="no"
			includeJavaRuntime="no"
			debug="off"
			optimize="off"
			target="1.1">
			<patternset refid="orgbc.javax" /> 
			<patternset refid="orgbc.jce-source" /> 
			<classpath refid = "compile.cp" />
		</javac>

		<echo message="jdk11.jce-compatibility" />
		<javac srcdir="${master.home}/jdk1.1"
			destdir="${master.classes}" 
			includeAntRuntime="no"
			includeJavaRuntime="no"
			debug="off"
			optimize="off"
			target="1.1">
			<patternset refid="jdk11.jce-compatibility" /> 
			<classpath refid = "compile.cp" />
		</javac>

	</target>
</project>

3、JSON

  JSON,全称是JavaScript Object Notation。它是基于JavaScript编程语言ECMA-262 3rd Edition-December 1999标准的一种轻量级的数据交换格式,主要用于用于跟服务器进行交换数据。跟XML相类似,它独立于语言,在跨平台数据传输上有很大的优势。
  上面是百科的解释,可以说明json大概的意思和作用,json其实就是键值对存储数据,举个例子:var a ={"one":"一","two":"二","three":"三"},a就是一个json,a.one的值就是一,还可以内嵌数组var b={"A":"[1,2,3,4,5,6,7]","B":"[a,b,c,d,e]"},b.A[0]的值就是1,json变量里面还可以内嵌json,可以内嵌数组,取值方法就是如上面的那种,数组用下标,json取键值对的名,使用起来很方便,数据存储格式简洁。

4、自定义报文

<think>好的,我需要回答用户关于CAN协议中NoMsg报文类型的问题。首先,我需要确认用户提到的“NoMsg”是否在标准CAN协议中存在。根据我的知识,CAN协议主要定义了数据帧、远程帧、错误帧和过载帧,而“NoMsg”并不是标准中的术语。可能的情况是用户可能混淆了术语,或者这是某个特定厂商或应用中的自定义类型。 接下来,我应该详细解释标准CAN报文类型,帮助用户理解基础概念,并指出“NoMsg”可能属于非标准用法。同时,需要建议用户查阅相关文档或规范以确认其具体定义。此外,生成相关问题时,可以围绕CAN协议的其他报文类型和应用场景展开,帮助用户进一步学习。 需要确保回答结构清晰,使用正确的中文和LaTeX格式,比如在提到数据帧结构时使用独立公式块,例如数据帧的组成。同时,引用部分要自然,比如在提到错误检测时添加引用标识[^1]。最后,检查是否有遗漏或错误的信息,确保准确性和可靠性。</think>在CAN协议中,**标准未定义名为"NoMsg"的报文类型**。根据ISO 11898标准,CAN协议包含以下四种核心报文类型: 1. **数据帧**:携带节点发送的数据,格式为: ``` SOF | ID | RTR | IDE | DLC | Data Field | CRC | ACK | EOF ``` 其中ID为11位(标准帧)或29位(扩展帧)[^1] 2. **远程帧**:请求发送指定ID的数据帧,无数据字段 3. **错误帧**:用于错误通知,包含6-12位的错误标志 4. **过载帧**:用于增加帧间延迟 关于"NoMsg"的可能解释: - **特殊应用场景定义**:某些汽车厂商/工业设备可能在高层协议(如CANopen)中自定义的状态标识 - **诊断系统术语**:可能指ECU未按预期发送报文时的状态描述 - **仿真工具标记**:网络分析软件对空闲时段的标注
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值