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		 --> 服务端
    
  • 相关阅读:
    SP笔记:交叉实现七行并成一行
    HTML tag 学习
    操作哈希表
    Efficient bipedal robots based on passivedynamic walkers
    Pushing People Around
    ZEROMOMENT PONTTHIRTY FIVE YEARS OF ITS LIFE

    Active Learning for RealTime Motion Controllers
    Accelerometerbased User Interfaces for the Control of a Physically Simulated Character
    Dynamic Response for Motion Capture Animation
  • 原文地址:https://www.cnblogs.com/opesn/p/11399510.html
Copyright © 2011-2022 走看看