博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
http重要知识点
阅读量:6685 次
发布时间:2019-06-25

本文共 1851 字,大约阅读时间需要 6 分钟。

Url概念

url是统一资源定位符,顾名思义,指明资源的位置

url组成

格式由四部分组成:<协议>://<主机>:<端口>(没有端口使用默认端口)/<路径>(没有路径就指向主页)

用户浏览网页的方式

一种是在浏览器的地址窗口中输入要找的页面的url,一种是直接用鼠标点击一个网址链接

从输入网址到页面显示的过程

输入url

DNS解析ip地址
建立tcp连接
浏览器发出请求
服务器响应请求,返回页面
释放tcp连接
浏览器渲染显示页面

http的特性

http是面向事物的,在应用层交换文件的基础

http是无连接的,http虽然使用的tcp的连接,但是交换http报文不需要建立http连接
http是无状态的,也就是服务器没有http请求的记忆的,不记得是否访问过这个页面,不管访问同一个页面几次都像第一次访问一样
http是面向文本的,报文的每一个字段都是不确定长度的ascll码串

htttp1.0和http1.1区别

http1.0是非持续连接,也就是请求一次就建立一个tcp连接,完成就立即释放连接

http1.1是持续连接,也就是在请求之后连接仍然存在一段时间
持续连接有两种方式:一是非流水线方式,浏览器收到一个响应之后才能发送下一个请求,
二是流水线方式,浏览器在收到响应之前就可以发送请求,也就是可以持续不断的发送请求,而不必等待服务器的响应

代理服务器

代理服务器是介于服务器和浏览器之间,既作为服务器响应请求,也作为浏览器发送请求

原理:将一些最近访问的请求和响应缓存在本地磁盘中,可以加快请求的响应速度同时减少通信量
过程:浏览器发送请求时,先和代理服务器建立tcp连接,然后向代理服务器发送请求;
代理服务器若存放了所请求对象,则响应请求,将对象返回给浏览器;
否则,代理服务器就代浏览器向服务器发出请求,与服务器建立连接,发出请求;
服务器响应请求,将请求对象返回给代理服务器;
代理服务器就将对象缓存在本地磁盘中,同时将请求对象返回个浏览器

http报文结构

报文分类:一是请求报文,浏览器向服务器发送请求报文;二是响应报文,服务器向浏览器发送的响应报文

报文的组成:开始行,在请求报文中称为请求行,在响应报文中称为状态行;首部行,用来说明浏览器服务器和报文主体的一些信息;实体主体,可有可无
请求行组成:方法,请求资源的url,http版本
方法:GET,发送一个请求来取得服务器上的某一资源;
POST,向指定的资源提交数据或者附加新的数据;
PUT,和post类似,都是提交数据,但是指定了资源存储在服务器上的位置;
HEAD,只请求页面的首部;DELETE,删除服务器上的某资源,
OPTION,获取url所支持的方法,如果请求成功,会返回一个ALLOW的头包含类似“GET,POST”方法名的信息;
TRACE,追踪请求报文的传输路径,让服务器将之前请求的通信还给浏览器;
CONNECT,和代理服务器建立隧道协议,进行tcp通信
状态行组成:http版本,状态码,解释状态码的简单短语

常见状态码及解释

1xx,通知消息;2xx,请求成功;3xx,重定向;4xx,客户端错误;5xx,服务器错误

100,请求已经接受,请继续发送剩余的部分请求;
200,请求成功,正常返回数据;
201,创建新资源;
202,尚未处理;
301,永久移动;
302,临时移动;
303,GET请求的临时移动;
304,上次请求之后网页从未修改;
400,语法错误,格式不对;
401,未授权;
403,禁止访问;
404,找不到相应资源;
500,常见服务器端错误;
503,服务器展示无法处理请求,可能是维护或者过载了

cookie

cookie是服务器用来存放用户信息,追踪用户的足迹的;

cookie工作过程:首先用户登陆页面,服务器会为用户产生一个唯一的识别码,同时以此为索引在数据库中建立一个项目;
在响应报文中添加一个Set-cookie首部行,首部字段名是Set-cookie,值是唯一的识别码;
浏览器收到响应报文,在浏览器的cookie文件中添加一行,包含服务器主机名和Set-cookie的信息;
在用户再次登陆同一个网页时,会将请求报文中添加Cookie首部行,值和Set-cookie的值一样,这样就可以加载用户之前的信息同时追踪用户的踪迹。

转载于:https://juejin.im/post/5caafbc96fb9a05e5c05d16e

你可能感兴趣的文章
创建一个当前时间凌晨
查看>>
Python 学习笔记 - 多进程和进程池
查看>>
日志切割实例
查看>>
CentOS安装中文汉字输入法ibus
查看>>
【环境配置】DOSBox运行TT打字软件
查看>>
Android中处理Touch Icon的方案
查看>>
RHEL7.1配置本地yum源
查看>>
Mybatis Generator最完整配置详解
查看>>
Hash学习
查看>>
PHP按符号截取字符串的指定部分
查看>>
在Blender导出格式为STL
查看>>
我的友情链接
查看>>
酒有两不喝,财有两不发,忙有三不帮,亲有三不走!
查看>>
IPFS 服务的Python访问
查看>>
DllMain详解
查看>>
Class bytes found but defineClass()failed for error when deploying EAR
查看>>
IIS7.0安装的FTP建账号
查看>>
spring --理解
查看>>
前台中文数据后台achieveRequest().getParameter获取乱码问题
查看>>
sed工具扩展学习
查看>>