zoukankan      html  css  js  c++  java
  • http协议详解

    HTTP协议:超文本链接协议,是一种互联网中应用最广泛的网络协议。

    一、http的协议特点可以分为一下几种:

    1.支持c/s模式

    2.传输内容灵活,可以支持所有传输内容类型。

    3.无状态协议,服务器不保存客户端的连接状态,节省了服务器的工作负担。

    HTTP是一种基于客户端/服务器模式的应用层协议,通常客户端使用的是浏览器,在浏览器上方输入一个url即可访问目标服务器的url,url的具体结构如下。

    http://[host]:[port]/[abs]

    一个url包含了使用的协议类型http/https、目标主机的域名或者ip地址、访问目标服务器应用运行的端口(在缺省情况下默认是80),以及访问目标服务器的相对路径,如果没有则必须用/的形式给出。

    我们在浏览器输入一个www.baidu.com的时候,浏览器会自动帮我们将其填充为https://www.baidu.com/。

    输入完url之后,浏览器会向目标服务器发送链接请求,这个链接一般是基于tcp/ip协议簇的,但是http并没有规定一定要使用tcp/ip协议,只是假定要运行在可靠的链接协议之上,所以使用其他协议或者网络调用http协议也是可行的。

    二、HTTP请求:

    http的请求头可以分为三个部分:请求行,请求报头,请求正文。

    1.请求行以请求方法开头,之后接着请求的url,最后是使用的协议类型(HTTP1.0/HTTP1.1/HTTP2.0)

    例:GET https://www.baidu.com/ HTTP2.0

    2.请求报头

    常见请求头:

    referer:表示是从哪个url跳转过来的,通常可以使用防御csrf攻击,但可以被篡改。

    accept:告诉服务器可以接受的相应数据类型,专业术语为MIME类型。

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    text/html,html文件

    text/css,css文件

    text/javascript,js文件

    image/*,所有图片文件

    cookie:客户端携带的cookie信息。

    User-Agent:浏览器通知服务器,客户端浏览器与操作系统相关信息

    Connection:表示客户端与服务连接类型;Keep-Alive表示持久连接,close已关闭

    host:请求的主机名

    content-length:请求体的长度

    Cache-Control:指定请求和响应遵循的缓存机制

    三、HTTP响应

    http的响应也是由三个部分组成的:状态行,消息报头,响应正文。

    1.状态行形式由http协议类型(HTTP1.0/HTTP1.1/HTTP2.0),响应码,状态码的文本描述组成。

    例:HTTP2.0 200 OK

    状态码由三个数字组成,第一个数字代表了响应的类别,且有五种可能的取值:

    1xx:指示信息,表示请求已经接受,继续处理

    2xx:成功,表示请求已经被成功接收处理

    3xx:重定向,要完成此请求必须完成重定向操作

    4xx:客户端错误,请求有语法错误或者无法达到

    5xx:服务器错误,服务器未能实现会话

    状态码的文本描述分为:

    200 OK

    400 BAD REQUEST

    401 Unauthorized

    403 Forbidden

    404 Not Found

    500 Internet Server Error

    503 Server Unavailable

    2.消息报头

     

    Location:指定相应的路径,需要配合302进行重定向。

    Set-cookie:向客户端写入cookie信息。

    Server:指定的是服务器的容器。apache nginx

    四、HTTP请求详细过程

    当我们在浏览器输入一个地址WWW.QQ.COM到网页回显到我们的浏览器上,一般经过一下几个步骤

    1.dnslookup,根据我们在浏览器输入的域名,我们会根据dns协议去寻找对应的ip地址,来访问目标主机

    2.客户端与服务器建立tcp链接,三次握手:syn,synack,ack

    3.客户端封装请求报文

    4.客户端发送请求报文

    5.服务器接收请求报文并解析

    6.WSGI数据解析,将『请求报文』封装城HtttpRequest对象:WSGI Web Server Gateway Interface 服务器网关接口

    7.WSGI 进行协议解析,将HttpResponse对象封装成『响应报文』

    8.HTTP Server将『响应报文』发送给客户端

    9.关闭tcp链接,四次握手fin,ack,fin,ack(如果connection:keep-alive则不关闭tcp链接)

    10.客户端接受『响应报文』

    11.解析报文渲染成网页。

  • 相关阅读:
    03 Logistic Regression
    01 Linear Regression with One Variable
    00 Introduction
    virsh使用
    Linux配置输入设备(如停用笔记本键盘)
    linux安装ipconfig等网络工具
    软件工程团队第五次作业
    团队第四次作业
    软件工程团队第三次作业
    软件工程团队第二次作业
  • 原文地址:https://www.cnblogs.com/zllovellyo/p/12555762.html
Copyright © 2011-2022 走看看