千锋计算机网络期末速成笔记目录
应用层为应用程序的通信提供服务:
应用层功能及协议:
服务器:提供网络服务的设备(由硬件和服务软件组成)。
客户机:请求服务的主机。
资源集中管理。
互联网上的两台主机间的通信基本前提:
现实中找某个人也是如此:
点分十进制的 IP 地址不容易记住而使用域名,类似人们的身份证号码不易记住而使用姓名。数字适合于机器,名字适合于人类。保密单位使用信箱作为通信地址。
解决办法:给互联网的主机取一个唯一的名字。
互联网早期是通过共享一个文本文件的方式,让主机知道 IP 地址与名字(域名)的对应关系。
有新主机加入互联网,在该文件中新增加一条域名与 IP 地址相对应的记录。
随着互联网规模迅速扩大,这种方式的时效性太差。
该文件现在还在使用:
文件内容格式:
127.0.0.1 localhost
202.193.XXX.XXX ubuntu1604
DNS 域名系统解决了共享文件方式中的问题。
互联网采用了层次树状结构的命名方法。
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名的结构由标号序列组成,各标号之间用点隔开:三级域名.二级域名.顶级域名
。
各标号分别代表不同级别的域名。
域名只是个逻辑概念,并不代表计算机所在的物理地点。
域名分类:
1990 年 11 月 28 日,钱天白教授代表中国正式在国际互联网络信息中心(InterNIC)的前身 DDN - NIC 注册登记了我国的顶级域名 CN。
一个服务器所负责管辖的(或有权限的)范围叫做区(zone)。
各单位根据具体情况来划分自已管辖范围的区。但在一个区中的所有节点必须是能够连通的。
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位的。
最高层次、最重要的域名服务器。根域名服务器知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,首先求助于根域名服务器。
在互联网上共有 13 个不同 IP 地址的根域名服务器(13套),它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
13 台根服务器,主根部署在美国,12 个辅根有 9 台在美国,1 台在英国,1 台在瑞典,1 台在日本。
名字 | 位置 | IP 地址 |
---|---|---|
A | INTERNIC.NET(美国弗吉尼亚州) | 198.41.0.4 |
B | 美国信息科学研究所(美国加利弗尼亚州) | 128.9.0.107 |
C | PSINet 公司(美国弗吉尼亚州) | 192.33.4.12 |
D | 马里兰大学(美国马里兰州) | 128.8.10.90 |
E | 美国航空航天管理局(美国加利弗尼亚州) | 192.203.230.10 |
F | 因特网软件联盟(美国加利弗尼亚州) | 192.5.5.241 |
G | 美国国防部网络信息中心(美国弗吉尼亚州) | 192.112.36.4 |
H | 美国陆军研究所(美国马里兰州) | 128.63.2.53 |
I | Autonomica 公司(瑞典斯德哥尔摩) | 192.36.148.17 |
J | VeriSign 公司(美国弗吉尼亚州) | 192.58.128.30 |
K | RIPE NCC(英国伦敦) | 193.0.14.129 |
L | IANA(美国弗吉尼亚州) | 198.32.64.12 |
M | WIDE Project(日本东京) | 202.12.27.33 |
顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。
当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
负责一个区的域名服务器。
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。
这种域名服务器有时也称为默认域名服务器
DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
主机向本地域名服务器的查询采用递归查询。如果本地域名服务器不能解析域名的 IP 地址,本地域名服务器就以 DNS 客户 的身份,向根域名服务器发出查询请求报文。
本地域名服务器向根域名服务器的查询采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。本地域名服务器进行后续的查询。
本地域名服务器采用递归查询。
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
可大大减轻根域名服务器的负荷,使互联网上的 dns 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。
当权限域名服务器回答一个查询请求时,在响应中指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。解决了客户频繁向服务器请求解析不存在的域名问题。
1989 年,蒂姆成功开发出世界上第一个 Web 服务器和第一个 Web 客户机。
1989 年 12 月,蒂姆为他的发明正式定名为 World Wide Web
。
1991 年 5 月,WWW 在 Internet 上首次露面,立即引起轰动,获得了极大的成功被广泛推广应用。
1991年 8 月 6 日,世界上第一个网页 http://info.cern.ch 诞生。
万维网 WWW(World Wide Web)并非某种特殊的计算机网络,它是无数个网络站点和网页的集合,是一个大规模的、联机式的信息储藏所。它们在一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet 以及新闻组)。它实际上是多媒体的集合,是由超级链接连接而成的。
万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。
超媒体与超文本的区别:超文本文档仅包含文本信息,超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。
万维网以 客户/服务器 方式工作。
浏览器是用户计算机上的万维网客户程序。
万维网文档所驻留的计算机则运行服务器程序,称万维网服务器。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
在一个客户程序主窗口上显示出的万维网文档称为页面(page)。
常用的服务器软件:
如何标志分布在整个互联网上的万维网文档?
用什么协议实现万维网上各种超链的链接?
万维网文档如何在互联网上的各种计算机上显示出来,并能清楚地标明超链?
用户如何查找所需的信息 ?
由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。
URL的一般形式例如:http://www.baidu.com:80/index.html
Windows 系统“完整文件”名称:C:\Program Files\VMware\VMware Tools\vmacthlp
Linux系统“完整文件”名称:/etc/passwd
互联网中 http 协议访问文件的“完整文件”名称:
有些浏览器为了方便用户,在输入 URL 时,可以把最前面的 http://
甚至把主机名最前面的 www
省略,然后浏览器替用户把省略的字符添上。
例如,用户只要键入 zhulang.love
,浏览器就自动把未键入的字符补齐,变成 http://www.zhulang.love
。
如果 WWW 服务器监听熟知端口,则 :80
也可以省略。
默认访问的 WWW 根下的 index .html 等文件名也可以省略。
为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。
从层次的角度看,HTTP 是**面向事务的(transaction-oriented)**应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
HTTP 协议永远都是客户端发起请求,服务器回送响应。
这样就限制了使用 HTTP 协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP 协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。
每个 WWW 服务器运行服务器进程,该进程采用 TCP 协议,监听 TCP 80 端口,不断检测是否有浏览器向它发出连接建立请求。
一旦监听到连接建立请求并建立了 TCP 连接之后,客户端浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP 连接就被释放了。
用户浏览页面的两种方法:
在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议 HTTP。
HTTP 规定在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个ASCII 码串构成的请求和响应组成。
HTTP 报文通常都使用 TCP 连接传送。
HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。
HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
HTTP 是面向事务的客户服务器协议。
HTTP 1.0 协议是无状态的(stateless)。
无连接的含义:限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
原因:早期每个客户端与服务器之间交换数据的间歇性较大 (即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,大部分通道实际上会很空闲、无端占用资源。
现在:网页很复杂,嵌入了很多图片,这时候每次访问图片都需要建立一次 TCP 连接就显得很低效。
解决办法:Keep-Alive
被提出用来解决这效率低的问题。
无状态:指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即给服务器发送 HTTP 请求之后,服务器根据请求发回数据。发送完,不记录任何信息。
减轻了服务器负荷,但每次请求可能会传输重复的内容。无状态的特点严重阻碍了客户端与服务器进行动态交互的 Web 应用程序 ,例如购物车程序。
解决办法:Cookie
和 Session
。
万维网站点可以使用 Cookie 来跟踪用户:
一次 HTTP 操作称为一个事务,其工作过程可分为四步:
以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。
对于用户来说,这些过程是由 HTTP 自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
浏览器访问 www.baidu.com 完整的HTTP事务过程:
HTTP/1.1 协议使用持续连接(persistent connection):
在持续连接情况下,客户端发出请求后,服务器发送回响应,由于连接没有释放,客户端无法知道服务器数据是否传输完毕,一直等待。
当服务器进程退出之后,客户浏览器才会显示页面内容。
响应时采用 Transfer-Encoding: chunked
,解决传输数据的边界问题。
在 HTTP 响应头部中,用“Content-Length: 12395”告诉了客户端实体长度为 12359 字节。
代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。
万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。
报文由三个部分组成:开始行、首部行和实体主体。
请求报文中,开始行就是请求行。
“请求方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是些命令。因此,请求报文的类型是由它所采用的方法决定的。
GET
:用来请求已被 URI 识别的资源,并返回实体主体;POST
:向指定资源提交数据进行处理(例如提交表单或者上传文件)。数据被包含在请求体中。 POST 请求可能会导致新的资源的建立和/或已有资源的修改;HEAD
:类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获得报文首部;PUT
:从客户端向服务器传送的数据取代指定的文档的内容;DELETE
:请求服务器删除指定的页面;OPTIONS
:允许客户端查看服务器的性能;TRACE
:回显服务器收到的请求,主要用于测试或诊断;CONNECT
:HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。“URL”是所请求的资源的 URL。
“版本”是 HTTP 的版本。
响应报文的开始行是状态行。
状态行包括三项内容:HTTP 的版本,状态码,以及解释状态码的简单短语。
状态代码由三位数字组成,第一个数字定义了响应的类别,共分 5 种类别:
1xx
:指示信息 —— 表示请求已接收,继续处理;2xx
:成功 —— 表示请求已被成功接收、理解和接受;3xx
:重定向 —— 要完成请求必须进行更进一步的操作;4xx
:客户端错误 —— 请求有语法错误或请求无法实现;5xx
:服务器端错误 —— 服务器未能实现合法的请求。一些例子: