GVKun编程网logo

Http协议(http协议属于什么协议)

15

在本文中,我们将为您详细介绍Http协议的相关知识,并且为您解答关于http协议属于什么协议的疑问,此外,我们还会提供一些关于Http协议的头的注解、Go语言中的TCP/IP协议和HTTP协议、htt

在本文中,我们将为您详细介绍Http协议的相关知识,并且为您解答关于http协议属于什么协议的疑问,此外,我们还会提供一些关于Http协议的头的注解、Go语言中的TCP/IP协议和HTTP协议、https协议为什么比http协议更加安全、https协议比http协议更好体现在哪些方面的有用信息。

本文目录一览:

Http协议(http协议属于什么协议)

Http协议(http协议属于什么协议)

 

Http协议

一、概述

HTTP(Hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间相互通信规则。

HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。客户端发送给服务器的格式叫"请求协议";服务器发送给客户端的格式叫"相应协议"。

特点:

  • HTTP叫超文本传输协议,基于请求/相应模式

  • HTTP是无状态协议。

URL:统一资源定位符,就是个网络地址:协议名://域名:端口/路径

二、请求协议

1 请求首行;  //请求方式 请求路径 协议和版本,例如:GET /index.html HTTP/1.1
2 请求头信息;  //请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
3 空行;  // 用来与请求体分割开
4 请求体;  // GET没有请求体,只有POST有请求体

注:在HTTP协议中,请求有很多请求方法,其中最为常用的就是GET和POST。

2.1 GET请求

HTTP默认的请求方法就是GET

  •没有请求体

  •数据必须在1K之内

  •GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:

  1.在浏览器的地址栏中直接给出URL,就一定是GET请求

  2.点击页面上的超链接也一定是GET请求

  3.提交表单时,表单默认使用GET请求,但可以设置为POST

 1 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
 2 Accept-Encoding:gzip, deflate, sdch
 3 Accept-Language:zh-CN,zh;q=0.8
 4 Cache-Control:no-cache
 5 Connection:keep-alive
 6 Cookie:csrftoken=z5H43ZwARx7AIJ82OEizBOWbsAQA2LPk
 7 Host:127.0.0.1:8090
 8 Pragma:no-cache
 9 Upgrade-Insecure-Requests:1
10 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36
11 Name
12 login/
13 requests ❘ 737 B transferred ❘ Finish: 5 ms ❘ DOMContentLoaded: 14 ms ❘ Load: 14 ms

  •Host:localhost:请求的主机名

  •*User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的;

  •Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收;

  •Accept-Language: zh-cn,zh;q=0.5当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;

  •Accept-Encoding: gzip, deflate支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;

  •Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7客户端支持的编码;

  •Connection: keep-alive客户端支持的链接方式,保持一段时间链接,默认为3000ms

  •Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送去过;这个Cookie的名字为JSESSIONID

 2.2 POST请求

  1、数据不会出现在地址栏中

  2、数据的大小没有上限

  3、有请求体

  4、请求体重如果存在中文,会使用URL编码(username=%E5%BC%A0%E4%B8%89&password=123)

表单发POST请求,默认是GET

1 <form action="" method="post">
2     用户名:<input type="text" name="username">
3     <input type="submit" value="提交"/>
4 </form>
 1 Request Headers
 2 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
 3 Accept-Encoding:gzip, deflate
 4 Accept-Language:zh-CN,zh;q=0.8
 5 Cache-Control:no-cache
 6 Connection:keep-alive
 7 Content-Length:13
 8 Content-Type:application/x-www-form-urlencoded
 9 Cookie:csrftoken=z5H43ZwARx7AIJ82OEizBOWbsAQA2LPk
10 Host:127.0.0.1:8090
11 Origin:http://127.0.0.1:8090
12 Pragma:no-cache
13 Referer:http://127.0.0.1:8090/login/
14 Upgrade-Insecure-Requests:1
15 User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) 
16            AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.89 Safari/537.36
17 
18 Form Data
19 username:yuan
请求体
1 Referer请求头是比较有用的一个请求头,它可以用来做统计工作,也可以用来做防盗链。
2 统计工作:我公司网站在百度上做了广告,但不知道在百度上做广告对我们网站的访问量是否有影响,那么可以对每个请求中的Referer进行分析,如果Referer为百度的很多,那么说明用户都是通过百度找到我们公司网站的。
3 防盗链:我公司网站上有一个下载链接,而其他网站盗链了这个地址,例如在我网站上的index.html页面中有一个链接,点击即可下载JDK7.0,但有某个人的微博中盗链了这个资源,它也有一个链接指向我们网站的JDK7.0,也就是说登录它的微博,点击链接就可以从我网站上下载JDK7.0,这导致我们网站的广告没有看,但下载的却是我网站的资源。这时可以使用Referer进行防盗链,在资源被下载之前,我们对Referer进行判断,如果请求来自本网站,那么允许下载,如果非本网站,先跳转到本网站看广告,然后再允许下载。
Referer应用

