首页常见问题正文

TCP/UDP协议和HTTP、FTP、SMTP区别及应用场景

更新时间:2023-09-21 来源:黑马程序员 浏览量:

  1. OSI模型

  OSI模型主要作为一个通用模型来做理论分析,而TCP/IP协议模型是互联网的实际通讯协议,两者一般做映射分析,以下不做严格区分和声明:

  1.1. OSI 模型层3个主要层面:

  |.............主机...............| 操作系统和软件等 应用、表示、会话

  |.............网络...............| 互联网络和相关协议 传输、网络 (TCP/IP)

  |.............介质...............| 物理介质相关 数据链路、物理

  1.2. OSI模型图

1695279522683_OSI模型图.jpg

  1. 主机需要网络传输数据,网络本质上是一种服务,主机和网络之间靠传输层接口,就好比你要叫快递送东西;

  2. 网络可以提供两种服务:

  a. 可靠,面向连接;(TCP) 就像靠谱的快递,每一步都有反馈和监控,当然价格也是呵呵...

  b. 不可靠,尽力而为的传输 (UDP) 就像某些不靠谱的快递或者听都没听过的XX快递,价格低,但是能不能到就靠运气了。

  3. 两种服务无所谓好坏,TCP的可靠是需要消耗很多资源的,效率低(大块,重要的文件等)

  UDP不保证可靠性,但是效率高(视频,语音,不重要的小文件等)

  4. 而其他的“HTTP、FTP、SMTP 等所谓的“Application-layer Protocol”协议”指的是在TCP/IP通讯协议框架下具体实现特定功能的应用(HTTP 用来实现超文本传输,FTP文件传输,SMTP处理邮件等等),两者的关系,咳咳,关系通俗的说:

  TCP和UDP以及IP协议是互联网络通讯的基础,就像《宪法》,而应用协议就像具体的《刑法》、《民法》、《婚姻法》、《未成年人保护法》......等等,在某个领域的特定应用和具体实现,但是最基本的一条:违宪无效。

  2. TCP与HTTP的区别

  TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

  术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

  大家应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

  HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。

  下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:

1695279565524_不同的TCP和IP和其他的协议在最初OSI模型中的位置.jpg

  7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP

  6 表示层 例如XDR、ASN.1、SMB、AFP、NCP

  5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets

  4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL

  3 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25

  2 数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP

  1 物理层 例如线路、无线电、光纤、信鸽

  3. TCP,UDP,HTTP应用场景

  3.1. Socket

  实现服务器与客户端之间的物理连接,并进行数据传输。主要有TCP/UDP两个协议。Socket处于网络协议的传输层。

  3.2. TCP

  传输控制协议,面向连接的的协议,稳定可靠。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。传输速度没有UDP快但是建立连接有三次握手机制,断开连接有四次挥手机制,传输可靠性高。

  3.3. UDP

  广播式数据传输,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

  优点:

  1. 传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低

  2. 传输数据时间短,性能高

  3. 适合C/S之间信息实时交互

  4. 可以加密,数据安全性高

  缺点:

  1. 需要对传输的数据进行解析,转化为应用级的数据

  2. 对开发人员的开发水平要求高

  3. 相对于Http协议传输,增加了开发量

  3.4. Http

  http请求主要有http协议,基于http协议的soap协议,常见的http数据请求方式有get和post,web服务

  优点:

  1. 基于应用级的接口使用方便

  2. 要求的开发水平不高,容错性强

  缺点:

  1. 传输速度慢,数据包大。

  2. 如实现实时交互,服务器性能压力大

  3. 数据传输安全性差

  4. TCP中三次握手和四次

  4.1. TCP三次握手

1695279603686_三次握手.jpg

  4.1.1. 作用:

  三次握手用户建立TCP连接.

  TCP位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略.

  4.1.2. 原理:

  1)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。

  2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

  3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示握手‘结束。

  4.1.3. 通俗的说法

  1)Client:嘿,李四,是我,听到了吗?

  2)Server:我听到了,你能听到我的吗?

  3)Client:好的,我们互相都能听到对方的话,我们的通信可以开始了。

  4.2. TCP四次挥手

1695279662149_TCP四次握手.jpg

  4.2.1. 作用:

  四次挥手用于断开TCP连接.

  当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。

  4.2.2. 原理:

  1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

  2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

  3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

  4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手

  4.2.3. 通俗的说法

  1)Client:我所有东西都说完了

  2)Server:我已经全部听到了,但是等等我,我还没说完

  3)Server:好了,我已经说完了

  4)Client:好的,那我们的通信结束l

分享到:
在线咨询 我要报名
和我们在线交谈!