TCP/IP 简介
- TCP/IP 协议叫做 传输控制/网际协议,又叫网络通信协议
- TCP/IP 虽然叫 传输控制协议(TCP) 和 网际协议(IP) ,但是实际上是一组协议,包含 ICMP、RIP、ARIP、SMTP、TFTP、FTP、TELENET等。
- 从协议分层模型上来讲,TCP/IP 协议包括四层:应用层,传输层,网络层,网络访问层
- 其中应用层包括:
协议 | 名称 | 描述 |
---|---|---|
HTTP | 超文本传输协议 | 万维网的基本协议 |
FTP | 文件传输 | 文件传输协议 |
TFTP | 文件传输 | 简单文件传输协议 |
SNMP | 简单网络管理协议 | 该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等 |
TELENET | 远程登陆 | 提供远程访问其他主机功能,它允许用户登录 internet 主机,并在这台主机上执行命令 |
DNS | 域名系统 | 该系统用于在 Internet 中将域名及其公共广播的网络节点转换成 IP 地址 |
- 其中网络层包括:
协议 | 名称 |
---|---|
IP | 网际协议 |
ICMP | Internet 控制信息协议 |
ARP | 地址解析协议 |
RARP | 反向地址解析协议 |
- 下面才是重头戏,介绍 TCP 和 UDP,但是我们需要注意
TCP/IP != TCP
,我们需要弄清楚 TCP 协议 和 UDP 协议与 TCP/IP 协议的联系- TCP/IP 是一个协议族,里面包含很多协议。TCP、UDP只是其中之一。之所以命名为 TCP/IP 协议,因为 TCP 和 IP 协议是两个非常重要的协议。
TCP — 传输控制协议(Transmission Control Protocol)
1.TCP 简介
- 提供的是面向连接、可靠的字节流服务
- 当客户端与服务端交换数据之前,必须现在双方之间建立一个 TCP 连接,之后才能传输数据。
- TCP 提供超时重发,丢弃重复数据、检验数据、流量控制等功能,保证数据从一端到另一端
- 总而言之,有效流控,全双工通信,多路复用,面向连接的端到端传输
- 也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”才能建立起来,其中的过程非常复杂,三次“握手”的目的是使数据包的发送和接收同步,经过三次“握手”之后,主机A才向主机B正式发送数据。
2. 三次握手和四次挥手
详细讲解请参阅伤脑筋的TCP的三次握手和四次挥手
3. 数据报格式
TCP首部最小长度为20字节
[控制位信息]
- 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 特点
- UDP 是无连接的,即通信时不需要创建连接,所以减少了开销和发送数据前的时延
- UDP 采用最大努力交付,不保证可靠交付,因此主机不需要维护复杂的连接状态
- UDP 是面向报文的,只在应用层交下来报文前增加了首部就交付给 IP 层
- UDP 是无阻塞控制的,即时网络中存在阻塞,也不会影响发送端的发送频率
- UDP 支持一对一、一对多、多对一、多对多的交互通信
- UDP 的首部开销小,只有 8 个字节,它比 TCP 的 20 字节的首部要短
我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。
3. 数据报格式
4. UDP 支持的协议
NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(域名系统)、TFTP(简单文件传输协议)
【注意】FTP 使用的是 TCP 协议
TCP vs UDP
区别
- TCP 是面向连接的、可靠的、基于字节流的传输层协议;UDP 是无连接的,不可靠的,面向报文的传输层协议
- TCP 是面向连接的通信,需要有三次握手等连接过程,会有延时,实时性较差,同时过程复杂,也使其易于攻击;UDP 没有建立连接的过程,因而实时性较强,也稍安全
- 在传输相同大小数据时,TCP 首部开销 20 字节;UDP 首部开销 8 字节,TCP 首部比 UDP 复杂,故实际包含的用户数据较少。TCP 在 IP 协议的基础上添加了 序号机制、确认机制、超时重传机制等,保证了传输的可靠性,不会出现丢包、重复、乱序,而 UDP 有丢包,故 TCP 开销大,UDP 开销小
- 每条 TCP 连接只能是点到点的;UDP 支持一对一,一对多,多对一,多对多的交互通信
应用场景选择
- 对实时性要求高和高速传输的场合下使用 UDP;在可靠性要求低,追求效率的情况下使用 UDP
- 需要传输大量数据且对可靠性要求高的情况下使用 TCP
支持的协议
- TCP:Telnet (远程登录)、FTP (文件传输协议)、SMTP (简单邮件传输协议)、HTTP (万维网协议)
- UDP:TFTP (简单文件传输协议)、DNS (域名系统)、NFS (网络文件系统)、SNMP (简单网络管理协议)