图解HTTP学习理解
认识HTTP
HTTP:超文本、传输、协议
-
什么是超文本
可以传输文字、图片、链接等,语义被扩展后的文本是超文本。 -
什么是传输
存储的超文本最终会被解析成二进制数据包,由传输载体将二进制数据包由一个终端传到另一个终端的过程,为传输。 -
什么是协议
网络协议:网络中传递、管理信息的一些规范。
HTTP是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
因特网的协议栈
应用层
web:HTTP
电子邮件传送协议:SMTP
端系统文件上传协议:FTP
应用层协议分布在端系统上,应用程序之间交换信息分组,并把位于应用层的信息分组为报文。
传输层
用于应用程序断点之间传送应用程序报文,主要协议有TCP和UDP。
把传输层的分组称为报文段。
网络层
网络层将数据报的网络分层,从一台主机移动到另一台主机上。
主要协议为:IP协议。
链路层
把链路层的分组称为帧。
主要内容有:以太网、WiFi和电缆接入的DOCSIS协议。
物理层
物理层的作用是将帧的一个个比特从一个节点传输到另一个节点。
IOS模型:
表示层:数据压缩、数据加密以及数据描述。
会话层:提供数据交换的定界以及同步功能。
与HTTP有关的协议
TCP/IP
TCP:传输控制协议;HTTP使用TCP作为通信协议,是因为TCP是一种可靠协议,而可靠能保证数据不丢失。
IP协议:主要是解决通信双方的寻址问题。
DNS
DNS:域名系统;可以将域名和IP地址相互映射的一个分布式数据库。能够使人更快的访问互联网。
URI/URL
URI:统一资源标识符,能够唯一标识互联网上的资源。
URL:统一资源定位符,俗称:网址;实际上是URI的子集。
HTTPS=HTTP+SSL
HTTP相应请求的过程
假设访问http://www.someSchool.edu/someDepartment/home.index ,输入网址点击回车,浏览器的内部操作如下:
- DNS服务器会进行域名解析,找到/www.someSchool.edu所在IP地址,谭厚HTTP客户端进程发起一个到服务器www.someSchool.edu的TCP链接,80端口,在客户和服务器进程中都会有一个套接字于其相连。
- HTTP客户端可以通过套接字向服务器发送一个HTTP请求报文。包括后面的路径资源
someDepartment/home.index
。 - HTTP服务器通过套接字接受该报文,进行请求的解析工作,并从存储器(RAM或磁盘)中检索出对象
/www.someSchool.edu/someDepartment/home.index
,并进行封装,并通过套接字向客户进行发送。 - HTTP服务器通知TCP断开链接。
- 等HTTP客户端接受完响应报文后,TCP链接关闭。
- HTTP响应文件,循环检查报文中其他内部对象,客户端把对应资源通过显示器呈现给用户。
HTTP报文详解
起始行、请求头、实体。
每个报文的起始行由三个字段组成:请求方法、URL字段、HTTP版本。
HTTP请求方法
http://www.example.com:80/path/to/myfile.html?
key1=value1&key2=value2#SomewhereInTheDocument
http://表示协议
www.example.com 表示主机
80 表示端口
/path/to/myfile.html 表示路径
key1=value1&key2=value2# 表示查询
#SomewhereInTheDocument 表示片段:资源本身的一个锚点
HTTP警告码
同源策略
HTTP Cookies
HTTP协议中的Cookie 包括 web cookie 和浏览器cookie。
Cookie 作用:
- 会话管理
- 个性化
- 追踪
Cookie 类别:
- 会话Cookie
- 永久性Cookie
- Cookie 的Secure和HttpOnly标记
HTTP优缺点
优点:
- 简单灵活易扩展
- 应用广泛、环境成熟
- 无状态,减轻服务器负担
缺点:
- 无状态,所以不能支持多个步骤的事务
- 明文传输,不安全
- 性能还有提升空间
HTTPS
Cookie 和 Session
session cookie 中,用户的登陆状态保存在服务器的内存中。
token
JWT的结构如下:
GET 和POST的区别
UDP和TCP
TCP的三次握手和四次挥手
三次握手
四次挥手
输入URL会发生什么
DNS的两种查询方式为:递归查询+迭代查询