【Linux】协议——TCP/IP协议
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、协议的本质:计算机世界的"共同语言"
1.1 什么是协议?
1.2 为什么需要协议?
二、协议分层:复杂问题的模块化解决方案
2.1 为什么需要分层?
2.2 TCP/IP四层模型(Linux采用)
三、TCP/IP协议:互联网的基石
3.1 为什么需要TCP/IP?
3.2 TCP vs UDP 核心区别
四、Linux中的协议实现揭秘
4.1 Linux网络协议栈架构
4.2 查看Linux支持的协议
4.3 常用网络协议工具
五、协议实战:从HTTP请求看分层协作
六、协议安全:不得不防的网络威胁
常见协议安全问题:
Linux防护措施:
七、学习建议:如何深入理解网络协议
提示:以下是本篇文章正文内容,下面案例可供参考
一、协议的本质:计算机世界的"共同语言"
1.1 什么是协议?
协议就是双方约定好的通信规则,就像打电话时约定"响三声表示紧急情况"一样。在计算机网络中,协议规定了数据如何打包、传输和解包。
现实比喻:
-
寄快递:需要填写发件人、收件人、地址(协议头部)
-
打包物品:需要合适的包装盒和填充物(数据封装)
-
运输过程:需要选择快递公司(传输协议)
1.2 为什么需要协议?
https://img-blog.csdnimg.cn/20210720153310380.png
当两台计算机通信时:
-
硬件差异:不同厂商设备使用不同信号表示0和1
-
软件差异:不同操作系统处理数据方式不同
-
传输差异:有线/无线传输特性不同
没有协议的结果:就像中国人说中文,葡萄牙人说葡语,即使都遵守"说话"这个基本规则,也无法理解对方!
二、协议分层:复杂问题的模块化解决方案
2.1 为什么需要分层?
"协议本质是软件,为了更好的模块化和解耦,被设计成层状结构"
分层设计优势:
优势 | 说明 |
---|---|
模块化 | 各层独立开发,互不影响 |
标准化 | 厂商只需实现标准接口 |
易维护 | 修改一层不影响其他层 |
灵活性 | 可以替换特定层实现 |
2.2 TCP/IP四层模型(Linux采用)
各层功能详解:
-
应用层:直接为用户提供服务(浏览器、邮件客户端)
-
传输层:端到端通信,保证数据完整(TCP/UDP)
-
网络层:寻址和路由(IP协议)
-
网络接口层:物理设备驱动和数据帧处理
三、TCP/IP协议:互联网的基石
3.1 为什么需要TCP/IP?
"即便是单台计算机内部也存在协议,如内存协议、磁盘协议(SATA/SCSI)"
网络通信的特殊挑战:
-
设备异构性(不同硬件)
-
网络路径不确定性
-
数据传输可靠性要求
-
大规模扩展需求
3.2 TCP vs UDP 核心区别
特性 | TCP | UDP |
---|---|---|
连接方式 | 面向连接 | 无连接 |
可靠性 | 高(三次握手) | 低 |
速度 | 较慢 | 很快 |
数据顺序 | 保证有序 | 不保证 |
适用场景 | 网页、邮件、文件传输 | 视频流、游戏、DNS |
经典比喻:
-
TCP像寄挂号信:有回执、保证送达、按顺序
-
UDP像寄平信:快速投递、不保证送达、不按顺序
四、Linux中的协议实现揭秘
4.1 Linux网络协议栈架构
text
+-----------------------+ | 应用程序 (HTTP) | +-----------------------+ | 套接字接口 | +-----------------------+ | TCP层 | UDP层 | +-----------------------+ | IP层 | +-----------------------+ | 网络接口层 (网卡驱动) | +-----------------------+
4.2 查看Linux支持的协议
bash
# 查看系统支持的所有协议 $ cat /etc/protocols# 部分输出示例: # ip 0 IP # internet protocol # icmp 1 ICMP # internet control message protocol # tcp 6 TCP # transmission control protocol # udp 17 UDP # user datagram protocol
4.3 常用网络协议工具
bash
# 1. 查看TCP连接状态 $ ss -t -a # 显示所有TCP连接# 2. 测试UDP端口连通性 $ nc -zvu 192.168.1.100 53 # 测试DNS端口# 3. 抓取ICMP数据包(ping命令) $ sudo tcpdump -i eth0 icmp
五、协议实战:从HTTP请求看分层协作
当你在浏览器访问http://example.com时:
-
应用层:生成HTTP请求报文
text
GET / HTTP/1.1 Host: example.com
-
传输层:添加TCP头部(源端口、目标端口80)
bash
# 查看建立的TCP连接 $ ss -t sport = :80
-
网络层:添加IP头部(源IP、目标IP)
bash
# 查看路由路径 $ traceroute example.com
-
网络接口层:添加以太网头部(MAC地址)
六、协议安全:不得不防的网络威胁
常见协议安全问题:
-
IP欺骗:伪造源IP地址
-
TCP SYN洪水攻击:耗尽服务器资源
-
DNS劫持:篡改域名解析结果
Linux防护措施:
bash
# 1. 启用SYN Cookie防护 $ sysctl -w net.ipv4.tcp_syncookies=1# 2. 配置iptables防火墙 $ sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT# 3. 使用DNSSEC验证 $ sudo apt install dnssec-trigger
七、学习建议:如何深入理解网络协议
-
实践工具:
-
Wireshark:图形化抓包分析
-
tcpdump:命令行抓包工具
-
telnet:手动模拟HTTP请求
-
-
学习资源:
-
《TCP/IP详解 卷1:协议》
-
Cloudflare的学习博客
-
Linux内核文档(/usr/share/doc/linux-doc)
-
-
动手实验:
bash
# 使用nc创建简易聊天室 # 终端1(服务端): $ nc -l 1234# 终端2(客户端): $ nc localhost 1234
思考题:为什么现代互联网选择TCP/IP而不是OSI七层模型?欢迎在评论区留下你的见解!
推荐阅读:
-
Linux网络协议栈源码分析
-
Wireshark抓包实战教程
-
云原生时代的网络协议演进