(八)应用协议--图解TCP/IP

应用层协议概要

这里写图片描述

应用协议的定义

利用网络的应用程序有很多,包括Web浏览器、电子邮件、远程登录、文件传输、网络管理等。能够让这些应用进行特定通信处理的正是应用协议。

TCP和IP等下层协议是不依赖于上层应用类型、适用性非常广泛的协议。而应用协议则是为了实现某种应用而设计和创造的协议。

应用协议与协议的分层

网络应用由不同的用户和软件供应商开发而成。为了实现网络应用的功能,在应用之间进行通信时将其连接的网络协议是非常重要的(应用之间交互的信息叫做消息)。

应用可以直接享用传输层以下的基础部分。开发者只关心选用哪种应用协议、如何开发即可,而不必担心应用中的数据该以何种方式发送到目标主机等问题。这都是得益于网络层的功劳。

相当于OSI中的第5、第6、第7层协议

TCP/IP的应用层涵盖了OSI参考模型中第5、第6、第7层的所有功能,不仅包含了管理通信连接的会话层功能、转换数据格式的表示层功能,还包括与对端主机交互的应用层功能在内的所有功能。

远程登录

远程登录是为了实现TSS(Time Sharing System 分时系统)环境,是将主机和终端的关系应用到计算机网络上的一个结果。

远程登录主要使用TELNET和SSH两种协议。

TELNET

TELNET利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主机上执行。本地用户好像直接与远端主机内部的Shell相连,直接在本地进行操作。

TELNET可以分为两类基本服务。一是仿真终端功能,二是协商选项机制。

这里写图片描述

TELNET经常用于登录路由器或高性能交换机等网络设备进行相应的设置。

SSH

SSH是加密的远程登录系统。TELNET中登录时无需输入密码就可以发送,容易造成通信窃听和非法入侵的危险。使用SSH后可以加密通信内容。即使信息被窃听也无法破解所发送的密码、具体命令以及命令返回的结果是什么。

SSH还包括的功能:

  • 可以使用更强的认证机制。
  • 可以转发文件。
  • 可以使用端口转发功能。

端口转发是指将特定端口号所收到的信息转发到特定的IP地址和端口号码的一种机制。由于经过SSH连接的那部分内容被加密,确保了信息安全,提供了更为灵活的通信(可以实现虚拟专用网VPN Virtual Private Network)。

这里写图片描述

文件传输

FTP是在两个相连的计算机之间进行文件传输时使用的协议。FTP也需要在登录到对方的计算机后才能进行相应的操作。

互联网上有一种FTP服务器时允许任何人进行访问的,这种服务器叫做匿名服务器(anonymous ftp)。登录这些服务器时使用匿名(anonymous)或ftp都可以。

FTP的工作机制

FTP使用两条TCP连接:一条用来控制,一条用于数据(问文件)的传输。

用于控制的TCP连接主要在FTP的控制部分使用。例如登录用户名和密码的验证、发送文件的名称、发送方式的设置。利用这个连接,可以通过ASCII码字符串发送请求和接收应答。这个连接上无法发送数据,数据需要一个专门的TCP进行连接。

FTP控制用的连接使用TCP21号端口。在TCP21号端口上进行文件GET(RETR)、PUT(STOR)、以及文件一览(LIST)等操作时,每次都会建立一个用于数据传输的TCP连接。数据的传输和文件一览表的传输是在这个新建的连接上进行的。当数据传送完毕之后,传输数据的这条连接也会被断开,然后会在控制用的连接上继续进行命令或应答的处理。

通常,用于数据传输的TCP连接时按照与控制用的连接相反的方向建立的。因此,在通过NAT连接外部FTP服务器时,无法直接建立传输数据时使用的TCP连接。此时,必须使用PASV命令修改建立连接的方向才行。

控制用的连接,在用户要求断开之前会一直保持连接状态。不过,绝大多数FTP服务器都会对长时间没有任何新命令输入的用户的连接强制断开。

数据传输用的TCP连接通常使用端口20。不过可以使用PORT命令修改。最近,出于安全考虑,普遍数据传输用的端口号使用随机数进行分配。

这里写图片描述

通过ASCII码字符串进行的交互处理

FTP中请求命令中使用着“RETR”等ASCII码字符串。而针对这些命令的应答则使用如“200”等3位数字的ASCII码字符串。

