赞
踩
目录
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议。它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
1、HTTP请求响应过程涉及到的其他协议?其作用?
IP协议:它的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中龙哥重要的条件是IP地址、MAC地址。其中IP地址指明了被分配到地址,MAC地址是指网卡所属的固定位置,IP地址可变换,但MAC地址基本上不会更改。
TCP协议:按层次分,TCP协议位于传输层,提供可靠的字节流服务,字节流服务指的是为了传输方便,将大块数据分割成以报文段为单位的数据包进行管理。
DNS:DNS服务是和HTTP协议位于应用层的协议,它提供域名到IP地址之间的解析服务。
2、HTTP协议的主要特点?
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
3、HTTP协议请求?请求方法以及应用?
HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文。
请求行以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下:Method Request-URI HTTP-Version CRLF
其中 Method表示请求方法;Request-URI是一个统一资源标识符;HTTP-Version表示请求的HTTP协议版本;CRLF表示回车和换行(除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。
请求方法(所有方法全为大写)有多种,各个方法的解释如下:
4、HTTP协议响应? 状态码?
在接收和解释请求消息后,服务器返回一个HTTP响应消息。
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文。
状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述,CRLF表示回车和换行。
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
注:常见状态代码、状态描述、说明:
200 OK //客户端请求成功。
201 created //成功创建。
302 Found //重定向,新的URL会在response中的Location中返回,浏览器将会使用新的URL发出新的Request。
304 Not Modified //代表上次的文档已经被缓存了, 还可以继续使用。
400 Bad Request //客户端请求有语法错误,不能被服务器所理解。
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用。
403 Forbidden //服务器收到请求,但是拒绝提供服务。
404 Not Found //请求资源不存在,如:输入了错误的URL。
405 method not allowed //该http方法不被允许。
410 gone //这个url对应的资源现在不可用。
415 unsupported media type //请求类型错误。
422 unprocessable entity //校验错误时用。
429 too many request //请求过多。
500 Internal Server Error //服务器发生不可预期的错误。
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
响应正文就是服务器返回的资源的内容。
5、HTTP 与 HTTPS 有哪些区别?
6、HTTPS 解决了 HTTP 的哪些问题?
HTTP 由于是明⽂传输,所以安全上存在以下三个⻛险:
HTTPS 在 HTTP 与 TCP 层之间加⼊了 SSL/TLS 协议,可以很好的解决了上述的⻛险:
HTTPS 是如何解决上⾯的三个⻛险的?
注:部分文字图片:小林《图解网络》
FTP(File Transfer Protocol)协议,文件传输协议。提供交互式的访问,对传输文件的格式和类型有分类,允许文件具有存取权限。适合异构网络任意计算机的传送。
1、FTP 协议
FTP工作在TCP/IP模型的应用层,基于传输协议TCP,FTP客户端和服务器之间的连接是可靠的,面向连接的,为数据的传输提供了可靠的保证。
2、FTP的基本功能:
1.提供不同种类主机系统(硬,软件体系等都可以不同)之间的文件传输能力。
2.以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。
3.以匿名FTP的方式提供公用文件共享的能力。
3、工作步骤?
FTP采用C/S架构,使用TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务,FTP服务器检查有两大部分组成:一个主进程,负责接收新的请求,另外有若干的从属进程,负责处理单个请求,工作步骤如下:
1.打开熟知端口21(控制端口),使客户进程能够连接上,
2.等待客户进程发链接请求。
3.启动从属进程来处理客户进程发来的请求。主进程与从进程并发执行,从属进程对客户进程的请求处理完毕后即终止。
4.回到等待状态,继续接收其他客户进程的请求。
4、控制连接和数据连接?
FTP在工作时使用两个并行的TCP链接,一个是控制连接(端口号21),一个是数据连接(端口号20)。使用两个不同的端口号可使协议更加简单和更容易实现。
1.控制连接:服务器在监听21号端口,等待客户连接,建立在这个端口上的了连接称为控制连接,控制连接用来传输控制信息(如连接请求,传送请求等)。并且控制信息都是以7位ASCII格式传送的。控制连接一直保持打开状态。
2.数据连接:服务器端控制进程在接收到传输请求之后创建“数据传送进程”和“数据连接”,数据连接用来连接客户端和服务期端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
注:
因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外(out-of-band)传送的。修改文件需要将此文件传送本地进行修改,再进行覆盖。
网络文件系统NFS允许进程打开一个远程文件,并在该文件的某个特定位置开始读写数据,这样,NFS可使用用户复制一个大文件中的一个很小的片段,而不是需要复制整个大文件。
5、FTP的主要特征?
1.控制连接是建立在客户协议解释器和服务器协议解释器之间,用于交换命令与应答的通信链路。
2.数据连接是传输数据的全双工连接。传输数据可以发生在服务器数据传输过程DTP和客户DTP之间,也可以发生在两个服务器的DTP之间。
6、文件类型?
ASCII码文件类型(默认选择),以NVT ASCII码形式通过数据连接传输;
EBCDIC文件类型。该文本文件传输方式要求两端都是EBCDIC系统;
图像文件类型(也成为二进制文件类型),数据发送形式呈现为一个连续的比特流。
7、数据结构?
文件结构(File Structure)字节流,无结构;
记录结构(Record Structure)文件被划分为记录,用于文本文件;
页结构(Page Structure)文件被划分为页,每页有页号和页头。可以进行随机存取或顺序存取。
8、传输方式:
FTP的传输模式有流模式、块模式和压缩模式:
1.流模式:数据以字节流的形式传送
-记录结构
-文件结构
2.块模式:文件以块的形式传送,块带有自己的头部分。头字节包括16位计数域和8位描述子代码
3.压缩模式:压缩模式中,因为数据是压缩过的,对于增加带宽有很多好处。
9、FTP中的客户端-服务器模型
FTP客户端与服务器之间要建立双重连接,一个是控制连接,一个是数据连接。
控制连接:NVT ASCII
数据连接:文件类型、数据结构、传输方式
建立双重连接的原因是:FTP是一个交互式会话系统,某客户每次调用FTP,便与服务器建立一次会话,会话以控制连接来维持。
客户端每提出一个请求,服务器与客户端建立一个数据连接,进行实际的数据(比如文件)传输,一旦数据传输结束,数据连接相继撤销,但控制连接依然存在,客户端可以继续发出命令。
客户可以撤销控制连接(close命令),也可以退出FTP会话(quit命令)。
FTP服务器的实现是由一组FTP进程完成的。
服务器FTP进程:由协议解释器PI和数据传输过程DTP组成。
客户端FTP进程:由PI、DTP和用户接口组成。
10、传输和控制采用独立的连接方式具有的优点?
1.使FTP协议更加简单并且更容易实现,例如控制连接可以直接采用Telnet协议实现,FTP数据连接不会与FTP命令混淆起来;
2.在数据连接结束后,控制连接仍然保留着,它能够在新的传输连接时被使用;
3.发送方与接收方在所有的数据都到达时可以在数据连接上用文件结束来通知另一方,从而达到命令传输的功能。
11、FTP使用Telnet协议进行控制连接。
POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型.
1、用户从邮件服务器上接收邮件的典型通信过程?
2、命令格式以及说明
代表空格,代表回车和换行。
POP3命令格式 | 说明 |
userusername | user 命令是POP3客户端程序与POP3邮件服务器建立连接后通常发送的第一条命令,参数 username 表示收件人的帐户名称。 |
passpassword | pass 命令是在user命令成功通过后,POP3客户端程序接着发送的命令,它用于传递帐户的密码,参数 password 表示帐户的密码。 |
apopname,digest | apop 命令用于替代user和pass命令,它以MD5 数字摘要的形式向POP3邮件服务器提交帐户密码。 |
stat | stat 命令用于查询邮箱中的统计信息,例如:邮箱中的邮件数量和邮件占用的字节大小等。 |
uidlmsg# | uidl 命令用于查询某封邮件的唯一标志符,参数msg#表示邮件的序号,是一个从1开始编号的数字。 |
list[MSG#] | list 命令用于列出邮箱中的邮件信息,参数 msg#是一个可选参数,表示邮件的序号。当不指定参数时,POP3服务器列出邮箱中所有的邮件信息;当指定参数msg#时,POP3服务器只返回序号对应的邮件信息。 |
retrmsg# | retr 命令用于获取某封邮件的内容,参数 msg#表示邮件的序号。 |
delemsg# | dele 命令用于在某封邮件上设置删除标记,参数msg#表示邮件的序号。POP3服务器执行dele命令时,只是为邮件设置了删除标记,并没有真正把邮件删除掉,只有POP3客户端发出quit命令后,POP3服务器才会真正删除所有设置了删除标记的邮件。 |
rest | rest 命令用于清除所有邮件的删除标记。 |
topmsg#n | top 命令用于获取某封邮件的邮件头和邮件体中的前n行内容,参数msg#表示邮件的序号,参数n表示要返回邮件的前几行内容。使用这条命令以提高 Web Mail系统(通过Web站点上收发邮件)中的邮件列表显示的处理效率,因为这种情况下不需要获取每封邮件的完整内容,而是仅仅需要获取每封邮件的邮件头信息。 |
noop | noop 命令用于检测POP3客户端与POP3服务器的连接情况。 |
quit | quit 命令表示要结束邮件接收过程,POP3服务器接收到此命令后,将删除所有设置了删除标记的邮件,并关闭与POP3客户端程序的网络连接。 |
对于POP3客户程序发送的每一条POP3命令,POP3服务器都将回应一些响应信息。响应信息由一行或多行文本信息组成,其中的第一行始终以“+OK” 或 “-ERR” 开头,它们分别表示当前命令执行成功或执行失败。
3、协议状态
POP3协议中有三种状态,认正状态,处理状态和更新状态。命令的执行可以改变协议的状态,而对于具体的某命令,它只能在具体的某状态下使用。
客户机与服务器刚与服务器建立连接时,它的状态为认证状态;一旦客户机提供了自己身份并被成功地确认,即由认可状态转入处理状态; 在完成相应的操作后客户机发出QUIT命令(具体说明见后续内容),则进入更新状态,更新之后又重返认可状态;当然在认可状态下执行QUIT命令,可释放连接。
4、IMAP协议?功能?
IMAP协议在 RFC2060文档中定义,目前使用的是第4个版本,所以也称为IMAP4。
IMAP协议相对于POP3协议而言,它定义了更为强大的邮件接收功能,主要体现在以下一些方面:
(1)IMAP具有摘要浏览功能,可以让用户在读完所有邮件的主题、发件人、大小等信息后,再由用户做出是否下载或直接在服务器上删除的决定。
(2)IMAP可以让用户有选择性地下载邮件附件。例如一封邮件包含3个附件,如果用户确定其中只有2个附件对自已有用,就可只下载这2个附件,而不必下载整封邮件,从而节省了下载时间。
(3)IMAP可以让用户在邮件服务器上创建自己的邮件夹,分类保存各个邮件。
5、MIME协议
早期人们在使用电子邮件时,都是使用普通文本内容的电子邮件内容进行交流,由于互联网的迅猛发展,人们已不满足电子邮件仅仅是用来交换文本信息,而希望使用电子邮件来交换更为丰富多彩的多媒体信息,例如,在邮件中嵌入图片、声音、动画和附件等二进制数据。但在以往的邮件发送协议RFC822文档中定义,只能发送文本信息,无法发送非文本的邮件,针对这个问题,人们后来专门为此定义了MIME(Multipurpose Internet Mail Extension,多用途Internet邮件扩展)协议。
MIME协议用于定义复杂的邮件体格式,它可以表达多段平行的文本内容和非文本的邮件内容,例如,在邮件体中内嵌的图像数据和邮件附件等。另外,MIME协议的数据格式也可以避免邮件内容在传输过程发生信息丢失。对于表示某个具体资源的MIME消息,它的消息头中需要指定资源的数据类型;对于MIME组合消息,它的消息中需要指定组合关系。具体资源的数据类型和组合消息的组合关系,都是通过消息头中的Content-Type头字段来指定的。Content-Type字段中的内容以“主类型/子类型”的形式出现,主类型有text、image、audio、video、application、multipart、message等,分别表示文本、图片、音频、视频、应用程序、组合结构、消息等。每个主类型下面都有多个子类型,例如text类型包含plain、html、xml、css等子类型。multipart主类型用于表示MIME组合消息,它是MIME协议中最重要的一种类型。一封MIME邮件中的MIME消息可以有三种组合关系:混合、关联、选择,它们对应MIME类型如下:
multipart/mixed:表示消息体中的内容是混和组合类型,内容可以是文本、声音和附件等不同邮件内容的混和体。比如一封邮件中即包含附件,邮件内容还引用内嵌的图片或附件资源,这种类型邮件的MIME类型就必须定义为multipart/mixed。
multipart/related:表示消息体中的内容是关联(依赖)组合类型。比如:邮件内容有一个img标签,这个标签的src属性指向的是邮件内部的一个图片资源,所以这封邮件MIME类型就应该定义为multipart/related
multipart/alternative:表示消息体中的内容是选择组合类型,例如一封邮件的邮件正文同时采用HTML格式和普通文本格式进行表达时,就可以将它们嵌套在一个multipart/alterntive类型的组合消息中。这种做法的好处在于如果邮件阅读程序不支持HTML格式时,可以采用其中的文本格式进行替代。
一封最复杂的电子邮件的基本情况为:含有邮件正文和邮件附件,邮件正文可以同时使用HTML格式和普通文本格式表示,并且HTML格式的正文中又引用了其它的内嵌资源。对于这种最复杂的电子邮件,可以采用下图所示的MIME消息结构进行描述:
从上图中可以看出,如果在邮件中要添加附件,就必须将整封邮件的MIME类型定义为multipart/mixed;如果要在HTML格式的正文中引用内嵌资源,那就要定义multipart/related类型的MIME消息;如果普通文本内容与HTML文本内容共存,那就要定义multipart/alternative类型的MIME消息。
注意:如果整封邮件中只有普通文本内容与HTML文本内容,那么整封邮件的MIME类型则应定义为multipart/alternative;如果整封邮件中包含有HTML文本内容和内嵌资源,但不包含附件,那么整封邮件的MIME类型则应该定义为multipart/related。
SMTP(Simple Mail Transfer Protocol)协议,即简单邮件传输协议,尽管邮件服务器可以用SMTP发送、接收邮件,但是邮件客户端只能用SMTP发送邮件,接收邮件一般用IMAP 或者 POP3 。邮件客户端使用TCP的25号端口与服务器通信。
SMTP在1982年首次被定义在 RFC 821 ,在2008它被更新为扩展的SMTP协议,补充在文件 RFC 5321 ,扩展的协议是目前使用最广泛的协议。
1、SMTP 模型
SMTP被设计基于以下交流模型:当用户需要发邮件时候,邮件发送者(sender-SMTP)建立一个与邮件接收者(receiver-SMTP)通信的通道,发送者发送SMTP命令给接收者,接收者收到后对命令做回复。
通信通道被建立后,发送者发送 MAIL 命令来指定发送者的邮件,如果接受者接收这个邮件,就回复 OK ,接着发送者发送 RCPT命令来指定接收者的邮箱,如果被接收同样回复OK,如果不接受则拒绝(不会终止整个通话)。接收者邮箱确定后,发送者用DATA命令指示要发送数据,并用一个 . 结束发送。如果数据被接收,会收到OK ,然后用QUIT结束会话。
这里有三个步骤对于mail事务,第一步用 MAIL 命令给出发送者的身份,第二步用一个或者多个RCPT命令给出接收者信息,接着用DATA命令给出邮件数据。
第一步是MAIL命令,包含发送者邮箱( 是空格,是回车换行)
MAIL FROM:这个命令告诉接收者,开始一个新的邮件事务,重置所有的状态表和缓存区,包括接受者信息和邮件数据,被用于报告错误,如果命令被接受,返回250 OK
第二步是 RCPT命令
RCPT TO:这个命令提供一个接收者邮箱,如果被接受返回250 OK,如果不能被识别,返回550 Failure,这个第二步可以被重复多次。
第三步是 DATA命令
DATA :如果被接受,返回354,并认为所有后续行都会邮件数据信息。当收到文本结束符时候,返回250 OK
邮件数据的末尾必须被指明,为了激活命令和回复的对话。通过发送只包含一个英文句号的行,来提示邮件数据结束。
下面两个命令用于打开关闭传输通道
HELO <SP> <domain> <CRLF>
QUIT <CRLF>
HELO命令用主机介绍它自己,可以被翻译为"Hello, I am".
4、SMTP命令? 命令语义?
SMTP命令由四个不区分大小写的字母组成,如果命令带参数,则用空格与参数隔开,命令用回车换行结尾。
EHLO(Extended hello)or HELO(hello)
这个命令用于说明自己是SMTP客户端身份,参数包含客户端的域名(domain)。其中EHLO是SMTP补充协议( RFC 5321 )中用于替换HELO命令的新命令,协议规定服务器支持EHLO命令的时候,尽量使用EHLO命令,为了兼容以前的版本,要求服务器继续支持HELO命令。如果收到回复OK,说明发送者和接收者处于初始状态,所有的状态表和缓存区都被清零。
MAIL:这个命令的参数是发送者邮箱,参数中有 FROM 关键字,这个命令会清空之前的发送者邮箱(the reverse-path buffer)、接收者邮箱(forward-path buffer)和邮件数据(the mail data buffer)。
RCPT (recipient):用于指定一个邮件接收者,参数中有TO 关键字,指定多个接收者通过重复使用这个命令。
DATA :这个命令没有参数,告诉服务器接着要发送邮件内容。
邮件内容包含邮件标题项(message header section )和邮件正文(message body),标题项(Header Fields )是以项目名(field name)为行的起点,接着是冒号(":"),跟着是内容(field body)以回车换行结束(CRLF),下面是标题项的例子
From: Bob@example.com
To: Alice@example.com
Cc: theboss@example.com
subject: subject
其中From、To、Cc、subject就是项目名,冒号后是内容。邮件的标题区与正文区需要用一个空行隔开。两者共同组成DATA命令的参数,正文区用只有一个点字符“.”的单行来结束。
SEND :初始化邮件事务,邮件数据被转发到一个或多个终端。
SOML(SEND OR MAIL):初始化邮件事务,邮件数据被转发到一个或多个终端或邮箱。
SAML(SEND AND MAIL):初始化邮件事务,邮件数据被转发到一个或多个终端和邮箱。
RSET(RESET):这个命令用来终止邮件事务(mail transaction),任何已经存储的发送者、接收者、邮件数据(mail data)信息都被丢弃,缓存区被清零。
VRFY(VERIFY) :验证邮箱是否存在,如果参数是用户名,则返回一个全名(如果存在)。
EXPN(EXPAND):验证邮箱列表
HELP:返回帮助信息,带参数时候,返回指定的帮助信息。
NOOP :这个命令指示服务器收到命令后不用回复 “OK”
QUIT :关闭传输通道。
TURN :交换邮件发送者和接收者的角色,这个命令用在建立连接成本高的时候,TCP连接不用这个命令。这个命令会产生安全问题,只有在服务器可以被授权作为客户端时候才能用。
DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,常用的2个端口:67(DHCP server),68(DHCP client)。DHCP通常被用于局域网环境,主要作用是集中的管理、分配IP地址,使client动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。简单来说,DHCP就是一个不需要账号密码登录的、自动给内网机器分配IP地址等信息的协议。
1、DHCP协议中的报文
DHCP报文共有一下几种:
2、DHCP 的 工作流程
4、什么是DHCP 客户端
DHCP客户端一般来说是局域网中独立的PC主机。
DHCP客户端发出的DHCP DISCOVER包是DHCP协议的开始。
延续租期、发现、释放IP地址等大多数DHCP中的行为都是由DHCP客户端主动发起。
5、DHCP 自动状态机
DHCP获得ip地址的4步骤:discover>offer>request>ack(nak)
DHCP刷新租期的步骤:request>ack(nak)
DHCP释放ip的步骤:release
DHCP SERVER指的是服务器端,在路由器上体现的就是给LAN端动态分配IP的功能。DHCP SERVER负责接收客户端的DHCP请求,管理LAN端所有的IP网络设定资料,相比于BOOTP,DHCP通过“租约”来实现动态分配IP的功能,实现IP的时分复用,从而解决IP资源短缺的问题。其地址分配方式有三种,分别是人工配置(由管理员对每台具体的计算机指定一个地址),自动配置(服务器为第一次连接网络的计算机分配一个永久地址),动态配置(在一定的期限内将地址租给计算机,租期结束后客户必须续租或者停用该地址),而对于路由器,经常使用的地址分配方式是动态配置。
7、DHCP SERVER的两个租约表
静态租约表:对应一个静态租约存储文件,server运行时从文件中读取静态租约表。
动态租约表:对应一个周期存储文件,server周期性将租约表存进该文件,在程序开始时将会读取上次存放的租约表。(租约表记录了当前所有分配的租约,包括静态链接的)。
8、DHCP SERVER基本逻辑
原则上DHCP SERVER是一直处在被动接受请求的状态,当有客户端请求时,服务器会读取获得客户端当前所在的状态以及客户端的信息,并在静态租约表和动态租约表中进行检索找到相应的表项,再根据客户端的状态执行不同的回复。当收到客户端的首次请求时,DHCP服务器先查找静态租约表;若存在请求的表项,返回这个客户的静态IP地址;否则,从IP地址池中选择可用的IP分配给客户,并添加信息到动态数据库中。此外,服务器将会周期性的刷新租约表写入文件存档,在这个过程中会顺便对动态租约表进行租期检查。
执行回复动作:
DHCPOFFER:
静态租用:首先匹配MAC地址,看是否能在静态租约表中找到对应的项,若能找到就把IP分配给他。静态表中的IP不能被其他客户使用。
动态租用:
1.server试图分配给client上次分配过的IP,在这之前检查这个IP是否正在使用。
2.discover中含有request ip 时,检查该IP是否在地址池范围,是否正在使用,是否到期,是否是静态IP,网络上是否已经存在。
3.discover不含request ip,从地址池上寻找一个最小的可用IP分配。
DHCPACK: 根据是否含有request ip和server ip识别客户端现在init_reboot,selecting,renewing/rebinding中的哪个状态,并根据以下规则执行DHCPACK回复:
1.若client处于selecting状态,验证request ip和server ip是否同服务器中的匹配。
2.若client处于init_reboot状态,验证request ip是否符合租约记录。
3.若client处于renewing/rebinding状态,验证client ip address是否符合租约记录。
DHNAK:
1.请求的IP是静态IP,但是MAC地址无法与其对应。
2.上面DHCPACK中验证失败。
服务器还可能会收到其他包:
DHCPDECLINE:server会把租约表中相关client硬件地址置空,并保存这个地址一段时间。
DHCPRELEASE:清空租期回收IP。
DHCPINFORM:回复DHCPACK,数据包含有关于server的信息。
TCP/IP中使用IP地址和端口号来确定网络上某一台主机上的某一个程序,但是IP地址是点分十进制,不方便记忆。12个阿拉伯数字很难记忆。使用一个名称更容易。因此,就出现了域名,如:www.baidu.com。
域名和IP的对应关系保存在一个叫hosts文件中。当你键入一个像https://www.baidu.com/这样的域名,域名会被一种 DNS 程序翻译为数字。在全世界,数量庞大的 DNS 服务器被连入因特网。DNS 服务器负责将域名翻译为 TCP/IP 地址,同时负责使用新的域名信息更新彼此的系统。当一个新的域名连同其 TCP/IP 地址一同注册后,全世界的 DNS 服务器都会对此信息进行更新。
最初,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件,其他计算机也需要定期更新,才能上网。但是这样太麻烦了,就出现了DNS系统。
1、DNS系统
一个组织的系统管理机构,维护系统内的每个主机IP和主机名的对应关系。如果计算机接入网络,将这个信息注册到数据库中,用户输入域名时,会自动查询DNS服务器,由DNS服务器检索数据库,得道对应的IP地址。
在域名解析的过程中,优先查找hosts文件的内容。
实际上,人们将主机名叫做域名,其原因是Internet使用的命名系统定义了很多域,主机要按照它所属的域命名,因此就叫做域名。域名是按照一定的规则,用自然语言表示的名字,它与确定的IP地址相对应。域名是面向用户的,IP是面向主机的。
2、DNS的作用
将主机域名转化为IP地址,使得用户能够方便的访问各种Internet资源与服务,DNS是Internet各种应用层协议实现的基础。
3、DNS的本质
提出一种分层次、基于域的命名方案,并且通过一个分布式数据库系统,以及维护与查询机制来实现域名服务功能。
4、DNS三个组成部分
5、DNS域名空间
6、域名空间的特点
1.顶级域TLD有两种,通用域、国家或地区域。常用的通用域:.com(商业)、.edu(教育性机构)、.gov(政府)、.net(网络服务供应商)、.org(非营利性机构)、.int(国际性组织)、.mil(军事组织)。
2.每个域自己控制如何分配它下面的域
编号 | 类型 | 详情 |
(1) | 国家顶级域名nTLD | 采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。 |
(2) | 通用顶级域名gTLD | 最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。 |
(3) | 基础结构域名(infrastructure domain) | 这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。(2)通用顶级域名gTLD:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。 |
当一个组织拥有一个域的管理权后,它可以决定是否需要进一步划分层次。Internet主机域名的排列原则是低层的子域名在前,所属的高层域名在后。
3.为了创建一个新的域,创建者必须得到该新域的上级域管理员的许可
7、域名服务器
域名是分层结构,域名服务器也是分层结构。
因特网上的DNS服务器也是按照层次安排的。每一个域名服务器只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为下面四种不同的类型。
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助根域名服务器。所以根域名服务器是最重要的域名服务器。假定所有的根域名服务器都瘫痪了,那么整个DNS系统就无法工作。需要注意的是,在很多情况下,根域名服务器并不直接把待查询的域名直接解析出IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。
权限域名服务器:负责一个“区”的域名服务器。
本地域名服务器:本地服务器不属于下图的域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
从”根域名服务器”查到”顶级域名服务器”的NS记录和A记录(IP地址)
从”顶级域名服务器”查到”次级域名服务器”的NS记录和A记录(IP地址)
从”次级域名服务器”查出”主机名”的IP地址
注:
全球共有13台根服务器,这13台根域名服务器中文名字分别为“A”至“M”,其中10台设置在美国,另外三台分别设置在英国、瑞典、日本。
1个为主根服务器,放置在美国,其余12个均为辅根服务器。所有根服务器均由美国政府授权的互联网域名与号码分配机构CANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。
容灾系统是指在相隔较远的异地,建立两套或多套功能相同的IT系统,互相之间可以进行健康状态监视和功能切换,当一处系统因意外(如火灾、地震等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。
9、域名解析过程
如果用户希望通过FTP客户进程来访问一台远程主机上的FTP服务器,该FTP服务器的域名为xxx.com,这里将处理的流程描述出来。
1.用户将xxx.com传递给其主机上的FTP客户进程;
2.FTP客户进程将xxx.com传递给DNS客户进程;
3.每一台主机在加载在内核后都能获得其DNS服务器的IP地址,DNS客户进程便通过IP地址向DNS服务器发送DNS查询报文,要求服务器xxx.com对应的IP地址;
4.DNS服务器进程在收到DNS查询报文后,通过一系列的查询操作(递归查询或迭代查询)获得xxx.com对应的IP地址,将xxx.com的IP地址写入DNS响应报文中发送给DNS客户进程;
5.DNS客户进程将获得xxx.com的IP交付给FTP客户进程;
6.FTP客户进程在收到FTP服务器的IP地址后,就可以访问FTP服务器了。
1、输入域名后,先查找自己主机对应的域名服务器。
2、域名服务器先查找自己的数据库中的数据,如果没有,就向上级域名服务器进行查找,依次类推。
3、最多回溯到根域名服务器,肯定可以找到这个域名的IP地址。
4、域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找过程。
注意:客户进程在与服务器发送数据报之前,必须知道服务进程所在服务器端的IP地址,因为网络进程间通信是通过socket进行的。
1.递归查询:主机向本地域名服务器的查询一般都是采用递归查询。
所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
2.迭代查询:本地域名服务器向根域名服务器的查询通常采用迭代查询。
迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
11、整个查询过程举例?
假定域名为m.xyz.com的主机想知道另一个主机y.abc.com的IP地址。例如,主机m.xyz.com打算发送邮件给y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是上图a的几个查询步骤:
SNMP(Simple Network Management Protocol)即简单网络管理协议,主要用在局域网中对设备进行管理,应用最为广泛的是对路由器交换机等网络设备的管理,当然不仅限于网络设备。SNMP位于两种网络模型的顶层即应用层,属于应用层协议,在传输层依靠UDP协议进行传输。SNMP的数据包在传输层,因此叫做PDU(协议数据单元)。
SNMP分为管理端和代理端(agent),管理端的默认端口为UDP 162,主要用来接收Agent的消息如TRAP告警消息;Agent端使用UDP 161端口接收管理端下发的消息如SET/GET指令等。
1、SNMP协议各版本
SNMP协议目前主要有SNMPv1、SNMPV2c、SNMPv3几种最常用的版本,主要差异在安全性、消息封装格式、GET效率等方面。
2、SNMPv1
SNMPV1整个消息采用明文传送,通过wireshark/tcpdump等抓包工具可看到明文。
SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。SNMPv1的SMI和MIB都比较简单,且存在较多安全缺陷。SNMPV1中定义了5种类型的PDU:Get(获取参数值,不能遍历table类型的参数组),GetNext(可获取table类型的参数值,一组参数),Set(设置参数值) 和Trap(发送告警)、Response(GET操作的响应信息)。
SNMPv1使用团体字(community)作为身份认证信息。当Agent接收到与其一样的团体字的管理端消息后才会进行消息应答。
3、SNMPv2c
SNMPV2C整个消息采用明文传送,通过wireshark/tcpdump等抓包工具可看到明文。
SNMPV2定义了7种类型的PDU:Get(获取参数值,不能遍历table类型的参数组),GetNext(可获取table类型的参数值,一组参数),Set(设置参数值) 和Trap(发送告警),GetBulk(GetBulk操作所对应的基本操作是GetNext,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据,如果get-request中的参数有一个不存在,请求照样会被正常执行;而在SNMPv1种将收到一个错误消息),inform(相当于Trap的升级版,但是Trap消息发出去之后不会收到响应消息,而inform消息在发出之后能收到响应消息)、Response(GET操作的响应信息)。
SNMPv2c也采用团体字认证。在兼容SNMPv1的同时又扩充了SNMPv1的功能:它提供了更多的操作类型(GetBulk和inform操作);支持更多的数据类型(Counter32等);提供了更丰富的错误代码,能够更细致地区分错误。
SNMPv2报文格式如下图:
4、SNMPv3
SNMPV3数据消息采用密文传送,通过wireshark/tcpdump等抓包工具不可见实际的内容。
SNMPV3中沿用了V2中7种类型的PDU,增加了report(当消息不能解密时发送该消息)。SNMP管理端和代理端(Agent)进行通信时,双方必须有共同的一套参数才能正常“交流”,这套参数被称作MIB(管理信息库),因文件组织格式为树形,统称MIB树,不同厂家、不同设备类型的MIB树一般不同。
SNMPv3主要在安全性方面进行了增强,它采用了USM和VACM技术。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式
USM(基于用户的安全模型)
USM引入了用户名和组的概念,可以设置认证和加密功能。认证用于验证报文发送方的合法性,避免非法用户的访问;加密则是对NMS和Agent之间传输的报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为NMS和Agent之间的通信提供更高的安全性。Agent通过对管理端消息中携带的用户、密码(采用MD5或者SHA加密)、authkey(认证秘钥)以及engineid(agent的标识码)对消息进行鉴权和完整性验证,整个消息体采用DES进行加密。
VACM(基于视图的访问控制模型)
VACM技术定义了组、安全等级、上下文、MIB视图、访问策略五个元素,这些元素同时决定用户是否具有访问的权限,只有具有了访问权限的用户才能管理操作对象。在同一个SNMP实体上可以定义不同的组,组与MIB视图绑定,组内又可以定义多个用户。当使用某个用户名进行访问的时候,只能访问对应的MIB视图定义的对象。
5、SNMPv3协议的工作的过程?用Wireshark抓取报文
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议。Telnet协议的目的是提供一个相对通用的,双向的,面向八位字节的通信方法,允许界面终端设备和面向终端的过程能通过一个标准过程进行互相交互。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。
安全隐患:明文传输
1、本地主机交互过程
2、远程主机交互过程
3、特点:
适应异构;传送远地命令;数据流向;强制命令;选项协商
4、Telnet协议的主体组成?
Telnet协议的主体由三个部分组成:网络虚拟终端(NVT);操作协商;协商有限自动机。
5、网络虚拟终端(NVT)
网络虚拟终端(NVT,Network Virtual Terminal)是一种虚拟的终端设备,它被客户和服务器所采用,用来建立数据表示和解释的一致性。
注: NVT的组成
网络虚拟终端NVT包括两个部分:
Ø 输出设备:输出远程数据,一般为显示器
Ø 输入设备:本地数据输入
注:在NVT上传输的数据格式
在网络虚拟终端NVT上传输的数据采用8bit字节数据,其中最高位为0的字节用于一般数据,最高位为1的字节用于NVT命令
注: NVT在TELNET中的使用
TELNET使用了一种对称的数据表示,当每个客户机发送数据时,把它的本地终端的字符表示影射到NVT的字符表示上,当接收数据时,又把NVT的表示映射到本地字符集合上。
在通信开始时,通信双方都支持一个基本的NVT终端特性子集(只能区分何为数据,何为命令),以便在最低层次上通信,在这个基础上,双方通过NVT命令协商确定NVT的更高层次上的特性,实现对NVT功能的扩展。
在TELNET中存在大量的子协议用于协商扩展基本的网络虚拟终端NVT的功能,由于终端类型的多样化,使得TELNET协议族变得庞大起来。
6、为什么要协商操作选项
当定义了网络虚拟终端设备后,通信的双方就可以在一个较低的层次上实现数据通信,但基本的NVT设备所具有的特性是十分有限的,它只能接收和显示7位的ASCII码,没有最基本的编辑能力,所以简单的NVT设备是没有实际应用意义的;为此TELNET协议定义了一族协议用于扩展基本NVT的功能,目的是使NVT能够最大限度地达到用户终端所具有的功能。
为了实现对多种终端特性的支持,TELNET协议规定在扩展NVT功能时采用协商的机制,只有通信双方通过协商后达成一致的特性才能使用,才能赋予NVT该项特性,这样就可以支持具有不同终端特性的终端设备可以互连,保证他们是工作在他们自己的能力以内。
7、 实现
整个协议软件分为三个模块,各模块的功能如下:
1. 与本地用户的输入/输出模块:处理用户输入/输出;
2. 与远地系统的输入/输出模块:处理与远程系统输入/输出;
3. TELNET协议模块:实现TELNET协议,维护协议状态机。
telnet客户机要做两件事:
读取用户在键盘上键入的字符,并通过tcp连接把他们发送到远程服务器上
读取从tcp连接上收到的字符,并显示在用户的终端上
在TCP/IP协议中,NVT ASCII码具有广泛的应用。文本文件通常转换成NVT ASCII码形式在数据连接中传输,Telnet、FTP、SMTP、Finger和Whois协议都以NVT ASCII来描述客户命令和服务器的响应。
注:部分文字图片来源于网络!
如有错误、侵权,请联系作者更改、删除!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。