一、简单的web应用
我们在浏览器中输入关键字后,到底发生了什么?其实我们的浏览器就是一个客户端,服务器为每个去请求的客户端返回数据,就是这么简单,但是我们需要了解更底层的实现逻辑。
首先我们需要从最初的网络模型分层开始:TCP/IP分层模型是OSI模型的一种实现(真正基于OSI基础上实现)
详细概念:
物理层:只接收和发送一串比特流,传输数据单位是二进制(网线和网线上的部件) 数据链路层: 传输以“帧”为单位的数据包(交换机和网桥) 网络层:传输数据单元为“数据包”,这层实现端对端的包传递进行定义,负责对子网间数据包进行路由选择,通过寻址来建立连个连接(路由器) 传输层:传输数据单元为“数据段”(软件,TCP\UDP) 会话层:负责建立、管理、终止两个应用系统之间的会话(RPC、RTCP) 表示层:完成数据的编码、解码、加密、解密、压缩(数据格式转换) 应用层:为用户层提供网络管理、文件传输
几个基本概念:
- OSI:Open System Interconnection,开放式通信系统互联参考模型
- 协议:计算机之间实现网络通信之前达成的一种约定,一些规则
- IP:Internet Protocol 网络协议
- 主机: 有网卡的计算机,通过主机名区分
详细网络模型:
HTTP版本变化
1. http 1.0: 默认使用短连接,也就是说每进行一次访问就得建立一次tcp连接,譬如每个静态文件也是一个请求连接
2. http 1.1: 默认使用长连接:connection:kepp-alive,也就是说打开一个网页后不会立即关闭http的tcp连接,可以基于它在此访问该网页
3. http 2.0: http下个版本的规范,一个tcp连接可以请求多个资源
1、多路复用 2、服务端可以推送多个资源 3、二进制分帧 4、首部压缩 5、提升吞吐量
浏览器缓存
强缓存(200fromcache)和协商缓存(304)
强缓存 http1.1 中: Cache-Control/Max-Age http1.0中: Pragma/Expire 弱缓存 If-None-Match/E-tag If-Modified-since
DNS相关
概念: 域名系统(Domain Name System) 是互联网的一项服务,它作为一种将域名和IP地址相互映射的一个分布式数据库,
能够使人更方便的访问互联网。DNS使用TCP和UDP端口53。
常见的DNS记录类型:
1、A:地址记录,返回域名指向的IP地址
2、NS: 域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址,该记录只能设置为域名
3、MX:邮件记录,返回电子邮件服务器地址
4、CNAME: 规范名称记录。
DNS缓存优化
为了减少DNS解析的时间和网络带宽问题,我们可以对DNS进行优化:
1、浏览器
2、系统DNS缓存
3、DNS服务强
TCP相关
TCP:Transmission Control Protocol 传输控制协议
特点: 面向连接的,可靠的,基于字节流的传输层通信协议,建立在tcp/ip之上
端口
端口是指接口电路上的一些寄存器:控制端口、状态端口
设备与外界通讯交流的出口:虚拟端口、物理端口
每一个TCP连接都有一个端口号,且区分不同网络服务有不同的端口:ssh-22;ftp:21;https:443;http:80/8080
TCP的三次握手
如图: