HTTP协议小结

1、什么是协议?

协议是计算机之间为了实现网络通信所必须共同遵守的规定或规则。

2、HTTP协议?

HTTP协议是超文本传输协议,它是从web服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

3、HTTP协议是无状态的

http协议是无状态的,同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。

4、HTTP消息的结构

客户端发送一个HTTP请求到服务器的请求消息格式:请求行(request line)、请求头部(header)、空格和请求数据(body)四部分组成。

5、Get和Post方法的区别

1.GET提交的数据会放在URL之后, POST方法是把提交的数据放在HTTP包的ody中。

2.GET提交的数据大小有限,POST方法提交的数据没有限制。

3.GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。

4.GET的安全性较差,POST比GET更安全。

6、HTTP状态码

Response消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息三部分组成。

状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response。

7、状态码分类

1XX- 信息型,服务器收到请求,需要请求者继续操作。

2XX- 成功型,操作被成功接收并处理。

3XX - 重定向,需要进一步的操作以完成请求。

4XX - 客户端错误,请求包含语法错误或无法完成请求。

5XX - 服务器错误,服务器未能实现合法的请求

8、常见的状态码

200 OK - 客户端请求成功。

302 Found - 重定向,请求的资源已经被分配了新的URL,只是临时的,这个URL还可能会发生改变。

304 Not Modified - 代表上次的文档已经被缓存了, 还可以继续使用。

400 Bad Request - 客户端请求的语法错误,服务器无法理解。

403 Forbidden - 服务器收到请求,但是拒绝提供服务。

404 Not Found - 请求资源不存在,可能是输入了错误的URL。

500 Internal Server Error - 服务器内部错误,无法完成请求。

503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

9、HTTP Request header

1.Cache 头域

If-Modified-Since:把浏览器端缓存页面的最后修改时间发送到服务器去服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

If-None-Match:If-None-Match和ETag一起工作,在Response中添加ETag信息,客户端再次请求资源,Request中加入if-None-Match(ETag的值),服务器验证ETag,若没改变返回状态码304,有改变,返回状态码200。

Pragma:防止页面被缓存。

Cache-Control:指定Response-Request遵循的缓存机制。public:可以被任何缓存所缓存。private:内容只缓存在私有缓存中。no-cache:所有内容都不会被缓存。

2.Client 头域

Accept: 浏览器可以接受的文件类型。

Accept-Encoding:指定压缩方法,是否支持压缩,支持什么压缩方法。

Accept-Language:浏览器申明自己的接收语言。

User-Accept:告知服务器客户端使用的操作系统与浏览器的名称和版本。

Accept-chareset:浏览器申明自己接收的字符集。

3.Cookie/Login 头域

Cookie:将cookie的值发送给服务器。

4.Entity 头域

Content-Length:发送给HTTP服务器的数据长度。

Content-Type:决定文件接收方将以什么形式、什么编码读取此文件。

5.Miscellaneous 头域

Referer:提供了Request的上下文信息,告诉服务器我是从哪个链接过来的。

6.Transport 头域

connection:Keep—alive     TCP连接不会关闭。

connection:close     一个Request完成后,TCP连接关闭。

Host:发送请求时,该报头域是必需的。主要用于指定被请求资源的Internet主机和端口号,通常从HTTP URL 中提取出来。

10、HTTP Response header

1.Cache 头域

Date:生成消息的具体时间和日期。

Expires:浏览器在指定过期时间内使用本地缓存。

2.Cookie/Login 头域

P3P:用户跨域设置cookie,可以解决iframe跨域访问cookie的问题。

Set-Cookie:重要的header,用于把cookie发送到客户端浏览器,每一个写入cookie都会生成一个set-cookie。

3.Entity 头域

ETag:与if-None-Match配合使用。

Last-Modified:用于指示资源的最后修改日期和时间。

Content-Type:Web服务器告知浏览器自己响应对象的类型和字符集。

Content-Length:指明实体正文长度,以字节方式存储的十进制数字表示。在数据下行中,要预先在服务器中缓存所有数据,然后所有数据一并发给客户端。

Content-Encoding:Web服务器表明自己用了什么压缩方式压缩响应中的对象。

Content-Language:服务器告知浏览器自己响应的对象语言。

4.Miscellaneous头域

