zoukankan      html  css  js  c++  java
  • HTTP相关知识学习

    五层网络模型

    • 应用层
      • 包括HTTP,FTP...
        • HTTP支持客户/服务器模式
        • 简单快速有getpost方法
        • 灵活,可以传输任意类型
        • 无连接,每次连接只处理一个请求,收到应答就关闭
        • 无状态,对于事物处理没有记忆能力
        • 1.1有个长连接技术keepalive
      • 为应用软件提供了很多服务request,get,post
      • 屏蔽了很多网络传输细节
      • 构建在TCP协议之上
    • 传输层
      • 包括TCP,UDP
      • 向用户提供可靠的端到端服务
      • 向高层屏蔽了数据通信的细节
    • 网络层
      • 为数据在节点之间传输创建逻辑链路
    • 数据链路层
      • 通信实体间建立数据链路的连接(电脑的0101类的)
    • 物理层
      • 定义物理设备如何传输数据

    HTTP请求结构

    抓包:

    HTTP请求和响应的步骤

    • 客户端连接导Web服务器,http默认端口80,建立套接字连接。
    • 发送HTTP请求,客户端向服务器发送文本的请求报文,
    • 服务器接受请求并返回HTTP响应,Web服务器解析请求,写到tcp套接字,由客户端读取
    • 释放TCP连接
    • 客户端浏览器解析HTML内容,查明状态代码,字符集,语法,并展示

    浏览器输入一个URL,会发生什么

    • DNS解析(浏览器根据URL,逐层查询DNS服务器缓存,解析URL中的域名所对应的IP地址)
      • 缓存大致有:浏览器缓存、系统缓存、路由器缓存。。等
    • IP地址和端口建立TCP连接(3次握手)
    • 发送HTTP请求
    • 服务器处理请求,并返回HTTP报文
    • 浏览器解析渲染页面
    • 连接结束(四次挥手)

    HTTP状态码

    • 三位数组成,相应类别有5种
      • 1xx:指示信息--表时请求已接收,继续处理
      • 2xx:成功--表时请求已被成功接收、理解、接受
      • 3xx:重定向--要完成请求必须进行更进一步的操作
      • 4xx:客户端错误--请求由于发错误或请求无法实现
      • 5xx:服务器端错误--服务器未实现合法的请求

    HTTP三次握手

    三次网络传输,才能创建http连接,确认连接过程,排除网络原因浪费网络资源。

     图中就是大致的传输参数。

     HTTP长连接

    如何理解HTTP的无连接、短连接、长连接?:https://segmentfault.com/a/1190000015821798

    浏览器请求头的Connection:(http1.1)keep-alive 希望服务端保持长连接(状态为close时,每次请求之后,请求就会关闭)

    信道复用(http2),一个域名一个tcp连接,速度提升很大。


    --资料来源:HTTP协议原理+实践Web开发工程师必学、剑指Java面试-Offer直通车

  • 相关阅读:
    Javascript 多浏览器兼容性问题及解决方案
    Vue-学习。
    angular-动画。
    Angular-学习。
    JQuery-学习。
    Bootstrap框架。
    Swiper-轮播图。
    jquery validation表单验证插件2。
    jquery validation表单验证插件。
    Grunt-学习。
  • 原文地址:https://www.cnblogs.com/jiangym/p/13592327.html
Copyright © 2011-2022 走看看