HTTP协议

HTTP协议介绍

用户访问网站流程

客户端	---	浏览器输入网址信息点击回车
客户端	---	完成域名的解析过程(DNS)
客户端	---	直接访问相应网站服务器		---	建立TCP三次握手过程
客户端	---	访问网站服务器			   ---	发送HTTP请求报文
服务端	---	响应客户端请求			   ---	回复HTTP响应报文
客户端	---	浏览器看到网站页面
客户端	---	结束访问网站过程		   ---	完成TCP四次挥手过程

DNS域名解析过程

打开浏览器:输入www.baidu.com
在本地主机上寻找域名对应IP地址信息
	本地DNS缓存
	寻找本地hosts文件
寻找LDNS服务器
	LDNS查看本地缓存中是否有百度的IP地址
根域名服务器
顶级域名服务器
二级域名服务器

DNS结构图

DNS解析流程图

OSI七层模型

TCP/IP五层模型

TCP报文格式

TCP三次握手

syn(1):请求建立连接控制字段
fin(1):请求断开连接控制字段
ack(1):数据信息确认控制字段
seq:序号

LISTEN      	---	侦听来自远方TCP端口的连接请求;
SYN-SENT    	---	在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED	---	在收到和发送一个连接请求后等待对连接请求的确认
ESTABLISHED 	---	代表一个打开的连接,数据可以传送给用户;
CLOSED      	---	没有任何连接状态;

TCP三次握手过程

  1. 第一次握手
    发送syn请求建立连接控制字段,发送seq序列号信息(0),第一个数据包的序列号默认为0
  2. 第二次握手
    发送syn请求建立连接控制字段,同时还会发送ack确认控制字段,发送seq序列号信息也为0,还会发送ACK确认号(上一个seq序列号)信息(对上一个数据序列号信息进行确认)
  3. 第三次握手
    发送ack确认控制字段,发送seq序列号信息(1),发送ack确认号(1)

TCP四次挥手

TCP四次挥手过程

  1.    第一次挥手
    发送fin请求断开连接控制字段
    
  2.    第二次挥手
    发送ack确认控制字段
    
  3.    第三次挥手
    发送fin请求断开连接字段,发送ack确认字段
    
  4.    第四次挥手
    发送ack控制字段
    

TCP的十一种状态集

TCP三次握手:

LISTEN 侦听来自远方TCP端口的连接请求;
SYN-SENT 在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认;
ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
CLOSED 没有任何连接状态;

TCP四次挥手:

ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT2 从远程TCP等待连接中断请求;
CLOSE-WAIT 等待从本地用户发来的连接中断请求;
CLOSING 等待远程TCP对连接中断的确认;*
LAST-ACK 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED 没有任何连接状态;

HTTP协议

​ HTTP协议,全程HyperTextTtansferProtocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议.HTTP的重要应用之一是www服务,设计HTTP协议最初的目的就是提供一种发布和接受HTML(一种页面标记语言)页面的方法(请求 返回)
​ HTTP协议是互联网上最常用的通信协议之一,她有很多应用,但最流行的是基于Web浏览器和Web服务器之间的通信,即www应用或Web应用.
​ WWW,全程World Wide Web,通常为Web.HTTP协议的WWW服务应用的80(端口的概念)
​ 另外一个加密的www服务应用https的默认端口为443,主要用于网银,支付和钱相关的业务.

HTTP协议版本

HTTP:1.0 TCP短连接
HTTP:1.1 TCP长连接
HTTP:2.0 TCP长连接 --- 提高用户并发(同时)访问的效率

HTTP协议资源信息

URL:全称为Uniform Resource Location,中文翻译为统一资源定位符
URI:全称为Uniform Resource Identifier,中文翻译为统一资源标识符
docs.ansible.com / ansible/latest/user_guide/playbooks.html
URL URI

静态资源

特点说明:

  1. 网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)。
  2. 因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,当网站信息量很大时,
    完全依靠静态网页比较困难(缺点)。
  3. 网页的交互性较差,在程序的功能实现方面有较大的限制(缺点)。
  4. 当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)。

动态资源

  1. 采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、投票、用户管理、订单处理、发博文等。
  2. 动态资源页面会出现 "?" "&", 不便于被搜索引擎收录
  3. 接收到用户请求,需要让动态服务和数据库服务进行处理

伪静态资源

  1. 可以便于搜索引擎进行收录
  2. 有数据库服务支持,实现网页交互功能

HTTP协议响应过程

HTTP请求方法

HTTP方法 作用描述
GET 客户端请求指定资源信悤,服务器返回指定资源
HEAD 只请求响应报文中的 HTTP首部
POST 将客户端的数据提交到服务器,例:注册表单
PUT 用从客户端向服务器传送的数据取代指定的文档内容。
DELETE 请求服务器删除 Request-URI所表示的资源。
MOVE 请求服务器将指定的页面移至另一个网络地址。

HTTP的响应状态码分类

常见响应状态码解释

使用curl查看状态码

curl -I -s -w "%{http_code}\n" -o /dev/null  www.baidu.com

HTTP请求报文

请求头信息说明

请求头内容 说明
Host 接受请求的服务器地址,可以是IP:端口号,也可以是域名
User-Agent 发送请求的应用程序名称
Connection 指定与连接相关的属性,如Keep-Alive
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式

HTTP响应报文

响应头信息说明

响应头 说明
Server 服务器应用程序软件的名称和版本
Content-Type 响应正文的类型(是图片还是二进制字符串)
Content-Length 响应正文长度
Content-Charset 响应正文使用的编码
Content-Encoding 响应正文使用的数据压缩格式
Content-Language 响应正文使用的语言

用户访问流程总结

1.用户输入域名->浏览器跳转->浏览器缓存->Hosts 文件->DNS 解析( 递归查询 | 迭代查询 )
客户端向服务端发起查询->递归查询
服务端向服务端发起查询->迭代查询
2.由浏览器向服务端发起 TCP 连接(三次握手)
客户端 -->请求包连接-syn=1 seq=x 服务端
服务端 -->向应客户端 syn=1 ack=x+1 seq=y 客户端
客户端 -->建立连接 ack=y+1 seq=x+1 服务端
3.客户端发起 http 请求:
1.请求的方法是什么: Get 获取
2.请求的 Host 主机是: www.opesn.com
3.请求的资源是什么: /index.html
4.请求的端口是什么: 默认 http 是 80 https 443
5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等)
6.请求最后的空行
4.服务端响应的内容是
1.服务端响应使用的 WEB 服务软件
2.服务端响应请求文件的类型
3.服务端响应请求的文件是否进行压缩
4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起 TCP 断开(四次挥手)
客户端 --> 断开请求 fin=1 seq=0 --> 服务端
服务端 --> 响应断开 ack=1		 --> 客户端
服务端 --> 断开连接 fin=1 seq=0 --> 客户端
客户端 --> 确认断开 ack=1		 --> 服务端
posted @ 2019-08-23 13:37  helloord  阅读(270)  评论(0编辑  收藏  举报