一、Http 的前世今生

1、概念

1)超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式
2)HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。

2、http 访问过程

image.png

3、报文格式

1)HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。
2)请求报文
请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体
3)响应报文
状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

4、Web与Http

1) WEB 是一种基于超文本和Http的全球性的、动态交互的、跨平台的分布式图形信息系统

2)建立再Internet 上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组成一个互为关联的网状结构

5、Http的前世今生

百度百科

二、TCP/IP 协议族与HTTP

1、TCP/IP 协议族

1. TCP/IP 协议其实是一系列与互联网相关联的协议集合起来的总称

2. TCP/IP 协议分层

1)四层:应用层、传输层、网络层、数据链路层
image.png

2)应用层:应用程序协议(FTP、DNS、HTTP等)

3)传输层:传输层通过系统调用向应用层提供处于网络连接的两台计算机之间的数据传输功能(TCP、UDP)
tpc面向连接 udp 无连接

4)网络层:用来处理在网络上流动的数据包、数据包是网络层传输的最小数据单位。主要解决通过则样的路径到达对方计算机,并把数据包传输给对方

5)链路层:链路层用来处理链接网络的硬件部分、包括操作系统、硬件设备驱动、NIC(Network Interface Card, 网络适配器)以及光纤维等物理可见部分。

2. 数据包装过层

image.png

3、Http数据传输的过程

image.png

  1. 发送端发送数据会从上层传输到下层,且每经过一层都会被打上该层的头部信息。而数据会从下层传输到上层,传输前会把下层的头部信息删除。

4、传输层-TCP三次握手

image.png

1.第一次握手

客户端发送带有SYNC 标志的连接请求报文段,然后进入SYN_SEND状态,等待服务端的确认。

2.第二次握手

服务端接受到客户端的SYN报文段后,需要发送ACK 信息对这个SYN报文段进行确认。同时,还要发送自己的SYN 请求信息。服务端会将信息放到一个报文段(SYN+ACK 报文段)中,一并发送给客户端,此时服务端将会进入SYN_RECV状态。

3.第三次握手:

客户端接受到服务端的SYN+ACK报文段后,会想服务端发送ACK确认报文段,这个报文段发送完毕后,客户端和服务端都进入Established 状态完成TCP三次握手

4. TPC 四次挥手

三、DNS域名解析

四、HTTP 事务处理的过程

image.png

抓包工具
https://www.wireshark.org