网络协议分层

经典五层模型

低三层

  • 物理层

    • 主要作用是定义物理设备如何传输数据
  • 数据链路层
    • 在通信的实体间建立数据链路连接
  • 网络层
    • 为数据在结点之间传输创建逻辑链路

传输层

  • 向用户提供可靠的端到端(End-to-End)服务

  • 传输层向高层屏蔽了下层数据通信的细节

应用层

  • 为应用软件提供了很多服务

  • 构建于TCP协议之上

  • 屏蔽网络传输相关细节

http协议发展历史

HTTP/0.9

  • 只有一个命令GET
  • 没有HEADER等描述数据的信息
  • 服务器发送完毕,就关闭TCP连接

HTTP/1.0

  • 增加了很多命令

  • 增加status code和header

  • 多字符集支持、多部分发送、权限、缓存等

HTTP/1.1

  • 持久连接

  • pipeline

  • 增加host和其他一些命令

HTTP2

  • 所有数据以二进制传输

  • 同一个连接里面发送多个请求不再需要按照顺序来

  • 头信息压缩以及推送提高效率的功能

HTTP三次握手

三次握手时序图

图片参考此篇博客

首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。

Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

URI、 URL、URN

URI

Uniform Resource Identifier/统一资源标志符

用来唯一标识互联网.上的信息资源

URL

Uniform Resource Locator/统一资源定位器

http://user:pass@host.com:80/path?query=string#hash,此类格式的都叫做URL,比如ftp协议

URN

  • 永久统一资源定位符

  • 在资源移动之后还能被找到

  • 目前还没有非常成熟的使用方案

HTTP报文

HTTP方法

  • 用来定义对于资源的操作

  • 常用有GET、POST等

  • 从定义上讲有各自的语义

HTTP CODE

  • 定义服务器对请求的处理结果

  • 各个区间的CODE有各自的语义

  • 好的HTTP服务可以通过CODE判断结果

使用nodejs实现一个最简单的服务器

const http = require("http");
http.createServer(function (req, res) {console.log("request come", req.url);res.end("123");
}).listen(8888);console.log('server listening on 8888');

[HTTP] HTTP协议基础及发展历史相关推荐

  1. [转]OpenGL基础技术讲座--发展历史

    OpenGL基础技术讲座--发展历史 第一讲 OpenGL 的发展历史 人们对三维图形技术的研究已经经历了一个很长的历程,而且涌现了许多三维图形开发工具,其中SGI公司推出的GL(Graphics L ...

  2. HTTP 协议详解和版本介绍(HTTP发展历史)

    HTTP 协议的发展历史以及相应版本的相关功能的简单介绍 本文主要讲解 http协议 的发展历史: 1. http协议发展历史总览 . 2. http协议分析: HTTP版本各自的基本功能 . 3. ...

  3. python基础之语言发展历史

    博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...

  4. 计算机基础之计算机的发展历史

    博主简介:原互联网大厂tencent员工,网安巨头Venustech员工,阿里云开发社区专家博主,微信公众号java基础笔记优质创作者,csdn优质创作博主,创业者,知识共享者,欢迎关注,点赞,收藏. ...

  5. UDS协议发展历史(UDS是什么?)

    诊断协议那些事儿 本文为诊断协议那些事儿专栏首篇文章,旨在介绍诊断的起源.发展历史,让读者对诊断有一个基本的认识,明确UDS到底是什么. 关联文章: UDS的应用场景 UDS的OSI模型 UDS服务列 ...

  6. 【正厚软件】0基础学IT,来Linux的发展历史吧

    本文来源:正厚软件沙老师 Linux 的发展历史 1991年林纳斯.托瓦兹开发了Linux内核,宣布它的诞生. 1999年,IBM宣布于RedHat公司建立伙伴关系,以确保RedHat在IBN机器上的 ...

  7. 【深度学习基础1】深度学习发展历史

    一.深度学习发展历史 1. 网状理论(Reticular Theory) 早在 18 世纪初,科学家就提出了"所有生物组织都是由细胞组成"的假设.然而,神经组织一直是个例外,因为人 ...

  8. JAVA学习基础知识(一)JDK的安装和配置及Java的发展历史

    前言 欢迎阅读本系列文章,本文主要内容为Java的发展历史,以及在电脑上如何配置Java环境.ps:这是第一次发布java语言的文章,若出现错误,望指正. 文章目录 前言 java的发展历史 Java ...

  9. 【前端基础】网页的发展历史

    网页的发展历史 第一个网页的出现 浏览器和网页 浏览器 浏览器的问题 W3C的建立 网页 网页的结构 结构 表现 行为 第一个网页的出现 1991年8月6日,世界上第一个服务器和第一个网站在欧洲核子研 ...

最新文章

  1. java metapojo_JavaBean,POJO,VO,DTO的区别和联系
  2. WildFly 8与GlassFish 4 –选择哪个应用服务器
  3. vs2017生成sqlserver 2017项目出现.Net SqlClient Data Provider: Msg 10343
  4. 分割线不显示_90后都30岁了,为什么还不结婚
  5. 工具对比_模拟慢网速环境
  6. NTC热敏电阻温度计算
  7. 一个命令,删除电脑上顽固的文件和文件夹|干货
  8. python ocr 识别中文pdf_基于Python实现对PDF文件的OCR识别
  9. 舌尖上的职场(三)我来买单!(转)
  10. NB-IoT对接电信物联网开放平台
  11. 半导体产业的根基:晶圆是什么
  12. java项目任务跟踪系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  13. YTU 3837问题 E: 一道老卢题
  14. Windows下的远程命令行工具pstools
  15. RecyclerView addItemDecoration 的妙用 - item 间距平均分布和添加分割线
  16. Android之电话拦截
  17. 32.768K贴片晶振封装 mc-146/mc-156
  18. firefox android 夜间模式,Firefox插件开发:夜间模式
  19. 最新代shua网秒shua订单量源码 上传即可使用
  20. 打卡2 -回归和分类

热门文章

  1. 复练-软考高级-论文写作专题
  2. vue 新建的页面如何访问_Vue.js—实现前后端分离架构中前端页面搭建(四)(完)...
  3. 30个HTML标签,10.30 html标签
  4. java静态初始化模块,在静态初始化程序块中加载java属性
  5. pandas将字符串转换成时间_pandas入门: 时间字符串转换为年月日
  6. pandas的自带数据集_pandas.DataFrame.sample随机抽样
  7. Nginx 错误汇总
  8. BIO,NIO,AIO总结(一)
  9. 基于bootstrap的后台左侧导航菜单和点击二级菜单刷新二级页面时候菜单展开显示当前菜单...
  10. 最近刚写的——三维饼图