zoukankan      html  css  js  c++  java
  • 图解HTTP

    一、网络基础TCP/IP

    (一)TCP/IP协议族

    1、TCP/IP是互联网相关的各类协议族的总称

    2、HTTP属于TCP/IP协议族内部的一个子集

    3、协议

    计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言进行通信、怎样结束通信等规则都需要事先确定。不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)

    (二)TCP/IP的分层管理

    TCP/IP协议族按层次分别分为以下四层:应用层、传输层、网络层和数据链路层

    1、应用层:决定了向用户提供应用服务时通信的活动。

    FTP(文件传输协议)、DNS(域名系统) 、SMTP(简单邮件传输协议)、Telnet(Internet远程登陆服务标准协议)、HTTP(超文本传输协议)协议都在该层

    2、传输层:传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。

    TCP(传输控制协议)和UDP(用户数据报协议)在该层

    3、网络层(又名网络互连层):用来处理在网络上流动的数据包,规定/选择传输路线,把数据包传送到对方计算机

    数据包是网络传输的最小数据单位。IP协议在该层

    4、链路层(又名数据链路层,网络接口层):用来处理连接网络的硬件部分。

    (三)TCP/IP通信传输流

    拿HTTP举例

    首先,作为发送端的客户端在应用层(HTTP协议)发出一个想看某个web页面的HTTP请求。

    接着,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。

    在网络层(IP协议) ,增加作为通信目的地的MAC地址后转发给链路层。

    接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层

     封装

    发送端在层与层之间传输数据时,每经过一层时,必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时,会把对应的首部消去。这种把数据信息包装起来的做法称为封装

    (四)与HTTP关系密切的协议:IP、TCP和DNS

    1、IP协议:负责传输,把各种数据包传送给对方。

    IP间的通信依赖MAC地址。在网络上,通信的双方在同一局域网内的情况是很少的,通常是经过多台计算机和网络设备的中转才能连接到对方。

    ARP:解析地址的协议,根据通信方的IP地址可以反查出对应的MAC地址

    2、TCP协议:确保可靠性,提供可靠的字节流服务。

    字节流服务:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

    可靠的传输服务:能够把数据准确可靠地传给对方。

    TCP的三次握手:握手过程中使用了TCP的标志-----SYN(使同步)和ACK(确认)

    发送端首先发送一个带SYN标志的数据包给对方

    接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息

    最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束

    3、DNS服务:负责域名解析,提供域名到IP地址之间的解析服务

    (五)IP协议、TCP协议和DNS服务在使用HTTP协议的通信过程中各自发挥的作用

    (六)URI和URL

    URI:统一资源标识符

    URL:统一资源定位符

    URL是URI的子集

    二、简单的HTTP协议

    请求报文:由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成

    响应报文:基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

    HTTP是一种不保存状态,即无状态协议,也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理

    (一)HTTP方法

    GET:获取资源(1.0、1.1)

    POST:传输实体主体(1.0、1.1)

    PUT:传输文件(1.0、1.1)

    HEAD:获得报文首部(1.0、1.1)

    DELETE:删除文件(1.0、1.1)

    OPTIONS:询问支持的方法(1.1)

    TRACE:追踪路径(1.1)

    CONNECT:要求用隧道协议连接代理(1.1)

    LINK:建立和资源之间的联系(1.0)

    UNLINK:断开连接关系(1.0)

    (二)持久连接和管线化

    持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态

    管线化:同时并行发送多个请求

    (三)cookie

    cookie技术:通过在请求和响应报文中写入cookie信息来控制客户端的状态

    cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入cookie值后发送出去。服务器端发现客户端发送过来的cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息

     三、HTTP报文

    (一)HTTP报文:用于HTTP协议交互的信息被称为HTTP报文

    HTTP报文组成:报文首部和报文主体

    (二)请求报文和响应报文的首部内容由以下数据组成

    1、请求行

    2、状态行

    3、首部字段:包含表示请求和响应的各种条件和属性的各类首部

    4、其他

    四、HTTP状态码

    以3位数字和原因短语组成

      类别 原因短语
    1XX 信息性状态码 接收的请求正在处理
    2XX 成功状态码 请求正常处理完毕
    3XX 重定向状态码 需要进行附加操作以完成请求
    4XX 客户端错误状态码 服务器无法处理请求
    5XX 服务器错误状态码 服务器处理请求出错

    1、200 OK:请求已正常处理

    2、204 No Content:请求处理成功,但没有资源可返回

    3、206 Partial Content:客服端进行了范围请求,服务端成功的执行了这部分的GET请求

    4、301 Moved Permanently:永久性重定向

    5、302 Found:临时性重定向

    6、303 See Other:请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源:

    7、304 Not Modified:资源已找到,但未符合条件请求

    8、307 Temporary Redirect:临时重定向

    9、400 Bad Request:请求报文中存在语法错误

    10、401 Unauthorized:需认证/认证失败

    11、403 Forbidden:不允许访问请求的资源

    12、404 Not Found:服务器上没有请求的资源

    13、500 Internal Server Error:内部资源出故障了,服务器在执行请求时发生了错误,也可能是Web应用存在的bug或某些临时的故障

    14、503 Service Unavailable:服务器暂时处于超负荷或正在进行停机维护,现在无法处理请求

    五、HTTPS

    HTTP+加密+认证+完整性保护=HTTPS

    HTTPS是身披SSL外壳的HTTP

    应用(HTTP)
    TCP
    IP
    应用(HTTP)
    SSL
    TCP
    IP

    HTTP                                                                                                                                                                 HTTPS                  

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。

    六、Cookie管理Session会话

    1、客户端发送请求到服务器

    2、把用户的认证状态与Session ID绑定后记录在服务器端,向客户端返回响应时,会在首部字段Set-Cookie内写入Session ID

    3、客户端保存有Session ID的Cookie,下次请求时,服务器端验证接收到的Session ID识别用户和其认证状态                                               

        

  • 相关阅读:
    C#多线程学习笔记(三)——线程池
    html解析工具
    怎么样获取手机的主题
    我改进的《豆瓣搜》前后对比及源代码
    【收藏】Silverlight Style (二) 自定义样式在后台代码中应用
    C#多线程学习笔记(一)
    学习Linux——学习正确的思考方式(转)
    电信禁路由上网的破解方法
    印度软件业
    中国与印度软件工程师之比较
  • 原文地址:https://www.cnblogs.com/suitcases/p/9275014.html
Copyright © 2011-2022 走看看