01.Java Web开发入门 - 第2章.HTTP协议简介

转载自https://www.cnblogs.com/FudgeBear,他的课堂笔记很好,为了加深记忆,我也在word中跟着重新打了一遍。

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

HTTP protocol:是1个请求响应式协议

       Client –-> server : http 请求

       Client <-- server : http 响应

       1个request + 1个 response = 1个http事务

       任意2个http事务都是independent的 –> 无状态

 

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

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

       TCP/IP分层模型:

扫描二维码关注公众号,回复: 3503943 查看本文章

              (Application Layer)应用层协议:比如HTTP protocol

              (Transport Layer)传输层协议:比如TCP protocol(保证数据传输有序可靠的协议)--端口号,默认80

              (Network Layer)网络层协议:定位,比如ip地址,IP地址一般比较不好记忆,可以用对应的域名。(域名到IP地址之间的解析:由DNS(domin Name System)Server来完成)

              通过域名以及端口号可以定位到唯一服务。

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

 

浏览网页的过程模拟:

       域名:example.com

              -->DNS服务器

              IP地址:93.184.216.34

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

              连接建立成功

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

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

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

 

使用抓包工具抓到

HTTP请求包(报文):

HTTP请求行: GET / HTTP/1.1

       GET --- 请求方法:get,post,head,put,options,delete,trace,connect

       /   --- 资源路径

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

       \r\n --- 文本结尾(换行)

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

       格式:key:value \r\n

       Host --- 域名,主机名

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

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

 

HTTP响应(报文格式):

      

状态行 --- HTTP/1.1 200 OK \r\n

       HTTP/1.1 --- 协议版本

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

       OK --- 原因

       常见状态码:

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

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

              一般以3开头的状态码都是与重定向以及缓存相关的。

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

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

       \r\n --- 表示结束符

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

       格式与请求头的格式类似

       比如:

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

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

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

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

       响应头跟响应体的分隔符:空行(\r\n)

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

 

通过Chrome浏览器开发者工具来跟踪响应的过程:

       打开开发者工具,选择Network选项。

       进入www.example.com

       会得到一个HTTP请求过程。(注意,假如再次刷新网页,状态码显示304,此时勾选Disable cache,则状态码会变为200)

大神的作业:

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

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

猜你喜欢

转载自blog.csdn.net/liujingjie2010/article/details/82886065