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相关推荐

  1. 两个相邻盒子的边框怎么只显示一个_一篇文章带你快速理解盒子模型「经典案例」...

    今天带大家快速理解盒子模型,直接上代码: css盒子 我的css盒子测试模型 上面代码没有任何难度,只是写了一个div标签,大家已经知道,div标签是块级元素,所以会占满一行: 但是我们也注意到了图片 ...

  2. 一篇文章带你详解 TCP/IP 协议(下)

    前面的第一二三章已在上篇讲解,还没看过的可以先看看:一篇文章带你详解 TCP/IP 协议(上) 本文继续讲解第四章. 四.网络层中的 IP 协议 IP(IPv4.IPv6)相当于 OSI 参考模型中的 ...

  3. 一篇文章带你详解 HTTP 协议(下)

    文章目录,方便阅读: 一.概述(已讲) 二.HTTP 工作过程(已讲) 三.HTTP 协议基础(已讲) 四.HTTP 协议报文结构(已讲) 五.HTTP 报文首部之请求行.状态行(已讲) 六.HTTP ...

  4. 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二)

    涤生_Woo 2017年11月11日阅读 15544 关注 一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机 ...

  5. 一篇文章带你熟悉 TCP/IP 协议-(三)

    一篇文章带你熟悉 TCP/IP协议-(一)-https://segmentfault.com/a/11... 一篇文章带你熟悉 TCP/IP协议-(二)-https://segmentfault.co ...

  6. 一篇文章带你详解 HTTP 协议

    一篇文章带你详解 HTTP 协议 本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP 通信传输流 利用 ...

  7. 简书大佬的笔记:一篇文章带你详解 HTTP 协议(网络协议篇一)

    一篇文章带你详解 HTTP 协议(网络协议篇一) 本篇文章篇幅比较长,先来个思维导图预览一下. 一张图带你看完本篇文章 一.概述 1.计算机网络体系结构分层 计算机网络体系结构分层 2.TCP/IP ...

  8. 一文带你读懂HTTP协议的前世今生

    点击上方蓝字关注我们 HTTP,Hypertext Transfer Protocol,超文本协议,是在万维网上传输文件(如文本.图形图像.声音.视频和其他多媒体文件)的规则集.如果web用户打开他们 ...

  9. 一篇文章带你看懂以及实现加解密技术中的信息防篡改、一码一检、过期失效、多种实现方式

    一篇文章带你看懂以及实现加解密技术中的信息防篡改.一码一检.过期失效.多实现方式 导语 一.简介 二.代码功能介绍以及源码 2.1.AbstractRsa 类 2.2 RsaUtils 类 2.3 R ...

最新文章

  1. 把Array说透(续一)
  2. Visual Studio中的Build和Rebuild区别
  3. 2008 noip 传纸条
  4. Linux 中vim编辑器学习笔记
  5. mysql数据库后台命令备份_使用MySQL命令行备份及恢复数据库
  6. (100)Vivado TCL命令概述
  7. 在开启bin-log日志下Mysql报错
  8. mysql 字段_【MySql】mysql 字段个数的限制
  9. 对比了解Grafana与Kibana的关键差异
  10. Hello,Java!(娱乐)
  11. 吃桃子削不削皮 如何吃有保证
  12. c jave等语言作用,编程语言的前世今生,看 Java、C、C++ 等语言的演变
  13. 爱陆通研习社,水利RTU、环保数采仪、遥测终端机定义,4G5G课堂
  14. python获取虎牙弹幕_教你用20行代码爬取直播平台弹幕(附源码)
  15. 腾讯 Robotics X 轮腿式机器人
  16. 奥维互动地图 墨卡托(Mercator)投影 最新资源
  17. 关闭mybatis 日志
  18. vs如何调出黑色的界面主题
  19. 目前见过最好的物联网系统项目,功能完整,代码结构清晰!
  20. 建立二叉树并实现层序遍历

热门文章

  1. react native 安装插件
  2. 集合的遍历之迭代器遍历
  3. 9种简单的方法来使用社交媒体SEO
  4. 物联网在农业生产中有哪些应用呢
  5. 树莓派Raspberry
  6. 数论小白都能看懂的平面凸包详解
  7. Impinj阅读器与PC连接
  8. 数论 GCD 最大公约数 欧拉函数经典题 洛谷 CF1295D Same GCDs Codeforces1295D
  9. 使用R语言进行方差分析(ANOVA、ANCOVA)(一)
  10. Yale N. Patt教授的《计算机系统概论》