目录
计算机网络
通过传输介质等,将不同的计算机设备互联起来,实现资源共享和数据传输
网络分层模型
OSI体系结构
TCP/IP体系结构
4.应用层
3.传输层
2.网络层
1.网络接口层
应用层常见协议
传输层常见协议
网络层常见协议
原理体系结构
5.应用层
4.运输层:为运行在不同主机上的引用进程提供直接的通信服务
3.网络层:实现网络互联,数据包在各网络之间的传输
2.数据链路层:一个节点到相邻节点的一段物理线路
1.物理层:怎样在连接各种计算机的传输媒体上传输数据比特流
三要素
-
IP地址
-
端口号
-
协议tcp/udp
C/S架构
服务器-客户机,即Client-Server结构服务器负责数据的管理,客户机负责完成与用户交互任务
B/S架构
Browser/Server 即浏览器/服务器结构
HTTP协议原理
基于HTTP传输协议(超文本传输协议)客户端与服务器端之间数据传输规则
从输入URL到页面展示发生了什么?
HTTP状态码
2xx Success(成功状态码)
-
200 OK:请求被成功处理。最常见的
-
201 Created:请求被成功处理并且在服务端创建了一个新的资源。比如我们通过 POST 请求创建一个新的用户。
-
202 Accepted:服务端已经接收到了请求,但是还未处理。
-
204 No Content:服务端已经成功处理了请求,但是没有返回任何内容。
3xx Redirection(重定向状态码)
-
301 Moved Permanently:资源被永久重定向了。比如你的网站的网址更换了。
-
302 Found:资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址。
4xx Client Error(客户端错误状态码)
-
400 Bad Request:发送的 HTTP 请求存在问题。比如请求参数不合法、请求方法错误。
-
401 Unauthorized:未认证却请求需要认证之后才能访问的资源。
-
403 Forbidden:直接拒绝 HTTP 请求,不处理。一般用来针对非法请求。
-
404 Not Found:你请求的资源未在服务端找到。
5xx Server Error(服务端错误状态码)
-
500 Internal Server Error:服务端出问题了(通常是服务端出 Bug 了)。
-
502 Bad Gateway:我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。
HTTP和HTTPS有什么区别(重要!!!)
-
端口号:HTTP默认是80,HTTPS默认是443
-
URL前缀:HTTP 的 URL 前缀是
http://
,HTTPS 的 URL 前缀是https://
。 -
优点:HTTP是扩展性强、速度快、跨平台支持性好。HTTPS是保密性好、信任度高。
-
HTTP协议是以TCP作为底层协议的,HTTPS协议是HTTP的加强安全版本,额外使用了SSL/TLS协议作为加密和安全认证
-
安全性和资源消耗:HTTP 安全性没有 HTTPS 高,但是 HTTPS 比 HTTP 耗费更多服务器资源。
SSL/TLS的区别
SSL 和 TLS 没有太大的区别。TLS实际上是SSL3.0进一步的升级
SSL/TLS工作原理
非对称加密
SSL/TLS 的核心要素是非对称加密。非对称加密采用两个密钥——一个公钥,一个私钥。在通信时,私钥仅由解密者保存,公钥由任何一个想与解密者通信的发送者(加密者)所知。
简单来说:公钥只能进行加密,要是需要解密只能由拥有私钥者才可以
对称加密
非对称加密设计了较为复杂的数学算法,在实际通信过程中,计算的代价较高,效率太低
因此,SSL/TLS 实际对消息的加密使用的是对称加密。
对称加密:通信双方共享唯一密钥 k,加解密算法已知,加密方利用密钥 k 加密,解密方利用密钥 k 解密,保密性依赖于密钥 k 的保密性。
为什么 SSL/TLS 还需要使用非对称加密呢?
因为对称加密的保密性完全依赖密钥的保密性,在双方通信时,需要商量一个用于对称加密的密钥,网络通信信道是不安全的,传输报文任何人都可以看到,用非对称加密就是对对称加密的密钥进行加密,保护密钥不被窃听
补充
为了公钥的传输的信赖性,第三方机构——证书颁发机构(CA,Certificate Authority),CA是默认受信任的第三方,CA 会给各个服务器颁发证书,证书存储在服务器上,并附有 CA 的电子签名,也就是我们的数字签名技术
数字签名:是 CA 在给服务器颁发证书时,使用散列+加密的组合技术,在证书上盖个章,以此来提供验伪的功能。
当客户端向服务器发送HTTPS请求时,先获取目标服务器的证书,并根据证书上的信息检验证书的合法性,一旦非法,就发生错误;客户端获取了证书后,因为是受信任的第三方机构颁发的,证书上又有公钥的信息,客户端就可以放心的信任证书上的公钥就是目标服务器的公钥。
HTTP 是不保存状态的协议, 如何保存用户状态?
Session机制就是为了保存用户状态,主要通过服务端记录用户状态。
在服务端保存Session的方法很多,常用的就是内存和数据库,Session 存放在服务器端,如何实现 Session 跟踪?大部分情况下,通过在 Cookie 中附加一个 Session ID 来方式来跟踪。
Cookie 和 Session 有什么区别?
Session
的主要作用就是通过服务端记录用户的状态,典型场景是购物车,添加商品到购物车,系统不知道是谁添加的,因为http无状态,服务端给特定的用户创建特定的 Session
之后就可以标识这个用户并且跟踪这个用户了。
Cookie
数据保存在客户端(浏览器端),Session
数据保存在服务器端。相对来说 Session
安全性更高。
如果没有Cookie的话Session还能用吗?
不是没有 Cookie
之后就不能用 Session
了,比如可以将 SessionID
放在请求的 url
里面https://baidu.com/?Session_id=xxx
。这种方案的话可行,但是安全性和用户体验感降低。当然,为了安全你也可以对 SessionID
进行一次加密之后再传入后端。
URI 和 URL 的区别
-
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
-
URL(Uniform Resource Locator) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI像是身份证号,URL更像是家庭住址,不仅唯一标识资源,还提供定位资源位置
GET和POST的区别
-
语义:GET主要用于查询获取资源,POST主要用于创建和修改资源
-
幂等:GET请求时幂等的,多次重复请求不会改变资源状态;POST请求不是幂等的,每次执行可能会产生不同的结果影响资源状态
-
格式:GET请求参数通常放在URL中,POST请求参数通常放在请求体中
-
长度:GET 请求的 URL 长度受到浏览器和服务器的限制,而 POST 请求的 body 大小则没有明确的限制。
-
缓存:由于GET请求是幂等的,它可以被浏览器或其他中间节点(代理、网关)缓存起来,提高性能;而POST不适合缓存
-
安全性:GET和POST如果都用HTTP协议的话,那就都不安全,但是GET比POST更加不安全,因为GET的参数通常在URL中
PING
PING命令的作用
是一种常用的网络诊断工具,经常用来测试网络中主机之间的连通性和网络延迟。
PING命令输出结果包含以下信息:
-
ICMP Echo Request(请求报文)信息:序列号、TTL(Time to Live)值。
-
目标主机的域名或 IP 地址:输出结果的第一行。
-
往返时间(RTT,Round-Trip Time):从发送 ICMP请求报文到接收到 ICMP响应报文的总时间,用来衡量网络连接的延迟。
-
统计结果(Statistics):包括发送的 ICMP 请求数据包数量、接收到的 ICMP 响应数据包数量、丢包率、往返时间(RTT)的最小、平均、最大和标准偏差值。
PING命令的工作原理
PING 基于网络层的 ICMP(Internet Control Message Protocol,互联网控制报文协议),其主要原理就是通过在网络上发送和接收 ICMP 报文实现的。
DNS域名解析
DNS将域名解析为IP地址,也是为了方便记忆
客户端(浏览器)访问一个域名时,如果本地host文件中有该IP地址,则直接返回,本地host文件若没有该IP地址,则会联网的形式去外网查询
为了提高DNS查询效率,域名服务器使用高速缓存,用来存放最近查询过的域名等信息,也要为每项内容设置计时器