Linux:网络编程基础

文章目录

  • 1.协议分层
    • [1.1 OSI协议](#1.1 OSI协议)
    • [1.2 OSI协议到底是啥](#1.2 OSI协议到底是啥)
  • 2.网络传输流程
    • [2.1 局域网(以太网为例)通信原理](#2.1 局域网(以太网为例)通信原理)
    • [2.2 跨网络传输](#2.2 跨网络传输)
    • [2.3 IP地址和MAC地址的区别](#2.3 IP地址和MAC地址的区别)
  • 3.网络编程
    • [3.1 sockaddr 结构](#3.1 sockaddr 结构)
    • [3.2 socket 常见 API(接口)](#3.2 socket 常见 API(接口))
    • [3.3 网络命令](#3.3 网络命令)
      • [3.3.1 Ping 命令](#3.3.1 Ping 命令)
      • [3.3.2 netstat 命令](#3.3.2 netstat 命令)
      • [3.3.3 watch 命令](#3.3.3 watch 命令)
      • [3.3.4 pidof 命令](#3.3.4 pidof 命令)

1.协议分层

协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的。协议分层的好处就是,某一层出现问题不会影响其他层,我们只需要找到有问题的那一层去维护即可!

1.1 OSI协议

OSI(开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。

物理层(硬件)我们考虑的比较少,我们只考虑软件相关的内容. 因此很多时候我们直接称为TCP/IP 四层模型。

1.2 OSI协议到底是啥

所谓协议,就是通信双方都认识的结构化的数据类型

2.网络传输流程

2.1 局域网(以太网为例)通信原理

两台主机在同一个局域网,能够直接通信.

每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址

• 以太网中,任何时刻,只允许一台机器向网络中发送数据

• 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞

•所有发送数据的主机要进行碰撞检测和碰撞避免

• 没有交换机的情况下,一个以太网就是一个碰撞域

•局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac 地址判

从今天开始,我们学习任何协议,都要先宏观上建立这样的认识:

  1. 要学习的协议,是如何做到解包的?只有明确了解包,封包也就能理解
  2. 要学习的协议,是如何做到将自己的有效载荷,交付给上层协议的?

2.2 跨网络传输

网络中的地址管理 - 认识 IP 地址

IP 协议有两个版本, IPv4 和 IPv6. 凡是提到 IP 协议, 没有特殊说明的, 默认都是指IPv4。

2.3 IP地址和MAC地址的区别

所以网络通信的整个宏观过程大致如下:

3.网络编程

网络通信的本质就是进程间通信!

PID和端口号是共生的,但是端口号才能做到网络通信!

• 0 - 1023: 知名端口号, HTTP, FTP, SSH 等这些广为使用的应用层协议, 他们的端口号都是固定的.
• 1024- 65535: 操作系统动态分配的端口号. 客户端程序的端口号, 就是由操作系统从这个范围分配的.

3.1 sockaddr 结构

3.2 socket 常见 API(接口)


3.3 网络命令

3.3.1 Ping 命令

用来检测网络有没有连通

3.3.2 netstat 命令

netstat 是一个用来查看网络状态的重要工具.

3.3.3 watch 命令

用来查看,定期检测指令

cpp 复制代码
// 每隔 1(n)s 执行一次 netstat -nltp
 watch -n 1 netstat -nlt

3.3.4 pidof 命令

在查看服务器的进程 id 时非常方便.

相关推荐
wzg20163 分钟前
本地部署Deepseek-coder + Vscode + Continue 插件(3)启动与关闭deepseek-coder大模型
linux·运维·服务器
H_oRIZoN_5 分钟前
Linux入门DAY37(IO 多路复用、TCP 并发服务器与数据库 SQLite3 详解)
linux·服务器·数据库
新时代牛马10 分钟前
Linux 块设备驱动完整篇:从gendisk、submit_bio 到blk-mq queue_rq 与排障
linux·运维·服务器
xieliyu.30 分钟前
HTTPS 加密流程深度解析|从 HTTP 痛点到 TLS 握手全过程
网络·笔记·网络协议·计算机网络·http·https
Rsingstarzengjx34 分钟前
第二十六章 Linux 蜂鸣器实验笔记
linux·驱动开发·笔记·stm32·嵌入式硬件·stm32mp157
我爱cope36 分钟前
【计算机网络 | 传输层5:TCP 如何实现可靠传输?滑动窗口、累计确认与重传机制】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
蓝速科技1 小时前
固定涉外场景台式翻译机选型与落地指南
网络·人工智能·自然语言处理·语音识别·技术分享
Java小学生丶1 小时前
[开源自荐] ZTShell,一个使用 Tauri 2 + Rust 全程由 AI 开发的跨平台桌面 SSH 工具
linux·网络·centos7·云服务器·开发技巧·资源分享·个人私货
广州灵眸科技有限公司1 小时前
灵眸科技EAI3572-Core-L核心板即将发布!八核+4TOPS NPU,面向工业与边缘AI
linux·运维·服务器·数据库·yolo
流浪0011 小时前
Linux系统篇28——通信(五):信号量专篇:从电影院订票到内核一张大表,把信号量一次讲透
linux·运维·服务器