• HTTP网络协议讲解


    HTTP网络协议

    什么是HTTP?

    HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它基于TCP/IP通信协议来传递数据。

    简单来说,它就是一种约定协议,一种客户端跟服务端之间的约定协议。

    什么是协议?

    计算机和计算机之间的通讯语言叫做协议,不同的计算机之间要使用相同的协议才能进行通信。

    HTTP的网络通信过程

    HTTP协议工作于客户端和服务端之间,整个通信过程,浏览器会作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求,会向客户端发送响应信息。

    URL组成:

    1.协议部分该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等。

    2.域名/ip该URL的域名部分为www.baidu.com, 或:http://180.101.49.12,它们同为百度网址

    3.端口部分跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。如果没有,那么说明URL使用的是默认端口。

    4.路径从域名后的第一个“/”开始到最后一个“/”为止,是路径部分。

    5.参数部分从“?”开始到“#”为止之间的部分为参数部分,又称查询参数。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

    HTTP报文

    客户端与服务器之间的信息传递使用的载体叫做报文,报文分为请求和响应两个部分。

    请求报文:

    客户端发送数据给服务器的过程叫做请求报文

    格式:

    请求行:包含请求方法,要访问的资源以及所舒勇的HTTP版本

    请求头部:说明服务器要使用的附加信息

    空行:请求报文头部后的空行是必须的

    请求体:get往往不存在请求体,post请求体包含请求的参数

    请求方法:

    GET:请求获取Request-URI所标识的资源。

    POST:在Request-URI所标识的资源后附加新的数据。

    HEAD:请求获取由Request-URI所标识的资源的响应消息报头。

    PUT:请求服务器存储一个资源,并用Request-URI作为其标识。

    DELETE:请求服务器删除Request-URI所标识的资源。

    TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。

    CONNECT:保留将来使用。

    OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。

    在实际应用中常用的请求方法是GET和POST。

    GET和POST的区别:

    1.从参数的传递方面来看:GET请求的参数是直接拼接在地址栏URL的后面,而POST请求的参数是放到请求体里面的。

    2.从长度限制方面来看:GET请求有具体的长度限制,一般不超过1024KB,而POST理论上没有,但是浏览器一般都有一个界限。

    3.从安全方面来看:GET请求相较于POST,因为数据都是明文显示在URL上面的,所以安全和私密性不如POST。

    4.从功能方面来说,GET是从服务器上获取数据,POST是向服务器传送数据。

    响应报文:

    格式:

    1.响应行(状态行):协议版本,状态码,成功与失败的状态信息。

    2.响应头部:由一些键值对构成,用来说明客户端要使用的一些附加信息。

    3.空行:响应头部后面的空行是必须的。

    4.响应数据(响应正文):服务器返回给客户端的数据等信息内容。

    状态码及分类

    当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头用以响应浏览器的请求。

    常见的状态码分类

    https和http有什么区别

    https是http的安全版本,也叫超文本安全传输,https是有加密传输协议的通道,并且SSL提供了安全加密基础,https主要是用于http的传输,并且在HTTP与TCP之间有一个特殊的加密/身份验证。

    端口:https的端口是443,而http的端口是80,当然两者的连接方式也是不太一样的。

    传输数据:http传输是明文的,而https是用ssl进行加密的,https具有安全性。

    申请证书:https传输一般是需要申请证书,申请证书可能会需要一定的费用,而http不需要。


     福利

  • 相关阅读:
    Centos7 ELK 8.2 集群配置
    Apache RocketMQ
    微信小程序开发10 订阅消息:提高小程序用户留存
    CUDA、cudNN 、CUDAToolKit三者关系
    第十章:异常
    linux中执行.sh文件出现/bin/sh^M: bad interpreter: No such file or directory
    MySQL主从复制(基于GTID--事务ID方式)
    Flink CDC-MySQL CDC配置及DataStream API实现代码...可实现监控采集多个数据库的多个表
    为什么现在很多人特别排斥用微信打电话
    WASI support in Go
  • 原文地址:https://blog.csdn.net/fx20211108/article/details/125435462