基于TCP或UDP的应用层协议有哪些?——Linux网络编程

参考博文01:https://blog.csdn.net/Wu000999/article/details/89293717
博文02 https://blog.csdn.net/u014082714/article/details/44994719
这个面试的时候面试官经常会问我,然后就总结了一下。

在这里插入图片描述
TCP/IP四层模型(数网传应):数据链路层(网络接口层)、网络层、传输层和应用层
OSI七层模型:物数网传会表应。

一、 基于TCP/UDP协议的应用层协议有哪些?

TCP/UDP都是传输层的协议 (上面是应用层,下面是网络层IP层)

1、基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH

协议 全称 默认端口
HTTP ( 用的最多) HyperText Transfer Protocol(超文本传输协议) 80
FTP File Transfer Protocol (文件传输协议) 20用于传输数据,21用于传输控制信息
SMTP Simple Mail Transfer Protocol (简单邮件传输协议) 25
TELNET Teletype over the Network (网络电传) 23
SSH Secure Shell 22

2、基于UDP的应用层协议:DNS、TFTP(简单文件传输协议)、SNMP:简单网络管理协议

协议 全称 默认端口
DNS Domain Name Service (域名服务) 53
TFTP Trivial File Transfer Protocol (简单文件传输协议) 69
SNMP Simple Network Management Protocol (简单网络管理协议) 通过UDP端口161接收,只有Trap信息采用UDP端口162。
NTP Network Time Protocol (网络时间协议) 123

二、应用层协议介绍

