zoukankan      html  css  js  c++  java
  • http

    TCP/IP通信的传输流流程
    TCP/IP通信的传输流的整个流程:
    http(客户端)<->TCP<->IP<->网络<->网络<->IP<->TCP<->http(服务端)
    这个流成大概是这样的:首先作为发送端的客户端在应用层(http协议)发出一个想看xxx.xxx.com网站的http请求。接着,为了方便传输,在传输层(TCP协议)把从应用层收到的数据(http请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。然后在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层,到这里发往网络请求就准备好了。接受端的服务器在链路层接收到数据,按序往上发送,一直到应用层,这样才算服务端接收到客户端发送过来的http请求。

    从浏览器输入到看到页面的过程
    首先用户输入URL,接着此URL会被DNS解析找到对应的IP地址,然后会与目标服务器建立TCP链接(TCP链接也叫着TCP三次握手,所谓的三次握手就是,客户端一开始给服务端发送一个带SYN标志的数据包;服务端
    接收到后,会给客户端发送一个SYN/ACK标志到数据包;然后客服端接收到了再给服务端发送一个ACK的数据包;这样三次握手完成后就建立起了TCP链接);建立好链接后,TCP协议还会将http请求的报文分割成报文段,按序号分为多个报文段,发送给对应的服务端;然后服务端的TCP协议接收到报文段后,按序号以原来的顺序重组报文段,然后服务端找到对应的内容返回给浏览器。此时浏览器开始解析该返回文档,首页浏览器会先解析HTML,生成DOM树,再解析css,生成规则树,最后结合两者,生成渲染树,在生成渲染树的过程中浏览器会调用GPU绘制,合成图层,显示在屏幕上。

    HTTP所有请求方法的作用
    1.GET
    作用:用来请求访问已被URI识别的资源。
    2.POST
    作用:用来传输实体的主体。
    3.PUT
    作用:用来传输文件。
    4.HEAD
    作用:获取报文首部。
    5.DELETE
    作用:用于删除文件,跟put刚好相反。
    6.OPTIONS
    作用:用来查询针对请求URI指定的资源支持的方法。

    HTTP的持久链接
    在请求头设置Connection:keep-alive(http1.1默认为持久链接)

    设置Cookie
    响应头设置set-cookie
    请求头设置cookie

    http状态码
    状态码有一下几种类型:
    1xx:接收的请求正在处理

    100 //继续 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
    101 //切换协议 请求者已要求服务器切换协议,服务器已确认并准备切换。

    2xx:请求正常处理完毕

    200 //成功 服务器已经成功处理了请求。通常,这表示服务器提供了请求的网页。
    201 //已创建 请求成功并且服务器创建了新的资源
    202 //已接受 服务器已接受请求,但尚未处理
    203 //非授权信息 服务器已经成功处理了请求,但返回的信息可能来自另一来源
    204 //无内容 服务器成功处理了请求,但没有返回任何内容
    205 //重置内容 服务器成功处理了请求,但没有返回任何内容
    206 //部分内容 服务器成功处理了部分GET请求

    3xx:需要进行附加操作以完成请求

    300 //多种选择 针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
    301 //永久移动 请求的网页已永久移动到新位置。服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
    302 //临时移动 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
    303 //查看其它位置 请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码
    304 //未修改 自动上次请求后,请求的网页未修改过。服务器返回此响应,不会返回网页的内容
    305 //使用代理 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理
    307 //临时性重定向 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有的位置来进行以后的请求

    4xx:服务器无法处理请求

    400 //错误请求 服务器不理解请求的语法
    401 //未授权 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应
    403 //禁止 服务器拒绝请求
    404 //未找到 服务器找不到请求的网页
    405 //方法禁用 禁用请求中指定的方法
    406 //不接受 无法使用请求的内容特性响应请求的网页
    407 //需要代理授权 此状态码与401(未授权)类似,但指定请求者应当授权使用代理
    408 //请求超时 服务器等候请求时发生超时
    409 //冲突 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
    410 //已删除 如果请求的资源已永久删除,服务器就会返回此响应
    411 //需要有效长度 服务器不接受不含有效内容长度标头字段的请求
    412 //未满足前提条件 服务器未满足请求者在请求者设置的其中一个前提条件
    413 //请求实体过大 服务器无法处理请求,因为请求实体过大,超出了服务器的处理能力
    414 //请求的URI过长 请求的URI(通常为网址)过长,服务器无法处理
    415 //不支持媒体类型 请求的格式不受请求页面的支持
    416 //请求范围不符合要求 如果页面无法提供请求的范围,则服务器会返回此状态码
    417 //未满足期望值 服务器未满足“期望”请求标头字段的要求

    5xx:服务器处理请求出错

    500 //服务器内部错误 服务器遇到错误,无法完成请求
    501 //尚未实施 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码
    502 //错误网关 服务器作为网关或代理,从上游服务器无法收到无效响应
    503 //服务器不可用 服务器目前无法使用(由于超载或者停机维护)。通常,这只是暂时状态
    504 //网关超时 服务器作为网关代理,但是没有及时从上游服务器收到请求
    505 //HTTP版本不受支持 服务器不支持请求中所用的HTTP协议版本

    总结常用的状态码:
    200:表示从客户端发到服务端的请求被正常处理成功
    204:表示服务端接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
    206:表示客户端进行了范围请求,而服务端成功执行了这部分的GET请求
    301:表示永久重定向
    302:表示临时重定向
    304:表示服务端资源未改变,可直接使用客户端未过期的缓存
    400:表示请求报文中存在语法错误
    401:表示发送的请求需要有HTTP认证(BASIC认证,DIGEST认证)的认证信息
    403:表示服务端拒绝了客户端的请求访问
    404:表示服务端未找到客户端请求的地址
    500:表示服务端在执行请求时发生的错误
    503:表示服务端暂时处于超负荷或正在进行停机维护

    HTTP和HTTPS
    什么是HTTP?
    HTTP是以超文本传输的协议作为规范,完成从客户端到服务端等一系列运作流程。
    (也可以说它是连接客户端->网关->服务端的一个流程)
    优点:
    快速简单,灵活,无链接,无状态
    缺点:
    通信使用明文,内容可能被窃听;
    不验证通信方的身份,因此有可能遭遇伪装;
    无法证明报文的完整性,有可能已遭篡改

    什么是https?
    http加上加密处理和认证以及完整性保护(SSL)后即HTTPS
    优点
    HTTPS的优点就是HTTP的缺点的相反。
    缺点:
    慢,更耗CPU及内存资源,还有一个就是需要一笔够买证书的费用

    什么是SSL:
    ssl是独立HTTP协议的,是当今世界上应用最为广泛的网络安全技术。它采用的加密方式是公开密钥加密的加密处理方式。

  • 相关阅读:
    基于AVPlayer的音乐播放器
    java中关于正则一些基础使用
    随笔08.09
    我的Android笔记--我对安卓系统的一些了解
    2016/06/16
    Objective-C(iOS)严格单例模式正确实现
    Swift轻松入门——基本语法介绍和详细地Demo讲解(利用WebView打开百度、新浪等网页)
    GCD学习之dispatch_barrier_async
    iOS自学之NSOperation、NSOperationQueue、Background
    docker run mysql
  • 原文地址:https://www.cnblogs.com/xiewangfei123/p/13364275.html
Copyright © 2011-2022 走看看