网络编程概念
1.分类
根据网络覆盖范围进行划分:局域网、城域网、广域网
国际性更大的广域网不同叫法:互联网,因特网
组件技术:以太网,令牌环网
2.IP地址
IP地址:一台主机在网络中的标识。(唯一性)
uint32_t类型的整数——IP地址数据类型(IPV4)
DHCP—动态地址分配
NAT—网络地址转换
3.端口
端口:网络通信中一台主机上进程的标识符。
Uint16_t类型的数据——范围0~65535
每个网络中的数据不仅带有源端IP和对端IP,还包括源端端口和对端端口。
源端IP+源端端口+对端IP+对端端口
描述了当前数据是从网络中的哪个主机中的哪个进程发出,要发送到哪个主机的哪个进程。
4.协议
网络通信协议就是网络通信中数据格式约定。要实现网络互连,就需要具有统一的网络通信协议标准。
OSI七层网络互连模型:以提供的服务不同将网络通信环境划分为七层。
层次划分:应用层—表示层—会话层—传输层—网络层—链路层—物理层
TCP/IP五层模型:
应用层:负责应用程序之间的数据沟通;FTP/HTTP
传输层:负责进程之间的数据传输;UDP/TCP
网络层:负责地址管理与路由选择;IP<路由器>
链路层:负责相关设备之间的数据传输;以太网协议-eth<交换机>
物理层:负责物理广电信号的传输。以太网协议<集线器>
5.网络字节序
主机字节序:一台主机上CPU对内存中数据按照字节为单位进行存取的顺序。
分类:
大端:低地址存高位
小端:低地址存低位
一个变量/数组的起始位置就是低地址,随着下标变大而变大。
高位 0000 0001 0000 0010 0000 0011 0000 0100 低位——0*01020304
inta;
地址就是低地址 | 高地址 | ||
---|---|---|---|
主机字节序主要强调的是存储单元大于一个字节的数据类型。
short/int/long/float/double
主机字节序对网络字节序的影响:主机字节序不同,则有可能在网络通信中会产生数据二义。
想要避免因为主机字节序不同而导致的数据二义,则需要在网络中统一字节序标准。——网络字节序(大端字节序)
意味着如果主机为小端,则需要在网络通信时将数据转换为网络字节序后进行发送。
uint32_t htonl (uint32_t hostlong);32位数据主机到网络字节序转换
uint16_t htons (uint16_t hostshort);16位数据主机到网络字节序转换
uint32_t htohl (uint32_t netlong);32位数据网络到主机字节序转换
uint16_t htohs (uint16_t netshort);16位数据网络到主机字节序转换
sip+sport+dip+dport+protocol=标识一条通信
网络中的每条数据中都会有完整的五元组信息。