计算机网络(谢希仁第7版)-运输层
计算机网络(谢希仁第7版)- 网络层

应用层

应用层的许多协议都是基于客户服务器方式,即使是P2P对等通信方式,实质上以上一种特殊的客户服务器方式。客户和服务器都是指通信中所涉及的两个应用进程。客户是服务请求方,服务器是服务提供方。

域名系统DNS(Domain Name System)

域名系统DNS是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

互联网的域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。

域名到IP地址的解析是由分布在互联网上的许多域名服务程序共同完成的,域名服务器程序在专设的结点上运行,常把运行域名服务器程序的机器称为域名服务器。

域名到IP地址的解析过程要点:当某一个应用进程需要把主机名解析成IP地址时,该应用进程就调用解析程序(resolver),并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器,本地域名服务器在查找域名后,把对应IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

互联网的域名结构

互联网采用层次树状结构的命名方法,任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。域是名字空间中一个可被管理的划分。域还可以划分为子域,子域还可继续划分为子域的子域,这样就形成了顶级域、二级域、三级域,等等。

每一个域名都由标号(label)序列组成,而各标号之间用点隔开,级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。由多个标号组成的完整域名总共不超过255个字符。

域名中的点和点分十进制IP地址中的点并无一 一对应的关系。

域名中的标号都由英文字母和数字组成,每一个标号不超过63字符,也不区分大小写字母,标号中除连字符(-)外不能使用其他的标点符号。

顶级域名共分为三大类:

1)国家顶级域名nTLD:采用ISO3166的规定。cn表示中国,us表示美国,uk表示英国。国家顶级域名名又常记为ccTLD。

2)通用顶级域名gTLD:com(公司企业),net(网络服务机构),org(非盈利性组织),int(国际组织),edu(美国专用的教育机构),gov(美国的政府部门),mil(美国军事部门),aero(航空运输企业),asia(亚太地区),biz(公司和企业),coop(合作团体),info(各种情况),jobs(人力资源管理者),mobi(移动产品与服务的用户和提供者),museum(博物馆),name(个人),pro(有证书的专业人员),tel(Telnic股份有限公司),travel(旅游业)。

3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,又称为反向域名。

ICANN于2011年6月20日正式批准新顶级域名(New gTLD),任何公司、机构都有权向ICANN申请新的顶级域名。新顶级域名被认为是真正的企业网络商标。

我国把二级域名划分为类别域名和行政区域名两大类:

1)类别域名共7个:ac(科研机构),com(工、商、金融等企业),edu(中国的教育机构),gov(中国的政府机构),mil(中国的国防机构),net(提供互联网络服务的机构),org(非盈利性的组织)。

2)行政区域名共34个:适用于我国的各省、自治区、直辖市。bj(北京市),js(江苏省)。

关于我国的互联网络发展现状以及各种规定,均可在中国互联网网络信息中心CNNIC的网址上找到。

互联网域名空间的结构,用域名树来表示,实际上式一个倒过来的树,最上面是根,但没有对应的名字,根下面一级的节点是最高一级的顶级域名,顶级域名可往下划分子域,即二级域名。再往下就是三级域名、四级域名,等等。

域名服务器

一个服务器所负责管辖的范围叫做区(zone)。一个区中的所有节点必须是能够连通的,每个区设置相应的权限域名服务器(authoritative name server),用来保存该区中所有主机的域名到IP地址的映射。DNS服务器的管辖范围是以区为单位,区是域的子集。

根据域名服务器所起的作用,可把域名服务器划分为四种不同类型:

1)根域名服务器(root name server):根域名服务器是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。在许多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

2)顶级域名服务器(TLD服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答,可能使最后的结果,也可能是下一步应当找的域名服务器的IP地址。

3)权限域名服务器:这就是负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪个权限域名服务器。

4)本地域名服务器:每一个互联网服务提供者ISP,或一个大学,甚至是一个大学的一个系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。当计算机使用Windows7操作系统时,打开控制面板—>网络和Internet—>网络和共享中心—>查看网络状态和任务—>无线网络连接—>属性—>Internet协议版本4—>属性等项目,就可以看见首选DNS服务器和备用DNS服务器的IP地址。

