Linux网络(一)---- TCP/UDP的区别和联系

TCP/IP 简介


  1. TCP/IP 协议叫做 传输控制/网际协议,又叫网络通信协议
  2. TCP/IP 虽然叫 传输控制协议(TCP) 和 网际协议(IP) ,但是实际上是一组协议,包含 ICMP、RIP、ARIP、SMTP、TFTP、FTP、TELENET等。
  3. 从协议分层模型上来讲,TCP/IP 协议包括四层:应用层,传输层,网络层,网络访问层
  4. 其中应用层包括:
协议 名称 描述
HTTP 超文本传输协议 万维网的基本协议
FTP 文件传输 文件传输协议
TFTP 文件传输 简单文件传输协议
SNMP 简单网络管理协议 该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等
TELENET 远程登陆 提供远程访问其他主机功能,它允许用户登录 internet 主机,并在这台主机上执行命令
DNS 域名系统 该系统用于在 Internet 中将域名及其公共广播的网络节点转换成 IP 地址
  1. 其中网络层包括:
协议 名称
IP 网际协议
ICMP Internet 控制信息协议
ARP 地址解析协议
RARP 反向地址解析协议
  1. 下面才是重头戏,介绍 TCP 和 UDP,但是我们需要注意 TCP/IP != TCP,我们需要弄清楚 TCP 协议 和 UDP 协议与 TCP/IP 协议的联系
  2. TCP/IP 是一个协议族,里面包含很多协议。TCP、UDP只是其中之一。之所以命名为 TCP/IP 协议,因为 TCP 和 IP 协议是两个非常重要的协议。

TCP — 传输控制协议(Transmission Control Protocol)


1.TCP 简介
  • 提供的是面向连接、可靠的字节流服务
  • 当客户端与服务端交换数据之前,必须现在双方之间建立一个 TCP 连接,之后才能传输数据。
  • TCP 提供超时重发,丢弃重复数据、检验数据、流量控制等功能,保证数据从一端到另一端
  • 总而言之,有效流控,全双工通信,多路复用,面向连接的端到端传输
  • 也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”才能建立起来,其中的过程非常复杂,三次“握手”的目的是使数据包的发送和接收同步,经过三次“握手”之后,主机A才向主机B正式发送数据。

2. 三次握手和四次挥手

详细讲解请参阅伤脑筋的TCP的三次握手和四次挥手


3. 数据报格式

TCP首部最小长度为20字节
Linux网络(一)---- TCP/UDP的区别和联系

[控制位信息]

  • ACK:对数据进行确认,确认由接收端发出,用来告诉发送端这个***之前的数据段都收到了。比如:此时确认号为 x ,那么表示前 x-1 个数据段都收到了。只有当 ACK = 1 时,确认号才有效;当 ACK = 0 时,确认号无效,这时会要求重传数据,保证数据的完整性
  • SYN:同步***,主要用于 TCP 建立连接(三次握手)时,将该位置1
  • FIN:主要用于释放连接,当 TCP 完成数据传输需要断开时,提出断开连接的一方将该位置为1

[支持协议]
Telnet(远程登陆)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。TCP 用于传输数据量大,可靠性要求高的应用。

UDP — 用户数据报协议(User Data Protocol)


1.UDP 简介

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

2.UDP 特点
  1. UDP 是无连接的,即通信时不需要创建连接,所以减少了开销和发送数据前的时延
  2. UDP 采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态
  3. UDP 是面向报文的,只在应用层交下来报文前增加了首部就交付给 IP 层
  4. UDP 是无阻塞控制的,即时网络中存在阻塞,也不会影响发送端的发送频率
  5. UDP 支持一对一、一对多、多对一、多对多的交互通信
  6. UDP 的首部开销小,只有 8 个字节,它比 TCP 的 20 字节的首部要短

我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。

3. 数据报格式

Linux网络(一)---- TCP/UDP的区别和联系

4. UDP 支持的协议

NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(域名系统)、TFTP(简单文件传输协议)
【注意】FTP 使用的是 TCP 协议


TCP vs UDP

区别
  1. TCP 是面向连接的、可靠的、基于字节流的传输层协议;UDP 是无连接的,不可靠的,面向报文的传输层协议
  2. TCP 是面向连接的通信,需要有三次握手等连接过程,会有延时,实时性较差,同时过程复杂,也使其易于攻击;UDP 没有建立连接的过程,因而实时性较强,也稍安全
  3. 在传输相同大小数据时,TCP 首部开销 20 字节;UDP 首部开销 8 字节,TCP 首部比 UDP 复杂,故实际包含的用户数据较少。TCP 在 IP 协议的基础上添加了 序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包、重复、乱序,而 UDP 有丢包,故 TCP 开销大,UDP 开销小
  4. 每条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一,多对多的交互通信
应用场景选择
  • 对实时性要求高和高速传输的场合下使用 UDP;在可靠性要求低,追求效率的情况下使用 UDP
  • 需要传输大量数据且对可靠性要求高的情况下使用 TCP
支持的协议
  • TCP:Telnet (远程登录)、FTP (文件传输协议)、SMTP (简单邮件传输协议)、HTTP (万维网协议)
  • UDP:TFTP (简单文件传输协议)、DNS (域名系统)、NFS (网络文件系统)、SNMP (简单网络管理协议)