跳到主要内容

计算机网络

简介

  • HTTP(HyperText Transfer Protocol,超文本传输协议)
  • HTML(HyperText Markup Language,超文本标记语言)
  • URL(Uniform Resource Locator,统一资源定位符)
  • FTP(File Transfer Protocol,文件传输协议)
  • DNS(Domain Name System,域名系统)
  • TCP(Transmission Control Protocol,传输控制协议)
  • UDP(User Data Protocol,用户数据报协议)
  • NIC(Network Interface Card,网络适配器,即网卡)

发展历史:

  • 1990 年问世
  • 1996 年 5 月发布 HTTP/1.0 版本
  • 1997 年 1 月发布 HTTP/1.1 版本

OSI 的七层协议

OSI(Open System Interconnection)模型是一种用于计算机网络体系结构中的标准化框架。该模型将通信过程分解成七个层次,从上到下依次是:

  1. 应用层
  2. 表示层
  3. 会话层
  4. 传输层
  5. 网络层
  6. 数据链路层
  7. 物理层

参考

TCP/IP 的四层模型

分为 4 层,从上到下依次是:

  • 应用层(HTTP/FTP)
  • 传输层(TCP/UDP)
  • 网络层(IP/ARP)
  • 数据链路层

应用层决定了向用户提供应用服务时通信的活动。HTTP 协议处于改层。

传输层对上层应用层提供网络通信服务。TCP、UDP 协议处于该层。

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的传输路径进行通信。IP 协议处于该层。

数据链路层(又称网络接口层)用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC、光纤等物理可见部分。

状态码

状态码由 3 位数字组成,第一个数字定义了响应的类别,且有 5 种可能的取值:

  • 1xx:指示信息 – 表示请求已接收,继续处理。
  • 2xx:成功 – 表示请求已被成功接收、理解、接受。
204 No Content 成功,但不返回任何实体的主体部分;

206 Partial Content 成功执行了一个范围(Range)请求
  • 3xx:重定向 – 要完成请求必须进行更进一步的操作。
301 Moved Permanently 永久性重定向,响应报文的Location首部应该有该资源的新URL

302 Found 临时性重定向,响应报文的Location首部给出的URL用来临时定位资源

303 See Other 请求的资源存在着另一个URI,客户端应使用GET方法定向获取请求的资源

304 Not Modified 服务器内容没有更新,可以直接读取浏览器缓存

307 Temporary Redirect 临时重定向
  • 4xx:客户端错误 – 请求有语法错误或请求无法实现。
400 Bad Request 表示客户端请求有语法错误,不能被服务器所理解

401 Unauthonzed 表示请求未经授权,该状态代码必须与 WWW-Authenticate 报头域一起使用

403 Forbidden 表示服务器收到请求,但是拒绝提供服务,通常会在响应正文中给出不提供服务的原因

404 Not Found 请求的资源不存在,例如,输入了错误的URL
  • 5xx:服务器端错误 – 服务器未能实现合法的请求。
500 Internel Server Error 表示服务器发生不可预期的错误,导致无法完成客户端的请求

503 Service Unavailable 表示服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常

GET 和 POST

TCP 和 UDP

三次握手、四次挥手

DNS

CDN 的作用和原理

正向代理和反向代理

强制缓存和协商缓存

浏览器缓存是浏览器对之前请求过的文件进行缓存,以便下一次访问时重复使用,节省带宽,提高访问速度,降低服务器压力

http 缓存机制主要是在 http 响应头中设定,响应头中相关字段为 Expires、Cache-Control、Last-Modified、Etag

强制缓存

浏览器不会向服务器发送请求,直接从本地缓存中读取文件,并返回Status Code: 200 OK,这里也有两种情况:

  • form memory cache,从内存读取资源,关闭浏览器后数据就没了
  • form disk cache,从磁盘读取资源,关闭浏览器后数据仍然存在

优先访问内存里的缓存、然后是磁盘里的缓存,最后是请求网络资源

相关的响应头

  • Expires 过期时间
  • Cache-Control
    • max-age,假如值为 3600,表示当前时间后的 3600 秒内,不向服务器请求新的数据
    • no-cache
    • no-store,不缓存任何数据

Expires 是 http1.0 规范,是绝对时间,当客户端本地时间和服务器时间不一致时会产生误差,浏览器会向服务器请求新的资源。 Cache-Control 是 http1.1 规范,是相对时间,优先级高于 Expires

协商缓存

向服务器发送请求,服务器会根据请求头来判断是否命中协商缓存,如果命中则返回 304 状态码并带上新的响应头,通知浏览器从缓存中读取资源, 否则返回新的数据资源

浏览器输入 url 到页面展现的过程

1. DNS 解析

域名到 IP 地址的转换过程

image

首先在本地域名服务器中查询 IP 地址,如果没有找到的情况下,本地域名服务器会向根域名服务器发送一个请求, 如果根域名服务器也不存在该域名时,本地域名会向 com 顶级域名服务器发送一个请求,依次类推下去。 直到最后本地域名服务器得到 google 的 IP 地址并把它缓存到本地,供下次查询使用。

DNS 域名:

名称类型说明示例
根域DNS 域名中使用时,规定由尾部句点(.)来指定名称位于根或更高级别的域层次结构单个句点或句点用于末尾的名称
顶级域用来指示某个国家/地区/组织使用的名称的类型名称.com
第二层域个人或组织在 Internet 上使用的注册名称baidu.com
子域已注册的二级域名派生的域名,即网站名www.baidu.com
主机名通常情况下,DNS 域名的最左侧的标签标识网络上的特定计算机h1.www.baidu.com

2. TCP 连接

3. HTTP 请求

4. 服务器处理请求并返回 HTTP 报文

5. 浏览器解析渲染页面

参考地址:

localhost 和 127.0.0.1 的区别

localhost 是本机域名,127.0.0.1 是本机 IP 地址,localhost 通过 host 文件会自动解析到 127.0.0.1

查看 host 文件:cat /etc/hosts

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost