Linux网络编程:从协议到实战
linux下的网络编程
1.目的 ;不同主机,进程间通信。
2.解决的问题
1.主机与主机之间物理层面必须互联互联。
2.进程与进程在软件层面必须互通。
3。网络协议
网络通信标准
osi:开放系统互联模型(open system interconnect)
理论模型:
不同体系结构设备间,网络通信的通信标准。
1.应用层(applicat layer):要传输的数据信息,如文件传输,电子邮件等
2.表示层():处理数据的格式转换、加密解密、压缩解压
3.会话层:建立数据传输通道----------------》会话
4.传输层:传输的方式 UDP TCP 端口号
5.网络层:实现数据路由,路径规划 路由器ip
6.数据链路层(Data Link Laye):封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP
7.物理层(Physical Laye):定义物理设备标准、电器特性,比如网线,光纤等传输介质 比特流 bit 01
TCP/IP模型:实际应用模型
五层:自上而下
应用层:HTTP(超文本传输协议) HTTPS(超文本传输协议(SSL加密算法))
FTP(文件传输协议(TCP))
TFTP(简单文件传输协议(UDP))
MQTT(消息队列遥测传输(物联网协议))
DNS:域名解析服务(www.baibu.com-----》IP地址)
传输层:
TCP:传输控制协议
UDP:用户数据报协议
网络层:
IP协议:IPv4 IPv6
数据链路层:
ARP:地址解析协议
物理层:
四层:
应用层:
传输层:
网络层:
网络接口层:
IP协议
IP协议(Internet Protocol,互联网协议)是TCP/IP模型网络层的核心斜体,主要功能是实现不同网络间数据包的路由选择与转发,确保数据从源主机跨越多个网络送达目标主机。
IP地址的基本概念
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::d037:3226:7fb1:21bd%5
IPv4 地址 . . . . . . . . . . . . : 192.168.0.106
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.0.11
1
IP地址 = 网络位 + 主机位
网络位:该IP地址位于哪个网段(局域网)内
主机位:这个网段(局域网)的第几台主机
子网掩码:如255.255.255.0
11111111.11111111.11111111.00000000
用来区分IP地址中的网络位和主机位,搭配IP地址使用;
子网掩码是1的部分对应IP地址的网络位
子网掩码是0的部分对应IP地址的主机位
网段号
网段号本质是IP地址与子网掩码通过二进制“与”运算得到的“网络地址”,用于唯一标识一个特定的网络区域,判断不同IP是否处于同一网络。
核心作用:
同一网段内的主机可直接通信,不同网段的主机需要通过路由器转发数据。
若两个IP地址的网段号相同,即可直接互通。
计算逻辑:
IPv4 地址 . . . . . . . . . . . . : 192.168.0.106
11000000.10101000.00000000.01101010
子网掩码 . . . . . . . . . . . . : 255.255.255.0
11111111.11111111.11111111.00000000
得到:192.148.0.
广播号
广播号是一个网络内用于向所有主机发送消息的特殊IP地址,其核心特征是“主机位全为1”,无法分配给具体设备,仅用于网络内的广播通信。
例如192.168.0.255
网关地址
IP地址的划分
IP地址的划分主要针对IPv4地址(IPv6采用无类别设计,无需分类),核心分为传统分类划分和无类别域间路由划分(CIDR)两种,目的是高效管理地址资源,区分网络与主机。
传统分类划分
将IPv4地址按首段数值直接划分为5类(A、B、c、d、e),
A类地址:
范围:1.0.0.0 - 126.255.255.255
子网掩码:255.0.0.0 126 *2 *24
B类地址:
范围:128.0.0.0 - 191.255.255.255
子网掩码:255.255.0.0 2^16
C类地址:
范围:192.0.0.0 - 223.255.255.255
子网掩码:255.255.255.0 2^8
管理中小规模网络
D类地址:
范围:224.0.0.0 - 239.255.255.255
组播和广播
E类地址:
240.0.0.0 - 255.255.255.254
用来进行试验
注意:A类中127.x.x.x为”回环地址“(用于本地测试,如127.0.0.1),不归属任何网络。
无类别域间路由划分(CIDR)
为解决传统分类的地址浪费问题,CIDR采用可变长子网掩码(VLSM),允许灵活调整“网络为长度”,通过“IP地址/前缀长度”格式表示。例如,192.168.1.0/24
核心规则
前缀长度:用/n表示(n为0 - 32的整数),代表前n位是“网络位”,剩余的32-n是“主机位”。
子网划分:通过增加前缀长度,把一个大网络拆分为多个小子网,提示地址利用率。
特殊地址段(保留/私有地址)
除公网地址外,IPv4预留了3段“私有地址”,仅用于局域网(不可在互联网路由),解决公网地址不足问题:
A类私有段:
B类私有段:
c类私有段:
网络端口号
端口号是TCP/IP协议中,用于标记同一主机上的不同网络进程。
端口号的属性
取值范围:16位的无符号整型数据(unsigned short),范围0~65535,共65536个端口。
IP地址定位“目标设备”,端口号定位“设备上的目标应用”。
属于TCP/IP的传输层。
端口号的分类:
1)任何TCP/IP实现所提供的服务都用1-1023之间的端口号。
http : 80
FTP: 20/21
TFPT: 69
HTTPS: 4432)端口号从1024-49151是被注册的端口号,被IANA指定为特殊服务使用。
MQTT:1883/88833)从49152-65535是动态或私有端口号。
UDP协议——用户数据报协议(User Datagram Protocol)
传输层协议
UDP是TCP/IP协议族中一种无连接、不可靠的传输层协议,核心特点是“快”,优先保证传输速度而非数据完整性。