为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中一个叫主域名服务器(master name server),其他的是辅助域名服务器(secondary name server)。

域名的解析过程:

1)主机向本地域名服务器的查询一般都是采用递归查询(recursive query)。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,就以DNS客户的身份,向其他域名服务器继续发出查询请求报文,而不是让该主机自己进行下一步的查询。

2)本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query)。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,然后让本地域名服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要 查询的IP地址,要么告诉本地域名服务器下一步应当向哪个权限域名服务器进行查询。

在域名服务器中广泛使用了高速缓存,用来存放最近查询过的域名以及从何处获得域名映射信息的记录。每项内容都设置计时器并处理超时的项。

文件传送协议FTP

FTP是互联网上使用最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型和格式,并允许文件具有存取权限。

文件传送协议FTP只提供文件传送的一些基本服务,它使用TCP可靠的运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务器进程由两部分组成,主进程,负责接受新的请求,另有若干个从属进程,负责处理单个请求。

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:控制连接和数据连接。

控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,实际用于传输文件的是数据连接。

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口21,同时告诉服务器进程自己的另一个端口号码,用于建立数据传送连接,服务器进程用自己传送数据的熟知端口20与客户进程所提供的端口号建立数据传送连接。

网络文件系统NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据,这样,NFS可使用户只复制一个大文件中一个很小的片段,而不需要复制整个文件。

简单文件传送协议TFTP

TFTP(Trivial File Transfer Protocol),是一个很小且易于实现的文件传送协议。它使用UDP数据报,需要有自己的差错改正措施,只支持文件传输而不支持交互。

TFTP两个优点:

1)TFTP可用于UDP环境,当需要程序或文件同时向许多机器下载时就往往需要使用。

2)TFTP代码所占内存较小。

TFTP主要特点:

1)每次传送的数据报文中有512字节的数据,最后一次可不足512字节。

2)数据报文按序编号,从1开始。

3)支持ASCII码或二进制传送。

4)可对文件读或写。

5)使用很简单的首部。

TFTP的工作很像停止等待协议,发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号,发送数据后在规定时间内收不到确认就要重发数据PDU,发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。

TFTP服务器进程熟知端口号码为69。TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信。若文件长度恰好是512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。

远程终端协议TELNET,又称终端仿真协议

TELNET是一个简单的远程终端协议,用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一台主机上(使用主机名或IP地址)。

TELNET能将用户的击键传送到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。

TELNET使用客户服务器方式,在本地系统进行TELNET客户进程,而在远地主机则运行TELNET服务器进程。

网络虚拟终端NVT(Network VIrtual Terminal),客户软件把用户的敲击键盘和命令转换成NVT格式,并送交服务器。服务器把收到的数据和命令从NVT格式转换成远地系统所需的格式。向用户返回数据时,服务器把远地系统的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式。

NVT的格式定义很简单,所有通信都使用8位一个字节。在运转时,NVT使用7位ASCII码传送数据,而当高位置为1时用作控制命令

万维网WWW

万维网是一个大规模的、联机式的信息储藏所,简称Web。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。所谓超文本是指包含指向其他文档的链接的文本。

超媒体与超文本的区别是文档内容不同,超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画及视频图像等。

万维网以客户服务器方式工作,浏览器就是在主机上用户主机上的万维网客户程序。万维网文档所驻留的主机则运行服务器程序。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档,在一个客户程序主窗口上显示出的万维网文档称为页面。

万维网使用统一资源定位符URL(Uniform Resource Locator)来标志万维网上的各种文档,并使用每一个文档在整个互联网的范围内具有唯一的标识符URL。

HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。万维网使用超文本标记语言HTML,使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将页面显示出来。

统一资源定位符URL

URL的格式

统一资源定位符URL是用来表示从互联网上得到资源位置和访问这些资源的方法。URL实际上就是在互联网上的资源的地址。

URL的一般形式由四个部分组成:<协议>://<主机>:<端口>/<路径>

现在最常用的协议就是http,其次是ftp

