- 跨域资源共享(CORS)是一种机制
- http是tcp/ip协议族的子集
tcp/ip协议族
- tcp/ip协议族分为:应用层、传输层、网络层、数据链路层
- 为什么分层:如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分 层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之 后,每个层次内部的设计就能够自由改动了。
- 应用层
- 决定了向用户提供应用服务时通信的活动
- TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(文件传输协议)和 DNS(域名系统)服务、http。
- 传输层
- 对上层应用层,提供处于网络连接中的两台计算机之间的数据传输
- 传输层有两个性质不同的协议:TCP传输控制协议、UDP用户数据报协议
- 网络层/网络互连层
- 用来处理在网络上流动的数据包。
- 数据包是网络传输的最小数据单位。
- 该层规定了通过怎样的路径(传输路线)到达对方计算机,并将数据包传送给对方
- 链路层(数据链路层、网络接口层)
- 处理连接网络的硬件部分
- 包括:控制操作系统、硬件设备驱动、NIC(网络适配器即网卡)、光纤等物理可见部分
- tcp/ip通信传输流
- 利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通 信。发送端从应用层往下走,接收端则往应用层往上走。
- 首先作为发送端的客户端在应用层 (HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求
- 接着,为了传输方便,在传输层(TCP 协议)把从应用层处收到的数 据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端 口号后转发给网络层。
- 在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链 路层。这样一来,发往网络的通信请求就准备齐全了。
- 接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用 层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP 请求。
- 发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装(encapsulate)
- 负责传输的ip协议
- 按层次分,ip位于网络层。它是一种协议的名称,并不同传统意义上的ip地址
- ip协议的作用是把各种数据包传送给对方。但是,能否确实传送到想要的对方?需要满足各种条件,其中有2个重要条件就是IP地址和MAC地址
- ip和MAC地址的区别:
- IP地址指明节点被分配到的地址。
- MAC地址指网卡所属固定地址。
- ip可以和mac地址配对,ip可更换,mac地址基本不会改
- ip间通信依赖MAC地址
- ARP协议
- 在网络上,通信的双方在同一局域网(LAN)内的情况是很少的,通常是经过多台计算机和网络设备中转 才能连接到对方。
- 而在进行中转时,会利用下一站中转设备的 MAC 地址来搜索下一个中转目标。这时,会采用 ARP 协议(Address Resolution Protocol)
- ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
- ip和MAC地址的区别:
- 路由选择
- 在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线
- 有点像快递公司的送货过程。想要寄快递的人,只要将自己的货物送到集散中心,就可以知道快递公 司是否肯收件发货,该快递公司的集散中心检查货物的送达地址,明确下站该送往哪个区域的集散中心。接着,那个区域的集散中心自会判断是否能送到对方的家中
- 无论哪台计算机、哪台网络设备,它们 都无法全面掌握互联网中的细节
- 确保可靠性的tcp协议
- tcp位于传输层,提供可靠的字节流服务
- tcp协议为了更容易传送大数据把数据分割,能确认数据是否送达对方
- 确认数据送达
- 为了准确送达,tcp采用三次握手策略。握手过程中使用了tcp的标志--syn和ack
- 发送端先发送一个带syn标志的数据包给对方。
- 接收端收到后,回传一个带syn/ack标志的数据包,以示传达确认信息
- 最后发送端再回传一个带ack标志的数据包,代表握手结束
- 如果握手过程中某个阶段莫名中断,tcp协议会再次以相同顺序发送相同数据包
- 确认数据送达
- 负责域名解析的DNS服务
- DNS是和http协议一样位于应用层的协议。提供域名到ip地址之间的解析服务。
- 计算机可被赋予ip地址,也可被赋予主机名和域名,如www.xxx.com
- DNS提供通过域名查找IP地址,或逆向从IP地址反查域名的服务
- 总结
URI和URL
URI统一资源标识符 和 URL统一资源定位符
- URI 就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称。采用 HTTP 协议时,协议方案就是http。除此之外,还有ftp、mailto、telnet、file 等。标准的URI协议方案有30多种.
URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联 网上所处的位置)。可见 URL 是 URI 的子集。
HTTP
- 请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段 和内容实体构成的。
- 响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成
- http是一种不保存状态,即无状态的协议。
- HTTP 协议自身不对请求和响应之间的通信状态进行保存
- http是无状态的,但是可以有会话
- 比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品
- 使用HTTP的头部扩展Cookies就可以解决这个问题。把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态
- http的method
- get,获取资源
- post,传输实体主体
- put,传输文件,存在安全性问题
- head,获取报文首部。用于确认 URI 的有效性及资源更新的日期时间等
- delete,删除文件,存在安全性问题
- options,询问服务端支持的method
- trace,追踪路径
- connect,要求用隧道协议链接代理
- http持久连接
- 持久连接旨在建立1次TCP连接后进行多次请求和响应的交互,减轻了服务器端的负载
- 管线化:不用等待响应,直接发送下一个请求
- 对称加密,证书多级颁发、浏览器内置带公钥的证书,证书内置公钥和发送方的签名
- 对称加密私钥的生成:客户端随机生成premaster key,发给服务端,服务端随机生成key发给客户端,
- 业务数据传输需要对称加密的key,对称加密的key通过不对称加密拿到
- http2开放tcp的复用