文章目录
1.协议分层
协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的。协议分层的好处就是,某一层出现问题不会影响其他层,我们只需要找到有问题的那一层去维护即可!
1.1 OSI协议
OSI(开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。
物理层(硬件)我们考虑的比较少,我们只考虑软件相关的内容. 因此很多时候我们直接称为TCP/IP 四层模型。
1.2 OSI协议到底是啥
所谓协议,就是通信双方都认识的结构化的数据类型
2.网络传输流程
2.1 局域网(以太网为例)通信原理
两台主机在同一个局域网,能够直接通信.
每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址
2.2 跨网络传输
网络中的地址管理 - 认识 IP 地址
IP 协议有两个版本, IPv4 和 IPv6. 凡是提到 IP 协议, 没有特殊说明的, 默认都是指IPv4。
2.3 IP地址和MAC地址的区别
所以网络通信的整个宏观过程大致如下:
3.网络编程
网络通信的本质就是进程间通信!
PID和端口号是共生的,但是端口号才能做到网络通信!
3.1 sockaddr 结构
3.2 socket 常见 API(接口)
3.3 网络命令
3.3.1 Ping 命令
用来检测网络有没有连通
3.3.2 netstat 命令
netstat 是一个用来查看网络状态的重要工具.
3.3.3 watch 命令
用来查看,定期检测指令
// 每隔 1(n)s 执行一次 netstat -nltp
watch -n 1 netstat -nlt
3.3.4 pidof 命令
在查看服务器的进程 id 时非常方便.