在输入URL时,可以把最前面的http://甚至把主机名最前面的www省略,浏览器替用户把省略的字符添上。

HTTP的默认端口是80。HTTP是面向事物的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件的重要基础。

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传,HTTP协议本身是无连接的,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文前不需要先建立HTTP连接。HTTP协议是无状态的,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

用户在点击鼠标链接某个万维网文档时,HTTP协议首先要和服务器建立TCP连接,这需要使用三报文握手,当建立TCP连接的三报文的前两部分完成后,万维网客户就把HTTP请求报文,作为建立TCP连接的三报文握手中的第三个报文的数据,发送给万维网服务器,服务器收到HTTP请求报文后,就把所请求的文档作为响应报文返回给客户。

HTTP/1.1协议使用了持续连接(persistent connection),就是万维网服务器在发送响应报文后仍在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。

HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式和流水线方式。非流水线方式的特点是客户在收到前一个响应后才能发出下一个请求。流水线方式的是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。

代理服务器(proxy server)是一种网络实体,它又称为万维网高速缓存(Web cache),代理服务器把最近的一些请求和响应暂存在本地磁盘中,当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问资源。

HTTP的报文结构

HTTP有两类报文:

1)请求报文,从客户向服务器发送请求报文。

2)响应报文,从服务器到客户的回答。

由于HTTP是面向文本的,因此在报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。

HTTP请求报文和响应报文都是由三个部分组成的,区别是开始行不同。

1)开始行,用于区分是请求报文还是响应报文,在请求报文的开始行叫做请求行(Request-Line),在响应报文中的开始行叫做状态行(Status-Line),在开始行的三个字段之间都以空格分隔开,最后的CR和LF分别代表回车和换行。

2)首部行,用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,在每一行结束的地方都要有回车和换行。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

3)实体主体(entiry body),在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的第一行“请求行”只有三个内容:方法,请求资源的URL及HTTP的版本。方法就是对所请求的对象进行的操作,这些方法实际上也就是一些命令,请求报文的类型是由它所采用的方法决定的。

一个完整的HTTP请求报文的例子:

每一个请求报文发出后,都能收到一个响应报文,响应报文的第一行就是状态行。

状态行包括三项内容,即HTTP的版本,状态码,以及解释状态的简单短语。

状态码(Status-Code)都是三位数的,分为五大类:

1xx表示通知消息,如请求收到了或正在进行处理。

2xx表示成功,如接受或知道了

3xx表示重定向,如要完成请求还必须采取进一步的行动

4xx表示客户的差错,如请求中有错误语法或不能完成

5xx表示服务器的差错,如服务器失效无法完成请求

在服务器上存放用户的信息

HTTP中使用Cookie表示在HTTP服务器和客户之间传递的状态信息。

当用户A浏览某个使用Cookie的网站时,该网站的服务器就为A产生一个唯一的标识码,并以此作为索引在服务器的后端数据库中产生一个项目,接着在给A的HTTP响应报文中添加一个叫做Set-cookie的首部行,这里的首部字段名就是Set-cookie而后面的值就是赋予该用户的识别码。

当A收到响应时,其浏览器就在它管理的特定Cookie文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面给出标识码,当A继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码,并放到HTTP请求报文的Cookie首部行中。

超文本标记语言HTML

超文本标记语言HTML(HyperText Markup Language)就是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。官方HTML标准由万维网联盟W3C负责制定。

HTML定义了许多用于排版的命令,即标签,HTML把各种标签嵌入到万维网的页面中,这样就构成了所谓的HTML文档。HTML文档是一种可以用任何文本编辑器创建的ASCII码文件。

一个页面本身带有的图像称为内含图像,大多数浏览器都支持GIF和JPEG文件。

XML是可扩展标记语言,它和HTML很相似,但XML的设计宗旨是传输数据而不是显示数据。

另一种语言XHTML是可扩展超文本标记语言,是更严格的HTML版本,也是一个W3C标准,是作为一种XML应用被重新定义的HTML并逐渐取代HTML。

电子邮件

