zoukankan      html  css  js  c++  java
  • HTTP协议

    HTTP协议介绍

    用户访问网站流程

    客户端	---	浏览器输入网址信息点击回车
    客户端	---	完成域名的解析过程(DNS)
    客户端	---	直接访问相应网站服务器		---	建立TCP三次握手过程
    客户端	---	访问网站服务器			   ---	发送HTTP请求报文
    服务端	---	响应客户端请求			   ---	回复HTTP响应报文
    客户端	---	浏览器看到网站页面
    客户端	---	结束访问网站过程		   ---	完成TCP四次挥手过程
    

    DNS域名解析过程

    打开浏览器:输入www.baidu.com
    在本地主机上寻找域名对应IP地址信息
    	本地DNS缓存
    	寻找本地hosts文件
    寻找LDNS服务器
    	LDNS查看本地缓存中是否有百度的IP地址
    根域名服务器
    顶级域名服务器
    二级域名服务器
    

    DNS结构图

    DNS解析流程图

    OSI七层模型

    TCP/IP五层模型

    TCP报文格式

    TCP三次握手

    syn(1):请求建立连接控制字段
    fin(1):请求断开连接控制字段
    ack(1):数据信息确认控制字段
    seq:序号
    
    LISTEN      	---	侦听来自远方TCP端口的连接请求;
    SYN-SENT    	---	在发送连接请求后等待匹配的连接请求;
    SYN-RECEIVED	---	在收到和发送一个连接请求后等待对连接请求的确认
    ESTABLISHED 	---	代表一个打开的连接,数据可以传送给用户;
    CLOSED      	---	没有任何连接状态;
    

    TCP三次握手过程

    1. 第一次握手
      发送syn请求建立连接控制字段,发送seq序列号信息(0),第一个数据包的序列号默认为0
    2. 第二次握手
      发送syn请求建立连接控制字段,同时还会发送ack确认控制字段,发送seq序列号信息也为0,还会发送ACK确认号(上一个seq序列号)信息(对上一个数据序列号信息进行确认)
    3. 第三次握手
      发送ack确认控制字段,发送seq序列号信息(1),发送ack确认号(1)

    TCP四次挥手

    TCP四次挥手过程

    1.    第一次挥手
      发送fin请求断开连接控制字段
      
    2.    第二次挥手
      发送ack确认控制字段
      
    3.    第三次挥手
      发送fin请求断开连接字段,发送ack确认字段
      
    4.    第四次挥手
      发送ack控制字段
      

    TCP的十一种状态集

    TCP三次握手:

    LISTEN 侦听来自远方TCP端口的连接请求;
    SYN-SENT 在发送连接请求后等待匹配的连接请求;
    SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认;
    ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
    CLOSED 没有任何连接状态;

    TCP四次挥手:

    ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
    FIN-WAIT1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
    FIN-WAIT2 从远程TCP等待连接中断请求;
    CLOSE-WAIT 等待从本地用户发来的连接中断请求;
    CLOSING 等待远程TCP对连接中断的确认;*
    LAST-ACK 等待原来发向远程TCP的连接中断请求的确认;
    TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
    CLOSED 没有任何连接状态;

    HTTP协议

    ​ HTTP协议,全程HyperTextTtansferProtocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议.HTTP的重要应用之一是www服务,设计HTTP协议最初的目的就是提供一种发布和接受HTML(一种页面标记语言)页面的方法(请求 返回)
    ​ HTTP协议是互联网上最常用的通信协议之一,她有很多应用,但最流行的是基于Web浏览器和Web服务器之间的通信,即www应用或Web应用.
    ​ WWW,全程World Wide Web,通常为Web.HTTP协议的WWW服务应用的80(端口的概念)
    ​ 另外一个加密的www服务应用https的默认端口为443,主要用于网银,支付和钱相关的业务.

    HTTP协议版本

    HTTP:1.0 TCP短连接
    HTTP:1.1 TCP长连接
    HTTP:2.0 TCP长连接 --- 提高用户并发(同时)访问的效率

    HTTP协议资源信息

    URL:全称为Uniform Resource Location,中文翻译为统一资源定位符
    URI:全称为Uniform Resource Identifier,中文翻译为统一资源标识符
    docs.ansible.com / ansible/latest/user_guide/playbooks.html
    URL URI

    静态资源

    特点说明:

    1. 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。
    2. 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,当网站信息量很大时,
      完全依靠静态网页比较困难(缺点)。
    3. 网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
    4. 当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)。

    动态资源

    1. 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等。
    2. 动态资源页面会出现 "?" "&", 不便于被搜索引擎收录
    3. 接收到用户请求,需要让动态服务和数据库服务进行处理

    伪静态资源

    1. 可以便于搜索引擎进行收录
    2. 有数据库服务支持,实现网页交互功能

    HTTP协议响应过程

    HTTP请求方法

    HTTP方法 作用描述
    GET 客户端请求指定资源信悤,服务器返回指定资源
    HEAD 只请求响应报文中的 HTTP首部
    POST 将客户端的数据提交到服务器,例:注册表单
    PUT 用从客户端向服务器传送的数据取代指定的文档内容。
    DELETE 请求服务器删除 Request-URI所表示的资源。
    MOVE 请求服务器将指定的页面移至另一个网络地址。

    HTTP的响应状态码分类

    常见响应状态码解释

    使用curl查看状态码

    curl -I -s -w "%{http_code}
    " -o /dev/null  www.baidu.com
    

    HTTP请求报文

    请求头信息说明

    请求头内容 说明
    Host 接受请求的服务器地址,可以是IP:端口号,也可以是域名
    User-Agent 发送请求的应用程序名称
    Connection 指定与连接相关的属性,如Keep-Alive
    Accept-Charset 通知服务端可以发送的编码格式
    Accept-Encoding 通知服务端可以发送的数据压缩格式

    HTTP响应报文

    响应头信息说明

    响应头 说明
    Server 服务器应用程序软件的名称和版本
    Content-Type 响应正文的类型(是图片还是二进制字符串)
    Content-Length 响应正文长度
    Content-Charset 响应正文使用的编码
    Content-Encoding 响应正文使用的数据压缩格式
    Content-Language 响应正文使用的语言

    用户访问流程总结

    1.用户输入域名->浏览器跳转->浏览器缓存->Hosts 文件->DNS 解析( 递归查询 | 迭代查询 )
    客户端向服务端发起查询->递归查询
    服务端向服务端发起查询->迭代查询
    2.由浏览器向服务端发起 TCP 连接(三次握手)
    客户端 -->请求包连接-syn=1 seq=x 服务端
    服务端 -->向应客户端 syn=1 ack=x+1 seq=y 客户端
    客户端 -->建立连接 ack=y+1 seq=x+1 服务端
    3.客户端发起 http 请求:
    1.请求的方法是什么: Get 获取
    2.请求的 Host 主机是: www.opesn.com
    3.请求的资源是什么: /index.html
    4.请求的端口是什么: 默认 http 是 80 https 443
    5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等)
    6.请求最后的空行
    4.服务端响应的内容是
    1.服务端响应使用的 WEB 服务软件
    2.服务端响应请求文件的类型
    3.服务端响应请求的文件是否进行压缩
    4.服务端响应请求的主机是否进行长连接
    5.客户端向服务端发起 TCP 断开(四次挥手)
    客户端 --> 断开请求 fin=1 seq=0 --> 服务端
    服务端 --> 响应断开 ack=1		 --> 客户端
    服务端 --> 断开连接 fin=1 seq=0 --> 客户端
    客户端 --> 确认断开 ack=1		 --> 服务端
    
  • 相关阅读:
    一些jquery常用方法
    如何判断js中的数据类型
    SDL结合QWidget的简单使用说明(2)
    C++引用详解
    SDL结合QWidget的简单使用说明
    Qt::浅谈信号槽连接,参数在多线程中的使用
    Qt::带返回值的信号发射方式
    Windows:子线程中创建窗口
    Qt:小项目仿QQ修改头像界面,技术点记录
    Qt::QWindow多窗口争抢置顶状态解决方案
  • 原文地址:https://www.cnblogs.com/opesn/p/11399510.html
Copyright © 2011-2022 走看看