四.计算机网络
4.1 网络模型:
七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
五层:物理层,数据链路层,网络层,运输层,表示层
tcp/ip:网络访问层,网络层,传输层,应用层
4.2.七层模型主要功能:
1.物理层:主要定义物理设备标准,他的主要作用是传输比特流,这一层的数据叫做比特
2.数据链路层:主要将从物理层接收到的数据进行mac地址的封装与解封装,这一层的数据叫做帧
3.网络层:主要将从下层接收到的数据进行IP地址的封装与解封装,常把这一层的数据叫做数据包
4.传输层:定义了一些传输数据的协议和端口号,主要是讲从下层接收的数据进行分段传输,这一层叫段
5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。
6.表示层:主要进行对接收的数据进行解释,加密与解密,压缩与解压缩等
7.应用层:终端应用
4.3 tcp/ip四层模型功能:
1.网络访问层:主机必须与使用某种协议与网络项链
2.网络层:主机可以把分组发往任何网络,并使分组独立的传向目标。
3.传输层:
4.应用层
4.4 Http原理
介绍:无状态(客户机和服务器之间不需要建立持久的连接),请求->响应->关闭
4.4.1输入url后的解析:http://localhost.com:8080/index.html
1.从中分解出:协议号,主机名,端口,对象路径等部分
协议号:http 主机名:localhost 端口:8080 对象路径:/index.html
需要DNS解析域名localhost.com,得到主机的IP地址
2.封装HTTP请求数据包
把以上部分结合本机信息,封装成一个HTTP请求的数据包
3.封装成TCP包,建立TCP连接包
封装成TCP包,建立TCP连接(TCP的三层握手)
4.客户机发送请求命令
建立连接后,客户机发送一个请求给服务器,请求格式为:
统一资源标识符,协议版本号,MIME信息(请求修饰符,客户机信息和可内容)
5.服务器响应
服务器给予响应信息,其格式为一个状态行,包括:
信息的协议版本号,一个成功或错误的代码,MIME(服务器信息,实体信息,可能的内容)
6.服务器关闭TCP连接
服务器关闭TCP连接后,如果浏览器或者服务器在其头信息加入了Connection:keep-alive,TCP连接在发送后仍然将仍然保持打开状态,这样浏览器可以继续通过相同的连接发送请求。保持连接节省了每个请求建立新连接所需要的时间,还节约了带宽
4.5 常见状态码
200:请求成功
204:No Content:表示客户端发送给客户端的请求得到了成功处理,但在返回的响应报文中不包含实体的主体部分
206:表示客户端进行了范围请求,并且服务器执行了这部分GET请求,响应报文中包含Content-Range指定范围的实体内容
301:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改后的URL
302:临时重定向,表示请求的资源被分配了新的URL,希望本次使用更改后的URL
303:表示请求的资源被分配了新的URL,并明确表示使用GET方式获取资源
304:服务端已经执行了GET,但文件未变化。
307:临时重定向,与303有着相同的含义,307会遵守浏览器标准,不会从POST编程GET
400:表示请求报文中有语法错误
401:未经许可,需要http认证
403:服务器拒绝该访问(访问权限出现问题)
404:找不到
500:表示服务器在执行请求时发生错误
503:服务器暂时处于超负荷或正在停机的状态
4.6 HTTPS的原理
介绍:以安全为目标的HTTP通道,简单讲是HTTP安全版。既在HTTP下加入SSL层,HTTPS的安全基础是SSL,其所用的端口号是443
特点:主要依赖于三类基本算法:散列函数 、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。
过程:
1.客户端先发起一个https请求,端口是443
2.服务器端把实现配置好的公钥证书返回给客户端
3.客户端验证公钥证书:比较是否在有效期内,证书的用户是不是匹配Client请求的站点,是不是在CRL吊销列表里面,他的上一级证书是否有效,这是一个递归过程,知道验证到根证书(操作系统内置的root证书或者client内置的root证书)。如果验证通过则继续,不通过则显示警告信息
4.客户端使用伪随机数生成器生成加密所使用的对称密钥,然后用证书的公钥加密这个对称密钥,发给服务端
5.服务端使用自己的私钥解密这个信息,得到对称密钥。
6.服务端使用对称密钥加密“明文内容A”,发送给客户端
7.客户端使用对称密钥解密响应密文,得到“明文内容A”
8.Client再次发起HTTPS的请求,使用对称密钥加密请求的“明文内容B”,然后Server使用对称密钥解密密文,得到“明文内容B”。