电子邮件的标准:简单邮件传送协议SMTP(Simple Mail Transfer Protocol)、互联网文本报文格式、通用互联网邮件扩充MIME(Multipurpose Internet Mail Extensions)。

一个电子邮件系统有三个主要构件:用户代理、邮件服务器和邮件发送协议(如SMTP)和邮件读取协议(如POP3)。POP3是邮局协议(Post Office Protocol)的版本3。

用户代理UA(User Agent)就是用户与电子邮件系统的接口,就是运行在用户电脑中的一个程序,又称为电子邮件客户端软件。

邮件服务器的功能是发送和接收邮件,同时还要向发件人报告邮件发送的结果。邮件服务器按照客户服务器方式工作。邮件服务器需要使用两种不同的协议:用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP协议。用于用户代理从邮件服务器读取邮件,如邮件协议POP3。

简单邮件传送协议SMTP

SMTP规定了两个相互通信的SMTP进程之间应如何交换信息。SMTP使用客户服务器方式,负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的SMTP进程就是SMTP服务器。

SMTP熟知端口号码是25,SMTP不使用中间的邮件服务器。

发送方和接收方的邮件服务器之间的SMTP通信的三个阶段:

1、连接建立

SMTP与接收方邮件服务器的SMTP服务器建立TCP连接。建立连接后,接收方SMTP服务器要发出220 Service ready(服务就绪)。然后SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。SMTP服务器若有能力接收邮件则回答250 OK,若服务器不可用,则回答421 Service not available。

2、邮件传送

邮件的传送从MAIL命令开始。MAIL命令后面有发件人地址。服务器已做好接收准备,回答250 OK。否则返回一个错误码,451(处理时出错),452(存储空间不足),500(命令无法识别)

下面跟着一个或多个RCPT(recipient)命令,取决于把同一个邮件发送给一个或多个收件人,其格式为RCPT TO:<收件人地址>。每发送一个RCPT命令,都应当有相应的信息从SMTP服务器返回。250 OK,550 No such user here(无此用户)

RCPT命令的作用是先弄清接收方系统是否做好接收邮件的准备,然后才发送邮件。

接着是DATA命令,表示要开始传送邮件内容了。服务器返回的信息时354 Start mail input;end with.,是回车换行,若不能接收邮件,则返回421(服务器不可用)、500(命令无法识别)等。接着SMTP客户发送邮件内容,发送完毕再发送.表示邮件内容结束。

3、连接释放

邮件发送完毕后,SMTP客户应发送QUIT命令,SMTP服务器返回的信息是221(服务关闭),表示同意释放TCP连接。

扩充的SMTP(Extended SMTP)ESMTP新增功能有:客户端的鉴别、服务器接受二进制报文,服务器接受分块传送的大报文、发送前先检查报文的大小、使用安全传输TLS及使用国际化地址等。

ESMTP客户端在准备发送报文时,先发送EHLO报文,如果EHLO报文被对方服务器拒绝,表明对方仍然是一个标准的SMTP邮件服务器,因而就要按照原来使用的SMTP参数进行邮件的传送。

电子邮件的信息格式

一个电子邮件分为信封和内容两大部分。RFC 5322文档只规定了邮件内容中的首部格式,而邮件主体部分让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取处理写在信封上。

邮件首部关键字:

To: 后面填入一个或多个收件人的电子邮件地址。

Subject: 是邮件的主题,反映了邮件的主要内容。

Cc: Carbon cory,表示应给某人发送一个邮件副本。

Bcc: 实现盲复写副本,使发件人能将邮件的副本发送给某人,但不希望此事收件人知道。

Reply-To: 即对方回信所用的地址。

From: 发件人的电子邮件地址,Date: 发信日期,这两项由邮件系统自动填入。

邮件读取协议POP3和IMAP

邮件协议POP是一个非常简单,但功能有限的邮件读取协议。特点是只要用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除。

IMAP是目前使用最广的协议,IMAP在用户发出删除邮件的命令之前,IMAP服务器邮箱中的邮件一直保存着。

