> 技术文档 > 【Linux】协议——TCP/IP协议

【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

当两台计算机通信时:

  1. 硬件差异:不同厂商设备使用不同信号表示0和1

  2. 软件差异:不同操作系统处理数据方式不同

  3. 传输差异:有线/无线传输特性不同

没有协议的结果:就像中国人说中文,葡萄牙人说葡语,即使都遵守\"说话\"这个基本规则,也无法理解对方!

二、协议分层:复杂问题的模块化解决方案

2.1 为什么需要分层?

\"协议本质是软件,为了更好的模块化和解耦,被设计成层状结构\"

分层设计优势:

优势 说明 模块化 各层独立开发,互不影响 标准化 厂商只需实现标准接口 易维护 修改一层不影响其他层 灵活性 可以替换特定层实现

2.2 TCP/IP四层模型(Linux采用)

各层功能详解

  1. 应用层:直接为用户提供服务(浏览器、邮件客户端)

  2. 传输层:端到端通信,保证数据完整(TCP/UDP)

  3. 网络层:寻址和路由(IP协议)

  4. 网络接口层:物理设备驱动和数据帧处理

三、TCP/IP协议:互联网的基石

3.1 为什么需要TCP/IP?

\"即便是单台计算机内部也存在协议,如内存协议、磁盘协议(SATA/SCSI)\"

网络通信的特殊挑战

  1. 设备异构性(不同硬件)

  2. 网络路径不确定性

  3. 数据传输可靠性要求

  4. 大规模扩展需求

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时:

  1. 应用层:生成HTTP请求报文

    text

    GET / HTTP/1.1Host: example.com
  2. 传输层:添加TCP头部(源端口、目标端口80)

    bash

    # 查看建立的TCP连接$ ss -t sport = :80
  3. 网络层:添加IP头部(源IP、目标IP)

    bash

    # 查看路由路径$ traceroute example.com
  4. 网络接口层:添加以太网头部(MAC地址)

六、协议安全:不得不防的网络威胁

常见协议安全问题:

  1. IP欺骗:伪造源IP地址

  2. TCP SYN洪水攻击:耗尽服务器资源

  3. 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

七、学习建议:如何深入理解网络协议

  1. 实践工具

    • Wireshark:图形化抓包分析

    • tcpdump:命令行抓包工具

    • telnet:手动模拟HTTP请求

  2. 学习资源

    • 《TCP/IP详解 卷1:协议》

    • Cloudflare的学习博客

    • Linux内核文档(/usr/share/doc/linux-doc)

  3. 动手实验

    bash

    # 使用nc创建简易聊天室# 终端1(服务端):$ nc -l 1234# 终端2(客户端):$ nc localhost 1234

思考题:为什么现代互联网选择TCP/IP而不是OSI七层模型?欢迎在评论区留下你的见解!


推荐阅读

  1. Linux网络协议栈源码分析

  2. Wireshark抓包实战教程

  3. 云原生时代的网络协议演进