对于ASCII码字符串型的协议来说换行具有重要意义。很多情况下,一行字符串表示一个命令或一个应答,而空白则用来标识与参数之间的分割符。即,命令和应答的消息通过换行区分、参数用空格区分。换行由“CR”(ASCII码的十进制数为13)和“LF”(ASCII码的十进制数为10)两个控制符号组成。

电子邮件

电子邮件的工作机制

提供电子邮件服务的协议叫做SMTP(Simple Mail Transfer Protocol)。SMTP为了实现高效发送邮件内容,在其传输层使用了TCP协议。

早期电子邮件是在发送端主机与接收端主机之间直接建立TCP连接进行邮件传输。发送人编写好邮件以后,其内容会保存在发送端主机的硬盘中。然后与对端主机建立TCP连接,将邮件发送到对端主机的硬盘。当发送正常结束后,再从本地硬盘中删除邮件。而在发送过程中一旦发现对端计算机因没有差点等原因没有收到邮件时,发送端将被等待一定时间后重发。

这里写图片描述

现在互联网中电子邮件的发送过程:

这里写图片描述

为此,在技术上改变了以往直接在发送端与接收端主机之间建立TCP连接的机制,而引进一种一直会连接电源的邮件服务器(由于在传输层以上的网络中对通信进行转播,因此邮件服务器相当于网关)。发送端和接收端通过邮件服务器进行收发邮件。接收端从邮件服务器接收邮件时使用POP3(Post Office Protocol)。

电子邮件机制由3部分组成,它们分别是邮件地址,数据格式以及发送协议。

邮件地址

现在,电子邮件的发送地址由DNS进行管理。DNS中注册有邮件地址及其作为发送地址时对应的邮件服务器的域名。这些映射信息被称作MX记录。例如,kusa.ac.jp的MX记录中制定了mailserver.kusa:ac.jp。于是任何发给以kusa.ac.jp结尾的地址的邮件都将被发送到mailserver.kusa.ac.jp服务器。就这样,根据MX记录中指定的邮件服务器,可以管理不同邮件地址与特定邮件服务器之间的映射关系。

MIME

MIME
Multipurpose Internet Mail Extensions ,广泛用于互联网并极大的扩展了数据格式,还可以用于WWW和NetNews中。

MIME规定了应用消息格式,因此在OSI参考模型中它相当于第6层表示层。

MIME基本上由首部和正文(数据)两部分组成。首部不能是空行,因为一旦出现空行,其后的部分将被视为正文(数据)。如果MIME首部的“Content-Type”中指定“Multipart/Mixed”,并以“boundary=”后面字符作为分隔符,那么可以将多个MIME消息组合成为一个MIME消息。这就叫做multipart。即,各个部分都由MIME首部和正文(数据)组成。

“Content-Type”定义了紧随首部信息的数据类型。以IP首部为例,它就相当于协议字段。下表列出了具体代表性“Content-Type”:

这里写图片描述

这里写图片描述

SMTP

SMTP是发送电子邮件的协议。它使用的是TCP的25号端口。SMTP建立一个TCP连接以后,在这个连接上进行控制和应答以及数据的发送。客户端以文本的形式发出请求,服务端返回一个3位数字的应答。

每个指令和应答的最后都必须追加换行指令(CR、LF)。

这里写图片描述

这里写图片描述

SMTP本身没有验证发送者的功能,因此人们无法避免这类邮件达到自己的邮件服务器。不过现在,通过“POP before SMTP”或“SMTP 认证”(SMTP Authentication)等功能进行认证,以此防止冒充发送者的人越来越多。

并且很多除了自己本域的邮件服务器外,很多供应商已将网络设置为不与其他网络的25号端口进行通信。

POP

这里写图片描述

SMTP是想要发送邮件的计算机向接收邮件的计算机发送电子邮件的一种协议。个人电脑不能长时间处于开机状态。所以就引入了POP协议。

该协议是一种用于接收电子邮件的协议。发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器。客户端再根据POP协议从POP服务器接受对方发来的邮件。这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证。

POP与SMTP一样,也是在其客户端与服务器之间通过建立一个TCP连接完成相应操作。

IMAP

