当前位置: 首页 > news >正文

【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 核心区别

特性TCPUDP
连接方式面向连接无连接
可靠性高(三次握手)
速度较慢很快
数据顺序保证有序不保证
适用场景网页、邮件、文件传输视频流、游戏、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.1
    Host: 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. 云原生时代的网络协议演进

http://www.dtcms.com/a/303273.html

相关文章:

  • PTX指令集基础以及warp级矩阵乘累加指令介绍
  • 5G MBS(组播广播服务)深度解析:从标准架构到商用实践
  • 机器学习(重学版)基础篇(算法与模型一)
  • Ansible提权sudo后执行报错
  • 大语言模型(LLM):重塑AI未来的技术革命
  • 11-大语言模型—Transformer 盖楼,BERT 装修,RoBERTa 直接 “拎包入住”|预训练白话指南
  • 【笔记】Handy Multi-Agent Tutorial 第四章 CAMEL框架下的RAG应用(实践)
  • 四、计算机组成原理——第5章:存储系统
  • C++20实战FlamingoIM开发
  • Vue插件与组件核心区别详解
  • 重复文件清理工具,附免费链接
  • 1.2.3 混凝土结构设计构造要求
  • Cesium大气散射效果
  • Datawhale AI夏令营:大模型理解列车排期表
  • Vue组件通信的终极指南
  • Spark SQL 聚合函数:collect_list 与 collect_set 用法详解
  • ADAS测试:如何用自动化手段提升VV效率
  • 04动手学深度学习(下)
  • AOP实现接口幂等
  • B树、B+树、红黑树区别
  • Solidity基础(教程④-ERC-4626收益金库)
  • 被困扰的elementplus样式修改问题:select选择器修改和el-input修改
  • PHP企业级应用架构:微服务通信、分布式事务与性能优化
  • 短剧系统开发上线全流程攻略:从架构设计到性能优化
  • 页面性能优化
  • SpringBoot轻松集成豆包AI
  • Cacti RCE漏洞复现
  • Android Studio关于Connection refused: connect报错
  • “车位到车位”自动驾驶真相
  • pcm,msd调制解调仿真