IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> HTTP协议 -> 正文阅读

[网络协议]HTTP协议

网络数据传输的流程

1、假设从主机A传输数据到主机B的业务需求?
在这里插入图片描述
网络数据传输是非常复杂的,在这个过程中遇到的问题也是比较多的,因为网络传输的过程会通过一个接着一个的网络设备,可能会出现数据丢失,那么就需要重新来请求对应的数据,有时候遇到延迟,但是相关设备任务丢失了相关数据,重复请求,出现了数据重复的问题…
面对复杂的场景、网络传输的就将传输的过程划分为不同的层级关系,使得每层专注于处理自己所负责的部分,在每层之间通过接口的形式来进行数据的传递,从而简化复杂的网络数据传输过程。

网络分层模型

在这里插入图片描述

HTTP协议

超文本传输控制协议(HyperText Transfer Protocol),他是基于TCP协议的应用层的传输协议,是建立客户端与服务端传输数据的一种规则。
HTTP协议,本身是一种无状态的传输协议,他不会去保存传递的数据,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务, 提高效率。
HTTP请求头
在这里插入图片描述
HTTP响应头
在这里插入图片描述

HTTP请求

在HTTP请求中,包含了请求行,请求头,请求体三个部。

  • 请求行:由请求Method、URL、HTTP Version三部分构成, 总的来说请求行就是定义了本次请求的请求方式, 请求的地址,以及所遵循的HTTP协议版本
  • 请求头:由一系列的键值对组成,允许客户端向服务器端发送一些附加信息或者客户端自身的信息,具有拓展性,允许用户自己定义请求头。
  • 请求体:在发送POST请求时才会有请求正文,GET方法并没有请求正文。

常见的请求报头
在这里插入图片描述

GET http://client2.cmread.com/cmread/portalapi?contentId=510105670&start=1&count=1&versionCartoon=4 HTTP/1.1
recmd_version: 8.11.0
Host: client2.cmread.com
Connection: Keep-Alive
Accept-Language:zh-cn
Accept-Encoding: gzip
User-Agent: okhttp/3.12.1

常见的请求方法
在这里插入图片描述

HTTP响应

HTTP响应也由三部分组成,包括状态行,消息报头,响应正文。详情如上图所示。
常见的响应状态码如下:
在这里插入图片描述
HTTP协议详情参考链接

一个HTTP请求的分层解析流程

在这里插入图片描述

  1. 首先是浏览器进行工作,校验我们的请求行是否正确合法,合法以后会进行DNS的域名解析。
  2. DNS域名解析,首先会在浏览器的缓存中查看是否有该域名对应的IP,如果没有,则会访问本地计算机是否缓存了该域名的IP,还没有就会去访问域名服务器进行ip的获取。
  3. 获取以后,通过三次握手,建立tcp链接;
  4. 确认链接无问题以后,发送http请求到服务器,服务器根据请求头与请求实体进行相应的操作以后,返回响应数据给浏览器。
  5. 浏览器解析相关参数,渲染到页面上。
  6. 没有请求与响应结束以后,就会通过四次挥手,断开tcp链接。

TCP传输控制协议

面向连接的,可靠的,基于字节流的传输层通信协议。
特点

  1. 基于连接的,再进行数据传递之前需要先建立相关链接。例如三次握手
  2. 全双工的,数据可以双向传递。
  3. 字节流,不限制数据的大小,可以打包的形式进行数据的传递,打包成报文段,但需要保证有序接收,重复则需要去重处理。
  4. 流量缓冲,解决两端处理数据能力不一致的问题。
  5. 可靠性,保证了数据的可达性,如果发生了丢包那么就会触发重发机制。
  6. 拥塞控制。网络环境较差,可以自动修改报文大小与速率。

报文组成

在这里插入图片描述

三次握手

目的

  1. 同步通信双方的初识序列号
  2. 协商tcp的通信参数

流程

在这里插入图片描述

  1. 首先让服务器处于监听的状态,例如web服务监听80端口。
  2. 客户端处于SYN-Sent状态进行消息发送,会在本地生成一个数据结构,包含了链接的端口号,目的端口号,目的ip,序号,应答号,对方窗口大小,自己窗口大小,缓冲区等。发送标识为SYN的报文信息,并且随机生成seq序列化。
  3. 服务器接收以后,改变其状态,同时在自己的本地也会生成一段数据,保存了基本的信息,如客户端,接着就会发送SYN报文,请求客户端的应答,并且会自动生成一个seq,同时(也可以分开来执行)发送ACK应答客户端请求链接的报文信息,在请求的seq的值上+1,在传递给客户端,用作客户端进行标识。
  4. 客户端在接受服务端的请求以后,就会执行返回一个ACK的报文信息应答服务器,至此双方完成三次握手,建立了通信链接。

内核

在这里插入图片描述
整个过程是由操作系统内核进行维护的,它维护了两条队列,一个是SYN队列,就是进行握手链接时,会将数据体存储在该队列当中,建立连接以后,就会将该信息出队,放在accept队列中,进行通信链接的维护。

实例操作

查看TCP通信的状态linux命令

netstat -tpn 
//可以查看当前linux的tcp通信的状态 具体使用  netstat -help

linux抓包

//查看对应的网卡
ifconfig
//监听那个网卡的3306端口号,抓3个包就停止
tcpdump -i eth0 -S -c 3 port 3306

在这里插入图片描述

四次挥手

但tcp通信关闭的时候会进行四次挥手,具体流程如下
在这里插入图片描述

  1. 首先,关闭链接请求是通过双方都能主动进行的,下面就以主动请求关闭链接为客户端进行说明。
  2. 客户端请求关闭以后,会发送一个fin的报文给到服务器,并且携带对应的seq给服务器。
  3. 服务器接收fin的请求以后,就会响应一个ACK给,并且将seq加1,此时服务端进入一个close_wait的状态。客户端在接收响应以后就会进入fin_wait2的状态。
  4. 服务器发送fin报文给到客户端,请求关闭链接,客户端收到以后,会进入到time_wait(2msl)的状态,并且返回接收信息给服务器,服务器接受以后就会关闭连接。

请求关闭链接方为什么最后会等待2msl再关闭呢?
首先2msl,指的的是报文在tcp链接通道传递一个来回的时间。
原因:1、接收方在等待发送方发送ACK报文,而无法进入关闭状态进行的重发机制,可以被发送方读取到。2、清空tcp通道中要传回给发送方的数据,避免了客户端端口以后被其他应用占据时出现的数据紊乱问题。

字节流协议

TCP把应用交付的数据当作成一组没有任何结构的字节流数据,tcp并不知道这段字节流的一个含义;tcp也不关心应用程序将多大的报文传递给tcp的缓存中,而是它会根据对方给出的窗口值以及当前网络来决定每一个报文应该包含多少个字节。
在这里插入图片描述

HTTPS

http协议是明文传输的,传输的链路完全透明,用户可以在任何一个节点对数据进行截获与篡改,数据具有不可信,https就是为了解决这样的问题。
在这里插入图片描述
https协议在加密算法之上建立起来的。
在这里插入图片描述
例如,常见的md5
在这里插入图片描述
在这里插入图片描述
HTTPS传输流程
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-26 15:24:43  更:2022-05-26 15:24:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 15:35:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码