TCP和UDP
两者的详细情况请看:一文搞定 UDP 和 TCP 高频面试题! - 知乎 (zhihu.com)
基本概念
1、 计算机网络体系
计算机网络体系结构分为3种:OSI体系结构(七层),TCP/IP体系结构(四层),五层体系结构。
OSI体系结构
: 概念清楚,理论也比较完整,但是它既复杂又不实用。TCP/IP体系结构
:TCP/IP是一个四层体系结构,得到了广泛的运用。五层体系结构
:为了方便学习,折中OSI体系结构
和TCP/IP体系结构
,综合二者的优点,这样既简洁,又能将概念讲清楚。
TCP/IP与OSI最大的不同在于:OSI是一个理论上的网络通信模型,而TCP/IP则是实际运行的网络协议。
2、五层网络体系结构概述
看一下五层网络体系结构各层的主要功能:
应用层
:应用层是网络协议的最高层,主要任务通过进程间的交互完成特定网络应用。应用层协议定义的是应用程序(进程)间通信和交互的规则
。 对于不同的网络应用需要有不同的应用层协议,在互联网中的应用层协议很多,如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,等等。应用层交互的数据单元称为报文
。运输层
:有时也译为传输层,它负责为两台主机中的进程提供通信服务。该层主要有以下两种协议:- 传输控制协议 (Transmission Control Protocol,TCP):提供面向连接的、可靠的数据传输服务,数据传输的基本单位是报文段(segment);
- 用户数据报协议 (User Datagram Protocol,UDP):提供无连接的、尽最大努力的数据传输服务,但不保证数据传输的可靠性,数据传输的基本单位是用户数据报。
网络层
:网络层负责为分组网络中的不同主机提供通信服务,并通过选择合适的路由将数据传递到目标主机。在发送数据时,网络层把运输层产生的报文段或用户数据封装成分组
或包
进行传送。 在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫IP数据报
。数据链路层
:数据链路层通常简称为链路层
。数据链路层在两个相邻节点传输数据时,将网络层交下来的IP数据报组装成帧
,在两个相邻节点之间的链路上传送帧
。物理层
:保数据可以在各种物理媒介上进行传输,为数据的传输提供可靠的环境。
以下是应用进程的数据在各层之间的传递过程中所经历的变化的简单示意图:
3、TCP/IP体系结构概述
TCP/IP的体系结构比较简单,只有四层。
层次名称 | 单位 | 功能 | 协议 |
---|---|---|---|
网络接口 | 帧 | 负责实际数据的传输,对应OSI参考模型的下两层 | HDLC(高级链路控制协议)PPP(点对点协议) SLIP(串行线路接口协议) |
网络层 | 数据报 | 负责网络间的寻址数据传输,对应OSI参考模型的第三层 | IP(网际协议) ICMP(网际控制消息协议)ARP(地址解析协议) RARP(反向地址解析协议) |
传输层 | 报文段 | 负责提供可靠的传输服务,对应OSI参考模型的第四层 | TCP(控制传输协议) UDP(用户数据报协议) |
应用层 | 负责实现一切与应用程序相关的功能,对应OSI参考模型的上三层 | FTP(文件传输协议) HTTP(超文本传输协议) DNS(域名服务器协议)SMTP(简单邮件传输协议)NFS(网络文件系统协议) | |
这种四层协议数据交换的示意图如下 | |||
![]() |
4、三种模型对比
参考:
【1】:谢希仁编著 《计算机网络》
【2】:网络篇(一):所谓的四层结构和七层结构
【3】:计算机网络模型(四层、五层、七层)
【4】:OSI 7层模型和TCP/IP 4层模型
TCP可靠传输及时间计算
TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下:
其中,0 ≤ a < 1,
其中
TCP和UDP区别
1. 基于连接vs无连接
- TCP是面向连接的协议。
- UDP是无连接的协议。UDP更加适合消息的多播发布,从单个点向多个点传输消息。
2. 可靠性
- TCP提供交付保证,传输过程中丢失,将会重发。
- UDP是不可靠的,不提供任何交付保证。(网游和视频的丢包情况)
3. 有序性
- TCP保证了消息的有序性,即使到达客户端顺序不同,TCP也会排序。
- UDP不提供有序性保证。
4. 数据边界
- TCP不保存数据边界。
- 虽然TCP也将在收集所有字节之后生成一个完整的消息,但是这些信息在传给传输给接受端之前将储存在TCP缓冲区,以确保更好的使用网络带宽。
- UDP保证。
- 在UDP中,数据包单独发送的,只有当他们到达时,才会再次集成。包有明确的界限来哪些包已经收到,这意味着在消息发送后,在接收器接口将会有一个读操作,来生成一个完整的消息。
5. 速度
- TCP速度慢
- UDP速度快。应用在在线视频媒体,电视广播和多人在线游戏。
6. 发送消耗
- TCP是重量级。
- UDP是轻量级。
- 因为UDP传输的信息中不承担任何间接创造连接,保证交货或秩序的的信息。
- 这也反映在用于报头大小。
7. 报头大小
- TCP头大。
- 一个TCP数据包报头的大小是20字节。
- TCP报头中包含序列号,ACK号,数据偏移量,保留,控制位,窗口,紧急指针,可选项,填充项,校验位,源端口和目的端口。
- UDP头小。
- UDP数据报报头是8个字节。
- 而UDP报头只包含长度,源端口号,目的端口,和校验和。
8. 拥塞或流控制
- TCP有流量控制。
- 在任何用户数据可以被发送之前,TCP需要三数据包来设置一个套接字连接。TCP处理的可靠性和拥塞控制。
- UDP不能进行流量控制。
9. 应用
- 由于TCP提供可靠交付和有序性的保证,它是最适合需要高可靠并且对传输时间要求不高的应用。
- UDP是更适合的应用程序需要快速,高效的传输的应用,如游戏。
- UDP是无状态的性质,在服务器端需要对大量客户端产生的少量请求进行应答的应用中是非常有用的。
- 在实践中,TCP被用于金融领域,如FIX协议是一种基于TCP的协议,而UDP是大量使用在游戏和娱乐场所。
10.上层使用的协议
- 基于TCP协议的:Telnet,FTP以及SMTP协议。
- 基于UDP协议的:DHCP、DNS、SNMP、TFTP、BOOTP。