应用层对应用程序的通信提供服务。
① 应用进程交换的报文类型,请求还是响应?
② 各种报文类型的语法,如报文中的各个字段及其详细描述。
③ 字段的语义,即包含在字段中的信息的含义。
④ 进程何时、如何发送报文,以及对报文进行响应的规则。
① 文件传输。访问和管理。
② 电子邮件。
③ 虚拟终端。
④ 查询服务和远程作业登录。
FTP、SMTP和POP3、HTTP、DNS。
服务器:提供计算服务的设备。服务器的特点是:① 永久提供服务,二十四小时不间断。② 永久性访问地址/域名。
客户机:请求计算服务的主机。客户机的特点是:① 与服务器通信,使用服务器提供的服务。② 间歇性接入网络,不必像服务器一样不能宕机。③ 客户机可能使用的是动态IP地址,而不是像服务器一样的永久地址。④ 不与其他客户机进行直接通信。
该模型主要应用于:Web,文件传输FTP,远程登录,电子邮件。
每个主机既可以提供服务,又可以请求服务。
任意端系统 / 节点之间可以直接通信。
节点可以间歇性接入网络,随时加入,随时退出。
节点可能改变IP地址。
可扩展性好。C/S模型中如果大量客户机涌入网络,服务器可能就炸了,而P2P模型中,大量主机涌入网络就相当于服务器多了,客户端也多了,不会有太大影响的。
网络健壮性好。一个节点坏掉了,对整体的影响并不大,重新选择拓扑结构就好了,而对于C/S,如果服务器崩了,那就崩完了。
根据IP地址寻址去上网站,这样也可以,但是未免太过复杂。因而我们可以用域名来代替IP地址。而DNS系统就实现了域名到IP地址的转换。
我们在登陆网站的时候,比如我在浏览器搜索框输入www.bilibili.com,那我这个步骤是先访问DNS服务器,让我的主机得到了bilibili的IP地址,然后我的主机才访问这个IP地址,得到网页信息。所以说,一个网站登不上,可能是DNS服务器出现了问题,也有可能是网页服务器出现了问题。
例如www.csdn.net这样的,就叫做域名。他不区分大小写。点号分隔开的东西叫做标号,每个标号理论上不能超过63个字符,但是一般情况下为了方便记忆,最好不要超过12个字符。
这些标号从左到右级别越来越高,例如对于www.csdn.net,net是顶级域名,csdn是二级域名,www是三级域名。
其实完整的域名的后面还要跟一个点号,这个点号叫做根
① 根域名服务器:(先看④)根域名服务器知道所有顶级域名服务器的IP地址。当本地域名服务器无法得到域名的解析,他就要向根域名服务器求救。例如我们访问www.csdn.net,而本地域名服务器未能解析,递交给了根域名服务器,根域名服务器一看,顶级域名是net,就查询net顶级域名服务器的IP地址,然后告诉本地域名服务器这个IP地址,或者继续往下查询,去net顶级域名服务器,再去下面的权限域名服务器,进行详细查询,直到查询出来这个网站的IP地址。这两种方法就类似于递归和迭代。
② 顶级域名服务器:顶级域名服务器负责管理该顶级域名服务器注册的所有二级域名。
③ 权限域名服务器:负责一个区的域名服务器,所谓的区,是对DNS服务器实际管辖范围的一个区分,比如说百毒有天分裂成了a.baidu.com和b.baidu.com还有baidu.com,那他俩就是属于一个区。
④ 本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。它离主机比较近,一般不超过几个路由器的距离,当一台主机,他要查询的另一台主机是和他属于同一本地SP,也就是属于同一个因特网提供者所提供的范围内的时候,本地域名服务器就可以立刻蒋所查询的主机名转换成他的IP地址。而无需询问其他的服务器。使得DNS查询的过程更加简单。
主机先请求本地域名服务器,若无法解析,本地域名服务器向根域名服务器求助,根域名服务器无法解析则请求顶级域名服务器,顶级域名服务器无法解析则请求权限域名服务器。最后返回信息时也是权限返回给定级,顶级返回给根,根返回给本地,本地返回给主机。
主机先请求本地域名服务器,若无法解析,本地域名服务器向根域名服务器求助,根域名服务器无法解析,向主机返回对应顶级域名服务器的IP,然后本地域名服务器查询顶级域名服务器,若顶级域名服务器也无法解析,告诉主机对应权限域名服务器的IP地址,本地去查询。
从图中我们可以看到不管递归还是迭代,这个域名解析的过程都是极度繁琐复杂的,因而我们在本地域名服务器中引入了高速缓存这一概念。高速缓存可以用来存放最近查过的域名,以及从哪里获得域名映射信息的记录。当然域名IP硬设施会变化的,所以这个高速缓存也是要定时更新。不仅是本地域名服务器,主机也需要高速缓存,因此很多主机一开机就会从本地域名服务器中下载高速缓存。
所以查询域名的过程中一般先查主机的高速缓存,再查本地域名服务器的高速缓存,再使用递归或迭代查询。
常见的文件传送协议有:文件传送协议FTP (File Transfer Protocol)和简单文件传送协议TFTP (Trivial File Transfer Protocol)
TFTP是一种易于实践的文件传送协议,适用于UDP环境。
FTP协议提供了不同种类主机系统(硬软件体系等都可以不同)之间的文件传输能力。FTP是一种拷贝,即上传和下载。
FTP是基于客户/服务器(C/S)的协议。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照 FTP协议提供服务,进行文件传送的计算机就是FTP服务器。
连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
ftp地址、用户名和密码。当然也可以匿名登录,不需要用户名和密码。
互联网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
Anonymous (匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。
FTP不容许一点儿疏忽,因此他使用的TCP协议实现可靠传输。
控制连接使用端口号永远为21,而数据连接是否要使用20,与传输模式有关。主动方式使用TCP 20端口,被动方式由服务器和客户端自行协商决定(端口>1024)
① 文本模式:ASCI模式,以文本序列传输数据;
② 二进制模式:Binary模式,以二进制序列传输数据。
电子邮件分为两部分:信封部分和内容部分。
即电子邮件客户端软件,是电脑上的一个应用程序。他一般有四个功能:撰写,也就是编辑邮件、显示,也就是写完的信会显示到屏幕上,包括发送的和接收的、处理,包括发送和接收右键、通信,也就是可以利用邮件的发送协议发送到指定服务器。
它的主要功能有两个,发送和接收邮件、向发送人报告邮件传送结果。邮件服务器既可以作为服务器,还可以作为客户端,比如别的邮件服务器给这个邮件服务器发送消息,那这个邮件服务器就变成客户端了。
发送邮件使用SMTP协议,接收邮件使用POP3和IMAP协议。
SMTP规定了在两个相互通信的SMTP进程之间应该如何交换信息。
这两个进程分别是负责发送邮件的SMTP客户和负责接收邮件的SMTP服务器。
SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)。
SMTP协议使用TCP连接,使用的端口号是25,使用C/S模式。
SMTP通信要经历三个阶段:连接建立、邮件发送、连接释放。
SMTP服务器若有能力接收邮件,回答“250 OK”否则,回答“421 Service not available”。
A: MAIL FROM <[email protected]>
B: 250 OK / 451(452 500)(SMTP服务器是否已经准备好接收邮件)
A: RCPT TO: <[email protected]>(可以有多个RCPT命令)
B: 250 OK / 550 No much user here()告知SMTP服务器是否有这个用户。
A: DATA(要开始传输邮件的内容了)
B: 354 start mail input; end with
A: hng heng hen aaaaaaaaaaaaaaaaaaaaaaaaaaaa~~~ aaaaaaaaaa~(开始传输邮件内容)
B: 250 OK(接收结束)
邮件发完,SMTP客户发送QUIT命令,SMTP服务器返回“221”,表示同意释放TCP连接。
① SMTP不能传送可执行文件或者其他二进制对象。
② SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。
③ SMTP服务器会拒绝超过一定长度的邮件。
为了弥补以上缺点,我们可以使用通用因特网邮件扩充MIME。
MIME使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。是传输内容变得更加丰富多彩。
;POP3协议使用TCP连接,使用的端口号是110,使用C/S模式。
POP3的工作方式有下载并保留(在服务器)和下载并删除。
IMAP协议比POP协议复杂。当用户主机上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。
不用下载软件,直接在网页上操作。
从发送方用户代理到邮件服务器使用的是http协议。从发送方邮件服务器到接收方邮件服务器仍然使用SMTP协议,从接收方邮件服务器到接收方用户代理使用的是http协议。
万维网WWW (World Wide Web)是一个大规模的、联机式的信息储藏所 / 资料空间,是无数个网络站点和网页的集合。
如何定位万维网中的这些资源呢?使用的是同一定位符URL。
URL的格式为<协议(http https ftp)>://<主机(域名或IP地址)>:<端口>/<路径>
另外URL不区分大小写
如何获取资源呢?用户通过点击超链接(哔哩哔哩动画)或者输入URL传送给使用者。
万维网以客户 / 服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。
万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。
<i>万维网i>使用<b>超文本标记语言HTMLb>使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。<br/><hr/>
<a href="www.csdn.net">通过csdn可以学习htmla>
HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
服务器内有一个进程监听TCP的端口80
① 浏览器分析URL
② 浏览器向DNS请求解析lP地址
③ DNS解析出IP地址
④ 浏览器与服务器建立TCP连接
⑤ 浏览器发出取文件命令
⑥ 服务器响应
⑦ 释放TCP连接
⑧ 浏览器显示
PS:浏览器也可以只下载文本部分。
HTTP协议是无状态的。就是说你第一次登陆这个网站和第二次登陆这个网站,服务器的响应是一样的。
但是在实际工作中,一些万维网站点常常希望能够识别用户。不然你今天登了b站,明天上b站还得重新登一次。
为了解决这个问题,便诞生了cookie,Cookie是存储在用户主机中的文本文件,记录一段时间内某用户(使用识别码识别,如“114514”)的访问记录。b站就知道原来你昨天宠幸过我,好了,不用重新登录了。有了cookie就可以提供个性化服务。
HTTP采用TCP作为运输层协议,但HTTP协议本身是无连接的(通信双方在交换HTTP报文之前不需要先建立HTTP连接)。
HTTP的连接方式分为持久连接(Keep-alive)和非持久连接(Close)。另外持久连接还细分成了非流水线式和流水线式。
非持久连接:
持久连接:
非持久连接每次请求资源都要进行三次握手。
持久连接不至于。请求完了不会像非持久一样就挥手,请求新的资源不用需要重新三次握手。
图中这个持久连接是非流水线式的。发了请求服务器才返回响应,收到了响应之后才能再次请求。(类似于停等协议)。而流水线式就有点像SR了,可以让TCP连接空闲时间比较少,提高下载效率。
首先,http报文分为请求报文和请求报文。
另外,HTTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCIlI码串。
② URL:略,前面有。
③ 版本:使用的是什么版本的http协议。
④ 首部行:说明浏览器、服务器和报文主题的一些信息。也可以不用。
例如下面这个
GET /index.htm1 HTTP/1.1
Host: www.test.edu.cn
Connection: Close
Cookie: 123456
GET是指要获取资源,index.html是要获取的资源,HTTP/1.1是版本,Host是域名,Connection即使用何种连接方式,Close是非持续连接,Cookie即cookie的标识,说明这个用户之前访问过这个域名。
② 状态码和短语:数字和短语组合,例如202 Accepted(访问成功)、404 Not Found(找不到网页)、301 Moved Permanently(网页转移地址)
1xx表示通知信息的,如请求收到了或正在处理。
2xx表示成功,如接受或知道了。
3xx表示重定向,如要完成请求还必须采取进一步的行动。
4xx表示客户的差错,如请求中有错误的语法或不能完成。
5xx表示服务器的差错,如服务器失效无法完成请求。
(PS:该笔记所对应的学习资料b站链接:2019 王道考研 计算机网络)