从搜索到页面经历的事

一、简单的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的三次握手

如图:

四次挥手

猜你喜欢

转载自www.cnblogs.com/double-W/p/12723523.html