IMAP与POP类似,也是接收电子邮件的协议。在POP中邮件由客户端进行管理,而在IMAP中邮件则由服务器进行管理。

使用IMAP时,可以不必从服务器上下载所有的邮件也可以阅读。由于IMAP是在服务器端处理MIME信息,所以它可以实现当某一封邮件含有10个附件时“只下载其中第7个附件”的功能。

WWW

万维网(WWW,World Wide Web)是将互联网中的信息以超文本形式展示的系统。

WWW基本概念

WWW定义了3个重要概念,分别是访问信息的手段与位置(URI,Uniform Resource Identifier)、信息的表现形式(HTML,HyperText Markup Language)、信息转发(HTTP,HyperText Transfer Protocol)等操作。

URI

URI用于标识资源。URI是一种可以用于WWW之外的高效的识别码,它被用于主页地址、电子邮件、电话号码等各种组合中、

一般主页地址,也被叫做URL(Uniform Resource Locator)。URL常被人们用来表示互联网中资源(文件)的具体位置。但是URI不局限于标识互联网资源,它可以作为所有资源的识别码。相比URL,URI则是一个广义的概念。URI可以用于除了WWW之外的其他应用协议中。

URI所表示的组合叫方案(Scheme)。在众多URI的Scheme中WWW主要用其中的http和https表示Web页的位置和访问Web页的方法。

URI与URL
URI:统一资源标志符(Uniform Resource Identifier)
URL:统一资源定位符(uniform resource location)

说白了,URI与URL都是定位资源位置的,就是表示这个资源的位置信息,就像经纬度一样可以表示你在世界的哪个角落。URI是一种宽泛的含义更广的定义,而URL则是URI的一个子集,就是说URL是URI的一部分。
换句话说,每个URL都是URI,但是不是每个URI都是URL的。他们之间最明显的不同就是在java.net.URI你只能看到他的一些属性,他只是表示一个位置,但是你没有办法通过URI获取到这个对象的流,但是URL就不同了。java.net.URL该类提供方法(openConnection()),通过该方法我们可以通过IO流操作他。但是URI中我貌似没看到相关的方法。

HTML

HTMP是记述Web页的一种语言(数据格式)。

XML与Java
XML(Extensible Markup Language),XML是从SGML衍生出来的一种语言,与HTML类似,也需要在每个项目的前后加入标签以表达其具体含义。
Java和XML都相当于OSI参考模型中的第6层表示层。

HTTP

当用户在浏览器的地址栏里输入所要访问Web页的URI以后,HTTP的处理就会开始。它的工作机制,首先是客户端向服务器的80端口建立一个TCP连接,然后在这个TCP连接上进行请求和应答以及数据报文的发送。

这里写图片描述

HTTP中常用的有两个版本,一个HTTP1.0,另一个是HTTP1.1。在HTTP1.0中每一个命令和应答都会触发一次TCP连接的建立和断开。而从HTTP1.1开始,允许在一个TCP连接上发送多个命令和应答。大量减少了TCP连接的建立和断开操作,提高了效率。

这里写图片描述
这里写图片描述

这里写图片描述

CGI

CGI(Common Gateway Interface)是Web服务器调用外部程序时所使用的一种服务端应用的规范。

一般Web通信中,只是按照客户端请求将保存在Web服务器硬盘中的数据转发而已。这种情况下客户端每次收获的信息也是同样(静态)的内容。而引入CGI以后客户端会触发Web服务器运行的另一个程序,客户端输入的数据也会传给这个外部程序。该程序运行结束后会将生成的HTML和其他数据再返回给客户端。

利用CGI可以针对用户表的操作返回给客户端有各种各样变化(动态)的信息。论坛和网上购物系统中经常使用CGI调用外部程序或访问数据库。

网络管理

SNMP

这里写图片描述

在TCP/IP网络管理中可以使用SNMP(Simple Metwork Management Protocol)收集必要的信息。它是一款基于UDP/IP的协议。

SNMP中管理端叫做管理器(Manager,网络监控终端),被管理端叫做代理(路由器、交换机等)。决定管理器与代理之间的通信中所要交互信息的正是SNMP。SNMP中如果将MIB看作代理所管理的信息在数据库中的值,那么它可以新增一个值。

MIB

SNMP中交互的信息是MIB(Management Information Base)。MIB是在树形结构的数据库中为每个项目附加编号的一种信息结构。