(博文02原文链接:https://blog.csdn.net/mellymengyan/article/details/51115521)

基于TCP或UDP的应用层协议有哪些?——Linux网络编程_第1张图片
在TCP/IP模型中,应用层是最高层。应用层包括所有的高层协议,并且不断有新的协议加入。

TCP/IP参考模型中应用层和下层协议之间的关系如下:

应用层的许多协议都是基于(C/S client /server)方式的。

下面为我们就图片上的应用层协议来进行下简单的介绍:

基于TCP协议的都用C/S模式(客户端/服务器模式)

一:TELNET (远程登录) (C/S)(tcp)

*概述:
远程登录,它是Tnternet中用来进行远程访问的重要工具之一。远程登录功能允许用户与远程计算机进行动态交互,即用自己的键盘,鼠标等输入设备操纵远程计算机,运行远程计算机上的软件,在自己的显示器上了解运行情况,查看运行结果。

通信过程:
用户的终端实际上与本地的TELNET客户机程序进行通信,远程主机与远程TELNET服务器进行通信。然后通过TCP进行连接, 客户机与服务器之间采用NVT标准进行通信。

1:建立与服务器的TCP连接;
2:从键盘上接收用户输入的字符;
3:把用户输入的字符串变成标准格式并送给服务器;
4:从远程服务器接收输出的信息;
5:把该信息显示在用户的屏幕上。

二:FTP (文件传送协议)(C/S)(TCP)

概述:
文件传输协议,负责将文件从一台计算机传送到另一台计算机上,并且保证其传输的可靠性。
客户端提出文件传输请求,服务器接收请求并提供服务。首先在本地计算机上启动FTP客户程序,利用他与远程计算机建立连接,远程计算机上的服务端FTP程序被激活。这样本地的FTP程序成为一个客户,而远程FTP程序成为服务器,他们之间通过TCP建立连接,端口号为21.

FTP协议的客户机与服务器之间需要建立两个连接, 一个用于控制数据传输(端口21), 一个用于数据传输(端口20)。数据连接主要用于数据传输,完成文件内容的传输。控制连接主要用于传输FTP控制命令和服务器的回送消息。

FTP的功能:

1:可以从本地上传和从服务器下载文件;
2:能够传输各种类型的文件,包括文件,图片, 视频等;
3:能够提供对本地和远程计算机的目录操作。
4:对文件进行改名删除等操作。

FTP的服务获取有两种方式:一种是通过输入用户名和登录口令, 另一种是输入anonymous作为用户名,邮箱地址作为登录口令进行登录。

FTP客户与服务器之间可以通过命令和回答进行交互。

FTP的控制与数据连接
基于TCP或UDP的应用层协议有哪些?——Linux网络编程_第2张图片

三:SMTP (简单邮件传输协议)(TCP)(C/S)

概述:
SMTP协议包括两个标准子集, 一个标准定义电子邮件信息的格式,另一个是传输邮件的标准。在互联网中,电子邮件的传送是依靠SMTP协议进行的。SMTP的主要任务是负责服务器之间的邮件传送,最大的特点是简单。只规定了电子邮件如何在互联网中通过TCP协议在发送方和接收方之间进行传送。

工作方式:
基于客户/服务器方式进行的。发送人的主机为客户方,收件人的邮件服务器为服务方。在传送邮件的过程中,需要使用TCP协议进行连接(默认端口号为25)。发送主机先将邮件发送到本地SMTP服务器上,本地SMTP服务器与接收方的邮件服务器建立可靠的TCP连接,从而保证了邮件传输的可靠性。

注意:
接收方必须使用POP3协议才能取得自己邮箱中的邮件。

POP3协议的主要任务是实现用户计算机和邮件服务器的俩节,从邮件服务器的电子邮箱中读取邮件。
SNMP邮件传输过程
基于TCP或UDP的应用层协议有哪些?——Linux网络编程_第3张图片
四:HTTP (超文本传输协议)(C/S)(TCP)

详细内容在我的上一个博客里面有详细的介绍:HTTP协议基本知识另见博客

五:DNS (域名解析系统)(UDP)

概述:
用域名系统来处理IP地址和主机名之间的转换, 在DNS中主机名即为域名。
DNS也是一个应用层协议,为了提供主机名到IP地址的转换服务,DNS是运行在UDP协议之上,使用53号端口。

DNS通常被其他应用层协议(HTTP, SMTP, FTP)所使用, 以便将用户提供的主机名解析为IP地址。
域名是一种分布式并具有层次结构的命名机制:

例如:www.sina.com.cn, 其中最高域名是cn, 表示这台主机在中国。 第二级域名是com, 表示这个主机属于公司机构; 接下来是sina表示这台主机属于新浪网, 最左边的是www,表示该主机是一台web服务器。人们可以很容易的就记住它的域名,而不用他的IP地址。

查询方法:

1:递归解析:
当收到请求时, 域名服务器应返回所要求的解析结果,不论该服务器是否有相关的信息。该服务器没有相关信息时, 那么就该向其他的服务器进行请求,直到获得结果或者错误信息,然后把结果返回给解析请求者。

2:重复解析:
接收到请求时, 域名服务器若有该域名的相关信息,则返回IP地址给解析请求者。若无该域名的相关消息,则该服务器不再进一步向其他域名服务器请求解析,而是返回一个可用的域名服务器的地址给解析请求者,让解析请求这自己去向该域名服务器作进一步的解析请求。

二者的区别在于:前者将域名解析的工作交给域名服务器完成, 而后者则将主要的工作交给请求域名服务的主机来完成。

六:SNMP (简单网络管理协议)(UDP)

概述:
SNMP:“简单网络管理协议”,用于网络管理的协议。SNMP用于网络设备的管理。SNMP的工作方式:管理员需要向设备获取数据,所以SNMP提供了“读”操作;管理员需要向设备执行设置操作,所以SNMP提供了“写”操作;设备需要在重要状况改变的时候,向管理员通报事件的发生,所以SNMP提供了“Trap”操作。
SNMP被设计为工作在TCP/IP协议族上。SNMP基于TCP/IP协议工作,对网络中支持SNMP协议的设备进行管理。所有支持SNMP协议的设备都提供SNMP这个统一界面,使得管理员可以使用统一的操作进行管理,而不必理会设备是什么类型、是哪个厂家生产的。

管理方式:
SNMP管理方式
基于TCP或UDP的应用层协议有哪些?——Linux网络编程_第4张图片
Get:读取网络设备的状态信息
Set:远程配置设备参数
Trap:管理站及时获取设备的重要信息

七:TFTP (UDP)

概述:
TFTP协议全称为Trivial File Transfer Protocol。目标是在UDP之上上建立一个类似于FTP的但仅支持文件上传和下载功能的传输协议,所以它不包含FTP协议中的目录操作和用户权限等内容;

工作流程:
l server在端口为69的UDP上等待Client发出写文件请求包
l Client通过UDP发送符合TFTP请求格式的WRQ包给Server。从UDP包角度看,该UDP包的源端口由Client随意选择,而目标端口则是Slient的69。
l Server收到Client的这个请求包后,需发送ACK给Client。对于写请求包,Server发送的ACK包确认号为0。
l Client发送DATA数据给Server,Sver接收数据并写文件
l 当Client发送的DATA数据长度小于512字节时,Server认为这次WRQ请求完成

优点:
l 每个数据包大小固定,这样在内存分配处理的时候比较直接
l 实现简单
l 每个数据包都有确认机制,可以实现一定程度的可靠性

缺点:
l 传输效率不高
l 滑动窗口机制太简单,并且该窗口仅有一个包的大小
l 超时处理机制并不完善,RFC1350并没有给出详细的处理机制说明

三、TCP、UDP和HTTP关系

1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。
因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

2、HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。
另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。

3、结论:虽然HTTP本身是一个协议,但其最终还是基于TCP的。不过,目前,有人正在研究基于TCP+UDP混合的HTTP协议。

你可能感兴趣的:(基于TCP或UDP的应用层协议有哪些?——Linux网络编程)