计算机网络应用层
Posted zizi7
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络应用层相关的知识,希望对你有一定的参考价值。
目录
各种应用进程通过应用层协议来使用网络提供的通信服务
域名系统DNS
- DNS实现主机域名与IP地址的转换
- DNS被设计成一个联机分布式数据库系统,以确保单个域名服务器故障不妨碍整个DNS运行
当某个应用程序需要将主机名解析为IP地址时,调用解析程序并成为DNS的一个客户
将待解析域名放在DNS请求报文中,以UDP用户数据报发给本地域名服务器
如果本地域名服务器查找成功就把对应的IP地址放在回答报文中
如果本地域名服务器查找失败,则该服务器暂时称为DNS中的另一个客户,向其他域名服务器发出查询请求
- 域名从右向左级别降低,各级域名由其上一级域名管理机构管理,不限制级别数
- 域名由字母和数字组成,不区分大小写,除连字符(-)外不能使用其他标点符号
- 完整域名总共不超过255个字符
域名服务器
- 根域名服务器
最高层次的域名服务器,所有根域名服务器都知道所有顶级域名服务器的域名及IP - 顶级域名服务器
负责管理在该顶级域名服务器注册的所有二级域名 - 权限域名服务器
负责一个区的域名服务器 - 本地域名服务器
是主机DNS查询首先到达的域名服务器。一个大学甚至里面的一个系都可以拥有一个本地域名服务器
递归查询:主机向本地域名服务器的查询一般采用递归查询。即如果本地域名服务器不知道域名的IP地址,则本身以DNS客户的身份向其他根域名服务器查询
迭代查询:本地域名服务器向根域名服务器的查询一般采用迭代查询。即当根域名服务器收到查询请求时,要么给出所要查询的IP,要么告诉本地域名服务器下一步应向哪个域名服务器查询
文件传送协议
FTP协议
- FTP实现一台主机到另一台主机的文件传送
- FTP提供交互式访问,允许文件具有存取权限(如身份鉴别)
- FTP使用TCP实现可靠运输
- 在进行文件传输时,FTP客户和服务器之间要建立两个并行的FTP连接:控制连接、数据连接
- 控制连接(21号端口)只传输请求信息,数据连接(20号端口)完成实际的文件传送
TFTP协议
- 很小且易于实现的简单文件传输协议
- TFTP使用UDP实现传输,有自己的差错改正措施
- TFTP只支持文件传输,不支持交互,没有列目录功能,不能对用户做身份鉴别
- TFTP的优点是适合同时向多个机器下载(UDP),代码占用内存小
远程终端协议TELNET
- TELNET可以实现用户通过TCP连接登陆到另一台主机,将用户击键传到主机,也能将远程主机的输出通过TCP返回用户屏幕
- 由于主机间操作系统可能不一致,命令可能有差异(如行结束、中断)。TELNET定义了网络虚拟终端NVT,客户端和服务端的命令首先转成NVT格式再通过TCP传输
万维网WWW
- 万维网是一个分布式的超媒体系统,是超文本系统的扩充
- 万维网使用统一资源定位符URL确保每个文档在整个互联网内有唯一标志,使用超文本传输协议HTTP实现客户程序和服务程序的交互,使用超文本标记语言html实现超文本的显示
URL
URL相当于一个文件名在网络范围的扩展
<协议>://<主机>:<端口>/<路径>
e.g: http://www.ctrip.com/index.html
ftp://192.168.1.100:20/home/data
其中端口和路径有时可以忽略,如http默认端口是80,可忽略
HTTP
- HTTP定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
- HTTP虽然使用TCP连接,但协议本身是无连接的:在交换HTTP报文之前不需要先建立HTTP连接(先建立TCP连接)
- HTTP是无状态的:同一个客户第二次访问同一个服务器的页面是,服务器的响应与第一次相同
如上图,当建立TCP连接的三报文握手的前两部分完成后,客户端就把HTTP请求报文作为TCP连接的三报文握手的第三个报文数据发送给服务器
因此请求一个万维网文档所需的时间是该文档传输时间+2*往返时间RTT
- HTTP/1.0
每请求一个文档就要有2*RTT的时间开销 - HTTP/1.1
使用了持续连接:服务器在发送响应后仍然在一段时间内保持这条连接
HTTP报文
HTTP有两类报文:请求报文、响应报文
// 完整的HTTP请求报文
GET /dir/index/htm HTTP/1.1 // 方法 请求资源的URL HTTP版本
Host: www.xyz.edu.cn // 主机域名
Connection: close // 发送完请求的文档后可释放连接
User-Agent: Mozilla/5.0 // 用户代理是使用firefox
Accept-Language: cn // 用户希望优先得到中文版本的文档
方法 | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
响应报文的第一行是状态行
// 响应报文的状态行
// HTTP版本 状态码 解释短语
HTTP/1.1 202 Accepted
HTTP/1.1 400 Bad Request
HTTP/1.1 404 Not Found
HTTP/1.1 301 Moved Permanently
Cookie
服务端可以在HTTP中使用cookie来跟踪用户
当用户A浏览某个使用Cookie的网站时,该网站服务器就为A产生一个唯一识别码,并以此为索引在后端数据库产生一个项目,然后在给A 的HTTP响应报文中添加一个叫做Set-cookie的首部行:
Set-cookie: 31d4d96e407aad42
当A收到响应时,浏览器在Cookie文件中添加相应的识别码。当A继续浏览这个网站时,每发送一个HTTP请求报文,其中就包含
Cookie: 31d4d96e407aad42
这样网站就能跟踪用户31d4d96e407aad42(用户A)的活动,记录其访问信息
HTML
超文本标记语言HTML是一种制作万维网页面的标准语言,其目标是在浏览器上显示数据
- 静态文档
创作完成后存放在服务器中,用户浏览过程中内容不会改变 - 动态文档
文档内容在浏览器访问时才由应用程序动态创建(通用网关接口CGI程序) - 活动文档
文档的内容可以动态变化
服务器返回给客户活动文档程序副本,该程序副本在浏览器端运行就可以与用户交互,改变屏幕显示
如Java就是一种活动文档程序语言
电子邮件
一个电子邮件系统包含3个主要构件:用户代理、邮件服务器、邮件发送协议(如SMTP)和邮件读取协议(如POP3)
用户代理就是电子邮件客户端软件(如foxmail)
- 用户点击发送邮件后,用户代理把邮件用SMTP协议发给发送方邮件服务器,此时用户代理为SMTP客户,发送方邮件服务器为SMTP服务器
- 发送方邮件服务器收到用户代理的邮件后,将其存放在邮件缓存中,然后其SMTP客户进程与接收方邮件服务器的SMTP服务器进程建立TCP连接,依次将缓存队列里的邮件发送出去
- 运行在接收方邮件服务器的SMTP服务器进程收到邮件后,将其放入用户邮箱中,等待收件人读取
- 收件人打算收件时,就运行用户代理,使用POP3(或IMAP)协议从接收方邮件服务器的POP3服务进程读取邮件
邮件服务器需要能同时充当客户和服务器
接收方邮件服务器的意义是,防止收件人用户代理不在线导致邮件无法接收。foxmail可以实现用户代理直接到接收方邮件服务器
简单邮件传送协议SMTP
- SMTP规定了在两个相互通信的SMTP进程间如何交换信息
- SMTP不使用中间的邮件服务器,总是在发送方和接收方服务器建立直接的TCP连接
- SMTP发送邮件不需要鉴别发送者,导致垃圾邮件的泛滥
- SMTP只能传输7位的ASCII码,为了能传输其他内容(可执行文件、其他二进制对象等),通过通用互联网邮件扩充MIME协议将其转为7位ASCII
- 连接建立
发送方邮件服务器的SMTP客户进程每隔一段时间对邮件缓存扫描一次
如果发现有邮件就通过25端口与接收方邮件服务器的SMTP服务进程建立TCP连接
连接建立后接收方SMTP服务进程发出220(服务就绪),然后发送方SMTP客户进程发送HELO命令附上发送方主机名,接收方SMTP服务进程如果有能力接收则回答250 OK - 邮件传送
发送方邮件服务器的SMTP客户进程首先发送MAIL命令确定接收端已准备好,然后发送RCPT命令确定收件人邮箱是否在接收方邮件服务器中,最后发送DATA命令传送邮件内容 - 连接释放
邮件发送完毕后发送方邮件服务器的SMTP客户进程发送QUIT命令,对方返回221(服务关闭)后,释放TCP连接
邮件读取协议POP3和IMAP
- POP3和IMAP是目前常用的两种邮件读取协议
- POP3协议简单,只要用户从POP3服务器读取的邮件,POP3服务器就把该邮件删除
- IMAP协议复杂,实质是一个联机协议:用户在本地可以操作邮件服务器的邮箱,当用户的IMAP客户程序打开IMAP服务器邮箱时,用户可看到邮件首部,只有当用户打开某个邮件,该邮件才会传到用户计算机上
动态主机配置协议DHCP
- DHCP自动为新加入网络的机器获取IP地址
- DHCP服务器和客户使用UDP通信
流程:
- DHCP客户从UDP端口68广播发送DHCP发现报文(目的地址为255.255.255.255,源地址为0.0.0.0)
- 凡收到DHCP发现报文的DHCP服务器都广播发送DHCP提供报文
- DHCP客户从几个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送DHCP请求报文
- 被选择的DHCP服务器发送确认报文DHCPACK,DHCP客户获得IP地址后根据服务器提供的租用期T,设置两个计时器 T 1 = 0.5 T T_1=0.5T T1=0.5T和 T 2 = 0.875 T T_2=0.875T T2=0.875T
- 租用期到一半( T 1 T_1 T1),DHCP发送请求报文DHCPREQUEST要求更新租期。如果DHCP服务器同意,则发回确认报文DHCPACK,客户端重置计时器;如果发回否认报文DHCPNACK,客户端重新申请IP地址; 如果服务端不响应,则等到 T 2 T_2 T2时重新询问
应用进程跨越网络的通信
WEB编程中一般将套接字socket作为应用进程和运输层协议之间的接口
socket以上的进程受应用程序控制,以下的运输层协议(也可为UDP)受计算机操作系统控制
P2P应用
P2P文件分发不需要使用集中式媒体服务器,所有文件都是在普通的互联网用户间传输,相当于每个用户同时也是服务器
具有集中目录服务器的P2P工作方式(Napster)
最早使用P2P工作方式的是Napster,一个免费下载mp3的软件
Napster将所有音乐文件的索引信息集中在目录服务器中,使用者只要查找目录服务器就可以知道从哪里下载需要的mp3文件
这种集中式目录服务器的方式最大缺点是可靠性差,而且会成为其性能的瓶颈
具有全分布式结构的P2P文件共享程序(BT)
- 比特洪流BitTorrent把参与某个文件分发(及接收)的所有对等方集合称为一个洪流;把下载文件的数据单元称为文件块,一个文件块的长度是固定的,如256KB
- 每个对等方可在任何时间加入或退出某个洪流
- 每个洪流都有一个追踪器(tracker),当一个对等方加入洪流时,必须向tracker登记,并周期性通知tracker其仍在洪流内
对新加入的对等方A,tracker随机从对等方集合中选择若干个(组成相邻对等方),将它们的IP告诉A,后者与它们建立TCP连接,并根据对方的文件块列表选择传输
- 哪些文件块A需要首先向相邻对等方请求
A使用最稀有优先准则:如果A所缺少的文件块在相邻对等方中副本很少,就应该优先请求。否则一旦拥有该文件块的对等方退出洪流就会影响A的接收 - A优先向哪些相邻对等方发送其请求的文件块
凡当前有以最高数据率向A传送文件块的某相邻对等方,A就优先响应其请求
Chord搜索算法
在P2P文件系统中对等方用户数量非常多,并且处于一种无序状态,任何一个对等方可随时加入和退出。有效找到所需文件是一个十分重要的问题。
假设要查找的资源名为K,存放该资源的结点(对等方)的IP地址为N。现在需要根据K查找N
-
首先通过分布式散列表DHT,将K和N都分别映射为KID和NID。通过DHT可以将不定长的K、N映射为160位的二进制数字
-
NID按照其值映射到Chord环上对应的点,KID映射到与其值最接近的下一个NID。这样每个资源有Chord环上与其KID最接近的下一个结点提供服务
-
Chord环上每个结点都要维护一个指向后继结点的指针和一个指向前向结点的指针,理论上对任何一个结点,只要从其后继结点一个一个遍历其文件块列表,一定能找到拥有对应资源的结点
-
为了加速查找,在Chord环上对每个结点可以增加一些指针表,结点到指针表中的后继节点的连线就是Chord环上的弦
以上是关于计算机网络应用层的主要内容,如果未能解决你的问题,请参考以下文章