Server:指明HTTP服务器的软件信息。

X-Powered-By:表明网站是用什么技术开发的。

X-AspNet-Version:如果网站是用Asp/Net开发的,这个header用来表明ASP.NET的版本。

5.Transport 头域

connection:Keep—alive     TCP连接不会关闭。

connection:close     一个Request完成后,TCP连接关闭。

6.Location 头域

Location:用于重定向一个新的位置,包括新的URL地址。

(1) HTTP超文本传输协议用于定义web页面(超文本)在网络上的交互方式的应用层协议,使用客户/服务器的工作方式。HTTP协议定义了web客户端(浏览器)如何向web站点请求web网页以及web服务器如何将web页传送给客户机。当用户请求一个页面时,浏览器会向web服务器发出对该页及其引用的相关对象的HTTP请求报文,服务器响应这些请求报文,生成HTTP响应报文,并将请求的对象附在HTTP响应报文后发送给客户端。 (2) 由于网页文档的传输需要可靠性的保证,所以HTTP协议使用TCP协议,TCP协议是一个面向连接的协议,在通信时需要建立连接,通信结束要释放连接,TCP建立连接时需要三次握手,提供可靠的数据传输,HTTP协议默认端口为80. (3) HTTP协议包括HTTP1.0:RFC1945和HTTP1.1:RFC 2068.HTTP1.1兼容HTTP1.0。HTTP1.0是采用非持续连接和非流水线作业方式,而HTTP1.1采用持续连接和流水线作业方式。 (4) Web缓存的进一步讨论,保证web缓存代理服务器缓存页面能够和web服务器的最新页面一致的方法。 (5) HTTP协议的无状态性:服务器无法通过HTTP协议记录用户的登录信息。使用Cookie保存信息。 (1) 打开wireshark开始抓包,然后上网至江西师大教务在线网(www.jxnu.edu.cn),连接后停止(stop)抓包。设置过滤规则:udp.port==53||tcp.port==80.(HTTP协议默认使用传输层TCP协议的80端口),考虑到我的电脑未能连网,所以选择老师抓好的包做实验分析。 (2) 分析HTTP协议报文。 (2) 第一阶段:TCP建立连接阶段。第三帧是web客户端(即浏览器,源IP地址为192.168.0.250)发给web服务器端(目标IP地址为218.65.113.46)的TCP连接的第一次握手(SYN)。第四帧是web服务器端与web客户端的TCP连接的第二次握手(SYN,ACK)。第五帧是浏览器与web服务器的TCP连接的第三次握手(ACK),此时TCP连接建立。
好的,以下是我给出的 Android Http请求实验小结: Android Http请求实验小结 在Android中进行网络请求,可以使用HttpURLConnection或HttpClient等方式。其中,HttpURLConnection是Android SDK提供的基于HTTP协议的网络请求API,HttpClient则是Apache提供的开源网络请求API,但在Android 6.0及以上版本中已被标记为过时,推荐使用HttpURLConnection。 HttpURLConnection的使用步骤: 1.创建URL对象,指定请求的URL地址。 2.调用URL对象的openConnection()方法,获取HttpURLConnection对象。 3.设置HttpURLConnection的请求方法、连接超时时间、读取超时时间等属性。 4.如果需要向服务器发送参数,可以通过HttpURLConnection对象的输出流将参数写入请求体中。 5.调用HttpURLConnection对象的connect()方法,建立与服务器的连接。 6.读取服务器返回的数据,可以通过HttpURLConnection对象的输入流获取服务器返回的数据。 7.关闭HttpURLConnection对象和输入流、输出流等资源。 HttpClient的使用步骤: 1.创建HttpClient对象。 2.创建HttpGet或HttpPost等请求对象,指定请求的URL地址和请求参数等信息。 3.执行请求,获取服务器返回的HttpResponse对象。 4.解析HttpResponse对象,获取服务器返回的数据。 5.关闭HttpClient对象和HttpResponse等资源。 需要注意的是,在Android 9.0及以上版本中,默认禁止应用程序使用非加密的流量进行网络请求,需要在AndroidManifest.xml文件中添加以下代码: ``` <application android:usesCleartextTraffic="true"> ... </application> ``` 以上是Android Http请求实验小结,希望对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值