三 相应协议

3.1 相应内容

1 响应首行;
2 响应头信息;
3 空行;
4 响应体;
响应格式

响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。

Request URL:http://127.0.0.1:8090/login/
Request Method:GET
Status Code:200 OK
Remote Address:127.0.0.1:8090
Response Headers
view source
Content-Type:text/html; charset=utf-8
Date:Wed, 26 Oct 2016 06:48:50 GMT
Server:WSGIServer/0.2 CPython/3.5.2
X-Frame-Options:SAMEORIGIN

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/login/" method="post">
  用户名:<input type="text" name="username"/>
  <input type="submit" value="提交"/>
</form>    
</body>
</html>

  •HTTP/1.1 200 OK响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;

  •Server:WSGIServer/0.2 CPython/3.5.2:服务器的版本信息;

  •Content-Type: text/html;charset=UTF-8响应体使用的编码为UTF-8

  •Content-Length: 724响应体为724字节;

  •Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello响应给客户端的Cookie

  •Date: Wed, 25 Sep 2012 04:15:03 GMT响应的时间

3.2 状态码

响应头对浏览器来说很重要,他说明了响应的真正含义

  •200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;

  •404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;

  •500:请求资源找到了,但服务器内部出现了错误;

  •302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;

3.3 HTML中指定响应头

  在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,例如在index.html页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.baidu.com.

<Http协议>Http协议的头的注解

Http协议的头的注解

一、HTTP协议

1.1协议的作用及版本

1.1.1HTTP是Hyper Text Transfer Protocol(超文本--html传输协议)。

1.1.2HTTP协议的作用用户描述客户端与服务器间的数据传递的。

1.1.3:Http协议的版本:

1.0:特点:每次请求服务器上的资源都要建立新的连接,响应完毕后都会关闭连接。是无状态的协议。

1.1:特点:在一次TCP/IP连接的基础上可以发出多次请求和得到多次的响应。比1.0多了一些请求和响应头。

1.2协议的组成

1.2.1请求部分:

GET /App1/1.html HTTP/1.1

