TCP、UDP 和 HTTP 详解

简介: TCP、UDP 和 HTTP 详解

先来一个讲 TCP、UDP 和 HTTP 关系的

http: 是用于 www 浏览的一个协议。

tcp:是机器之间建立连接用的到的一个协议。

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 协议。

具体介绍

IP (网际协议)

在网络通信中,网络组件的寻址对信息的路由选择和传输来说是相当关键的。相同网络中的两台机器间的消息传输有各自的技术协定。LAN 是通过提供 6 字节的唯一标识符(“MAC” 地址)在机器间发送消息的。SNA 网络中的每台机器都有一个逻辑单元及与其相应的网络地址。DECNET、AppleTalk 和 Novell IPX 均有一个用来分配编号到各个本地网和工作站的配置。

HTTP 是超文本传输协议,是客户端浏览器或其他程序与 Web 服务器之间的 应用层通信协议。在 Internet 上的 Web 服务器上存放的都是超文本信息, 客户机需要通过 HTTP 协议传输所要访问的超文本信息。HTTP 包含命令和传输信息,不仅可用于 Web 访问,也可以用于其他因特网 / 内联网应用系统之间的 通信,从而实现各类应用资源超媒体访问的集成

TCP (传输控制协议)

通过序列化应答和必要时重发数据包,TCP 为应用程序提供了可靠的传输流和虚拟连接服务。TCP 主要提供数据流转送,可靠传输,有效流控制,全双工操作和多路传输技术。可查阅 TCP 部分获取更多详细资料。

至于 HTTP 协议,它是 TCP 协议族中的一种。使用 TCP80 端口

HTTP 是应用层协议,TCP 是传输层协议!

数据包在网络传输过程中,HTTP 被封装在 TCP 包内!!

1. TCP/UDP

面向连接的 TCP

“面向连接” 就是在正式通信前必须要与对方建立起连接。比如你给别人打电话,必须等线路接通了、对方拿起话筒才能相互通话。

TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个 TCP 连接必须要经过三次 “对话” 才能 建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。

我们来看看这三次对话的简单过程:

1. 主机 A 向主机 B 发出连 接请求数据包:“我想给你发数据,可以吗?”,这是第一次对话;

2. 主机 B 向主机 A 发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工 作)的数据包:“可以,你什么时候发?”,这是第二次对话;

3. 主机 A 再发出一个数据包确认主机 B 的要求同步:“我现在就发,你接着吧!”,这是第三次对话。

三次 “对话” 的目的是使数据包的发送和接收同步,经过三次 “对话” 之后,主机 A 才向主机 B 正式发送数据。

TCP 协议能为应用程序提供可靠的通信连接,使一台计算机发出的字节流无差错地发往网络上的其他计算机,对可靠性要求高的数据通信系统往往使用 TCP 协议传输数据。

我 们来做一个实验,用计算机 A(安装 Windows 2000 Server 操作系统)从 “网上邻居” 上的一台计算机 B 拷贝大小为 8,644,608 字节的文件,通过状态栏右下角网卡的发送和接收指标就会发现:虽然是 数据流是由计算机 B 流向计算机 A,但是计算机 A 仍发送了 3,456 个数据包,如图 2 所示。这些数据包是怎样产生的呢?因为文件传输时使用了 TCP/IP 协 议,更确切地说是使用了面向连接的 TCP 协议,计算机 A 接收数据包的时候,要向计算机 B 回发数据包,所以也产生了一些通信量。

如果事先用网络监视器监视网络流量,就会发现由此产生的数据流量是 9,478,819 字节,比文件大小多出 10.96%(如图 3 所示),原因不仅在于数据包和帧本身占用了一些空间,而且也在于 TCP 协议面向连接的特性导致了一些额外的通信量的产生。

面向非连接的 UDP 协议

“面向非连接” 就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。这与现在风行的手机短信非常相似:你在发短信的时候,只需要输入对方手机号就 OK 了。

UDP(User Data Protocol,用户数据报协议)是与 TCP 相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!

UDP 适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用 “ping” 命令来测试两台主机之间 TCP/IP 通信是否正常,其实 “ping” 命令的原理就是向对方主机发送 UDP 数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如, 在默认状态下,一次 “ping” 操作发送 4 个数据包(如图 2 所示)。大家可以看到,发送的数据包数量是 4 包,收到的也是 4 包(因为对方主机收到后会发回一 个确认收到的数据包)。这充分说明了 UDP 协议是面向非连接的协议,没有建立连接的过程。正因为 UDP 协议没有连接的过程,所以它的通信效果高;但也正因 为如此,它的可靠性不如 TCP 协议高。QQ 就使用 UDP 发消息,因此有时会出现收不到消息的情况。

附表:tcp 协议和 udp 协议的差别

tcp udp

是否连接 面向连接 面向非连接

传输可靠性 可靠的 不可靠的

应用场合 传输大量的数据 少量数据

速度 慢 快

TCP 协议和 UDP 协议各有所长、各有所短,适用于不同要求的通信环境。TCP 协议和 UDP 协议之间的差别如附表所示。

相关文章
|
2月前
|
监控 网络协议 网络性能优化
不再困惑!一文搞懂TCP与UDP的所有区别
本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。
|
2月前
|
存储 网络协议 安全
用于 syslog 收集的协议:TCP、UDP、RELP
系统日志是从Linux/Unix设备及网络设备生成的日志,可通过syslog服务器集中管理。日志传输支持UDP、TCP和RELP协议。UDP无连接且不可靠,不推荐使用;TCP可靠,常用于rsyslog和syslog-ng;RELP提供可靠传输和反向确认。集中管理日志有助于故障排除和安全审计,EventLog Analyzer等工具可自动收集、解析和分析日志。
175 2
|
3月前
|
网络协议 网络性能优化 数据处理
深入解析:TCP与UDP的核心技术差异
在网络通信的世界里,TCP(传输控制协议)和UDP(用户数据报协议)是两种核心的传输层协议,它们在确保数据传输的可靠性、效率和实时性方面扮演着不同的角色。本文将深入探讨这两种协议的技术差异,并探讨它们在不同应用场景下的适用性。
118 4
|
3月前
|
监控 网络协议 网络性能优化
网络通信的核心选择:TCP与UDP协议深度解析
在网络通信领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种基础且截然不同的传输层协议。它们各自的特点和适用场景对于网络工程师和开发者来说至关重要。本文将深入探讨TCP和UDP的核心区别,并分析它们在实际应用中的选择依据。
104 3
|
3月前
|
网络协议 算法 网络性能优化
|
3月前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
75 4
|
3月前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
3月前
|
网络协议 前端开发 API
HTTP 和 TCP 协议的应用场景有哪些不同
【10月更文挑战第25天】HTTP(超文本传输协议)和 TCP(传输控制协议)处于网络协议栈的不同层次,各自具有独特的功能和特点,因此它们的应用场景也存在明显的差异。
|
3月前
|
网络协议
http 与 tcp 的关系
【10月更文挑战第25天】总的来说,HTTP 和 TCP 是网络通信中不可或缺的两个协议,它们共同为网络应用提供了可靠的数据传输和交换服务。理解它们之间的关系对于开发和维护网络应用具有重要的意义。
|
3月前
|
网络协议 API 数据格式
HTTP 和 TCP 协议的主要区别
【10月更文挑战第25天】HTTP 和 TCP 在网络通信中扮演着不同的角色,各自具有独特的功能和特点,它们相互配合,共同为实现网络应用的各种需求提供了基础支持。