内容基于中国大学MOOC的2023考研计算机网络课程所做的笔记。
感谢LY,他帮我做了一部分笔记。其中第四章网络层各小节的顺序稍微做了下调整,和上课老师讲的先后顺序稍有不同,但内容是完整的。
课程内容和西电平时讲课的内容大致重合,西电可能会多讲一点内容,但多讲的考试基本不是重点,自己对照任课老师的课件补一下即可。考试要复习的内容看上去很多,但最后考的都很基础,基本不会考特别偏的知识。
王道的计网讲的中规中矩,听课听完可能会有点懵,建议快速过一遍内容后就开始刷题来加深理解。
其他章节的链接如下:
计算机网络笔记(王道考研) 第一章:计算机网络体系结构
计算机网络笔记(王道考研) 第二章:物理层
计算机网络笔记(王道考研) 第三章:数据链路层
计算机网络笔记(王道考研) 第四章:网络层
计算机网络笔记(王道考研) 第五章:传输层
计算机网络笔记(王道考研) 第六章:应用层
其他各科笔记汇总
虚拟终端可以使个人计算机的用户直接使用他人的个人计算机来和大型计算机进行联系而不必使用一些专门的终端,从而方便地使用大型计算机的一些功能
如使用网页的搜索功能时,在客户机上打开百度在搜索框中搜索某个名词再点击百度一下后往服务器发送请求,服务器接收到请求后进行处理并返回提供的服务给对应的客户机
可以专门设置机器来提供服务,也可以在自己的主机上搭建服务器
永久提供服务 —— 不间断地为主机提供服务,一直等待着客户机的请求
永久性访问地址/域名 —— 如百度和谷歌就有长期固定的域名,根据这个域名就能找到服务器
不与其他客户机直接通信 —— 如QQ诞生之前通过聊天室彼此通信,聊天室就使用了服务器。一对一聊天时所发送的数据要通过服务器转发
除了C/S模型之外,还有B(Browser)/S模型。C/S模型通常要下载一些客户端的软件,包括QQ,微信客户端等等。B/S模型和C/S模型都很类似,只不过是把客户端换成了浏览器
整个网络当中的传输内容都不会保存在一个中心的服务器上,而是每个节点都具有上传和下载数据的功能,各自的权利和义务都是大体对等的
可扩展性好 —— 当网络中大量涌入主机时,主机之间还能顺利地请求和提供服务,不需要太担心资源不够用和带宽受限的问题
网络健壮性强 —— 单个节点坏掉对于整个网络没有什么影响
使用BT种子下载或者P2P下载时主机越多下载的速度就越快,刚好和C/S相反
用户访问网站就是主机和另一台主机进行远程通信和资源交换,用户的主机通过IP地址找到对方网站的主机
但现实中通常访问网站时是通过域名,而不需要知道网站服务器的IP地址
DNS系统通过DNS服务器将域名转换为IP地址
在搜索引擎的搜索框中输入域名接下来就会传给DNS服务器,DNS服务器经过一定操作返回对应的IP地址,主机再通过该IP地址进行通信
http://www.cskaoyan.com中网站的域名是www.cskaoyan.com,前面的http是使用的万维网协议
一个域名由被点. 分割开的标号组成
每个标号可以有英文字母和数字,还可以有横杠-。不超过63个字符(一般不超过12字符),不区分大小写字母,标号自左向右级别由低到高
实际上.com后面还有一个点.表示根,但是可以省略
基础结构域名/反向域名:用于反向域名解析,IP地址到域名的映射
为什么二级域名和顶级域名有相同的部分?
如xxx.com.cn表示中国的一家企业所使用的域名
自己也可以注册二级域名,但是要注意不能重名,不然搜索时可能跳到域名相同的别的网站。获得了二级域名的单位就可以申请三级域名,如pku.edu,cn。有些学校前面可能还有四级域名,如www.pku.edu.cn访问的就是北大的主页,mail.pku.edu.cn就是提供邮件服务的服务器所对应的域名
以上就是用域名树的形式表示的整个域名系统。分布在各地的域名服务器实现域名系统
DNS服务器根据树形结构的域名系统进行层次划分,按照层次划分为几种不同的类型
根域名服务器:最高层次,最重要的域名服务器,知道所有顶级域名服务器的域名和对应IP地址
当一个主机要访问一个网站时,DNS请求首先被发给本地域名服务器,本地域名服务器的缓存如果不能完成解析就会向根域名服务器求助
因特网上有13个不同IP地址的根域名服务器,从a.rootservers.net~m.rootservers.net。每个根域名服务器可以对应很多主机
顶级域名服务器:管理在该顶级域名服务器注册的所有二级域名,知道接下来所分支的权限域名服务器的对应IP地址
权限域名服务器:负责一个区的域名服务器
区用来区分各DNS服务器的实际管辖范围,如abc.com和y.abc.com两个域名虽然一个有二级域名一个有三级域名,但地位对等,同属于com域名服务器下的一个分支。单个分支叫做一个域,域下面可以分区,每个区分别对应不同的权限域名服务器,一个权限域名服务器只能负责一个区
如果一个顶级域名服务器无法解析完整域名就要继续往下请求权限域名服务器,如果一个权限域名服务器还不能给出查询回答就会告知下一步应该找下一步应该找哪个新的权限域名服务器
本地域名服务器(实际上不属于域名服务器的层次结构,但对域名系统非常重要):当主机发出DNS查询请求时,将查询报文发送给本地域名服务器
相对于其他三种服务器离主机的距离非常近,一般不超过几个路由器的距离。每一个因特网服务的提供者,每一个大学,甚至是每一个大学里的每一个系都可以拥有一个本地域名服务器,这种域名服务器有时候也称之为默认域名服务器
当一台主机要查询的另一台主机和它同属于一个本地ISP所提供的范围内,本地域名服务器就可以立刻完成解析而不需要再去询问其他的服务器
dnx.com理解为___.com
为了调高DNS查询的效率引入高速缓存的概念,高速缓存用来存放最近查过的域名和和从哪里获得这个域名映射信息的记录
比如若通过迭代查询实现了对y.abc.com的域名解析,则该域名和IP地址的映射关系就会存储在本地域名服务器当中,如果现在再次访问这个网站就只需要搜索本地域名服务器的高速缓存是否有该项,如果有就可以直接把对应的IP地址返回给主机
此外,若本地域名服务器当中并没有对应的IP地址,但是有顶级域名服务器xxx.com的IP地址,则可以直接去往顶级域名服务器,而不需要再经过根域名服务器
高速缓存需要定期更新,处理超过合理时间的项
主机当中也有高速缓存,许多主机在开机时就会从本地域名服务器当中下载域名和地址的对应数据库放到本机的高速缓存中。如果要访问一个网站,首先最应该先看的是本机的高速缓存
提供不同种类主机系统之间的文件传输能力(硬件软件体系均可以不同)
FTP协议可以屏蔽不同操作系统之间的差异性
电脑下载使用FTP客户端软件以实现客户端以及FTP服务端之间的文件传送和交互。在Windows资源管理器输FTP地址然后回车就可以进入到FTP服务器下面的文件目录,然后就可以对文件进行上传和下载,如果权限再高还可以对文件进行重命名和删除等等
Windows自带FTP命令,在命令行实现文件传输功能
FTP是一种服务器端和客户端之间的拷贝。如平时上课时老师给FTP地址,从FTP服务器上把文件拷贝到自己的电脑,做完再拷贝到服务器上,两个方向的拷贝对应对文件的下载和上传操作
匿名服务器产生的原因是有太多的用户要登陆服务器进行文件拷贝操作,为了使服务器的负荷不至于过大,就采用匿名登陆,只要输入地址就可以登陆
FTP服务器和客户端都可以有一个或多个,一个FTP服务器或者说一个FTP服务器的进程可以同时为多个客户进程提供服务,FTP服务器的进程由1个唯一的主进程和 n n n个从属进程两大部分组成
主进程负责接收新的请求,工作时首先打开服务器实现文件传输的熟知端口21,端口打开后客户进程才可以成功连接。然后它只需要等待客户进程发出连接请求,新请求分配相应的从属进程处理,每一个从属进程都可以处理单个的客户请求
控制进程和数据传送进程都属于从属进程,上图中并没有画出主进程
FTP客户发出的传送请求都要通过控制连接发给服务器端的控制进程,控制连接相当于正式传送文件之前的准备步骤。控制连接客户端和服务器端只要建立会话并且会话还未结束控制连接就会始终保持
服务器端的控制进程会在接收到FTP客户端发来的文件传输请求之后创建数据传送进程并且创建数据连接,数据连接才是实际用于传送文件的连接,文件传输完毕之后就会关闭
控制连接和数据连接相互区分,因此FTP的控制信息带外传送
主动方式:客户进程向服务器进程发出建立连接请求,寻找连接服务器进程的熟知端口21,同时告知自身进程的端口号用于建立数据连接。服务器端使用自身传送数据的熟知端口20与客户进程刚刚提供的端口号建立数据连接
何为主动?建立控制连接后服务器端会主动告知客户端自身的端口是20
被动方式:前半部分相同,建立控制连接后客户端会向服务端请求一个端口号,服务器返回一个>1024的端口
非重点,只需要知道是一个面向小文件且易于实现的协议。优点是
1.非常适用于UDP环境,比如当需要将程序或文件同时向许多机器下载时
2.代码块所占的内存比较小,适用于一些小型计算机和特殊用途设备
[email protected]里@前面部分是收件人在网易下注册的用户名,163.com是网易邮件服务器的域名
邮件内容的首部To和Subject需要自己填写,其他部分可以自动生成
用户代理:用户和电子邮件系统的接口,通常情况下就是运行在你电脑当中的一个程序,又叫做电子邮件客户端软件。为用户提供接口,目前就是窗口界面,通过这个界面就可以写和收发邮件
现在不用下载专门的客户端软件, 多使用的是基于万维网的电子邮件,即通过浏览器登录电子邮箱编辑并发送邮件
通信 —— 写完邮件后就要利用邮件的发送协议将邮件发送到指定的邮件服务器当中,收件人也可以从邮件服务器读取收到的邮件
邮件服务器:长时间运作。采用C/S方式,可同时充当服务器和客户
用户代理的发送邮件:邮件从客户端主机发给发送方邮件服务器
邮件服务器的发送邮件:邮件从发送方邮件服务器发送到接收方邮件服务器
邮件服务器的接收邮件:接收方的邮件服务器接收发送方服务器传来的邮件
相关协议(TCP协议):
SMTP:发送方主机 → \to → 发送方邮件服务器、发送方邮件服务器 → \to → 接收方邮件服务器
POP3、IMAP:接收方邮件服务器 → \to → 接收方主机
都使用TCP连接
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息
负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器
SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)
建立在TCP连接之上,使用端口号25,C/S方式
SMTP通信三个阶段:连接建立 → \to → 邮件传送 → \to → 连接释放
A表示SMTP客户端,B表示SMTP服务器端
SMTP的缺点:
MIME理解成一个协议,或者说是一种功能上的扩展,可以使SMTP以及POP3能够处理更多数据类型的邮件
MIME支持多种数据类型的传输,这种多用途的互联网邮件扩展其实是一个互联网的标准,最早应用于电子邮件系统,但现在逐步应用于浏览器。服务器会将发送的多媒体数据类型告知浏览器,而通知手段就是要说明多媒体数据的MIME类型,将MIME标识符放到要传送的数据里,告知浏览器应该用什么插件读取相关的文件
接收端邮件服务器作为POP3服务器,接收方作为POP3客户
同样是接收端邮件服务器到用户代理环节所使用的协议,IMAP协议比POP协议复杂,当用户Pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)
端口和路径有时可以被省略
HTTP协议定义了浏览器(万维网客户端进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
规定如何上网,服务器如何提供请求的资源
每一个万维网的网点都会有对应的服务器进程,这个进程会不断监听TCP的80端口以发现请求服务的万维网客户
用户要浏览一个界面,可以输入URL或者在界面上点击相关的超链接请求服务。一旦服务器监听到连接建立请求并且和客户之间建立好TCP连接之后,浏览器就可以开始向万维网服务器发出浏览界面的请求,也就是开始发送一个HTTP请求报文来请求相关的文档
服务器收到请求报文后就会把请求的资源以文档的形式放入HTTP响应报文返回给客户端,最后就可以释放TCP连接并且在客户机的界面上显示
进入百度音乐的网站可以看到很多歌曲,但是现在不能播放,点击播放按钮之后才可以播放音乐。点击播放按钮其实就是再次循环了一遍以上步骤。所以浏览器不必把界面当中的所有资源全部下载下来,可以只先下载文本部分,之后如果要下载一些图像、声音、音频等等再分别点击相应的图标,单击一次图标就是重复执行以上步骤
HTTP协议是无状态的
比如你在电脑和手机上分别访问同一个网站,服务器的响应相同。即同一个客户第二次访问同一个服务器上的界面时,服务器的响应和第一次被访问时相同
但是在实际工作中,一些万维网站点常常希望能够识别用户 —>> Cookie
比如淘宝的服务器希望能记住用户的身份以便能将选购的物品放到同一个购物车当中以方便集中结账,登录网站时显示“你好,XXX”,此外一些万维网站点也希望通过识别用户获得用户的一些需求以进行数据分析来推销新产品
Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别,通常是一串数字,如“123456”)的访问记录 —>> 提供个性化服务
访问淘宝时淘宝的服务器就可以查看主机当中记录淘宝历史搜索的Cookie
HTTP采用TCP作为传输层协议,但HTTP协议本身是无连接的(即通信双方在交换HTTP报文之前不需要先建立HTTP连接)
非持久连接:
如果万维网客户要再发送HTTP请求报文,需要重新建立TCP连接
持久连接:
持久连接同样要经过三次握手,但服务器发送响应后在一定时间内仍然保持连接。如果要再次发送新的请求报文就不需要重新建立TCP连接,直接在之前建立的连接基础上继续请求新的元素
上图右边为非流水线式,只有收到了响应后才能继续发送新的请求
如下图同时发送多个请求,服务器收到后依次返回相应的请求即为流水线式。客户访问所有的对象只需要花费大概一个RTT时间
注:报文的第一部分被称为开始行,请求报文的开始行也被称为请求行
方法就是一些命令,告知要对所请求的对象进行哪些操作
版本表示使用的HTTP协议版本
首部可以有多行,也可以没有
具体例子:
GET方法请求读取URL所标识的信息
Host: www.test.edu.cn表示现在要请求的html存放在该域名
Connection指的是具体的连接方式,Close是非持续连接
Cookie: 123456说明用户的识别码是123456,存在该字段说明浏览器之前访问过www.test.edu.cn
状态码由3个数字构成,有5种类型,具体有33种。状态码和短语相结合说明响应报文的特点。常见状态码和短语的组合:202 Accepted、301 Moved Permanently(现在请求的网页转移到了新的地址,会在首部行当中标识location首部字段名,并把网页的新URL放到值当中指明新的定位)、404 Not Found