IMAP最大的好处就是用户可以在不同地方使用不同的计算机随时上网阅读和处理自己在邮件服务器中的邮件,缺点是如果用户没有将邮件复制到自己的计算机上,则邮件一直存放在IMAP服务器上,要想查阅必须先上网。

基于万维网的电子邮件

使用万维网电子邮件不需要在计算机中再安装用户代理软件,浏览器本身可以向用户提供非常友好的电子邮件界面,使用户在浏览器上就能够很方便的撰写和收发电子邮件。

通用互联网邮件扩充MIME

MIME的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。

MIME主要包括三部分内容:
1)5个新的邮件首部字段,包含在原来的邮件首部中。

​ MIME-Version: 标志MIME的版本,现在的版本号是1.0。

​ Content-Description: 这时可读字符串,说明此邮件主体是否是图像、音频或视频。

​ Content-Id: 邮件的唯一标识符。

​ Content-Transfer-Encoding: 在传送时邮件的主体是如何编码的。

​ Content-Type: 说明邮件主体的数据类型和子类型

2)定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

​ 内容传送编码(Content-Transfer-Encoding)

  1. 最简单的编码就是7位ASCII码,而每行不能超过1000个字符,MIME对这种由ASCII码构成的邮件主体不进行任何转换。

  2. quoted-printable,这种编码方法使用于所传送的数据中只有少量的非ASCII码,如汉字,这种编码方法的主要要点就是对于所有可打印的ASCII码,除特殊字符等号"="外,都不改变。等号和不可打印的ASCII码以及非ASCII码的数据的编码方法是:先将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加上一个等号“=”。例如,汉字中的“系统” 的二进制代码是11001111 10110101 11001101 10110011(共32位),其十六进制数字表示为:CFB5CDB3。用quoted-printable编码表示为:=CF=B5=CD=B3,这12个字符都是可打印的ASCII字符,它的二进制编码需要96位。

  3. base64编码,对于任意的二进制文件都可使用。这种编码方法是先把二进制代码划分为一个个24位长的单元,然后把每一个24位单元划分为4个6位组,每一个6位组按以下方法转换成ASCII码。6位二进制代码共有64种不同的值,从0到63。用A表示0,B表示1,26个大写字母排列完毕后是26个小写字母,后面是10个数字,最后用+表示62,用"/"表示63。再用两个连在一起的等号“==”和一个等号“=”分别表示最后一组的代码只有8位或16位。回车和换行都忽略,它们可以在任何地方插入。

    一个base64编码的例子:

    • 24位二进制代码 01001001 00110001 01111001
    • 划分为4个6位组 010010 010011 000101 111001
    • 对应的base64编码 S T F 5
    • 用ASCII编码发送 01010011 01010100 01000110 00110101

    24位的二进制代码采用base64编码后变成了32位,开销为25%

3)定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

MIME标准规定Content-Type说明必须包含两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。

MIME标准7个基本内容类型和15个子类型:

内容类型 子类型举例 说明
text(文本) plain,html,xml,css 不同格式的文本
image(图像) gif,jpeg,tiff 不同格式的静止图片
audio(音频) basic,mpeg,mp4 可听见的声音
video(视频) mpeg, mp4,quicktime 不同格式的影片
model(模型) vrml 3D模型
application(应用) octet-strarm,pdf,javascript,zip 不同应用程序产生的数据
message(报文) http,rfc822 封装的报文
multipart(多部分) mixed,alternative,parallel,digest 多种类型的组合

multipart类型是很有用的,四种可能的子类型:

  1. mixed子类型允许单个报文含有多个相互独立的子报文,每个子报文可有自己的类型和编码。mixed子类型报文使用户能够在单个报文中附上文本、图片和声音,或者用额外数据段发送一个备忘录。在mixed后面还要用到一个关键字即Boundary=,此关键字定义了分隔报文各部分所用的字符串,只要在邮件的内容中不会出现这样的字符串即可。当某一行以两个连字符“–”开始,后面紧跟上Boundary=,就表示下面开始了另一个子报文。
  2. alternative子类型允许单个报文含有同一数据的多种表示,当给多个使用不同硬件和软件系统的收件人发送备忘录时,这种类型的multipart报文很有用。例如,用户可同时用普通的ASCCII文本和格式化的形式发送文本,从而允许拥有图形功能的计算机用户在查看图形时选择格式化的形式。
  3. parallel子类型允许单个报文含有可同时显示的各个子部分(图像和声音子部分必须一起播放)
  4. digest子类型允许单个报文含有一组其他报文

