网络通信(学习笔记)
霍金的微笑:
#### 5.TCP协议
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
超时重传:
接收端在收到数据后,会向发送端发送一个确认报文,告知发送端数据已成功接收。如果发送端在一定时间内没有收到确认报文,就会重新发送数据。
当发送端发送的数据丢失或超时未收到确认时,会自动重传数据。TCP 还会根据网络情况动态调整重传的时间间隔(即超时时间)。
排序机制:
每个 TCP 数据包都有一个序列号,接收端会根据序列号对收到的数据进行排序,确保数据按照正确的顺序被应用程序接收。
拥塞控制:
当网络出现拥塞时,TCP 会自动降低数据发送速率,避免网络拥塞进一步恶化。常见的拥塞控制算法有慢启动、拥塞避免、快重传和快恢复等。
字节流传输:
TCP 将数据看作是一连串无结构的字节流,它不保留消息的边界。应用程序写入的数据会被分割成合适大小的数据包进行传输,接收端再将这些数据包重组还原成原始的字节流。
网络通信(学习笔记)
霍金的微笑:
粘包和半包现象:
在计算机网络通信中,尤其是使用 【TCP 协议】进行数据传输时,粘包和半包是比较常见的现象,它们会对数据的正确接收和处理产生影响。
粘包现象:
指在数据传输过程中,多个原本独立的数据包被组合成一个数据包发送或接收,接收方无法准确区分各个数据包的边界,导致多个数据包 “粘” 在一起的情况。
- TCP 协议为了提高传输效率,会将应用层多次写入的数据合并成一个较大的数据包发送。例如,应用程序短时间内多次调用发送函数发送小数据,TCP 会将这些小数据组装成一个大的数据包进行传输,从而产生粘包。
- 【接收方的接收缓冲区】可能较大,当接收到数据时,不会立即处理,而是先存放在缓冲区中。如果后续又有新的数据到达,就会与之前未处理的数据存放在一起,导致粘包现象的出现。
半包现象:
也称为拆包,是指一个完整的数据包在传输过程中被分割成多个部分,接收方收到的是不完整的数据包,无法正确解析数据内容。
- **MTU(最大传输单元)限制**:网络中每个链路层协议都有自己的 MTU 限制,如以太网的 MTU 一般为 1500 字节。当数据包的大小超过链路的 MTU 时,【网络层】会对数据包进行分片,导致一个完整的数据包被拆分成多个小包进行传输,在接收方就会出现半包现象。
- 如果接收缓冲区较小,无法一次性容纳完整的数据包,当数据包到达时,只能部分存储在缓冲区中,剩余部分等待后续接收,这也会造成半包现象。
网络通信(学习笔记)
霍金的微笑:
#### 4.计算机网络层次划分
网络层
- 通过IP协议为不同物理网络中的主机提供统一的编址方式和通信机制,屏蔽了物理差异,使数据在不同网络之间传输。
1. **IP(Internet Protocol,网际协议)**:是网络层的核心协议,也是整个互联网的基础。IP 协议定义了数据在网络中的传输格式和寻址方式。它为每个连接到网络的设备分配一个唯一的 IP 地址(如 IPv4 地址或 IPv6 地址),用于标识设备在网络中的位置。IP 协议还负责将上层协议(如 TCP、UDP)的数据封装成 IP 数据包,并进行路由选择,通过路由器将数据包转发到【目标网络】。
1. **ARP(Address Resolution Protocol,地址解析协议)**:用于将 IP 地址解析为对应的物理地址(MAC 地址)。因为在数据链路层,数据的传输是基于 MAC 地址的,所以当网络层有数据要发送时,需要先通过 ARP 协议获取目标 IP 地址对应的 MAC 地址。例如,主机 A 要向主机 B 发送数据,主机 A 会在本地的 ARP 缓存中查找主机 B 的 IP 地址对应的 MAC 地址,如果找不到,就会发送一个 ARP 请求【广播包】,询问网络中哪个设备的 IP 地址是主机 B 的,拥有该 IP 地址的主机 B 会回复一个 ARP 响应包,告知自己的 MAC 地址。
1. **ICMP(Internet Control Message Protocol,网际控制报文协议)**:主要用于在 IP 主机、路由器之间传递控制消息,比如网络不通、主机不可达、路由不通畅等情况。ICMP 报文封装在 IP 数据包中传输,常见的 ICMP 消息类型有回显请求和回显应答(用于测试网络连通性,如 ping 命令就是基于此原理)、目标不可达(当路由器无法将数据包转发到目标地址时发送)、重定向(路由器向主机发送重定向消息,告知主机更好的路由路径)等。