两个必看协议-最全面-最直接-最暴力-一篇文章带你读懂-HTTP、HTTPS
Web服务基础知识
我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等。
当我们输入https://blog.csdn.net/xie_qi_chao时候,很快就能看到超哥的博客了,这一切看起来很平淡无奇,背后又是什么道理呢?
普通人可以不知道,但是咱们作为it开发人员,必须得掌握清楚背后的技术。
下面超哥为你揭晓用户访问网站的基本流程
讲了一天课感觉很累,下了班躺床上打开他的macbook pro,双击浏览器,输入www.pythonav.com网址后,系统首先会查找本地的DNS缓存以及hosts文件信息,确定是否存在www.pythonav.com域名对应的ip解析记录,如果有就直接获取ip进行访问服务器,第一次请求时,dns缓存是没有解析记录的,hosts文件多数是开发临时测试用
如果本地dns缓存和hosts文件都没有域名解析记录,系统就会把某python总监访问的网址解析请求发送给客户端设置的DNS服务器去解析,也叫做Local DNS,如果LDNS服务器的本地缓存有对应的解析记录就会直接返回给客户端IP地址,如果没有LDNS就会继续请求其他的DNS服务器
LDNS继续从DNS系统的”.”(根)开始请求www.pythonav.com域名的解析,并且根据每个层级的DNS服务器系统进行系列的查找,最终在DNS网络上找到www.pythonav.com域名对应的授权DNS服务器。这个授权DNS服务器就是企业(个人)购买域名时用于管理域名解析的服务器,服务器上有对应的域名(IP)解析。
此时授权的DNS服务器就会把www.pythonav.com对应的IP解析记录,例如(1.1.1.1)发送给LDNS
此时LDNS会把解析记录发给浏览器,并且缓存域名和IP的解析记录,便于下一次更快的返回请求
浏览器获得ip,请求对应的服务器,网站服务器接收到客户端的请求开始响应处理,将内容返回给浏览器,然后某python总监拿出了一盒清风牌抽纸。。。。
图解dns
1.DNS域名解析,获取域名对应服务器IP地址
windows查看dns本地缓存
c:\>ipconfig /displaydns 显示缓存内容
c:\>ipconfig /flushdns 清除DNS缓存
c:\Windows\system32\drivers\etc\hosts hosts解析文件
2.根据ip地址访问网站服务,TCP三次握手
3.用户向网站服务请求信息,HTTP请求报文
4.网站对用户请求进行相应,HTTP相应过程
5.断开网络链接,TCP四次挥手
HTTP协议
Http协议,全称是HyperText Tansfer Protocol,中文叫超文本传输协议,是互联网最常见的协议。Http最重要的是www(World Wide Web)服务,也叫web服务器,中文叫“万维网”。
web服务端口默认是80,另外一个加密的www服务应用https默认端口是443,主要用于支付,网银相关业务
1.什么是超文本?
包含有超链接(Link)和各种多媒体元素标记的文本。这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page)。这些链接使用URL表示。最常见的超文本格式是超文本标记语言HTML。
html文件->包含各种各样的元素(URL链接)->形成web page简称web页面。
版本
http协议诞生以来有若干个版本,主要是http/1.0 http/1.1
http/1.0规定浏览器和服务器只能保持短暂的连接,浏览器的每次请求都需要和服务器建立一个TCP连接,服务器完成请求后即断开TCP连接,服务器不跟踪每个链接,也不记录请求
http/1.1是对HTTP的缺陷进行重点修复,从可扩展性,缓存,带宽优化,持久连接,host头,错误通知等访问改进。
http/1.1支持长连接,增加了更多的请求头和响应头信息,例如配置请求头的Connection的值为keep-alive,表示请求结果返回后保持连接
Http请求方法
在HTTP通信中,每个请求报文都包含一个方法,以告诉web服务器端需要执行哪些操作,这些动作被称为HTTP的请求方法
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
HTTP状态码
HTTp状态码表示web服务器响应http请求状态的数字代码
常见状态码以及作用是
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
HTTP状态码的命令查看
curl -I www.oldboyedu.com
Server: OES
Date: Sun, 12 Aug 2018 04:18:24 GMT
Content-Type: text/html
Content-Length: 152
Connection: keep-alive
Location: https://www.oldboyedu.com/
HTTP报文
什么是HTTP请求报文
HTTP请求由请求行,请求头部,空行,请求报文主体几个部分组成
HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。
请求报文的格式:
起始行: <method> <request-URL> <version>
头部: <headers>
主体: <entity-body>
GET请求报文示例:
GET /books/?sex=man&name=Professional HTTP/1.1Host: www.example.com 主机名User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1 客户端类型Accept-Encoding:gzip,deflate 支持压缩Accept-Language:zh-cn 支持语言类型Connection: Keep-Alive 长链接
请求行
请求报文第一行,表示客户端想要什么
由请求方法 url 协议版本 组成
请求头部
请求头由
关键字 : 值 组成
通过客户端把请求相关信息告诉服务器
空行
请求头信息之后是一个空行,发送回车和换行符,通知web服务器以下没有请求头信息了
请求报文主体
POST / HTTP/1.1Host: www.example.comUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1Content-Type: application/x-www-form-urlencodedContent-Length: 40Connection: Keep-Alivesex=man&name=Professional请求体中包含了要发送给web服务器的数据信息,请问报文主体不用于get方法,而是用于post方法。
post方法适用于客户端填写表单的场合。
HTTP响应报文
HTTP 响应与 HTTP 请求相似,HTTP响应也由3个部分构成,分别是:
状态行
响应头(Response Header)
响应正文
状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。
状态行,用来说明服务器响应客户端的状况,一般分为协议版本号,数字状态码,状态情况响应头部
常见响应头信息
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 13 Aug 2018 06:06:54 GMT
Expires: Mon, 13 Aug 2018 06:06:54 GMT空白行
通知客户端空行以下没有头部信息了
响应报文主体
主要包含了返回给客户端的数据,可以是文本,二进制(图片,视频)
HTTP响应例子
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
<html>...
URl介绍
url中文叫“统一资源标识符”,是一个用于标识某一互联网资源名称的字符串,在世界范围内标识定位某一个唯一信息资源。
那什么是URL,URL简称统一资源定位符。那URL的组成部分是由协议, 域名:端口, 路径和文件名
例如
#访问一张郭达的照片
http://www.pythonav.cn/man.jpg
url主要用在各种www客户端和服务器程序上,url可以用一种统一的格式来描述各种信息资源,包括文件,服务器地址和目录等
url组成
协议
主机ip或域名
主机资源具体地址
第一部分用”
两个必看协议-最全面-最直接-最暴力-一篇文章带你读懂-HTTP、HTTPS相关推荐
- 两个相邻盒子的边框怎么只显示一个_一篇文章带你快速理解盒子模型「经典案例」...
今天带大家快速理解盒子模型,直接上代码: css盒子 我的css盒子测试模型 上面代码没有任何难度,只是写了一个div标签,大家已经知道,div标签是块级元素,所以会占满一行: 但是我们也注意到了图片 ...
- 一篇文章带你详解 TCP/IP 协议(下)
前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议(上) 本文继续讲解第四章. 四.网络层中的 IP 协议 IP(IPv4.IPv6)相当于 OSI 参考模型中的 ...
- 一篇文章带你详解 HTTP 协议(下)
文章目录,方便阅读: 一.概述(已讲) 二.HTTP 工作过程(已讲) 三.HTTP 协议基础(已讲) 四.HTTP 协议报文结构(已讲) 五.HTTP 报文首部之请求行.状态行(已讲) 六.HTTP ...
- 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)
涤生_Woo 2017年11月11日阅读 15544 关注 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机 ...
- 一篇文章带你熟悉 TCP/IP 协议-(三)
一篇文章带你熟悉 TCP/IP协议-(一)-https://segmentfault.com/a/11... 一篇文章带你熟悉 TCP/IP协议-(二)-https://segmentfault.co ...
- 一篇文章带你详解 HTTP 协议
一篇文章带你详解 HTTP 协议 本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 ...
- 简书大佬的笔记:一篇文章带你详解 HTTP 协议(网络协议篇一)
一篇文章带你详解 HTTP 协议(网络协议篇一) 本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP ...
- 一文带你读懂HTTP协议的前世今生
点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...
- 一篇文章带你看懂以及实现加解密技术中的信息防篡改、一码一检、过期失效、多种实现方式
一篇文章带你看懂以及实现加解密技术中的信息防篡改.一码一检.过期失效.多实现方式 导语 一.简介 二.代码功能介绍以及源码 2.1.AbstractRsa 类 2.2 RsaUtils 类 2.3 R ...
最新文章
- 把Array说透(续一)
- Visual Studio中的Build和Rebuild区别
- 2008 noip 传纸条
- Linux 中vim编辑器学习笔记
- mysql数据库后台命令备份_使用MySQL命令行备份及恢复数据库
- (100)Vivado TCL命令概述
- 在开启bin-log日志下Mysql报错
- mysql 字段_【MySql】mysql 字段个数的限制
- 对比了解Grafana与Kibana的关键差异
- Hello,Java!(娱乐)
- 吃桃子削不削皮 如何吃有保证
- c jave等语言作用,编程语言的前世今生,看 Java、C、C++ 等语言的演变
- 爱陆通研习社,水利RTU、环保数采仪、遥测终端机定义,4G5G课堂
- python获取虎牙弹幕_教你用20行代码爬取直播平台弹幕(附源码)
- 腾讯 Robotics X 轮腿式机器人
- 奥维互动地图 墨卡托(Mercator)投影 最新资源
- 关闭mybatis 日志
- vs如何调出黑色的界面主题
- 目前见过最好的物联网系统项目,功能完整,代码结构清晰!
- 建立二叉树并实现层序遍历