网络协议-HTTP入门和基础工具链

Http协议介绍

发明者:蒂姆·伯纳斯-李

英国计算机科学家(1955-)

万维网(1990HTTP协议)

世界第一个浏览器

第一个服务端程序

创办MIT人工智能实验室

 

HTTP协议

  • 超文本传输协议(Hyper Text Trabsfer Protocol)
  • 处理客户端和服务端之间的通信
  • http请求/http返回
  • 网页/json/xml/提交表单......

 

 

纯文本+无状态(Stateless)

  • 应用层协议(下面可以是TCP/IP)
  • 信息纯文本传输
  • 无状态(每次请求独立)(请求间互不影响)
  • 浏览器提供了手段维护状态(Cookie,Session,*Storage等)

HTTP历史

  • 1991 HTTP 0.9
  • 1996 HTTP 1.0
  • 1999 HTTP 1.1
  • 2015 HTTP 2.0

设计的基础因素

带宽:基础网络(线路、设备等)

延迟:浏览器、DNS查询、建立连接(TCP三次握手)

设计考虑因素——缓存与带宽优化

缓存

  • (http1.0)提供缓存机制如IF-Modified-Since等基础缓存控制策略
  • (http1.1)提供E-Tag等高级缓存策略

带宽优化

  • (http1.1)利用range头获取文件的某个部分
  • (http1.1)利用长连接让多个请求在一个TCP连接上排队
  • (http2.0)利用多路复用技术同时传输多个请求

设计考虑因素——压缩/安全性

压缩

  • 主流web服务器如nginx/express等都提供gzip压缩功能
  • (http2.0)采用二进制传输,头部使用HPACK算法压缩

HTTPS

  • 安全超文本传输协议(Hyper Text Trabsfer Protocol Secure)
  • 数据加密传输(防止各种攻击手段(信息泄露、篡改等))
  • SSL/TSL(Sevure Socket Layer/Transport Layer Secure)

SSL-安全套接层

TSL-传输层安全性协议

需要在客户端安装证书

  • 在HTTP和TCP/IP之间增加TSL/SSL层
  • 数据传输加密(非对称+对称加密)

HTTP(应用层协议)

TSL/SSL(2选一,加密服务)

TCP(传输层协议)/IP(网络层协议)

Node.js实战http请求

Header和Body(实战)

  • Http协议是一个文本传输协议,传输内容是人类可读的文本,大体分成两部分:

请求头(Header)/返回头

消息体(Body)

  • server:观察node实现http的基础协议

// node.js中
const net = require('net')
// const response = `HELLO WORLD`
const response = 
`HTTP/1.1 200 OK// response header
Data: Tue, 30 Jun 2020 01:00:00 GMT
Content-Type: text/plain
Connection: Closed

Hello world // 空一行写返回值
`
const server = net.createServer(socket => {// socket插座
    socket.end(response)
})
server.listen(80, ()=>{
    
})

chrome/curl/postman/whistle工具初探

Chrome

  • Google开发的免费浏览器
  • Chrome开发者工具拥有强大的调试能力

cURL

  • 传输一个URL(和服务器交互的工具)
  • url:网址(Uniform Resource Locator)
  • 支持多种协议(HTTP/HTTPS/FTP/FTPS/SCP/SFTP/DICT/TELNET......)

cmd中 curl 百度一下,你就知道 (返回页面信息)

curl -I 百度一下,你就知道 (返回头部信息)

它是一个命令行工具

用到的场景

  • 我的浏览器连着代理
  • 给网页发请求带一些特别的参数(返回头部信息指令,直接拷贝给同事)

fetch

fetch('/')
  • 在网络上获取数据的标准接口
  • 提供对请求/返回对象(标准Promise接口)
  • 提供自定义Header能力
  • 提供跨域能力

postman

协作的API开发工具

后端人员配好请求参数+header信息等分享给前端

Whistle

跨平台网络调试工具

  • 需要SwitchOmega插件
  • node.js开发
  • 支持抓包、重放、替换、修改等

CMD

安装: npm install whistle -g

跑:whistle start

localhost:8899/#network

总结

  • 简单比效率更重要(Java/HTTP等)
  • 跟上时代,掌握更多的工具

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值