其他应用层协议

多媒体通信实现技术

由于TCP具有流控制、拥塞控制、重发机制等功能,有时应用所发出去的数据可能无法迅速达到对端目标主机。然而在互联网电话(VoIP Voice Over IP)和电视会议当中,即使有少许丢包,也希望系统延时少一点,非常注重系统即时性。因此,在实时多媒体通信中采用UDP。

只是用UDP还不足以达到进行实时多媒体通信的目的。例如,在互联网电视电话会议中需要提供查询对方号码、模拟电话机的拨号以及以什么形式交互数据等功能。为此,需要一个叫做“呼叫控制”的支持。呼叫控制主要采用H.323与SIP协议。此外,还需要RTR协议(结合多媒体数据本身的特性进行传输的一种协议)和压缩技术(在网络上传输音频、视频等大型多媒体数据时进行压缩)的支持。

H.323

H.323是由ITU开发用于在IP网上传输音频、视频的一种协议。起初,它主要是作为接入ISDN网和IP网之上的电话网为目的的一种规范而被提出。

H.323定义了4个主要组件。它们分别是终端(用户终端)、网关(吸收用户数据压缩顺序地不一致性)、网闸(电话本管理。呼叫管理)以及多点控制单元(允许多个终端同时使用)。

SIP

与H.323相对的TCP/IP协议即是SIP(Session Initiation Protocol)协议。SIP的提出要晚于H.323,但是被普遍认为更适用于互联网。SIP的构成相对于H.323简单。

终端之间进行多媒体通信时,需要具备事先解析对方地址、呼出对方号码并对所要传输的媒体信息进行处理等功能。此外,还需要具备中断会话和数据转发的功能。这些功能(呼叫控制与信令)都被同一于SIP协议中。它相当于OSI参考模型的会话层。

RTP

UDP不是一种可靠性传输协议。有可能会发生丢包或乱序等现象。因此采用UDP实现实时的多媒体通信需要附加一个表示报文顺序地序列号字段,还需要对报文发送时间进行管理。这些正是RIP(Real-Time Protocol)的主要职责。

RTP为美格保温附加时间戳和序列号。接收报文的应用,根据时间戳决定数据重构的时机。序列号则根据没发出一次报文加一的原则进行累加。RTP使用这个序列号对同一时间戳的数据进行排序,掌握是否有丢包情况发生。

数字压缩技术

通过有效的压缩可以大量较少音频和视频数据的大小。在有限的网络资源中进行多媒体数据的传输。

MPEG(Moving Picture Experts Group)是决定数字压缩规范的ISO/IEC工作组。在这里所制定的规范叫做MPEG。

在MPEG众多规范当中,MPEG1主要用于VideoCD,而MPEG2主要用于DVD和数字电视播放领域。此外,还有MPEG4、MPEG7等规范。连音乐压缩的MP3也属于MPEG的规范。

数字压缩技术,着重于数据格式上的处理,可以认为它们相当于OSI的表示层。

P2P(Peer To Peer)

互联网是哪个电子邮件的通信,普遍属于一台服务器对应多个客户端的C/S模式,即1对N的通信形态。

与之不同,网络上的终端或主机不经服务器直接1对1相互通信的情况叫做P2P(Peer To Peer)。这就好比使用无线收发器进行一对一通话。P2P中主机具备客户端和服务器端两方面的功能,以对等的关系相互提供服务。

IP电话中也有使用P2P的例子。使用P2P以后,可以分散音频数据给网络带来的负荷,实现更高效的应用。例如互联网电话Skype就采用了P2P的功能。

除了IP电话外,其他实现互联网的文件传输应用如BitTorrent协议或一部分群组软件等,也是用到了P2P技术。

PPP和P2P的区别
PPP (Point to Point Protocol),点对点协议,它是一种协议,PPP位于OSI参考模型第2层的数据链路层。
P2P(peer-to-peer),点对点,对等技术,它是一种技术,位于应用层。

LDAP

LDAP(Lightweight Directory Access Protocol)是访问目录服务的一种协议,也叫轻量级目录访问协议。所谓“目录服务”是指网络上存在的一种提供相关资源的数据库的服务。这里的目录也有地址薄的意思。可以认为目录服务就是管理网络上资源的一种服务。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值