动态主机配置协议DHCP

动态主机配置协议DHCP(Dynamic Host Configuration Protocol),它提供了一种机制,即插即用连网(plug-and-play networking),这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。

每一个网络至少有一个DHCP中继代理(relay agent),它配置了DHCP服务器的IP地址信息,当DHCP中继代理收到主机A以广播形式发送的发现报文后,就以单播方式向DHCP服务器转发此报文,并等待其回答,收到DHCP服务器回答的提供报文后,DHCP中继代理再把提供报文发回给主机A。

DHCP服务器分配给DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限时间内使用这个分配到的IP地址。DHCP协议称这段时间为租用期(lease period)。

DHCP客户使用的UDP端口是68,而DHCP服务器使用的UDP端口是67。

应用进程跨越网络的通信

大多数操作系统使用系统调用(system call)的机制在应用程序和操作系统之间传递控制权。

系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口。

应用程序在使用系统调用之前要编写一些程序,特别是要设置系统调用中的许多参数,这种系统调用接口又称为应用编程接口API(Application Programming Interface)。API从程序设计的角度定义了许多标准的系统调用函数,应用进程只要使用标准的系统调用函数就可得到操作系统的服务。

网络编程时常常把套接字作为应用进程和运输层协议之间的接口,代表接口有套接字接口(socket interface),Windows Socket。

在套接字以上的进程是受应用程序控制的,而在套接字以下的运输层协议软件则是受计算机系统控制的。只要应用程序使用TCP/IP协议进行通信,就必须通过套接字与操作系统交互并请求其服务。

当应用程序需要使用网络进行通信时,必须首先发出socket系统调用,请求操作系统为其创建一个套接字,这个调用实际效果是请求操作系统把网络通信所需要的一些系统资源(存储器空间,CPU时间,网络带宽等)分配给该应用进程。操作系统为这些资源的总和用一个叫做套接字描述符(socket descriptor)的号码来表示,然后把这个套接字描述符返回给应用进程。此后,应用进程所进行的网络操作(建立连接,收发数据,调整网络通信参数等)都必须使用这个套接字描述符,几乎所有的网络系统调用都把这个套接字描述符作为套接字的许多参数中的第一个参数。在处理系统调用的时候,通过套接字描述符,操作系统就可以识别出应该使用哪些资源来完成应用进程所请求的服务,通信完毕后,应用进程通过一个关闭套接字的close系统调用通知操作系统回收与该套接字描述符相关的所有资源。

使用TCP服务的系统调用

1、连接建立阶段

当套接字被创建后,它的端口号和IP地址都是空的,应用进程要调用bind(绑定)来指明套接字的本地地址,在服务器端调用bind时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这叫做本地地址绑定到套接字。在客户端也可以不调用bind,这时由操作系统内核自动分配一个动态端口号。

服务器在调用bind后,还必须调用listen把套接字设置为被动方式,以便随时接受客户的服务请求。UDP服务器由于只提供无连接服务,不使用listen系统调用。

服务器紧接着就调用accept(接受),以便把远地客户进程发来的连接请求提取出来,系统调用accept的一个变量就是要指明是从哪个套接字发起的连接。

调用accept要完成的动作较多,这是因为一个服务器必须能够同时处理多个连接,这样的服务器常称为并发方式工作(concurrent)的服务器。

2、数据传送阶段

客户和服务器都在TCP连接上使用send系统调用传送数据,使用recv系统调用接收数据。服务器用recv接收客户用send调用发送的请求,客户在发完请求后用recv接收回答。

调用send需要三个变量:数据要发往的套接字的描述符、要发送的数据的地址以及数据的长度。通常send调用把数据复制到操作系统内核的缓存中,若系统的缓存已满,send就暂时阻塞,直到缓存有空间存放新的数据。

