美文网首页我爱编程
计算机网络基础-HTTP协议

计算机网络基础-HTTP协议

作者: 勤息嘻嘻嘻 | 来源:发表于2018-04-03 09:33 被阅读21次

    1.HTTP协议采用 请求/响应 的工作方式,流程如下:
    1.服务器不断监听TCP端口80(等待客户端发出连接请求)
    2.客户端发送连接建立 请求
    3.双方建立TCP连接
    4.客户端向服务器发送页面请求(形式=HTTP请求报文)
    5.服务器向客户端返回页面请求的响应
    6.关闭TCP连接

    2.HTTP 在应用层交互数据的方式=报文,报文分为 请求报文&响应报文

    2.1请求行
    作用:请求行:声明 请求方法、主机域名、资源路径&协议版本
    结构:请求行的组成=请求方法+请求路径+协议版本
    请求方法:定义 对请求对象的操作 共8种 GET、POST、HEAD、DELETE、PUT、TRACE、CONNECT、OPTION 最常用的是GET、POST、HEAD 若服务器=RESTful接口,则一般会用到GET、POST、DELETE、PUT
    请求路径:URL中对的请求地址部分。
    若URL=http://www.baidu.com/,则请求路径=/
    若URL=http://www.weibo.com/288/home,则请求路径=/288/home
    URL:统一资源定位符,一种自愿位置的抽象唯一标识。表示资源位置&访问资源的方法。由<协议>://<主机>:<端口>/<路径>组成
    协议版本:定义HTTP的版本号。常用版本:HTTP/1.0、HTTP/1.1、HTTP/2.0
    GET :发送的数据存放在URL中:直接附加在URL后、利用1个问号代表URL的结尾&请求参数的开始,URL的长度最长=2048个字符,传递参数的数据类型只允许ASCII字符,安全性差
    POST:传递参数长度不受限制,参数的数据类型无限制,安全性好

    2.2请求头
    作用:声明 客户端、服务器/报文的部分信息
    使用方式:采用“header(字段名):value(值)”的方式
    2.2.1 请求和响应报文的通用Header

    名称 作用
    Content-Type 请求体/响应体的类型,如text/plain、application/json
    Accept 说明接收的类型,可以多个值,用,(半角逗号)分开
    Content-Length 请求体/响应体的长度,单位字节
    Content-Encoding 请求体/响应体的编码格式,如gzip,deflate
    Accept-Encoding 告知对方我方接收的Content-Encoding
    ETag 给当前资源的标识,和Last-Modified、If-None-Match、If-Modified-Since配合,用于缓存控制
    Cache-Control 取值为一般为no-cache或max-age=XX,XX为个整数,表示该资源缓存的有效期(秒)

    2.2.2 常见请求Header

    名称 作用
    Authorization 用于设置身份认证信息
    User-Agent 用户标识,如:OS和浏览器的类型和版本
    If-Modified-Since 值为上一次服务器返回的Last-Modified值,用于确认某个资源是否被更改过,没有被更改过(304)就从缓存中读取
    If-None-Match 值为上一次服务器返回ETag值,一般会和If-Modified-Since一起出现
    Cookie 已有的Cookie
    Referer 表示请求引用自哪个地址,比如你从页面A跳转到页面B时,值为页面A的地址
    Host 请求的主机和端口号

    2.3 请求体
    作用:存放 需要发送给服务器的数据信息(Get请求无请求数据)
    使用方式共3种
    数据交换:请求体可任意类型,但服务器需额外解析 比如 {"name":"html","year":"5"}
    键值对:键与值之间用“=”连接,每个键值对间用“&”连接 比如 key1=value1&key2=value2
    分部分形式:请求体被分为多个部分 每段以--{boundary}开头=描述头 描述头后空一行接 内容 每段以--{boundary}--结束

    2.4 请求报文示例
    请求信息
    请求行:请求方法=GET、URL 地址为:http://www.tsinghua.edu.cn/chn/yxsz/index.htm、协议版本:HTTP1.1
    请求头:请求报文希望表明 主机域名&用户代理(Netscape浏览器)
    请求体:存放的数据=键值对

    请求报文示例
    (请求行)GET/chn/yxsz/index.htm HTTP/1.1
    (请求头)Host:www.tsinghua.edu.cn(表示主机域名)
    User-Agent:Mozilla/5.0 (表示用户代理是使用Netscape浏览器)
    (空行)(用于隔开请求头和请求体)
    (请求体)key1=value1&key2&value2

    3.HTTP响应报文
    包括状态行:声明 协议版本,状态码,状态码描述
    响应头:声明 客户端、服务器/报文的部分信息
    响应体:存放 需发送的数据信息

    3.1状态行
    作用:声明协议版本,状态码,状态码描述
    组成:状态行有协议版本、状态码、状态信息组成
    协议版本:表示 服务器HTTP协议的版本 常用版本HTTP/1.0、HTTP/1.1、HTTP/2.0
    状态码:表示 服务器返回的响应状态代码
    状态信息:对状态码的简单解释
    比如:3位十进制数字组成,分为5大类:
    1xx:表示信息通知,如请求收到了或正在进行处理
    2xx:表示成功,如接受或知道了
    3xx:表示重定向,如果完成请求还必须采取进一步行动
    4xx:表示客户端错误,请求包含语法错误/无法实现
    5xx:表示服务器错误,服务器不能实现一种明显无效的请求
    例子:
    200:请求成功,请求内容与该响应一起返回
    202:请求已被接受,但还没处理
    301:请求的资源已被永久移动到新的位置
    302:请求的资源被临时移动到新的位置
    400:请求参数有误,当前请求无法被服务器理解
    401:请求需要验证用户
    403:不允许访问该地址
    404:Not Found
    408:请求超时
    500:服务器内部错误
    502:Bad Gateway网关出错

    HTTP/1.1 202 Accepted(接受)、HTTP/1.1 404 Not Found(找不到)

    3.2 响应头
    3.2.1 请求和响应报文的通用头(和请求头一样)
    3.2.2 常见响应Header

    名称 作用
    Date 服务器的日期
    Last-Modified 该资源最后被修改时间
    Transfer-Encoding 取值一般为chunked,出现在Content-Length不能确定的情况下,表示服务器不知道响应版体的数据大小,一般同时还会出现Content-Encoding响应头
    Set-Cookie 设置Cookie
    Location 重定向到另一个URL 如输入浏览器就输入baidu.com 会自动跳转到 https://www.baidu.com,就是通过这个响应头控制的
    Server 后台服务器

    3.3 响应体
    作用:存放需返回给用户端的数据信息
    使用方式:和请求体是一致的,同样分为:任意类型的数据交换格式、键值对形式和分不分形式

    4.http与https的区别
    http 原理:应用层 功能:不加密 性能:不安全 使用标准端口80 不需要ca申请证书

    https原理:传输层 功能:加密(SSL加密,身份认证) 性能:安全 使用标准端口443 需要申请ca证书

    相关文章

      网友评论

        本文标题:计算机网络基础-HTTP协议

        本文链接:https://www.haomeiwen.com/subject/glcqhftx.html