• Java开发工程师(Web方向)


    第2章--HTTP协议简介

    HTTP协议简介 

    Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟踪调试一次HTTP请求。

    HTTP protocol: 请求响应式协议:

    client -->  server : HTTP 请求   

    client <--  server : HTTP 响应

    一个HTTP请求和一个HTTP响应 -->  一次HTTP事务

    任意两次HTTP事务都是independent的 --> 无状态

    协议分层:不同的协议完成不同的功能

    多种分层模型:TCP/IP协议栈分层模型,OSI分层模型(七层),etc.

    TCP/IP分层模型:

    (Application Layer) 应用层协议:i.e HTTP protocol(HTTP请求和响应)

    (Transport Layer) 传输层协议:i.e TCP protocol(保证通讯数据有序可靠的协议)-- 端口号(默认80)

    (Network Layer)网络层协议:定位(i.e IP地址 e.g. 93.184.216.34) --不好记-> 对应域名:baidu.com

    域名到IP之间的解析:由DNS (Domain Name System) Server(域名解析服务器)来完成

    通过域名对应到IP地址,加上端口号 可以定位唯一服务

    (Host-to-network Layer) 数据链路层 & 物理传输层:数据传输

     

    浏览网页的过程模拟:

    域名:example.com

    --> DNS服务器

    IP地址:93.184.216.34

    浏览器端connect to服务器端(IP地址已知):TCP连接

    连接建立成功

    浏览器端可以向服务器端发起HTTP请求

    服务器端可以做出对应的HTTP响应

    浏览器端渲染并展示HTML文件

     

    HTTP请求和响应的报文:

    在浏览器地址栏输入域名:http://www.example.com:80/blahblah...

    http://   -- 协议(浏览器默认为http协议,可省略)

    www.example.com   --  域名

    :80     --  端口号(默认为:80,可省略)

    /blahblah...   --  资源路径

     

    使用抓包工具抓到的HTTP请求包:(报文)

    HTTP请求行:GET / HTTP/1.1

    GET  ---  请求方法:GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE, CONNECT

    /  ---  资源路径

    HTTP/1.1   ---   HTTP协议版本(目前常用1.1)

     ---   文本结尾(换行)

    HTTP请求头:从Host到最后一行

    格式:key: value

    e.g.:

    Host:域名,主机名,虚拟主机

    Connection:使用keep-alive 一个连接可以发多个请求,请求结束可以不disconnect

    User-Agent:发起请求的应用程序(服务器端决定返回的版本(pc or phone))

    HTTP请求体:此例为简单的GET请求,故无请求体

     

    HTTP响应(报文格式):

    状态行   ---   HTTP/1.1 200 OK

    HTTP/1.1   ---   协议版本

    200   ---   状态码:表示HTTP响应的状态

    OK   ---   原因

    常见状态码:

    200 OK:请求成功(一般以2开头的都是表示请求成功)

    304 Not Modified:(请求码与缓存相关:如果浏览器端有缓存时,在请求服务器对应资源时,服务器不用再次返回);

    (一般以3开头的都是与重定向和缓存相关的)

    404 Not Found:(服务器端找不到资源)

    500 Internal Server Error:(服务器端在请求时出错了)(一般5开头表示服务器端内部的错误)

      ---   结束符

    响应头   ---   从Accept-Ranges到Content-Length

    格式与请求头的格式差不多

    e.g.:

    Server:服务器端使用什么应用程序来返回响应

    Content-Type:资源内容的类型(如HTML, 音频,视频等)

    Content-Length:内容长度(如果一条连接上有多个请求的话,需要指定一个资源长度来找边界)

    响应体   ---   响应头之后的部分

    响应头和响应体的分隔符:空行( )

    响应体可以是文本或二进制,一般情况下大小由Content-Length响应头来指定

     

    通过Chrome来跟踪响应的过程:

    打开developer-->tools 开发者工具

    进入www.example.com

    得到一个HTTP请求的过程

    (www.example.com的状态码是304;若勾选Disable cache,则状态码会为200)

    点击www.example.com查看details

    HTTP协议单元测验:https://my.oschina.net/iwinder/blog/779717

    HTTP协议单元作业:https://my.oschina.net/hava/blog/734416

     

  • 相关阅读:
    tp5项目后台比赛界面
    总结7.21 lavarel视图
    总结7.20 laravel自动验证
    java学习day78--JT项目16(CORS跨域/HttpCLient/jt-sso单点登录)
    java学习day77-JT项目15(Ajax跨域访问/JSONP)
    java学习day77-JT项目15(Redis集群算法/spring boot整合redis集群)
    java学习day76-JT项目14(Redis集群搭建)
    java学习day76-JT项目14(Redis分片机制/哨兵机制)
    检查Linux中发现没有IP
    java学习day75-JT项目13(AOP实现redis缓存/Redis缓存)
  • 原文地址:https://www.cnblogs.com/FudgeBear/p/7233891.html
Copyright © 2020-2023  润新知