应用层
Apr 14th - Now
Introduction
Application: communicating, distributed processes
running in network hosts in "user space"
exchange messages to implement app, e.g., email,
Application-layer protocols
one "piece" of an app
define messages exchanged by apps and actions taken
user services provided by lower layer protocols
每个应用层协议都是为了解决某一类应用问题,需要通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。
应用层的具体内容就是规定应用进程在通信时所遵循的协议。
应用层的许多协议都是基于C/S方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
与C/S相比,还有一种不区分C/S的方式——P2P(Peer2Peer),如迅雷下载,每个客户端同时也是服务端,相互之间请求和发送数据
客户服务器方式所描述的是进程之间服务和被服务的关系。
客户是服务请求方,服务器是服务提供方。
应用层术语
A process is a program that is running within a host.
Within the same host, two processes communicate with inter-process communication defined by the OS.
pipe
FIFO
Message Queue
Semaphore
Shared Memory
Socket
Processes running in different hosts communicate with an application-layer protocol
A user agent is an interface between the user and the network application.
Web: browser
E-mail: mail reader
streaming audio/video: media player
API: application programming interface
defines interface between application and transport layer
socket: Internet API
two processes communicate by sending data into socket, reading data out of socket
Q: how does a process "identify" the other process with which it wants to communicate?
IP address of host running other process
"port number" - allows receiving host to determine to which local process the message should be delivered
connect type
Transport service requirements
Data loss
some apps (e.g. audio) can tolerate some loss
other apps (e.g., file transfer, telnet) require 100% reliable data transfer
Timing
some apps (e.g., Internet telephony, interactive games) require low delay to be "effective"
other apps ("elastic apps") make use of whatever bandwidth they get
Bandwidth
some apps (e.g., multimedia) require minimum amount of bandwidth to be “effective”
Services provided by Internet transport protocols
TCP | UDP |
connection-oriented setup required between client, server | No Connection Needed, send directly |
reliable transport between sending and receiving process | unreliable data transfer between sending and receiving process |
flow control: sender won’t overwhelm receiver | No Flow Control |
congestion control: throttle sender when network overloaded | No Congestion Control |
No timing, minimum bandwidth guarantee | No timing, minimum bandwidth guarantee |
Internet Apps
Application | Data loss | Bandwidth | Time Sensitive | Application layer protocol | Underlying transport protocol | |
file transfer | no loss | elastic | no | ftp [RFC 959] | TCP | |
no loss | elastic | no | smtp [RFC 821] | TCP | ||
Web documents | loss-tolerant | elastic | no | http [RFC 2068] | TCP | |
real-time audio/video | loss-tolerant | audio: 5Kb-1Mb video:10Kb-5Mb | yes, 100’s msec | proprietary (e.g. RealNetworks) | TCP/UDP | |
stored audio/video | loss-tolerant | audio: 5Kb-1Mb video:10Kb-5Mb | yes, few secs | proprietary (e.g. RealNetworks) | TCP/UDP | |
interactive games | loss-tolerant | few Kbps up | yes, 100’s msec | |||
financial apps | no loss | elastic | yes and no | |||
remote terminal access | no loss | elastic | no | telnet [RFC 854] | TCP | |
remote file server | loss-tolerant | elastic | no | NSF | TCP/UDP |
多个应用进程使用系统调用的机制
当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口
此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。
内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口,即应用编程接口 API。
Socket 套接字
Socket 简介
1982 - Berkeley Software Distributions 操作系统引入了sockets 作为本地进程之间通信的接口
1986 - Berkeley 扩展了socket 接口使之支持UNIX 下的TCP/IP 通信
是一种特殊的文件描述符 (everything in Unix is a file)
网络应用 (FTP, Telnet, etc) 都依赖这一接口
面向连接 (Transmission Control Protocol - TCP/IP)
无连接 (User Datagram Protocol -UDP 和 Internetwork Packet Exchange - IPX)
process sends/receives messages to/from its socket
socket analogous to door
sending process shoves message out door
sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process
Socket 连接分类
Socket: 面向连接并发服务器
服务器端:
Socket:无连接循环服务器
万维网与HTTP
万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext) 系统的扩充。
一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。
互联网专业术语(jargon)
Web page:
consists of “objects”
addressed by a URL
Most Web pages consist of:
base HTML page, and
several referenced objects.
URL has two components:
host name
path name
URL: 由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。
一般组成:
<协议>://<主机>:<端口>/<路径>
路径:若再省略文件的<路径>项,则 URL 就指到互联网上的某个主页 (home page),缺省经常是index.html,default.html etc.
现在有些浏览器为了方便用户,在输入URL时,可以把最前面的"http://"甚至把主机名最前面的"www"省略,然后浏览器替用户把省略的字符添上。
User agent for Web is called a browser:
MS Internet Explorer
Netscape Communicator
Server for Web is called Web server:
Apache (public domain)
MS Internet Information Server
the http protocol
http: hypertext transfer protocol
Web's application layer protocol
client/server model
client: browser that requests, receives, "displays" Web objects
server: Web server sends objects in response to requests
http1.0: RFC 1945
非坚持型,非流水线方式
客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
http1.1: RFC 2068
坚持型,流水线方式
客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
http: TCP transport service
client initiates TCP connection (creates socket) to server, port 80
server accepts TCP connection from client
http messages (application layer protocol messages) exchanged between browser (http client) and Web server (http server)
TCP connection closed
http is "stateless"
server maintains no information about past client requests
Protocols that maintain “state” are complex!
past history (state) must be maintained
if server/client crashes, their views of “state” may be inconsistent, must be reconciled
万维网的工作过程
统一资源定位符 URL
资源定位符 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示。
URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。
只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性。
URL 相当于一个文件名在网络范围的扩展。因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针。
URI:不局限于互联网资源,可以作为所有资源的标识符,现有的RFC已用URI代替URL。
浏览器输入URL后的流程
1) 浏览器分析超链指向页面的 URL。 2) 浏览器向 DNS 请求解析 www.buaa.edu.cn 的 IP 地址。 3) 域名系统 DNS 解析出北航服务器的 IP 地址。 4) 浏览器与服务器建立 TCP 连接 5) 浏览器发出取文件命令: GET /buaa/index.htm。 6) 服务器给出响应,把文件 index.htm 发给浏览器。 7) TCP 连接释放。 8) 浏览器显示index.htm 中的所有文本。
超文本传送协议 HTTP
HTTP 的操作过程
为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。
从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础
http example 1. http server at host www.someSchool.edu waiting for TCP connection at port 80. 2. http client initiates TCP connection to http server (process) at www.someSchool.edu.
Port 80 is default for http server.
http server accept the connection and notify client
http client sends http request message (containing URL) into TCP connection socket
http server receives request message, forms response message containing requested object (someDepartment/home.index), sends message into socket
http server closes TCP connection.
http client receives response message containing html file, displays html. Parsing html file, finds 10 referenced jpeg objects
repeat steps above for 10 jpeg objects
HTTP的请求报文结构
HTTP 请求报文的一些方法
方法 | 意义 |
OPTION | 请求一些选项的信息 |
GET | 请求读取由 URL所标志的信息 |
HEAD | 请求读取由 URL所标志的信息的首部 |
POST | 给服务器添加信息(例如,注释) |
PUT | 在指明的 URL下存储一个文档 |
DELETE | 删除指明的 URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
HTTP 的 Request 和 Response
http response status codes
200 OK
request succeeded, requested object later in this message
301 Moved Permanently
requested object moved, new location specified later in this message (Location:)
400 Bad Request
request message not understood by server
404 Not Found
requested document not found on this server
505 HTTP Version Not Supported
User-server interaction: authentication
Authentication goal: control access to server documents
stateless: client must present authorization in each request
authorization: typically name, password
authorization: header line in request、
if no authorization presented, server refuses access, sends
WWW authenticate: header line in response
Browser caches name & password so that user does not have to repeatedly enter it.
User-server interaction: cookies
server sends "cookie" to client in response mst
Set-cookie: 1678453
client presents cookie in later requests
cookie: 1678453
server matches presented cookie with server-stored info
authentication
remembering user preferences, previous choices
Cookie 是网站服务器为用户产生一个唯一的识别码
User-server interaction: conditional GET
Goal: don’t send object if client has up-to-date stored (cached) version
client: specify date of cached copy in http request
If-modified-since:
server: response contains no object if cached copy up-todate:
HTTP/1.0 304 Not Modified
Web Caches (proxy server)
Goal: satisfy client request without involving origin server
user sets browser: Web accesses via web cache
client sends all http requests to web cache
if object at web cache, web cache immediately returns object in http response
else requests object from origin server, then returns http response to client
Why Web Caching?
Assume: cache is "close" to client (e.g., in same network)
smaller response time: cache "closer" to client
decrease traffic to distant servers
link out of institutional/local ISP network often bottleneck
FTP
文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。
FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
RFC 959 很早就成为了互联网的正式标准。
FTP 的基本工作原理
网络环境下复制文件的复杂性:
计算机存储数据的格式不同。
文件的目录结构和文件命名的规定不同。
对于相同的文件存取功能,操作系统使用的命令不同。
访问控制方法不同。
FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
transfer file to/from remote host
client/server model
client: side that initiates transfer (either to/from remote)
server: remote host
ftp: RFC 959
ftp server: port 21
ftp: separate control data connections
ftp client contacts ftp server at port 21, specifying TCP as transport protocol
two parallel TCP connections opened:
control: exchange commands, responses between client, server.
in band: 数据传输和控制在同一个频段
out of band: 数据传输和控制在不同线传输或在同一线的不同频道
data: file data to/from server
ftp server maintains "state": current directory, earlier authentication
ftp commands, responses
Sample commands
sent as ASCII text over control channel
USER username
PASS password
LIST return list of file in current directory
RETR(Retrieve) filename retrieves (gets) file
STOR(store) filename stores (puts) file onto remote host
Sample return codes
status code and phrase (as in http)
331 Username OK, password required
125 data connection already open; transfer starting
425 Can’t open data connection
452 Error writing file
Typical FTP Session
控制连接与数据连接
连接类型 | 控制连接 | 数据连接 |
定义 | 是建立在用户协议解释器和服务器协议解释器之间用于交换命令与应答的通信链路 | 在控制连接作用下实现的全双工的数据传输 |
作用 | 为数据连接使用TCP建立一条命令链路 | 进行数据传输 |
使用条件 | 发送命令和接收应答时使用 | 下载和上传数据时使用 |
使用端口号 | 服务器:21 客户机:>1023 | 服务器:20 客户机:>1023 |
二者关系:
控制连接在前,数据连接在后;
控制连接关闭,数据连接也关闭;
数据连接关闭,控制连接仍然可以使用。
Electronic Mail
Three major components:
user agents
a.k.a. "mail reader"
composing, editing, reading
mail messages
e.g., Eudora, Outlook, elm, Netscape Messenger
outgoing, incoming messages stored on server
mail servers
simple mail transfer protocol: smtp
smtp [RFC 821]
uses tcp to reliably transfer email msg from client to server, port 25
direct transfer: sending server to receiving server
three phases of transfer
handshaking (greeting)
transfer of messages
closure
command/response interaction
commands: ASCII text
response: status code and phrase
messages must be in 7-bit ASCII
try smtp interaction for yourself
telnet servername 25
see 220 reply from server
enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands
above lets you send email without using email client (reader)
e.g.
smtp 总结
smtp uses persistent connections
smtp requires that message (header & body) be in 7-bit ascii
certain character strings are not permitted in message (e.g., CRLF. CRLF). Thus message has to be encoded (usually into either base-64 or quoted printable)
smtp server uses CRLF.CRLF to determine end of message
Comparison with http
http: pull while email: push
both have ASCII command/response interaction, status codes
http: each object is encapsulated in its own response message while smtp: multiple objects message sent in a multipart message
Mail message format
smtp: protocol for exchanging email msgs
RFC 822: standard for text message format:
header lines, e.g.,
To:
From:
Subject:
different from smtp commands!
body
the “message”, ASCII characters only
multimedia extensions
MIME: multimedia mail extension, RFC 2045, 2056
additional lines in msg header declare MIME content type
MIME Content-Type 类型及子类型
内容类型 | 子类型举例 | 说明 |
text(文本) | plain, html, xml, css | 不同格式的文本 |
image(图像) | gif, jpeg, tiff | 不同格式的静止图像 |
audio(音频) | basic, mpeg, mp4 | 可听见的声音 |
video(视频) | mpeg, mp4, quicktime | 不同格式的影片 |
model(模型) | vrml | 3D模型 |
application(应用) | octet-stream, pdf, javascript, zip | 不同应用程序产生的数据 |
message(报文) | http, rfc822 | 封装的报文 |
multipart(多部分) | mixed, alternative, parallel, digest | 多种类型的组合 |
Multipart Type Example
Mail access protocols
SMTP: delivery/storage to receiver’s server
mail access protocol: retrieval from server
POP: Post Office Protocol [RFC 1939]: authorization, download only
IMAP: Internet Mail Access Protocol [RFC 1730]: more features, including manipulation of stored msgs on server
HTTP: gmail, Hotmail, Yahoo! Mail, etc.
POP3 (more) and IMAP
IMAP
keeps all messages in one place: at server
allows user to organize messages in folders
keeps user state across sessions:
names of folders and mappings between message IDs and folder name
more about POP3
previous example uses POP3 “download and delete” mode
Bob cannot re-read e-mail if he changes client
POP3 “download-and- keep”: copies of messages on different clients
POP3 is stateless across sessions
POP3 protocol
authorization phase
client commands:
user: declare username
pass: password
server responses
+OK
-ERR
transaction phase, client:
list: list message numbers
retr: retrieve message by number
dele: delete
quit
电子邮件系统
协议自动配置
为了将软件协议做成通用的和便于移植,协议软件的编写者把协议软件参数化,在软件协议运行之前,必须给每一个参数赋值。
主机需要配置的项目
1) IP 地址
2) 子网掩码
3) 默认路由器的 IP 地址
4) 域名服务器的 IP 地址
这些信息通常存储在一个配置文件中,计算机在引导过程中可以对这个文件进行存取。
动态主机配置协议 DHCP
互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。
这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。
DHCP 使用客户-服务器方式
需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool) 中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。
DHCP 中继代理(relay agent)
并不是每个网络上都有 DHCP 服务器,这样会使 DHCP 服务器的数量太多。现在是每一个网络至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。
当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。
租用期 (lease period)
DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。
租用期的数值应由 DHCP 服务器自己决定。
DHCP 客户也可在自己发送的报文中(例如:发现报文)提出对租用期的要求。
DHCP 协议的工作过程
DNS(Domain Name System)
许多应用层软件经常直接使用域名系统DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
域名服务器
一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)。
各单位根据具体情况来划分自己管辖范围的区。
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
区的不同划分方法举例
DNS概述
域名系统是一个典型的客户/服务器交互系统;
域名系统是一个多层次的、基于域的命名系统,并使用分布式数据库实现这种命名机制
互联网的域名结构
互联网采用了层次树状结构的命名方法。
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
域名的结构由标号序列组成,各标号之间用点隔开:
… . 三级域名 . 二级域名 . 顶级域名
各标号分别代表不同级别的域名。
域名只是个逻辑概念,并不代表计算机所在的物理地点
变长的域名和使用有助记忆的字符串,是为了便于人来使用。而IP地址是定长的32位二进制数字则非常便于机器进行处理。
域名中的“点”和点分十进制IP地址中的“点”并无一一对应的关系。
根域名服务器
根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP地址。
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
根域名服务器共有 13 套装置
根域名服务器共有 13 套装置,不是 13 个机器
这些根域名服务器相应的域名分别是:
a.rootservers.net
b.rootservers.net
…
m.rootservers.net
到2016年2月,全世界已经在 588 个地点安装了根域名服务器,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器。
根域名服务器并不直接把域名直接转换成 IP 地址。
在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
顶级域名服务器
顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。
当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
分类:
国家顶级域名 nTLD
如: .cn 表示中国,.us表示美国,.uk 表示英国,等等。
通用顶级域名 gTLD
最早的通用顶级域名是:
.com (公司和企业)
.net (网络服务机构)
.org (非赢利性组织)
.edu (美国专用的教育机构)
.gov (美国专用的政府部门)
.mil (美国专用的军事部门)
.int (国际组织)
新增的通用顶级域名:
.aero (航空运输企业)
.biz (公司和企业)
.cat (加泰隆人的语言和文化团体)
.coop (合作团体)
.info (各种情况)
.jobs (人力资源管理者)
.mobi (移动产品与服务的用户和提供者)
.museum (博物馆)
.name (个人)
.pro (有证书的专业人员)
.travel (旅游业)
基础结构域名(infrastructure domain)
这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称为反向域名
权限域名服务器
Authoritative name server,用来保存该区中所有主机的域名到IP地址的映射。
负责一个区的域名服务器。
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
本地域名服务器
本地域名服务器对域名系统非常重要
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器
每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
这种域名服务器有时也称为默认域名服务器。
提高域名服务器的可靠性
DNS 域名服务器都把数据复制到几个域 名服务器来保存,其中的一个是主域名
服务器,其他的是辅助域名服务器。 * 当主域名服务器出故障时,辅助域名服
务器可以保证 DNS 的查询工作不会中断。
主域名服务器定期把数据复制到辅助域
名服务器中,而更改数据只能在主域名
服务器中进行。这样就保证了数据的一 致性。
域名的解析过程
主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器: “你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
本地域名服务器采用迭代查询
从请求主机到本地DNS的查询是递归的,其余的查询是迭代的(recursive query)
本地域名服务器采用迭代查询
迭代:始终本地域名服务器去询问
本地域名服务器采用递归查询(少用)
递归:本地域名服务器只询问根域名服务器,让根域名服务器代替自己去询问
名字的高速缓存
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
可大大减轻根域名服务器的负荷,使互联网上的DNS 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项
(例如,每个项目只存放两天)。
当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
域名服务
资源记录(RR)
在DNS的数据库中用资源记录来表示主机和子域的信息,当应用程序进行域名解析时,得到的便是域名所对应的资源记录。
资源记录是一个五元式
Domain_name | Time_to_live | Type | Class | Value
DNS 协议和数据
DNS protocol : query and reply messages, both with same message format
会话标识(2字节):是DNS报文的ID标识,对于请求报文和其对应的应答报文,这个字段是相同的,通过它可以区分DNS应答报文是哪个请求的响应
Flag
Meaning
QR(1bit)
查询/响应标志,0为查询,1为响应
opcode(4bit)
0表示标准查询,1表示反向查询,2表示服务器状态请求
AA(1bit)
表示授权回答
TC(1bit)
表示可截断的
RD(1bit)
表示期望递归
RA(1bit)
表示可用递归
rcode(4bit)
表示返回码,0表示没有差错,3表示名字差错,2表示服务器错误(Server Failure)
数量字段(总共8字节):
Questions、Answer RRs、Authority RRs、Additional RRs 各自表示后面的四个区域的数目。
Questions表示查询问题区域节的数量
Answers表示回答区域的数量
Authoritative nameservers 表示授权区域的数量
Additional records 表示附加区域的数量
正文部分
Queries
查询名:长度不固定,且不使用填充字节,一般该字段表示的就是需要查询的域名(如果是反向查询,则为IP,反向查询即由IP地址反查域名),一般的格式如下图所示。
查询类型
类型
助记符
说明
1
A
由域名获得IPv4地址
2
NS
查询域名服务器
5
CNAME
查询规范名称
6
SOA
开始授权
11
WKS
熟知服务
12
PTR
把IP地址转换成域名
13
HINFO
主机信息
15
MX
邮件交换
28
AAAA
由域名获得IPv6地址
252
AXFR
传送整个区的请求
255
ANY
对所有记录的请求
查询类:通常为1,表明是Internet数据
RR
资源记录区域(包括回答区域,授权区域和附加区域),该区域有三个,但格式都是一样的。
域名(2字节或不定长):它的格式和Queries区域的查询名字字段是一样的。
有一点不同就是,当报文中域名重复出现的时候,该字段使用2个字节的偏移指针来表示。比如,在资源记录中,域名通常是查询问题部分的域名的重复,因此用2字节的指针来表示。
具体格式是最前面的两个高位是 11,用于识别指针。其余的14位从DNS报文的开始处计数(从0开始),指出该报文中的相应字节数。一个典型的例子,C00C(1100000000001100,12正好是头部的长度,其正好指向Queries区域的查询名字字段)。
查询类型:表明资源纪录的类型,见1.2节的查询类型表格所示
查询类:对于Internet信息,总是IN
生存时间(TTL):以秒为单位,表示的是资源记录的生命周期,一般用于当地址解析程序取出资源记录后决定保存及使用缓存数据的时间,它同时也可以表明该资源记录的稳定程度,极为稳定的信息会被分配一个很大的值(比如86400,这是一天的秒数)。
资源数据:该字段是一个可变长字段,表示按照查询段的要求返回的相关资源记录的数据。可以是Address(表明查询报文想要的回应是一个IP地址)或者CNAME(表明查询报文想要的回应是一个规范主机名)等。
简单网络管理协议 SNMP
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管。
网络管理并不是指对网络进行行政上的管理。
网络管理的一般模型
监控的叫做客户端Client 或 agent
被检控的叫做服务端Server 或 Manager
网络管理模型中的主要构件
管理站也常称为网络运行中心 NOC (Network Operations Center),是网络管理系统的核心。
管理程序在运行时就成为管理进程。
管理站(硬件)或管理程序(软件)都可称为管理者(manager)。
Manager 不是指人而是指机器或软件。
网络管理员(administrator) 指的是人。
大型网络往往实行多级管理,因而有多个管理者,而一个管理者一般只管理本地网络的设备。
SNMP 技术术语
SNMP:Simple Network Management Protocol(简单网络管理协议),是一个标准的用于管理基于IP网络上设备的协议。
MIB:Management Information Base(管理信息库),定义代理进程中所有可被查询和修改的参数。
UDP样例:
SMI:Structure of Management Information(管理信息结构),SMI定义了SNMP中使用到的ASN.1类型、语法,并定义了SNMP中使用到的类型、宏、符号等。SMI用于后续协议的描述和MIB的定义。每个版本的SNMP都可能定义自己的SMI。主要功能:
被管对象应怎样命名;
用来存储被管对象的数据类型有哪些种;
在网络上传送的管理数据应如何编码。
SMI 规定所有被管对象必须在命名树上:
ASN.1:Abstract Syntax Notation One(抽象语法定义)。用于定义语法的正式语言,在SNMP中定义SNMP的协议数据单元PDU和管理对象MIB的格式。SNMP只使用了ASN.1中的一部分,而且使用ASN.1的语言特性定义了一些自定义类型和类型宏 ,这些组成了SMI。
SMI 标准指明了所有的 MIB 变量必须使用抽象语法记法 1(ASN.1)来定义。
ASN.1 的记法很严格,它使得数据的含义不存在任何可能的二义性。
SMI 把数据类型分为两大类:简单类型和结构化类型。
PDU: Protocol Data Unit(协议数据单元),它是网络中传送的数据包。每一种SNMP操作,物理上都对应一个PDU。
NMS: Network Management System,网络管理系统,又名网络管理站,简称“管理站”。它是SNMP的总控机,提供统一的用户界面访问支持SNMP的设备,一般提供UI界面,并有统计、分析等功能,是网管系统的总控制台。NMS是网络管理操作的发起者。
Agent: 是SNMP的访问代理,简称“代理”,为设备提供SNMP能力,负责设备与NMS的通信。
Proxy: 代理服务器,对实现不同协议的设备进行协议转换,使非IP协议的设备也能被管理。
Trap: 是由设备主动发出的报警数据,用于提示重要的状态的改变。
BER: Basic Encoding Rule,基本编码规格。描述如何将ASN.1类型的值编码为字符串的方法。它是ASN.1标准的一部分。
BER编码将数据分成TLV三部分,T为Tag的缩写,是类型标识;L为Length的缩写,标识类型的长度;V为Value的缩写,标识数据内容。
按照TLV的顺序对数据进行编码,生成字节流。
SNMP使用BER将SNMP的操作请求和应答编码后进行传输,并用于接收端进行解码。
SNMP Feature
SNMP Naming
问题:如何对互联网上所有可能的对象精准命名?
答案:ISO Object Identifier tree
hierarchical naming of all objects
each branch point has name, number
SNMP Protocol
信息类型:
Message Type
Function
GetRequest GetNextRequest GetBulkRequest
Mgr-to-agent: "get me data" (instance,next in list, block)
InformRequest
Mgr-to-Mgr: here’s MIB value
SetRequest
Mgr-to-agent: set MIB value
Response
Agent-to-mgr: value, response to Request
Trap
Agent-to-mgr: inform manager of exceptional event
消息类型
SNMP security and administration
encryption:
DES-encrypt SNMP message
authentication: compute, send MIC(m,k):
compute hash (MIC) over message (m), secret shared key (k)
protection against playback:
use nonce
view-based access control
SNMP entity maintains database of access rights, policies for various users
database itself accessible as managed object!
Presentation 表示方法
不同的主机之间存储的方式可能不同,如对于同一个数据结构和数据的存储:
解决方案:
Translate local-host format to host-independent format
Transmit data in host-independent format
Translate host-independent format to remote-host format
TLV Encoding
Idea: transmitted data is self-identifying
T: data type, one of ASN.1-defined types
L: length of data in bytes
V: value of data, encoded according to ASN.1 standard
Tag Value | Type |
1 | Boolean |
2 | Integer |
3 | BitString |
4 | OctetString |
5 | Null |
6 | Object Identifier |
9 | Real |
...
e.g. 例如,INTEGER 15,其 T 字段是02,INTEGER 类型要用 4 字节编码。最后得出 TLV 编码为 02 04 00 00 00 0F
。 又如 IPAddress 192.1.2.3,其 T 字段是 40,V 字段需要 4 字节表示,因此得出 IPAddress 192.1.2.3 的 TLV 编码是 40 04 C0 01 02 03
。
Practice
(1) 是用户代理向邮箱服务器发送邮件-->SMTP (2) 是邮箱服务器向邮箱服务器发送邮件-->SMTP (3) 是涌向服务器向用户代理发送邮件-->POP3 选D
下列关于SMTP协议的叙述中,正确的是( )。 1. 只支持传输7比特ASCII码内容 2. 支持在邮件服务器之间发送邮件 3. 支持从用户代理向邮件服务器发送邮件 4. 支持从邮件服务器向用户代理发送邮件 A.1,2,3 B.1,2,4 C.1,3,4 D.2,3,4 显然4是POP,故选A
如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为()。 A.一条,一条 B.一条,多条 C.多条,一条 D.多条,多条 递归方法每个主机和服务器发一条,故选A。
Reference
Last updated