计算机网络学习笔记,课程链接:
- 《网络是怎样连接的(第2版)》,户根勤
- 中科大老师郑烇、杨坚(教材为《计算机网络-自顶向下方法(第7版)》,机械工业出版社,2016)
1. 网络概论
网络的运行可以聚焦到单次交互:浏览器根据域名访问数据,Web服务器将所需的数据响应返回给浏览器,并由浏览器显示在屏幕上。这种交互方式类似于人类的一问一答,但网络在其中需要从很多设备中选定正确的通信对象,并确保无丢失和损坏地传递请求和响应。
确保这种信息传递机制需要网络控制软件,以及交换机、路由器等硬件协力合作实现。协调它们分工合作所用到的一个基本思路是,将数字信息分割呈一个一个的小块,并装入被称为"包"(Packet)的容器中运送,类似于邮递包裹一样,包的头部存有目的地等控制信息,便于交换机和路由器接力转运。
第一部分笔记从这个信息传递过程依次介绍网络的工作原理。
1.1. 浏览器生成消息
1.1.1. 生成http请求
网址 :又叫统一资源定位符 (Uniform Resource Locator,URL),常见以"http://"开头,但其实URL有很多种类,每种有不同的开头,对应着使用浏览器的不同功能,具体种类列在下图中。URL包含着指向具体数据或目标的信息,例如访问Web服务器时就包含域名,发送电子邮件时就包含收件人邮件地址等等。另外根据需要,URL还会包含用户名、密码、服务器端口号等信息。
协议 :通信操作的规则被定义为协议(protocol)。例如浏览器解析URL并发送请求就需要对应的协议,而根据协议不同,URL的格式也不同。
URL省略规则:
- 若URL以 / 结尾,则表示表示路径或文件名被省略了,大多数情况下被省略的文件都被命名为 index.html 或 default.htm 之类的。
- 有时连结尾的 / 也省略,例如 http://www.XXXX.com,就代表访问根目录下的默认文件,文件名同上。这样的文件过去被称为"主页"(Homepage),但现在主页这个词似乎含义更加广泛了。
- 有时也会遇到 http://www.XXXX.com/aaa 这样的URL,结尾并不是一个明显指向文件夹或文件的名称,但也没有 / 作为结尾,这种情况一般来说会搜索Web服务器上名为aaa的文件,如果没有再搜索名为aaa的文件夹。
接下来介绍一下HTTP协议的交互方式,基本思路如下图所示,首先浏览器会根据URL和其当前工作场景来生成HTTP请求消息,包含方法 和统一资源标识符 (Uniform Resource Identifier,URI),URI向Web服务器传递的是"对什么"的信息,方法传递的则是"怎么做"的信息。
URI一般是一个文件名的路径,指向存放网页数据或是一个CGI(对Web服务器程序调用其他程序的规则)程序的文件,有时也可以直接用"http:"开头的URL(具体说明在后文详细展开)。而方法,也叫HTTP谓语,或是HTTP动词,包含需要Web服务器进行的动作信息,详见下表。其中GET是浏览网页的动作,POST是向网页提交信息(填问卷,提交地址等需要输入的操作),其他的动作很难找到常用的例子,但也需要理解。
有时客户端(浏览器)生成的HTTP消息中还会包含头字段,表示附加信息,不过头字段在向Web服务器发送数据时属于可有可无的信息,因此后文再展开。
将URL拆解为URI和方法后,需要将这些信息生成为具体的 HTTP请求消息 。其格式如下图所示。
当Web服务器收到请求消息后,会返回响应消息 ,其基本格式和思路和请求消息相同,差别在第一行需要返回状态码 和响应短语,来表示请求的执行结果。例如在请求中找不到的文件会显示 "404 Not Found" 的信息就是状态码,状态码是一个三位数字,代表不同含义,第一位的简介如下表所示。响应短语则是一段文字,表示执行结果。
如果需要返回的响应消息仅包含文字,那到此为止便完成了一次交互,但如果网页中还有图片等其他资源,网页响应位置会有图片文件的标签信息,当浏览器显示网页时会搜索这类标签,遇到对应标签则在屏幕上留出显示图片的空间,并再次发送图片的请求消息,直到获得对应的响应后将图片呈现在网页中。
对图片或其他资源的每次请求都需要单独发送一个新的URL和一个新的请求。浏览器需要对一个网页的显示进行整体指挥,例如需要发送哪些请求,并如何显示在屏幕上,而对于Web服务器,则无需处理这些请求之间的关系,只需要将所有请求的处理结果返回即可。