15张图,了解一下TCP/IP必知也必会的10个问题

💡 原文中文,约8500字,阅读约需21分钟。
📝

内容提要

TCP/IP协议模型是互联网基础的一系列网络协议,包括链路层、网络层、传输层和应用层。数据链路层划分数据帧传输,网络层使用IP协议确定传输目标,传输层有TCP和UDP协议。IP协议是核心,没有处理未传达数据的机制。DNS映射域名和IP地址。TCP连接需要三次握手和四次挥手。TCP有流量控制和拥塞控制机制。

🔎

延伸解读

分层设计:理解TCP/IP的钥匙

TCP/IP模型分为链路层、网络层、传输层和应用层,每层各司其职。数据发送时自上而下封装首部与尾部,接收时自下而上拆除,这种“入栈出栈”过程是网络通信的基础。分层的好处在于各层独立演进,例如应用层的HTTP无需关心底层是以太网还是Wi-Fi,只要接口一致即可。理解分层思想,有助于排查网络问题时快速定位是哪个环节出了差错。

IP协议:尽力而为,不保证可靠

IP协议是TCP/IP的核心,所有TCP、UDP、ICMP数据都以IP格式传输。但IP本身不可靠,它不提供数据未传达后的处理机制,可靠性由上层TCP或UDP负责。IP地址分为网络位和地址位,并划分A、B、C类,这种结构能减少路由表记录。TTL字段则限制数据包在路由器中的穿行次数,每经一个路由器减1,减到0即被抛弃,避免数据包无限循环。

TCP与UDP:可靠与高效的权衡

TCP和UDP都是传输层协议,但特性迥异。TCP面向字节流,提供可靠连接,适用于HTTP、HTTPS、FTP、邮件等要求数据准确无误的场景;UDP面向报文,不保证可靠,但速度更快,适合对实时性要求高、能容忍少量丢包的应用。选择哪种协议,取决于应用对可靠性和速度的权衡。TCP的可靠性通过三次握手、四次挥手、流量控制和拥塞控制等机制实现。

拥塞控制:慢开始与快恢复的智慧

TCP拥塞控制通过动态调整拥塞窗口来适应网络状况。慢开始算法从cwnd=1开始,每收到确认就加倍,但“慢”指的是初始窗口小,而非增长慢。当cwnd超过慢开始门限ssthresh后,改用拥塞避免算法,每RTT只加1,线性增长。一旦判断拥塞,ssthresh减半并将cwnd重置为1。快重传和快恢复则通过重复确认快速重传丢失报文,避免等待超时,从而提高网络吞吐量。

❓

Q&A

TCP/IP协议模型分为哪几层?各层的主要功能是什么?

TCP/IP协议模型分为四层:链路层、网络层、传输层和应用层。链路层负责将数据划分为数据帧并进行传输,使用MAC地址标识节点;网络层使用IP协议确定传输目标,但不保证可靠性;传输层包含TCP和UDP协议,提供端到端的通信;应用层包含HTTP、FTP等协议,直接面向用户应用。

为什么TCP建立连接需要三次握手?

三次握手的主要目的是防止已失效的连接请求报文段突然又传送到服务端,导致服务端错误地建立连接并浪费资源。通过三次握手,客户端和服务器可以同步序列号和确认号,并交换TCP窗口大小信息,确保连接的可靠性。

TCP和UDP有什么区别?分别适用于哪些场景?

TCP是面向连接的协议,提供可靠传输,适用于对网络通讯质量要求高的场景,如HTTP、HTTPS、FTP等文件传输和邮件传输。UDP是无连接的协议,面向报文,传输速度快但不保证可靠性,适用于对速度要求高、对质量要求不高的场景,如实时视频、语音等。

TCP的流量控制是如何实现的?

TCP的流量控制通过滑动窗口机制实现。接收方通过通告窗口大小(rwnd)来限制发送方的发送速率,防止发送方发送过快导致接收方来不及接收。当接收方窗口减小时,发送方相应减少发送数据量;当窗口为0时,发送方暂停发送,并启动持续计时器,定期发送零窗口探测报文段以询问接收方是否可以继续发送。

TCP的拥塞控制有哪些算法?

TCP的拥塞控制主要包括慢开始、拥塞避免、快重传和快恢复算法。慢开始算法在连接初期逐渐增大拥塞窗口;拥塞避免算法使窗口线性增长;快重传算法在收到三个重复确认时立即重传丢失的报文段;快恢复算法在快重传后调整拥塞窗口和慢开始门限,避免网络拥塞。

ping命令和Traceroute工具的工作原理是什么?

ping命令利用ICMP协议包来检测网络连通性,通过发送ICMP请求和接收回应来判断主机是否可达。Traceroute工具通过发送一系列TTL递增的UDP数据包,利用路由器返回的ICMP超时消息来探测数据包从源到目的经过的路由器IP地址。

🏷️

标签

➡️

继续阅读