HTTP协议详解

1.什么是Http协议无状态协议? 怎么解决Http协议无状态协议?
无状态是指当客户端的HTTP请求完成以后,客户端再发送一次HTTP请求,HTTP并不知道当前客户端是一个”老用户“。
可以使用Cookie来解决无状态的问题,Cookie就相当于一个通行证,第一次访问的时候给客户端发送一个Cookie,当客户端再次来的时候,拿着Cookie(通行证),那么服务器就知道这个是”老用户“。

2.http请求报文和应答报文的格式(状态行、消息报头、响应正文)
(1)请求报文:
这里写图片描述
第一行是请求行,其中“GET”是请求方法,“www.baidu.com/index.html”是目标资源的URL
第二到第四行是HTTP请求的头部字段
(2)应答报文:
这里写图片描述
第一行是状态行,“HTTP/1.0”是HTTP协议的版本号
第二行以下是HTTP请求的头部字段

3.常用的HTTP方法有哪些?(9种)
主要方法:
(1)PUT:上传某个资源
(2)DELETE:删除某个资源
(3)GET:申请获取服务器资源
(4)POST:客户端向服务器提交数据
(5)HEAD:和GET方法类似,但是只返回头部信息
(6)TRACE:要求服务器返回原始的HTTP请求
(7)OPTIONS:查看服务器对某个特定的URL都支持哪些请求方法
(8)CONNECT:用于某些代理服务器,把请求链接转为安全隧道
(9)PATCH:对某个资源做部分修改

4.get和post区别以及使用场景
(1)区别:
(1)get是从服务器上获取数据;post是想服务器传送数据
(2)get提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连;post将提交的数据放在HTTP包的body中。
(3)对于get方式,服务器端采用Request.QueryString获取变量的值,对于post,服务器端用Request.Form获取提交的数据。
(4)get提交的数据大小有限制(因为浏览器对URL的长度有限制),而post方法提交的数据没有限制。
(5)get安全性非常低,输入的数据会在浏览器地址栏看到。post安全性高,一般用来传输大数据。
(2)使用场景:
get适用于查询数据,比如在数据库进行查询
post可以用来修改数据,比如在网上发表评论,回复帖子,在数据库中加入新数据等。

5.HTTP状态码
这里写图片描述

6.HTTP的特点:
(1)支持客户/服务器模式;
(2)简单快速。客户向服务器请求服务时,只需传送请求方法和路径。
(3)灵活。允许传输任意类型的数据对象。
(4)无连接。其含义是限制每次连接只处理一个请求。服务器处理完客户的请求并收到客户的回应后,断开连接。
(5)无状态,即对处理事务没有记忆力;

7.当输入www.baidu.com会发生什么/网页访问整个过程?
(1)点击网址后,应用层的DNS协议会将网址解析为IP地址;
DNS查找过程:
①先在浏览器缓存中检查是否有这个域名对应的解析过了的IP地址,如果有解析过程结束。
② 如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存(hosts文件)中是否有这个域名对应的DNS解析结果。
③若还没有,此时会发送一个数据包给DNS服务器,DNS服务器找到后将解析所得IP地址返给用户。
(2)在应用层,浏览器会给web服务器发送一个HTTP请求;
请求头为:GET http://www.baidu.com/HTTP/1.1
(3)在传输层,HTTP数据包会嵌入在TCP报文段中;
TCP报文段由TCP首部和HTTP数据报组成,TCP首部包括源端口号(百度的HTTP默认端口是80)和目的端口号。
(4)在网络层中,TCP报文段再嵌入IP数据包中;
IP数据包由TP报头和TCP报文段组成,IP报头包括双方的IP地址信息
(5) 在网络接口层,IP数据包嵌入到数据帧(以太网数据包)中在网络上传送;
数据帧中包含源MAC地址和目的MAC地址(通过ARP地址解析协议得到的)。这样数据帧 由头部(MAC地址)+IP数据包组成。
(6)数据包经过多个网关的转发到达百度服务器,请求对应端口的服务;
服务器接收到发送过来的以太网数据包开始解析请求信息,从以太网数据包中提取IP数据包 —>TCP报文段—>HTTP数据包,并组装为有效数据交与对应线程池中分配的线程进行处理,在这个过程中,生成相应request、response对象。
(7)请求处理完成之后,服务器发回一个HTTP响应;
请求处理程序会阅读请求及它的参数和cookies。它会读取也可能更新一些数据,并将数据存储在服务器上。处理完毕后,数据通过response对象给客户输出信息,输出信息也需要拼接 HTTP协议头部分,关闭后断开连接。断开后,服务器端自动注销request、response对象, 并将释放对应线程的使用标识(一般一个请求单独由一个线程处理,部分特殊情况有一个线程处理多个请求的情况)。
响应头为:HTTP/1.1200 OK
(8)浏览器以同样的过程读取到HTTP响应的内容,然后浏览器对接收到的HTML页面进行解析,把网页显示出来呈现给用户。
客户端接收到返回数据,去掉对应头信息,形成也可以被浏览器认识的页面HTML字符串信息,交与浏览器翻译为对应页面规则信息展示为页面内容。

8.HTTP请求响应过程:
(1)域名解析
(2)发起TCP三次握手
(4)建立TCP连接后发起HTTP请求
(5)浏览器解析HTML代码,并请求HTML代码中的资源
(6)浏览器对页面进行渲染呈现给用户

9.http与https的区别
(1)http协议需要申请ca证书,一般免费证书很少,需要交费
(2)http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议
(3)http和https使用的是完全不同的连接方式,用的端口也不一样(http:80 https:43)
(4)http协议的连接很简单,是无状态的
(5)https协议是由SSL+HTTP协议构成的可进行加密传输,身份认证的网络协议,比http安全。

10.Session和cookie的区别
Session和cookie都是用来保存状态信息,保存客户端状态机制;session可以用cookie来实现,也可以用URL回写的机制实现;
Cookie将状态保存在客户端,session将状态保存在服务器端;
Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器;
Session是针对每一个用户的,变量的值保存在服务器上,用一个sessionID来区分是哪一个用户的session变量;当客户禁用cookie时,这个值也可能设置为由get来返回给服务器;
当访问一个session的站点时,同时也在自己机子建立一个cookie,建议在服务期短的sessionID更安全,不会任意读取客户信息;

11.HTTP1.1版本新特性
(1)默认持久连接,只要客户端和服务器任意一段没有明确的断开TCP连接,就可以发送多次HTTP请求
(2)管线化,客户端可以同时发送对个HTTP请求,而不用一个一个等待响应
(3)断点续传:HTTP1.1协议中定义了断点续传相关的属性,如Range和Content-Range
其原理是:客户端记录下当前的下载进度,并在需要续传时通知服务器本次需要下载的内容片断
一个简单的断点续传实现如下:
当客户端下载一个1024K文件,下载到500k时网络中断。当客户端请求续传时,客户端需要在http头中声明本次需要续传的片断,如下:
Range: bytes=500000——这个头通知服务器从文件的500k位置开始传文件
服务器收到断点续传请求后,从文件的500k位置开始传输文件,并在http头开始增加Content-Range:bytes=500000-1024000

注:部分文字来自我的小伙伴

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值