Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介
第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 \r\n
GET --- 请求方法:GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE, CONNECT
/ --- 资源路径
HTTP/1.1 --- HTTP协议版本(目前常用1.1)
\r\n --- 文本结尾(换行)
HTTP请求头:从Host到最后一行
格式:key: value \r\n
e.g.:
Host:域名,主机名,虚拟主机
Connection:使用keep-alive 一个连接可以发多个请求,请求结束可以不disconnect
User-Agent:发起请求的应用程序(服务器端决定返回的版本(pc or phone))
HTTP请求体:此例为简单的GET请求,故无请求体
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:(服务器端在请求时出错了)(一般5开头表示服务器端内部的错误)
\r\n --- 结束符
响应头 --- 从Accept-Ranges到Content-Length
格式与请求头的格式差不多
e.g.:
Server:服务器端使用什么应用程序来返回响应
Content-Type:资源内容的类型(如HTML, 音频,视频等)
Content-Length:内容长度(如果一条连接上有多个请求的话,需要指定一个资源长度来找边界)
响应体 --- 响应头之后的部分
响应头和响应体的分隔符:空行(\r\n)
响应体可以是文本或二进制,一般情况下大小由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
Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介的更多相关文章
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第6章.蜂巢
第6章--蜂巢 蜂巢简介 网站开发完,就需要测试.部署.在服务器上运行. 网易蜂巢: 采用Docker容器化技术的云计算平台 https://c.163.com 容器管理:容器可被视作为云主机的服务器 ...
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第5章.Git
第5章--Git 版本控制简介 VCS (version control system) 版本控制系统:记录若干文件的修订记录的系统,帮助查阅/回到某个历史版本 LVCS本地 CVCS集中式(Cent ...
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第4章.Maven
第4章--Maven Maven实战 Java Web应用的部署: 手动式: 编译:javac -cp $CATALINA_HOME/lib/servlet-api.jar web-inf/class ...
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第3章.Tomcat
第3章--Tomcat Tomcat安装与运行 Tomcat:目前最常用的基于java的web应用服务器 本课程中所有的Java代码最终都需要部署到Tomcat中运行 Tomcat的配置文件是XML的 ...
- Java开发工程师(Web方向) - 01.Java Web开发入门 - 第1章.Web应用开发概述
第1章--Web应用开发概述 Web应用开发概述 浏览器-服务器架构(BS-architecture) browser/ App ---- request ----> server ...
- Java后端开发工程师是否该转大数据开发?
撰写我对java后端开发工程师选择方向的想法,写给在java后端选择转方向的人 背景 看到一些java开发工程师,对java后端薪酬太悲观了.认为换去大数据领域就会高工资.觉得java后端没有前途.我 ...
- Java软件工程师面试题:Java运行时异常与一般异常有什么不一样?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误.java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕 ...
- 【转】测试开发工程师必备软硬能力&高级测试开发工程师需要具备什么能力?
对于测试的基本知识,可以查看软件测试相关书籍 对于在公司成为一位优秀的测试开发工程师,我觉得下面这篇文章涉及到的是我们需要的,稍微进行改动https://blog.csdn.net/sinat_210 ...
- Android开发工程师面试题总结。android开发面试经验
1:Android中五种数据存储方式分别是什么?他们的特点? (1)SharedPreference,存放较少的五种类型的数据,只能在同一个包内使用,生成XML的格式存放在设备中 (2) SQ ...
随机推荐
- ASP.NET Core MVC的路由参数中:exists后缀有什么作用,顺便谈谈路由匹配机制
我们在ASP.NET Core MVC中如果要启用Area功能,那么会看到在Startup类的Configure方法中是这么定义Area的路由的: app.UseMvc(routes => { ...
- 微信小程序,搜索结果关键词高亮 wxml不能动态识别html标签
wxml中使用rich-text标签放置动态html标签 js:
- Eclipse 中打开选中文件/文件夹所在目录
习惯了使用VS中的 ”通过右键打开选中文件/文件夹在电脑中的目录”功能后, 当切换到Eclipse环境后,发现居然找不到这个功能, 虽可以通过右键文件属性,看到文件路径,复制路径然后在资源管理器中打开 ...
- 【若泽大数据实战第二天】Linux命令基础
Linux基本命令: 查看IP: ifconfig 或者 hostname -i(需要配置文件之后才可以使用) ipconfig(Windows) 关闭防火墙: Service iptables st ...
- Git-2.15.1.2-64-bit安装
方法/步骤 我们在百度搜索git,然后在git的官网上找到git的下载页面,如下图所示.在首页在Downloads处选择下载Windows版本,当然您可以根据需求下载其他版本的安装文件. ...
- 帝国CMS如何禁止内容关键字替换ALT和title中的关键词为链接
很多帝国cms用户喜欢使用关键字替换来实现文章自动内链的方法. 为什么要用关键词替换功能呢?这关系到站内优化,下面直接进入正题. 解决办法:打开e/class/functions.php 查找 '/' ...
- 第9章 HBase操作
目录 9.1 集群环境搭建 1.上传解压HBase安装包 2.hbase-env.sh文件配置 3.hbase-site.xml文件配置 4.regionservers文件配置 5.拷贝hbase到其 ...
- 虚拟机搭建hadoop的步骤
1.首先是安装Vmware Workstation,下载地址:https://www.vmware.com/products/workstation-player/workstation-player ...
- json传值给前端页面,出现堆栈溢出问题
用的com.alibaba.fastjson.JSONObject这个包 原因:JSONObject将对象转json字符串时候没有关闭循环引用导致的堆栈溢出. 解决办法是 使用这个 JSONObjec ...
- python爬xx图代码
今日 好热,照样是挖洞挖不到,看了几天的python爬虫,学会了xpath解析 撸一个代码玩玩] 不要说什么,优化之类的,刚学完,跑了一阵 ,还可以 挺稳定 # -*- coding:utf-8 - ...