调用recv也需要三个变量:要使用的套接字的描述符、缓存地址以及缓存空间的长度。

3、连接释放阶段

一旦客户或服务器结束使用套接字,就把套接字撤销,这时就调用close释放连接和撤销套接字。

P2P应用

所谓P2P体系结构就是在这样的网络应用中,没有或只有极少数的固定的服务器,而绝大多数的交互都是使用对等方式进行的。

P2P应用的范围很广,文件分发、实时音频或视频会议、数据库系统、网络服务支持(P2P打车软件、P2P理睬等)。

第三代P2P共享文件程序,它们使用分散定位和分散传输技术。

比特洪流BT(Bit Torrent):

BItTorrent把参与某个文件分发的所有对等方的集合称为一个洪流(torrent),BT把对等方下载文件的数据单元称为文件块(chunk),一个文件块的长度是固定不变的。

每个洪流都有一个基础设施结点,叫做追踪器(tracker),当一个对等方加入洪流时,必须向追踪器登记,并周期性地通知追踪器它仍在洪流中。一个洪流可以拥有少到几百或几千个对等方。

当一个新的对等方A加入洪流时,追踪器就随机地从参与的对等方集合中选择若干个,并把这些对等方的IP地址告诉A,于是A就和这些对等方建立了TCP连接,我们称所有与A建立了TCP连接的对等方为相邻对等方。

在任何时刻,每个对等方可能只拥有某文件的一个文件块子集,而不同的对等方所拥有的文件块子集也不会完全相同,对等方A将通过TCP连接周期性地向其相邻对等方索取它们拥有的文件块列表。根据收到的文件块列表,A就知道了应当请求哪一个相邻对等方把哪些自己缺少的文件块发送过来。

从不同的对等方获得不同的数据块,然后组装成整个文件,一般要比仅从一个地方下载整个文件要快很多。

哪些文件块是首先需要向其相邻对等方请求的?

使用最稀有的优先(rarest first)的技术,如果A所缺少的文件块在相邻对等方中的副本很少,那就是很稀有的,A首先应当请求副本最少的文件块,否则一旦拥有最稀有文件块的对等方退出了洪流,就会影响A所缺文件块的收集。

在很多向A请求文件块的相邻对等方中,A应当向哪些相邻对等房发送所请求的文件块?

凡当前有以最高数据率向A传送文件块的某相邻对等方,A就优先把所请求的文件块传送给该相邻对等方。具体来说,A持续地测量从其相邻对等方接收数据的速率,并确定速率最高的4个相邻对等方,接着A就把文件块发送给这4个相邻对等方。每隔10秒钟,A还要重新计算数据率,然后可能修改这4个对等方,在BT的术语中,这4个对等方叫做已疏通的或无障碍的对等方。

