admin 管理员组文章数量: 887016
1、HTTP协议(超文本传输协议)(应用层)HTTP协议是无状态的协议,有长连接和短连接的用法
(1)文本:字符串(能在utf8/gdk等码表上找到合法字符)
(2) 超文本:不仅仅是字符串,还可以携带一些图片,特殊的格式啥的
(3)HTTP在3.0之前在传输层基于TCP,到了3.0这个版本基于UDP,因为UDP的传输效率更高,我们也可以基于UDP实现一些更复杂的机制来确保他的可靠性
2、HTTP协议最主要的应用场景就是网站,浏览器和服务器之间传输数据,客户端(手机,PC)和服务器之间的数据传输,也可能是HTTP
3、HTTP协议的交互过程是典型的“一问一答”,交互过程一般需要很多次
4、我们需要安装fiddler抓包工具(去官网一路NEXT就可以,不会安装可以私信我),只要是有程序应用到HTTP/HTTPS我们的fiddler就报进行抓包
(1)这就是我们抓到的数据包
(2)蓝色的表示返回的是一个html,往往是访问一个网站的入口请求
(3)点开,我们的右上角就是请求的明细,右下角是响应明细
、
(4)我们点击这个Raw,是显示我们HTTP请求的原始数据,更方便我们观察
(5)字太小看不清我们可以点击View in Notepad 在我们的记事本中打开
(6)我们的响应数据打开之后乱码是因为我们的响应数据是被压缩了,为了节省带宽,响应体积比较大,我们需要解压缩,这个过程需要消耗时间和cpu,点击这里可以解压缩(响应数据就是网站的网页HTML)
5、HTTP请求包含了4个部分
(1)首行
(2)请求头
(3)空行(请求头最下面会有一个空行,这个空行就可以表示结束标记)
(4)正文(body)HTTP的载荷部分,有的HTTP有body,有的没有
6、HTTP响应的基本格式
(1)首行
(2)响应头
(3)空行
(4)响应正文(body) 载荷
7、URL描述一个网络上资源的位置,唯一资源定位符。URI唯一资源标识符,严格地说,URI比URL的范围更广一些
(1)目前登录信息不显示出来了,不安全
(2)现在需要单独界面来完成,如果URL中不带端口号,浏览器会自动给一个默认的端口(服务器端口,不是客户端的端口,此处应用啥端口取决于协议,例:HTTP:80,HTTPS:443)
(3)通过ip地址知道服务器在哪,通过端口知道程序是哪个,通过路径知道访问的是哪个资源
(4)UID查询字符串,针对请求内容做的补充说明,是客户端给服务器传递信息的重要途径,这里的键值对内容是程序员自定义的
综合上述IP地址,端口号,路径,查询字符串,就可以描述出一个网络资源了
(5)ch1片段标识符:用来标识当前页面的某个部分,通过不同的片段表示可以完成页面内的跳转
8、URL encode:query string里自定义的键值对,在URL中可能有些特殊字符有特定的含义例如:/ : ?和汉字的utf8/gdk等编码值其中可能某个字节就恰好和某个符号的ascii码一致,再URL中有中文的时候务必要进行编码,我们针对这些特定的符号我们进行”转义”,转义的方法可以用16进制标识之后在前面加上%,例:%E8%9B%8B
9、方法(get,post应用的多,其他应用较少)
我们在写代码的时候完全可以不用他这种方法这样写,这些只是一种约定,可以按约定也可以不按约定,我们可以把post给写成获取资源,都没问题(使用习惯上,GET通常没有body,post通常由body),GET会把需要的服务器的补充信息放到query string中(url中),post会把这些信息放到body中(post更多的应用在登录和上传上)
10、我们的密码抓包时候都会进行加密,可能用md5(16进制数字)base64编码(一般带有小尾巴的比如==,这种使用四个字节对原始数据中的三个字节进行重新编码,目的为了去掉二进制内容,这个base64编码格式我们也可以自己进行约定)
11、GET和POST的区别
12、Host:表示服务器主机的地址和端口,这个host和URL中的ip地址和端口啥的绝大部分都是一样的,少数部分是不一样的,如果我们想通过某个代理来转发,url就放的时代理的,我们的host里面放的是最终的
13、Content-Length 表示body中的数据长度(为了处理粘包问题,我们传输多个HTTP数据报的时候,此是接受方这边的接收缓冲区里就会积累多个包的数据,应用程序在读取这些数据时候就要有明确的长度来区分它们)
14、Content-Type:表示请求的body中的数据格式,后面也可能附带编码方式来确定有没有设置或者设置的对不对
15、User-Agent(简称UA):操作系统信息和浏览器信息(这是为了在我们开发中防止对方版本过低我们的最新数据显示不出,对方版本过高我们的版本较低现实的内容不够好等问题)可以判断时PC端还是手机端
16、Referer:描述了当前这个页面是哪里来的(浏览器中直接输入url/点击收藏加大开的网页是没Referer的)服务器可以记录日志,统计是从哪里点寄过来的,可以统计收取相应广告费(他有可能让其他人更改我们路由器的Referer,导致我们的日志记录有误,广告费被别人盗取)
17、HTTPS(侧重于不能被篡改,而不是被能被解密)就不会出现上述Referer中被盗取的问题,因为HTTPS中有SSL(网络中用于加密的协议)上述被盗取是因为当时用的时HTTP没有这个加密功能
18、Cookie(类似我们的就诊卡保存了我们一些重要信息):非常重要的包头中的属性,本质是一个浏览器这边本地持久化存储数据的机制(数据写到硬盘中),,浏览器进制网站访问我们的硬盘系统,但是我们需要保存一些我们的用户身份信息(浏览器给我们进行了一些限制,只能存储部分规定好的数据),Cookie就是这样一个让浏览器可以存储我们身份等重要信息的存储机制,HTTP请求中的Cookie字段,就是把本地存储的Cookie信息发送到服务器这边,HTTP响应中会有一个Set-Cookie字符,就是服务器告诉浏览器你要在本地保存哪些信息(键值对,程序员自定义的)
19、Cookie的一些重要结论:
(1)Cookie从哪里来:服务器返回给浏览器的,通常是首次访问/登录成功之后(cookie是在header中传输)
(2)Cookie到哪里去:Cookie会存储在浏览器本地主机的硬盘上,后续每次访问服务器都会带上Cookie,不同的客户端,保存的Cookie是不同的,即使是同一个主机,使用不同浏览器,Cookie也大概率不相同
(3)Cookie中存什么:键值对格式数据,这里的内容都是程序员自定义的和query string一样外人无法理解
(4)Cookie在浏览器这边如何组织:在硬盘本地保存,是按照不同的域名为维度分别存储,你的浏览器访问百度有一组Cookie和你搜狗的一组Cookie是相互隔离的不会影响彼此
(5)Cookie的用途是什莫:用来在客户端保存数据:其中最主要的时保存用户的身份标识,服务器就可以通过身份标识来区分你用户,一些其他业务数据一般不会存储在Cookie中,Cookie可以随时删掉(我们的医院存储着我们的检查的各种信息,我们的Cookie就是方便我们区分出哪些是我们的信息,业务数据一般都存在服务器里)
(6)账号密码时浏览器的另一种保存机制,如果放到Cookie中,Cookie是要传输给服务器的就可能会导致我们的密码被截取,我们的HTTPS重要的是不能被篡改,但是可能会被解密,到时候我们的密码就可能会泄露
版权声明:本文标题:HTTP协议深入解析 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1729001278h1305409.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论