简单地来说,当我们在浏览器上输入URL的敲下回车的时候。
网址算是URL的一个俗称,让我们来看看一个URL的组成,以HTTP版IOT中的URL为例。
大多数URL都建立在这个通用格式
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frgs>
各个部分的介绍如下表:
以一个实际例子来说:
当我们在浏览器中输入http://b.phodal.com/athome/1按下回车
开始之前,我们需要标出URL的80端口以及json文件的全称,那么上面的网址就会变成
http://b.phodal.com:80/athome/1.json
那么对于这个URL的就有下面几部分组成
对就一个稍微复杂点的例子就是
http://designiot.phodal.com/#你所没有深入的http
这里的#后面是片段部分(frag),如果你打开这个URL就会发现会直接跳转到相应的片段,对就于下面这样的一个例子来说
http://www.phodal.com/search;sales=false/?q=iot&type=blog
;后面是参数部分,以便正确的与服务器进行交互
?后面的q=iot&type=blog的部分是查询字符串,通常用于查询或者、搜索。
http客户端向http服务器发送请求报文,请求报文格式如下:
请求行
首部
空行
主体部分
<method><request-URL><version>
<headers>
<entity-body>
响应报文的格式如下:
响应行
首部
空行
主体
<version><status><reason-phase>
<headers>
<entity-body>
GET /java/2014/08/02/java-multithread.html HTTP1.1
Accept:text/html
Host: www.lippiouyangonline.info
可能的响应报文如下:
HTTP/1.1 200 OK
content-type: text/plain
content-length: 19
Hi,I'm a message!
下面是一个POST方法示例:
几乎所有的HTTP通信都是由TCP/IP承载的,HTTP要传送一个报文,会以流的形式将报文数据内容通过一条打开的TCP连接按序传输。TCP收到数据流后会将数据流切成小段的数据块,并将段封装在IP分组中,通道因特网进行传输,每个IP分组包括:
1. 一个IP分组首部(通常为20字节)
2. 一个TCP段首部(通常为20字节)
3. 一个TCP数据块(0个或者多个字节)
IP首部包括源和目的的的IP地址,长度和其他一些标记,TCP首部包括TCP端口号和控制标记。 端口号和电话分机很类似,就像公司的总机号码能将你接到前台,分机号码帮你找到正确的联系人。IP地址可能将你链接的正确的计算机,端口号将你连接到正确的应用程序上去,端口号就是一个数字,HTTP的默认端口号为80。
TCP连接是通过4个值来识别的:
<源IP地址、源端口号、目地IP地址、目地端口号>
这4个值唯一定义了一条TCP连接。
一个TCP分组如下:
一个典型的TCP客户端和服务器的通信过程如下:
待续…
参考书目:HTTP权威指南
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8