计算机网络(谢希仁第7版)-应用层相关推荐

  1. 计算机网络-谢希仁-第7版 第6章 应用层

    计算机网络-谢希仁-第7版 第6章 应用层 6-01 6-02 6-03 6-04 6-05 6-06 6-07 6-08 6-10 6-14 6-15 6-16 6-19 6-20 6-21 6-2 ...

  2. (~最新合集~)计算机网络谢希仁第七版 第二章课后答案

    2-01 物理层要解决哪些问题?物理层的主要特点是什么? 答案:物理层要解决的主要问题: (1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的 ...

  3. 计算机网络谢希仁第七版课后答案第六章 应用层

    6-01 因特网的域名结构是怎么样的?它与目前的电话网的号码结构有何异同之处?答:(1)域名的结构由标号序列组成,各标号之间用点隔开: - . 三级域名 . 二级域名 . 顶级域名 各标号分别代表不同 ...

  4. 计算机网络谢希仁第七版答案

    计算机网络第七版答案 第一章 概述 1-01 计算机网络向用户可以提供那些服务? 答: 连通性和共享 1-02 简述分组交换的要点. 答:( 1 )报文分组,加首部( 2 )经路由器储存转发( 3 ) ...

  5. 计算机网络谢希仁第七版课后答案完整版 微课视频 配套课件

    课后答案完整版 腾讯文档: https://docs.qq.com/doc/DRXNVYWRDRHN0VExi 如何下载腾讯在线文档? https://blog.csdn.net/COCO56/art ...

  6. 计算机网络谢希仁第七版课后答案第一章 概述

    1-01 计算机网络向用户可以提供那些服务? 答: 连通性和共享 1-02 简述分组交换的要点.答: (1)报文分组,加首部(2)经路由器储存转发(3)在目的地合并 1-03 试从多个方面比较电路交换 ...

  7. (最新合集)计算机网络谢希仁第七版 第一章课后答案

    一些常见问题 1.计算机网络被设计出来的目的? 答:计算机网络实现了不同地方的用户可以交互各种信息,好像就是连同在一起一样,还实现了资源的共享,例如:信息共享.软件共享- 2.简述分组交换的要点 答: ...

  8. 计算机网络 谢希仁 第八版 学习笔记

    子网掩码 默认网关 IPV6 IPV4 第一章 两种通信方式:C/S(Client/Server).P2P(Peer to Peer) 报文 分组 首部 三种交换方式:电路交换.报文交换.分组交换 p ...

  9. 计算机网络谢希仁第七版课后习题答案(第六章)

    6-01 因特网的域名结构是怎么样的?它与目前的电话网的号码结构有何异同之处? 答:(1)域名的结构由标号序列组成,各标号之间用点隔开: - . 三级域名 . 二级域名 . 顶级域名 各标号分别代表不 ...

  10. 计算机网络谢希仁第七版知识点总结

    第一章 概述 1.计算机网络的定义 计算机网络主要是由一些通用的.可编程的硬件互联而成的,而这些硬件并非专门用来实现某一特定目的(例如传送数据或视频信号).这些可编程的硬件能够用来传送不同类型的数据, ...

最新文章

  1. 谷歌CEO皮查伊「美国版后浪演讲」:You Will Prevail,你们终将胜利
  2. 为 ActionScript 导出库元件
  3. 大道至简:软件工程实践者的思想——第七、八章感想
  4. 第十三周项目二-动物这样叫(3)
  5. recv send 阻塞和非阻塞
  6. mysql+concat函数问题_Mysql5.7中使用group concat函数数据被截断的问题完美解决方法...
  7. .net 遍历数组找重复值写入一个新数组_第二轮 Python 刷题笔记一:数组
  8. 开始菜单单如何打开计算机程序,什么是开始菜单
  9. GTK真不容易,资料少,学得人也少!
  10. word如何只设置一张为横向_word页面设置 word怎么设置单独一页横向显示?
  11. 迈普路由器访问控制列表配置命令_迈普路由器配置手册
  12. 漆翔宇计算机学院浙江大学,浙江大学20172018学年大学生学科竞赛获奖清单.pdf
  13. 2345看图王总是弹窗广告怎么办?
  14. 海洋CMS采集翻译发布插件
  15. 数据分析画图:50道练习玩转matplotlib
  16. java静态与非静态
  17. 对vector使用sort函数
  18. vacuum 的描述(vacuum age )
  19. 涂料品牌排行榜前十名有哪些?
  20. 【STM32F407的DSP教程】第48章 STM32F407的中值滤波器实现,适合噪声和脉冲过滤(支持逐个数据的实时滤波)

热门文章

  1. 分类型变量python聚类分析_用python对包含分类变量和数值变量的数据进行聚类的最佳方法是什么...
  2. 全国行政边界json数据echarts地图geojson生成精确到城镇街道-20211208
  3. 8款60万精品SUV购车推荐 多用途够气派
  4. OA工作流引擎设计(纯java开发,不需要额外任何插件引擎)
  5. 通达OA二次开发 小飞鱼应用OA工作流二次开发智能公文系统(三)(图文)
  6. Windows平台使用CreateProcess实现多进程同步启动
  7. 调查:打印机对Linux操作系统支持率为61.1%(转)
  8. 数据库用户授权以及ddl语言
  9. 理解 信息量、信息熵 和 信息增益
  10. latex 控制表格 行间距