@[toc]
应用层
6.1 应用层概述
- 应用层:解决通过应用进程的交互来实现特定网络应用的问题。(网络之间要传输数据,现在是数据如何表现得问题,比如一个页面,或一段文字,分别用了不同的协议)
- 运输层:解决进程之间基于网络的通信问题
- 网络层:解决分组在多个网络中传输的问题
- 数据链路层:解决分组在一个网络上(或一段链路)上传输的问题
- 物理层:解决使用何种信号来传输比特的问题
6.2 客户服务器方式和对等方式
客户服务器方式
- 客户和服务器是通信中所涉及的两个应用进程
- 客户/服务器方式所描述的是进程之间服务和被服务之间的关系
- 客户是服务请求放,服务器是服务提供方
- 服务器总是处于运行状态,并等待客户的服务请求,服务器具有固定端口号,而运行服务器的注意也有固定的IP地址。
对等方式
没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方,对等方相互之间直接通信,每个对等方既是服务请求者,又是服务提供者。
6.3 动态主机配置协议DHCP
刚生产的电脑是没有IP等信息的,因为IP地址不仅包括了主机号,还包括了网络号,IP地址指出了一台计算机连接在哪个网络上,当计算机还在生产时,无法知道他未来在哪个网络里,因此,需要连接到互联网的计算机,必须进行配置IP地址等信息。
DHCP的工作过程
- DHCP使用客户服务器方式,需要IP地址的主机在启动时就像DHCP服务器广播发送发现报文。(不知道DHCP服务器在什么地方,所以需要广播放送)这样,本网络中所有主机都可以接收到这个广播报文,但只有DHCP服务器才能对此广播报文进行回答。
- DHCP服务器先在此数据库中查找该计算机的配置信息,如果找到就返回,否则就从服务器的IP地址池中取一个地址分配给该计算机。
传输层使用的是UDP协议,因为不需要连接也没办法连接,都不知道对方是谁。
- DPCP服务器被动打开UDP端口,等待客户端发来的报文
- DHCP客户从UDP端口发送DHCP请求报文(我想要一个IP地址,谁能给我)
- 凡收到请求报文的DHCP服务器都发出DHCP提供报文,因此DHCP客户可收到多个DHCP提供报文(我这有,你要不)
- DHCP客户从多个DHCO提供报文中选择一个,然后给所选择的DHCP服务器发送DHCP请求报文(我要你这个)
- 被选择的DHCP服务器发送确认报文。从这时起,DHCP客户端就可以使用这个地址了。这种状态称为已绑定状态,因为在DHCP客户端的IP地址和MAC地址已经完成绑定了,并且可以使用得到的临时IP地址了。
DHCP客户要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时时间分别是0.5T和0.875T。当超时时间过了就要请求更新租用期。
- 租用期过了一般,DHCP客户发送请求报文要求更新租用期
- DHCP服务器若同意,则发回确认报文。DHCP客户得到了新的租用期,重新设置计时器
- 若不同意,则发送否认报文,这时DHCP客户必须立即停止使用原来的IP地址,必须重新申请
- 若DHCP服务器不响应请求报文,则在租用期到0.875T时再次发送请求报文。
- DHCP客户可以随时提前终止服务器所提供的日期,只需向DHCP服务器发送释放报文即可。
DHCP中继代理
如果给每一个网络都配置一个DHCP服务器的话,这样会使DHCP服务器的数量过多,造成了多余的浪费。所以可以让每一个网络都配置一个DHCP中继代理(通常是一台路由器),它配置了DHCP服务器的IP地址信息。
如果不配置的话路由器会讲广播信号屏蔽掉,发现报文就无法到达DHCP服务器。
6.4 域名系统DNS
以下部分为引用内容: https://xiaolincoding.com/network/1_base/what_happen_url.html#%E7%9C%9F%E5%AE%9E%E5%9C%B0%E5%9D%80%E6%9F%A5%E8%AF%A2-dns
域名系统DNS的作用
我们要连接某个服务器的话,必须要知道它的IP地址才能访问,IP地址由一串字符组成,又长又难记。所以为了方便找到对方,我们可以给它加个备注,起个名字,这样就可以直接通过它的别名来找到对应的IP地址,也就是我们所说的域名。
如下图,我们明明想要访问一个网址,却能够得到对方的IP地址。这其中就是DNS域名解析的功劳。
DNS域名解析是如何做到的?
有一种服务器就专门保存了web
服务器域名和IP地址的对应关系,就是DNS服务器
域名的层级关系
本地域名服务器:当一台主机发出DNS查询请求时,首先发给本地域名服务器。一个大学、一个单位可能都有一个本地域名服务器,本地域名服务器离用户比较近,一般不超过几个路由器的距离,当所要查询的注意属于同一个本地ISP时,就可以查到所查询的信息,不需要再查询其他域名服务器。
DNS 中的域名都是用句点来分隔的,比如 www.server.com
,这里的句点代表了不同层次之间的界限。
在域名中,越靠右的位置表示其层级越高。
毕竟域名是外国人发明,所以思维和中国人相反,比如说一个城市地点的时候,外国喜欢从小到大的方式顺序说起(如 XX 街道 XX 区 XX 市 XX 省),而中国则喜欢从大到小的顺序(如 XX 省 XX 市 XX 区 XX 街道)。
实际上域名最后还有一个点,比如 www.server.com.
,这个最后的一个点代表根域名。
也就是,.
根域是在最顶层,它的下一层就是 .com
顶级域,再下面是 server.com
。
所以域名的层级关系类似一个树状结构:
- 根 DNS 服务器(.)
- 顶级域 DNS 服务器(.com)
- 权威 DNS 服务器(server.com)
根域名服务器是最高的,接下来依次排列。
根域的 DNS 服务器信息保存在互联网中所有的 DNS 服务器中。
这样一来,任何 DNS 服务器就都可以找到并访问根域 DNS 服务器了。
因此,客户端只要能够找到任意一台 DNS 服务器,就可以通过它找到根域 DNS 服务器,然后再一路顺藤摸瓜找到位于下层的某台目标 DNS 服务器。
域名解析的工作过程
递归查询:我问你,你不知道,你去找过你问,最后知道信息的人回答询问者,询问者知道信息之后在告诉它的询问者,直到最后告诉我。
迭代查询:我问你,你不知道,你知道别人可能知道,把那个人的信息告诉我,我去问他,他如果直到就告诉我,不知道的话就告诉我谁可能知道这个信息。(就像我们生活中的问路,如果不知道的话就会告诉你走到某个地方再去问其他人一样)
主机向本地域名服务器的查询方式为递归查询,服务器向其他服务器查询的方式有递归查询和迭代查询。
- 客户端首先会发出一个 DNS 请求,问 www.server.com 的 IP 是啥,并发给本地 DNS 服务器(也就是客户端的 TCP/IP 设置中填写的 DNS 服务器地址)。
- 本地域名服务器收到客户端的请求后,如果缓存里的表格能找到 www.server.com,则它直接返回 IP 地址。如果没有,本地 DNS 会去问它的根域名服务器:“老大, 能告诉我 www.server.com 的 IP 地址吗?” 根域名服务器是最高层次的,它不直接用于域名解析,但能指明一条道路。
- 根 DNS 收到来自本地 DNS 的请求后,发现后置是 .com,说:“www.server.com 这个域名归 .com 区域管理”,我给你 .com 顶级域名服务器地址给你,你去问问它吧。”
- 本地 DNS 收到顶级域名服务器的地址后,发起请求问“老二, 你能告诉我 www.server.com 的 IP 地址吗?”
- 顶级域名服务器说:“我给你负责 www.server.com 区域的权威 DNS 服务器的地址,你去问它应该能问到”。
- 本地 DNS 于是转向问权威 DNS 服务器:“老三,www.server.com对应的IP是啥呀?” server.com 的权威 DNS 服务器,它是域名解析结果的原出处。为啥叫权威呢?就是我的域名我做主。
- 权威 DNS 服务器查询后将对应的 IP 地址 X.X.X.X 告诉本地 DNS。
- 本地 DNS 再将 IP 地址返回客户端,客户端和目标建立连接。
浏览器会先看自身有没有对这个域名的缓存,如果有,就直接返回,如果没有,就去问操作系统,操作系统也会去看自己的缓存,如果有,就直接返回,如果没有,再去 hosts 文件看,也没有,才会去问「本地 DNS 服务器」。
练习题
6.5 文件传送协议FTP
FTP概念
FTP应用
工作原理
当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器的进程端口21,同时还要向告诉服务器自己的另一个端口号,用于建立传送连接。接着,服务器进程用自己传送数据的熟知端口20与客户进程提供的端口号进行连接。由于使用了两个端口号,所以数据连接和控制连接不会混乱。
建立两个连接的好处是是协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制,例如,客户进程发送请求终止运输。
控制连接:在整个会话期间一直保持打开,用于传送FTP相关控制命令
数据连接:用于文件传输,在每次文件传输时才建立,传输结束就关闭。
6.6 电子邮件
电子邮件概述
电子邮件采用客户/服务器方式
用户代理:用户与电子邮件系统的接口,又称电子邮件客户端软件
邮件服务器:发送和接收邮件,同时还要负责维护用户的邮箱
协议:邮件发送协议(SMTP),邮件读取协议(POP3)
SMTP的基本工作原理
电子邮件的格式
MIME
文件读取协议
基于万维网的电子邮件
6.7 万维网WWW
万维网并非某种特殊的计算机网络,它时一个大规模的、联机式的信息储藏所,是运行在因特网上的一个分布式应用。
万维网利用网页之间的超链接讲不同网站的网页链接乘一张逻辑上的信息网。
万维网的应用
超文本传输协议HTTP
HTTP定义了浏览器怎么向万维网服务器请求万维网文档,以及万维网服务器怎么讲万维网文档发送给浏览器。
Cookie
当我们登录一些网站后,可以选择记住我选择,浏览器就会讲这部分信息保存下来发送给服务器,下次在访问的时候可以直接登录了而不用子啊此输入账号密码。
浏览器向服务器发送一个请求后,服务器会为该客户生成一个Cookie识别码,并以此为索引在服务器的后端数据库中创建一个项目,用来记录该用户访问该网站的各种信息。
等浏览器下次在访问这个服务器时,会现在自己浏览器的缓存中找到对应的Cookie信息,发送给服务器,服务器根据Cookie识别码识别出该用户,并返回该用户的个性化网页。
万维网缓存与代理服务器
在万维网中可以使用缓存机制以提高访问的效率
万维网缓存又称为Web缓存,可位于客户机,也可位于中间系统上,位于中间系统的Web缓存又称为代理服务器
当浏览器发送请求时,会现在自己的缓存中寻找有没有对应的请求和相应。如果有就返回暂存的相应,而不需要按URL的地址再次取因特网访问该资源。
如果原始服务器的文件内容已修改,那缓存中的文件不就和原始服务器中的文件不一样了吗?
原始服务器在响应时会给文件设置一个修改时间字段和有效日期字段。
浏览器向原始服务器发送请求时,会先去代理服务器中查看相应的相应是否过期,如果没过期就返回对应的响应报文。
如果过期了就向原始服务器发送请求报文其中包含了修改日期,原始服务器根据修改日期看代理服务器中的文档与自己的文档日期是否一致,如果一致,就给代理服务器发送不包含实体主体的报文,状态码为304 Not Modified,告知未修改,代理服务器就可以修改过期时间。如果不一致的话就需要给代理服务器发送封装有该文档的响应报文。