HTTP概念
http是一种协议,互相通信的两个终端(不只是电脑)之间要遵循这种规则,才能建立通信。
输入网址到浏览器渲染完毕之间的流程:
Created with Raphaël 2.1.0
网址
网址
浏览器
浏览器
操作系统DNS缓存
操作系统DNS缓存
本地host文件
本地host文件
宽带运营商
宽带运营商
根域服务器
根域服务器
com域
com域
网址域
网址域
嘿,我输入网址了
那我看看我的DNS有没有缓存。抱歉没有
有没有这个网址的IP
我也没有
有没有这个网址的IP
我也没有
(发送DNS请求)他们都没有,你那有没
没有,我帮你问问
(通过自身服务器发送迭代DNS请求,知道这个网址的IP吗
我只知道com域的IP,你去问他吧
(通过自身服务器发送迭代DNS请求,知道这个网址的IP吗
不知道,我知道这个网址域的IP,
(一般是域名提供商,比如万网)你知道这个网址的IP吗
知道啊,给你
找到了,给你
找到了,给你
终于找到了
Created with Raphaël 2.1.0
输入网址
浏览器自身DNS缓存
是否有该网址IP
浏览器http 3次握手
http://www.google.com
End
http://www.google.com
本地host文件
是否有该网址IP
发送系统调用,获取IP
yes
no
yes
no
连接流程就是:浏览器获取到IP以后,通过自身随机端口发送TCP链接请求,通过层层路由,可能还要经过防火墙,然后经过网卡,到达TCP/IP协议栈到达web终端,建立连接。
三次握手就是
Created with Raphaël 2.1.0
浏览器
浏览器
服务器
服务器
001呼叫007?收到请回复
007收到,001请指示
给我来包烟
TCP/IP建立后,可以发送HTTP请求了 ,比如使用GET方法请求一个根域的一个域名,
服务器收到请求后,根据参数,返回相应的东西,比如一个网站的首页。
网页中用到的css,js,图片啊,也都是一个http请求
第二种理解
http可以分为请求和响应,都会发送一个请求头,和正文。
请求头:发送附加信息,内容类型,响应日期,状态码 正文:表单数据 文章等的东西了
使用浏览器调试工具查看,头和正文,一般重点关注请求方法,比如GET post 等了,还有就是状态码
1xx :表示请求正在处理 2xx :表示请求成功 200 3xx :重定向 4xx :请求错误 400 401 404 5xx :服务器有错误
剩下的就是慢慢来熟悉了