Accept: */*

Accept-Language: zh-cn

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)

Host: localhost:8080

Connection: Keep-Alive

username=admin&password=123

请求部分由三部分组成的:

请求行:位于第一行

请求消息头:从第二行开始至第一个空行结束

请求正文:从第一个空行之后的都是正文

1.2.2响应部分:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Accept-Ranges: bytes

ETag: W/"65-1366335797484"

Last-Modified: Fri, 19 Apr 2013 01:43:17 GMT

Content-Type: text/html

Content-Length: 65

Date: Fri, 19 Apr 2013 02:06:23 GMT

Warnning:w1

Warnning: w2


hello http

<a href="b.html">click</a>

<img src="1.jpg"/>


响应部分由三部分组成的:

响应行:位于第一行

响应消息头:从第二行开始至第一个空行结束

响应正文:从第一个空行之后的都是正文

1.3协议详细讲解

请求行:GET /App1/1.html HTTP/1.1

GET:请求方式。默认的请求方式。其他常用的请求方式还有POST。

GET的特点:默认的请求方式。

/App1/c.html?username=sdsfds&password=234324

把表单的请求的数据放在了请求的URI的后面。?username=sdsfds&password=234324

这样不好:暴露数据;请求行长度有限。

POST的特点(经常使用的):借助HTML中的form表单。<form action="c.html" method="post">

请求参数出现在正文部分。长度木有限制。相对安全。

---------------------------

/App1/1.html:请求的资源的URI。

---------------------------

HTTP/1.1:客户端使用的协议的版本

响应行:HTTP/1.1 200 OK

HTTP/1.1:服务器用的协议版本

200:响应码。代表服务器处理的结果的一种表示

200:正常

302/307:重定向

304:服务器的资源没有被修改

404:请求的资源不存在

500:服务器报错了

OK:响应码描述

请求消息头:向服务器传递附加信息

Accept:通知服务器,浏览器可以接受的MIME类型。(文件系统中用文件扩展名区分数据的类型。网络上用MIME类型来区分数据类型。Tomcat\conf\web.mxl)

MIME类型名称:大类型/小类型

Accept-Charset:通知服务器,浏览器支持的字符集

Accept-Encoding:通知服务器,浏览器能够解码的数据压缩方式。比如:gzip

Accept-language:通知服务器,所希望的语言

Host:请求的主机和端口

*Referer:是一个URL地址。取值是当前页面之前的那个页面地址的。防盗链

*Content-Type:通知服务器,请求正文的MIME类型。

取值:application/x-www-form-urlencoded默认值

对应的是form表单的enctype属性

If-Modified-Since:通知服务器,缓存的文件的最后修改时间。

User-Agent:通知服务器,浏览器类型.

Content-Length:表示请求消息正文的长度 

Connection:表示是否需要持久连接。如果服务器看到这里的值为“Keep -Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接 

*****Cookie:这是最重要的请求头信息之一(会话有关)

响应消息头:

*Location:通知客户端,指示新的资源的位置(结合302/307来用。请求重定向)

Server:通知客户端,服务器的类型

*Content-Encoding:通知客户端,响应正文的压缩编码方式。常用的是gzip。

*Content-Length:通知客户端响应正文的数据大小

*Content-Type:通知客户端响应正文的MIME类型

*Refresh:让浏览器自动刷新。取值为整数(刷新的时间间隔,单位是秒)

Refresh:3

Refresh:3;URL=其他资源的URI

*Content-Disposition:通知客户端,以下载的方式打开资源。

Content-Disposition:attachment;filename=1.jpg

*****Set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie(会话有关)

*Expires: -1             网页的有效时间。单位是毫秒

*Cache-Control: no-cache (1.1)  

*Pragma: no-cache   (1.0)                               通知客户端不要缓存


Go语言中的TCP/IP协议和HTTP协议

Go语言中的TCP/IP协议和HTTP协议

go语言是由google团队开发的一门开源的编程语言,其设计出发点是在构建大型软件项目时可以更有效地利用硬件资源,并保持代码的简洁性和高可读性。作为一门现代化的编程语言,go内置了对tcp/ip协议和http协议的支持,这使得go语言在网络编程领域有着广泛的应用。

TCP/IP协议是传输控制协议/因特网协议(Transmission Control Protocol/Internet Protocol)的简写,是一种常用的网络通信协议。TCP/IP协议族包括了许多协议,其中最为核心的是TCP和IP协议。TCP负责确保网络上的数据能够正确地传输到目的地,并且在传输过程中未丢失、未被损坏、未被重复发送。而IP协议则负责网络标识和路由转发。

在使用Go语言开发网络应用时,我们可以使用Go语言内置的net包中提供的TCP编程接口来实现TCP/IP协议。由于Go语言具有天然的并发性和高并发处理能力,因此使用Go语言实现TCP服务器程序相对于其他编程语言更加简单。以下是一个简单的使用Go语言实现TCP服务器的示例代码:

package main

import (
    "fmt"
    "net"
)

func main() {
    listener, err := net.Listen("tcp", "localhost:8000")
    if err != nil {
        fmt.Printf("Error: %v
", err.Error())
        return
    }
    defer listener.Close()

    fmt.Println("Server started")

    for {
        conn, err := listener.Accept()
        if err != nil {
            fmt.Printf("Error: %v
", err.Error())
            break
        }
        go handle(conn)
    }
}

func handle(conn net.Conn) {
    defer conn.Close()

    // 这里可以实现数据的读取和处理逻辑
}
登录后复制

在这个代码示例中,我们首先通过在本地监听8000端口来创建一个TCP服务器,然后通过使用for循环保持服务器不断地等待新的客户端请求。当有新的客户端连接到服务器时,我们就调用handle函数来处理连接。在handle函数中,我们可以实现数据的读取和处理逻辑,最后关闭连接。

HTTP协议是超文本传输协议(Hypertext Transfer Protocol)的简写,是在Web开发中广泛使用的一种应用层协议。HTTP协议基于TCP协议,它定义了客户端和服务器之间的通信规则。在Web应用中,我们通常通过HTTP协议来传递HTML、CSS、JavaScript等各种类型的文件,实现Web应用程序的交互和数据传输。

立即学习“go语言免费学习笔记(深入)”;

与TCP/IP协议一样,Go语言内置的标准库中也提供了对于HTTP协议的支持。通过使用http包,我们可以很容易地创建一个HTTP服务器或客户端。以下是一个简单的使用Go语言实现HTTP服务器的示例代码:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8000", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World!")
}
登录后复制

在这个代码示例中,我们首先调用http包中的HandleFunc函数来处理HTTP请求,然后通过使用ListenAndServe函数在本地监听8000端口来创建一个HTTP服务器。最后,我们在handler函数中实现了完整的HTTP请求处理逻辑,并通过fmt包将响应输出给客户端。

综上所述,Go语言内置了对于TCP/IP协议和HTTP协议的支持,这使得Go在网络编程领域有着广泛的应用。通过使用Go语言,我们可以快速、简单地创建TCP服务器和HTTP服务器,实现高效的网络应用程序。因此,Go语言在Web应用程序开发中有着非常广泛的应用前景。

以上就是Go语言中的TCP/IP协议和HTTP协议的详细内容,更多请关注php中文网其它相关文章!

https协议为什么比http协议更加安全

https协议为什么比http协议更加安全

一、http协议

  http协议是一种网络传输协议,规定了浏览器和服务器之间的通信方式。位于网络模型中的应用层。(盗图小灰。ヾ(◍°∇°◍)ノ゙)

 

 

  但是,它的信息传输全部是以明文方式,不够安全,很容易被人拦截,篡改传输内容。

篡改后:

 

 二、使用对称加密方式

  为了保证通信的安全,浏览器和服务之间约定使用一种对称加密的方式通信。在信息发送之前,使用相同的秘钥对数据进行加密和解密。

  这种方式的数据虽然在网络中是以密文呈现,但是在首次发送秘钥时,确实以明文方式发送,很容易被人截取,然后解密通信数据。仍然存在很大的安全隐患,所以一般采用非对称加密方式来发送对称加密的秘钥。

三、使用非对称加密方式

  非对称加密包含一组秘钥,公钥和私钥,明文可以用公钥加密,用私钥解密,并且只能用私钥解密,不能用公钥解密;也可以用私钥加密,公钥解密,并且只能有公钥解密。

  如下过程实现发送对称加密秘钥:

    1、浏览器生成一个随机秘钥。

    2、浏览器向服务器请求公钥。

    3、服务器向浏览器发送它的公钥。

    4、浏览器接收服务器发送的公钥,并使用公钥加密随机生成的对称加密秘钥,发送给服务器。

    5、服务器接收浏览器发送的数据,用自身私钥解密,得到,对称加密秘钥。

    6、至此,浏览器和服务器可以使用对称加密秘钥相互通信。

 

但是,这种方式仍然存在安全隐患:即在第3步和第4步之间,中间人在服务器发送公钥给浏览器时,截断数据,并修改成自己的公钥发送给浏览器。这时浏览器无法验证公钥的准确性。只会使用接收到的公钥把对称秘钥加密,发送出去。这时,中间人截断数据,使用自己的私钥解密,得到对称秘钥,并使用服务器的公钥重新加密对称秘钥,发送给服务器。然后,浏览器和服务器在毫不知情的情况下,使用对称秘钥进行通信。但中间人由于已经掌握了对称秘钥,所以可以轻松解密通信数据。

这里很明显存在一个身份验证的问题,只要能让浏览器验证得到的公钥来源,对称秘钥就可以安全发送。这就需要数字证书了。

四、使用https数字证书保证数据安全

  我们已经知道,非对称加密需要身份验证,那么数字证书如何验证身份。

  首先,数字证书是第三方机构,给网站办法的唯一身份证明,就像身份证,该证书中包含一个重要的信息,数字签名,下图中的指纹即时数字签名。指纹是使用服务端网址等信息,通过签名算法,计算出hash值,并使用第三发机构的私钥加密生成的。证书中,同时还会保存有颁发证书的机构名称,即第三发机构名称、网站的公钥、有效期等信息。

  当浏览器请求公钥时,服务端不单单发送公钥,而是发送包含公钥的数字证书。

  浏览器如何解密:浏览器已经维护了所有知名的第三发机构,在接收到证书时

    1、首先查看是否在有效期内,若失效则不再发送随机对称秘钥;

    2、找到第三方机构名称,通过对照找到第三发机构公钥,解密数字签名,得到一个hash1值。

    3、通过同样的方式,根据服务端网址等信息,使用签名算法,生成hash2.

    4、将hash1和hash2,对比,如果相同,则身份验证成功。

    5、身份验证成功后,使用同样的机构公钥解密网站公钥。

    6、浏览器使用解密后的公钥发送对称秘钥给服务端。

补充: 1、数字签名和网站公钥都是经过机构秘钥加密过的,所以数字签名验证成功,即可保证网站公钥的准确性。

    2、如果中间人将数字证书换成自己的数字证书,则会因为网站地址不同而导致验证数字签名失败。

 五、SSL安全层

   https的主体思想是在,tcp/ip模型上加了ssl层,上述的安全验证就是载ssl层完成的。

 

https协议比http协议更好体现在哪些方面

https协议比http协议更好体现在哪些方面

为什么https协议比http协议好?https协议是指在http协议加上SSL证书,然后构建出可进行加密传输、身份认证的网络协议。https协议比http协议更好体现在哪些方面?安信证书为您详细解答。

一、安全方面:

https是现在网络技术中,最安全的网络传输协议。https协议是由SSL+http协议构建的、比http更安全的网络协议。可以认证用户和服务器,确保数据发送到正确的客户手里,并在传输过程中防止数据的窃取、改变,保障了数据的完整性。

综上所述,https协议在安全方面比http协议,更能够保护网站的安全。

二、搜索引擎方面:

在搜索引擎中,https协议的网站站点更能够得到搜索引擎的扶持,就拿百度搜索引擎对于http的站点进行了平台支持、展现支持、其他相关支持等。平台支持就是百度站长平台已经可以完美支持https协议的网站的验证,并且准备了相应的数据提交接口,第一时间进行https网站进行数据接收;抓取支持就是百度站长对于https的网站都进行了升级服务,相比于http的网站协议跟有优先住区的机会;展现支持就是百度站长平台对于https的站点进行一定程度的优先展示。

三、网站的获利方面:

http协议更安全后,对网站的评价会相对高一些,对网站的落地页面体验也能更加优质。这样的网站用户体验效果更好。

总的来说https比https更加安全,能够有效的保护网站用户的隐私信息安全,这也是为什么现在的https网站越来越多。要想实现https并不难,给网站申请一张SSL证书就能实现。

安信证书专售Symantec、GeoTrust、Comodo、DigiCert、RapidSSL、Thawte、GlobalSign、AlphaSSL等多家全球权威CA机构的SSL数字证书,SSL证书种类齐全,而且提供免费安装、免费重签、30 天无条件退款等服务。

今天关于Http协议http协议属于什么协议的讲解已经结束,谢谢您的阅读,如果想了解更多关于Http协议的头的注解、Go语言中的TCP/IP协议和HTTP协议、https协议为什么比http协议更加安全、https协议比http协议更好体现在哪些方面的相关知识,请在本站搜索。

本文标签: