您现在的位置是:首页 >学无止境 >TCP/IP概述网站首页学无止境
TCP/IP概述
文章目录
一、概述
TCP/IP (transmission control protocol / interneet protocol, 传输控制协议/互联网协议)提供端到端的数据传输,负责数据的封装寻址,传输,路由和交付,确保数据在网络的可靠传输,可以分为应用层,传输层,网络层,网络接口层
二、应用层
提供用户接口,处理应用数据,主要协议有:http,ftp, dns, (smtp/IMAP/POP3)电子邮件服务, ssh/telnet 远程登录
三、传输层
控制不同主机间不同进程之间的通信 (host:port <-> host:port)
TCP transmission control protocol
- 可靠性:通过序号,保证数据有序传输,通过确认机制丢包重传
- 面向连接:通信前三次握手(确保双方具备通信能力,确保数据能可靠传输)
- 流量控制: 接收端根据自身能力调节发送端速度
- 拥塞控制:防止网络过载
UDP user datagram protocol 用户数据包协议
- 无连接:无需建立连接直接发送
- 不保证可靠性:数据可能丢失或乱序
- 适用于实时应用:如视频通话,在线游戏,DNS查询
四、网络层
负责数据的寻址和路由
IP:负责数据包寻址和转发
ICMP:网络诊断 如ping (判断目标主机是否可达) traceroute(追踪数据包的路径)
ARP: IP 地址解析为MAC地址
RIP/OSPF/BGP 路由协议,决定数据如何传输
五、网络接口层
负责数据帧的封装和物理传输
六、TCP/IP流程
- 浏览器键入网址
- 应用层,发起http请求
- 传输层,将http封装成TCP数据段
- 网络层,将TCP数据段封装成IP数据包,并寻找目标服务器的IP
- 链路层:将IP数据包封装成帧
七、流量控制
基于反馈的流量控制,接收方主动通知发送自己的接收能力,发送方根据反馈调整发送速率, 滑动窗口协议规定发送方不能超过窗口大小,接收方告诉发送方它还能接收多少数据
- 发送方维护一个发送窗口,决定可以发送的数据量
- 接收方维护一个接收窗口,决定可接收的数据量,并通过ack确认已收到的数据
- 窗口会动态调整,接收端忙,窗口会缩小,接收端空闲,窗口会增大
八、拥塞控制
- 慢启动 初始窗口很小,接口指数增长
- 拥塞避免,窗口线性增长
- 快重传,如果连续收到3个相同的ack,说明接收方没收到某个包,立即重传
- 快恢复,收到3个重复ack,立即重传,同时窜口设置为原先一半
九、ICMP
用于网络诊断与错误报告,不会传输用户数据,而是辅助IP提供通信状态信息
用途:
- 探测主机可达 ping
- 路由追踪 traceroute
- 报告错误 主机不可达,路由失败
- 流量控制 源抑制
消息类型:
echo request ping请求
echo reply ping应答
destination unreachable 无法到达目标
source quench 源抑制 控制发送速率
redirect 重定向
time exceeded traceroute追踪路径超时
十、ARP
ARP负责将IP与Mac地址进行映射
- 发送ARP请求 (广播)
- 目标设备回应ARP请求(单播)
- 源设备缓存MAC地址
- 查看arp缓存 ip neigh
- arp攻击: 恶意设备伪造MAC地址,劫持数据
- ARP广播风暴:大量ARP请求导致网络拥塞
十一、RIP
用于IP路由
- 路由表初始化,包含本地IP与下一跳目的网络
- 广播路由更新,采用520UDP端口广播自己的路由表
- 邻居路由器接收RIP广播,更新自身路由表
- 跳数超过15,认为不可达
十二、VLAN
VLAN是二层交换机划分逻辑子网的技术,一个VLAN是一个广播域, 能减少广播流量,不同VLAN通信需要经过路由器等,防止未经授权访问
十二、QUIC
基于UDP的新型传输层协议
- 客户端发送QUIC请求(包含TLS1.3握手和初始数据)
- 服务端返回QUIC响应(包含TLS证书和加密数据)
- 后续数据交互基于UCP
避免三次握手,采用零往返时间建立连接,内置TLS1.3加密,多路复用,允许多个数据流在同一连接并行传输,解决HTTP/2队头阻塞
十三、DNS
输入域名
- 浏览器检查本地DNS缓存
- 操作系统检查本地DNS缓存
- 根DNS服务器返回顶级域DNS
- TLD服务器返回权威DNS服务器
- 权威DNS服务器返回IP地址
十四、DHCP
自动分配IP地址,无需手动配置IP地址,子网掩码,网关和DNS
- 客户端广播寻找DNCP服务器
- DHCP提供可用IP地址
- 客户端请求DHCP分配的IP
- 服务器确认IP分配





QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
U8W/U8W-Mini使用与常见问题解决
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结