计算机网络是面试时的重要内容,一二面基本都会问到,和操作系统并列作为最重要的面试知识。因此,充分掌握计算机网络知识是十分重要的。

本文就总结整理了我在阅读《图解 HTTP》这本经典的计算机网络书籍时的笔记。在笔记中,我将书中的内容进行了详细的梳理。同时,在一些难点、重点部分,我也查阅了相关资料,并补充整理在了笔记中。参考的资料在文末给出。笔记可能有一些错误,疏漏,还请大家批评指正。

那么,事不宜迟,我们一起来阅读这本书籍吧~

image-20210927105410169

前言

书籍的前言就讲到,基础的网络协议,例如 HTTP,是十分重要的,在编写网络爬虫、提供网站 REST API、实现 HTTP 服务器等方面都会用到。这一点我也是深有体会,我曾经在做实验室项目时爬取了许多国家的专利数据,也曾经爬取过微博数据,在编写和使用爬虫时经常用到相关内容。

本书介绍了 HTTP 方法、协议格式、报文结构、首部字段、状态码,HTTP 通信过程中的代理、网关、隧道,HTTP 扩展功能、Web 安全相关内容如 HTTPS、SSL、证书认证、加密机制、Web 攻击手段等。

1. Web 及网络基础

1.1 使用 HTTP 协议访问 Web

Web 使用名为 HTTP (HyperText Transfer Protocol,超文本传输协议) 的协议作为规范,完成从客户端到服务器端等一系列运作流程。协议(Protocol)指的是互联网设备间通信采用的各种规则。Web 是建立在 HTTP 协议上通信的。

1.2 HTTP 的诞生

WWW (World Wide Web,万维网) 旨在为全球提供知识共享。这个名称原来是用来浏览超文本的客户端应用名称。

三项主要的 WWW 构建技术:

  • SGML (Standard Generalized Markup Language,标准通用标记语言)
  • HTML (HyperText Markup Language,超文本标记语言)
  • URL (Uniform Resource Locator, 统一资源定位符)

HTTP 发展历史:1990 年提出了最早的 HTTP,标记为 HTTP/0.9。1996 年提出的 HTTP/1.0 版本是 HTTP 的第一个正式版本。1997 年提出的 HTTP/1.1 版本是目前主流的 HTTP 协议版本。2015 年提出的 HTTP/2.0 版本现在也得到了广泛推广。

1.3 网络基础 TCP/IP

TCP/IP 协议族是常用网络(包括互联网)的基础,HTTP 协议属于 TCP/IP 协议族。

TCP/IP 协议族的一个重要特点是分层。TCP/IP 协议族包括四层:应用层、传输层、网络层、数据链路层(没有物理层)。分层的好处是层次间的接口规划好后,每个层次的设计可以自由改动,同时各层内部的设计也更简单了。

应用层:决定了向用户提供应用服务时的通信活动。这里指的应用服务是协议族内预存的通用应用服务,例如 FTP (File Transfer Protocol, 文件传输协议)、DNS (Domain Name System, 域名系统) 就是其中两类应用。HTTP 协议也是属于应用层的。

传输层:提供处于网络连接中的两台计算机间的数据传输。传输层的两个性质不同的协议 TCP (Transmission Control Protocol, 传输控制协议) 和 UDP (User Data Protocol, 用户数据协议)。

网络层:负责选择一条传输路线,将数据包送给对方。数据包是网络传输的最小单位。IP 协议属于网络层。

数据链路层:硬件和处理硬件的软件都属于数据链路层,这个分类其实是把物理层也放进去了。例如操作系统、硬件设备驱动、NIC (Network Interface Card, 网络适配器,也就是网卡)、光纤、连接器等。

TCP/IP 协议族的设备通过分层顺序与对方通信。发送端从应用层往下走,接收端往应用层走。以 HTTP 协议为例,应用层通过 HTTP 协议发出一个想看某 Web 页面的 HTTP 请求,传输层通过 TCP 协议将 HTTP 请求报文进行分割、打上标记序号和端口号,网络层通过 IP 协议在报文上增加 MAC 地址作为目的地,链路层发送给服务器。

发送端每经过一层都会打上一个该层的首部信息(encapsulate 封装)。接收端则每经过一层都会把对应首部消去。

image-20210914143158931

image-20210914145336244

1.4 与 HTTP 关系密切的协议:IP、TCP 和 DNS

2. 简单 HTTP 协议

3. HTTP 报文内的 HTTP 信息

4. 返回结果的 HTTP 状态码

5. 与 HTTP 协作的 Web 服务器

6. HTTP 首部

7. 确保 Web 安全的 HTTPS

8. 确认访问用户身份的认证

9. 基于 HTTP 的功能追加协议

10. 构建 Web 内容的技术

11. Web 的攻击技术

参考资料