网络协议TCP/IP及Http/Https浅析

2021-08-11  本文已影响0人  碧云天EthanLee
概述

随着时代的进步,江湖上会出现各种各样的轮子。所以我们知道,在客户端开发过程中,大多数情况下我们已经很少直接接触到底层的一些网络协议,而使用了主流的一些框架。所以这些底层的东西在日常的开发当中就变成了理论的东西,再加上这些理论东西的讲解都烂大街了。本来不想讲,但不用又容易忘记,那就当做个笔记吧。

这篇笔记主要还是大概地讲一下网络请求的一个过程,讲一下 TCP三次握手四次挥手的大概流程。然后讲一下HTTP的一部分报文结构以及Https内容加密的一个大概的流程。讲之前先看一下这些协议的含义:

IP :网际协议(Internet Protocol)
TCP:传输控制协议(Transmission Control Protocol)
HTTP :超文本传输协议(Hyper Text Transfer Protocol)
HTTPS :超文本传输安全协议(Hyper Text Transfer Protocol over SecureSocket Layer)

1、网络请求大概流程

一个完整的网络请求的流程大概是这样的:

2、TCP三次握手四次挥手

开头说了,这种东西的讲解烂大街。但说到TCP实在绕不开握手和挥手。那就简单收拾一下吧。

再画两张图吧:


TCP三次握手.png
TCP四次挥手.png
3、HTTP报文

HTTP报文分为请求报文和响应报文。而请求报文由请求行、请求头部、空行和请求数据等部分组成。响应报文由状态行,响应头部,空行和响应数据等部分组成。下面简介一下就好了

请求行 :请求行由请求方法,请求地址和协议版本组成。请求方法,比如我们最常见的GET、POST方法。请求地址,比如:https://www.baidu.com。没准还会带有端口号和相对路径。协议版本,比如:HTTP/2.0......

请求头:为请求报文添加了一些信息,作用是声明客户端、服务器报文的相关信息。比如对我们来说不算太陌生的Content-Type、Content-Length、Connection、Cache-control等等等等。

空行:请求头后就是空行,意思是请求头结束了。

请求数据:存放需要发送给服务器的数据信息,get方法没有这个。

状态行:服务端发给客户端的请求状态。由协议版本,状态码,状态码描述等组成。状态码,比如我们常见的,请求成功 200、资源不存在 404等等等等。

响应头:和请求头类似,也是声明了资源信息:Last-Modified、Content-Type、Content-Length等等等等。

响应数据:就是返回给客户端所需的数据信息。

4、HTTPS的前世今生

我们应该大概知道,Http使用的是明文传输数据,也就是数据传输不加密。这其中利弊应该不用讲也明白。然后 Https就出来了,其实就是对Http的封装,使用了SSL对数据进行了加密,这我们应该也大概明白。

Https使用对称加密非对称加密结合。客户端使用机构认证的数字证书获取公钥,然后再用公钥加密一个和服务器共享的秘钥(随机数)。这个被客户端用公钥加密的共享秘钥(随机数)只有服务端特有私钥才能解密(非对称加密)。这样的话共享秘钥(随机数)只有客户端和服务端才拥有。两者就可以使用共享秘钥(随机数)进行数据的对称加密和解密了。共享秘钥是客户端生成的一个随机数

上一篇 下一篇

猜你喜欢

热点阅读