请求的流程:
浏览器查询 DNS--->获取域名对应的 IP 地址--->浏览器请求建立链接--->发送HTTP请求--->服务端处理并返回请求--->浏览器渲染页面--->连接结束
一、五层网络协议体系结构
①应用层:通过应用进程间的交互来完成特定网络应用。
协议:HTTP(超文本传输协议)、DNS(域名解析)、SSH(安全外壳协议)、SMTP、FTP等
②传输层:向两台主机进程之间的通信提供通用的数据传输服务。
协议:TCP(传输控制协议)、UDP(用户数据报文协议)
③网络层:选择合适的网间路由和交换结点,及时传送数据。
协议:IP(网际协议)、ARP(地址转换协议)等
④数据链路层:在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。
协议:ARO(自动重传请求)、ppp(点对点协议)等
⑤物理层:实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。
协议:中继线、网线等
二、主要的协议及其特点
ARP(地址转换协议):网络层的 ARP 协议通过在自己的 ARP 缓冲区中建立一个 ARP 列表,来完成 IP 地址与物理地址(MAC 地址)的映射。
IP(网际协议):它提供了一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,来屏蔽物理地址的差异。每个 IP 地址包括两个标识码(ID),即网络 ID 和主机 ID。同一个物理网络上的所有主机都使用同一个网络 ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机 ID 与其对应。
TCP协议(传输控制协议):1.面向连接
2.一条TCP连接是一对一的
3.服务可靠交付(数据无差错、不丢失、不重复、按序到达)
4.TCP 连接的两端都设有发送缓存和接收缓存,双工通信
5.面向字节流(TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流。)
6.对应的网络层协议:HTTP、FTP、SMTP、Telnet、POP3
UDP协议(用户数据报文协议):1.面向报文
2.无连接
3.尽量交付
4.支持n对n交互通信
5.没有堵塞控制(一般用于直播等)
6.对应的网络层协议:DNS、TFTP、SNMP
三、TCP的第三次握手和四次挥手(重点)
三次握手:
注意:
①:防止将失效的请求报文段传送给接受端,使得接受端一直等待发送端发来文件。
②:接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。是为了验证发送方到接受方的通道。
③:ACK是为了验证接受方到发送方的通道。
四次挥手:
注意:
① :TIME-WAIT必须等待2MLS是因为等待2MLS可以保证客户端最后一个报文段能够到达服务器,如果未到达,服务器则会超时重传连接释放报文段,使得客户端、服务器都可以正常进入到CLOSE关闭状态。(2 MSL 时 间内客户端能再一次收到FIN+ACK。)
②: 第二次和第三次之间的等待是为了让服务端把之前未传输完的数据传输完毕之后再发送关闭请求。
③:TCP保活计时器的作用是为了监测服务器还能不能再收到客户端发来的数据。若连续发送 10个 探测报文段后仍然无客户端的响应,服务端就认为客户端出了故障,接着就关闭这个连接。
四、TCP协议的可靠性
TCP 在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会四次挥手断开连接用来节约系统资源。
1. 数据包校验
2.对失序数据包重排序
3. 丢弃重复数据
4. 应答机制
5. 超时重发(停止等待协议)
6. 流量控制(可变大小的滑动窗口协议)
7.堵塞控制(慢开始、拥塞避免、快重传和快恢复)
五、HTTP状态码
1XX:信息正常
2XX:请求成功
3XX:重定向
301和301的差别:
301:URL的永久性转移
302:URL的暂时性转移
4XX:客户端错误
5XX:服务端错误
①:两种请求转发:
forward:直接转发
redirect:间接转发
②:HTTP方法:
GET:获取资源
HEAD:获取报文首部,不返回报文实体主体部分
POST:传输实体主体
PUT:上传文件,也可用于修改覆盖原始资源
PATCH:修改资源的部分
OPTIONS:查询指定的 URL 支持的方法
TRACE:追踪路径
...
区别:GET 只是一次 HTTP请求,POST 先发请求头再发请求体,实际上是两次请求。
GET请求提交的数据将明文出现在 URL 上,而POST 请求参数则被包装到请求体中。
③:HTTP1.0的主要变化:
HTTP1.1提出了长连接
HTTP2.0 支持多路复用
七、HTTPS协议
HTTP 和 HTTPS 的区别:
HTTP 的连接很简单,是无状态的;
HTTPS 协议是由 SSL + HTT 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
对称加密和非对称加密:
对称密钥加密是指加密和解密使用同一个密钥的方式;
非对称加密指使用一对非对称密钥,即:公钥和私钥。