HTTP:通信协议

流程概述:

http客户端发起请求,创建端口默认8080

http服务器在端口监听客户端请求

http服务器向客户端返回状态和内容

稍微详细解析:

1.域名解析:浏览器搜素自身的DNS缓冲,查看是否有被请求的域名所定义的IP,缓冲1分钟

## 谷歌浏览器输入:
chrome://net-internals/#dns

2.搜索操作系统自身的DNS缓冲(浏览器无缓冲或失效)

3.读取本地的HOST文件

C:\Windows\System32\drivers\etc

4.浏览器发起 一个DNS的系统调用

- 宽带运营商服务器查看本身缓存

  - 运营商服务器发起一个迭代(从跟域名对应的IP开始)DNS解析的请求

    运营商服务器把结果IP返回操作系统内核同时缓存

    操作系统内核把IP发回给浏览器

    最终浏览器拿到域名所对应的IP地址

5.浏览器获得域名对应IP后,发起http“三次握手”

  - 浏览器的随机端口(8080)向服务器发送TCP连接请求,

    该请求会经过路由设备、网卡、内核的TCP/IP协议栈、防火墙最终到达web服务端

6.TCP/IP连接建立以后,浏览器向服务器发送http请求

  - 比如使用http的GET方法请求一个根域的域名,歇息可以采用HTTP 1.0的协议

7.服务器端接受到请求,根据路径参数,经过后端的处理,将结果的数据返回给浏览器;

  - 如果是页面就会把完整的HTML页面代码返回给浏览器

8.浏览器获取到HTML页面代码然后开始解析和渲染

  - HTML页面中的JS、CSS、图片等静态资源同样需要经过一个个HTTP请求重复以上步骤获取

9.浏览器将HTML和静态资源结合渲染,将完整页面呈现

请求和响应

http的整个流程可以归纳为请求和响应两个部分

两者都会发送http头和正文信息

http头

附加的信息:内容类型、服务器发送响应日期、http状态码

正文信息

用户提交的表单数据,或者返回的数据

HTTP的请求方法

GET:获取、读取数据

POST:向指定资源提交数据

PUT:更新

DELETE:删除

HEAD:与GET相似,服务器不传回全部数据

状态码

1xx 标识请求被接受
2xx 请求被成功接受并且处理掉
3xx 重定向
4xx 客户端错误
5xx 服务器端错误

常见状态码

200  客户端请求成功
400  客户端请求有语法等错误,服务器端未能理解
401  请求未经过授权
403  服务器端拒绝,由于权限等原因
404  未找到资源
500  服务器端发生不可预期错误
503  服务器当前不能处理,也许一段时候可以

04慕课网《进击Node.js基础(一)》HTTP讲解的更多相关文章

  1. 03慕课网《进击Node.js基础(一)》API-URL网址解析

    url url.parse(url,query,host);解析域名 url必须,地址字符串 query可选 host 可选:在不清楚协议时正确解析 querystring 字符串和对象之间互相解析 ...

  2. 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子

    版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x    - 0.8.x -0.9.x    -0.10.x  -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...

  3. 10慕课网《进击Node.js基础(一)》初识promise

    首先用最简单的方式实现一个动画效果 <!doctype> <html> <head> <title>Promise animation</titl ...

  4. 07慕课网《进击Node.js基础(一)》HTTP小爬虫

    获取HTML页面 var http = require('http') var url='http://www.imooc.com/learn/348' http.get(url,function(r ...

  5. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

  6. 02慕课网《进击Node.js基础(一)》——CommonJs标准

    是一套规范管理模块 每个js 为一个模块,多个模块作为一个包 node.js和Couchdb是对其的实现: 不同于jQuery 模块:定义.标识.引用(地址/模块名称) 模块类型: 核心模块http ...

  7. 进击Node.js基础(一)

    一.前言 1:Node.js本质上是用chrome浏览器 v8引擎 使用c++编写的JS运行环境 2:相比于JS没有浏览器安全级的限制,额外提供了一些系统级的API:文件读写,进程管理,网络通信等. ...

  8. 11慕课网《进击Node.js基础(一)》Buffer和Stream

    Buffer 用来保存原始数据 (logo.png) 以下代码读取logo.png为buffer类型 然后将buffer转化为string,新建png 可以将字符串配置: data:image/png ...

  9. 09慕课网《进击Node.js基础(一)》HTTP-get/request

    get是对request封装 可以在后台发起http请求,获取远程资源,更新或者同步远程资源 http.request(options[,callback]) 以下代码灌水失败: var http = ...

随机推荐

  1. MySql 5.7.21免安装版本win10下的配置

    1.解压到想要安装的位置,创建my.ini文件 my.ini的内容如下 [mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] #设 ...

  2. JQuery模拟网页中自定义鼠标右键菜单

    题外话.......最近在开发一个网站项目的时候,需要用到网页自定义右键菜单,在网上看了各路前辈大神的操作,头晕目眩,为了达到目的,突然灵机一动,于是便有了这篇文章. 先放个效果图(沾沾自喜,大神勿喷 ...

  3. js(jQuery)tips

    一:页面加上$(function(){***内容***})与不加的区别 1.这个是DOM加载完之后再加载JS代码,你的JS如果放在文档后面可能一样,但是如果你要是把JS放在head里面就有差别了(放在 ...

  4. JSP声明和JSP指令

    JSP声明 JSP 声明用来定义程序中使用的实体,如变量.方法和类. 语法格式:<%!  变量/方法/类的声明  %> 例如: <%! String str="欢迎&quo ...

  5. 读耗子叔的《从Equifax信息泄露看数据安全》

    本文永久地址:https://www.cnblogs.com/erbiao/p/9214219.html 最近正好看到耗子叔<从Equifax信息泄露看数据安全>这篇文章,就来说一下这篇文 ...

  6. Leecode刷题之旅-C语言/python-383赎金信

    /* * @lc app=leetcode.cn id=383 lang=c * * [383] 赎金信 * * https://leetcode-cn.com/problems/ransom-not ...

  7. DDoS 攻击与防御:从原理到实践

    本文来自 网易云社区 . 可怕的 DDoS 出于打击报复.敲诈勒索.政治需要等各种原因,加上攻击成本越来越低.效果特别明显等趋势,DDoS 攻击已经演变成全球性的网络安全威胁. 危害 根据卡巴斯基 2 ...

  8. C语言进阶——基本数据类型01

    刚开始人们还没有数据类型这个概念,但是人们经常要使用到固定内存大小的内存,这个时候那时的程序员就要记录一段信息在内存中的起始位置和终止位置,很不方便,演变到后来就出现了数据类型这个概念 什莫是数据类型 ...

  9. MySQL5.7.22版本的安装和调试

    1:安装前的准备工作 需要的软件: boost_1_59_0.tar.gz,cmake-3.6.1.tar.gz,mysql-5.7.22.tar.gz 开始安装MySQL 2.1 检查cmake [ ...

  10. 搜索引擎的选择与在chrome上的设置

    1  优缺点分析 百度:广告多,但是电脑端可以用Adblock Plus屏蔽:搜索内容有很多百度自家内容,如百家号.百度知道.百度文库.百度贴吧等,在搜索教程的时候很实用,但是不适合偏专业性搜索,很多 ...