通信协议之Http
生活中我们接触的比较多的通信协议有HTTP、TCP、UDP等等。特别是HTTP协议,因为我们每天上网在浏览器中输入的网址基本都可以看到以http://
开头的字符串。那么什么是通信协议呢?简而言之就是通信时所遵守的规则,只有双方按照这个规则“说话”,对方才能理解或为之服务。这里只是很口语化的解释,详细的解释可以到这里查看: 百度百科 维基百科
HTTP、TCP、UDP的区别
TCP/IP是个协议组,可分为四个层次:网络接口层、网络层、传输层和应用层。
- 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
- 在传输层中有TCP协议与UDP协议。
- 在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。
什么是HTTP协议
HTTP全称是HyperText Transfer Protocal,即:超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议, Http是应用层协议,当你上网浏览网页的时候,浏览器和Web服务器之间就会通过HTTP在Internet上进行数据的发送和接收。Http是一个基于请求/响应模式的、无状态的协议。即我们通常所说的Request/Response
。
URL
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下
URL 的一个例子
HTTP的Request/Response
先看Request 消息的结构,Request消息分为3部分
- 第一部分叫Request line。
- 第二部分叫Request header。
- 第三部分是body. header和body之间有个空行。
第一行中的Method表示请求方法,比如”POST”,”GET”, Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号
当使用的是”GET” 方法的时候, body是为空的比如我们打开博客园首页的request 如下
GET http://www.cnblogs.com/ HTTP/1.1
Host: www.cnblogs.com
抽象的东西,难以理解,老感觉是虚的, 所谓眼见为实, 实际见到的东西,我们才能理解和记忆。 我们今天用Fiddler,实际的看看Request和Response.下面我们打开Fiddler 捕捉一个博客园登录的Request 然后分析下它的结构, 在Inspectors tab下以Raw的方式可以看到完整的Request的消息。如下图: