文章目录
网络分层
Link Layer-网络接口与物理层
- MAC地址:48位 全球唯一,网络设备身份标识
- ARP/RARP
ARP:IP地址–>MAC地址
RARP:MAC地址->IP地址
PPP协议:拨号协议(GPRS 3G 4G)
Internet-网络层
IP:Internet Protocol(IPv4 IPv6)
ICMP:Internet控制管理协议,ping命令属于ICMP
IGMP:Internet分组管理协议,广播、组播
Transport Layer-传输层
TCP:Transfer control Protocol,面向连接的可靠传输
UDP:user Datagram protocol,无连接的不可靠传输
SCTP:是TCP的增强版,它能够实现多主机、多链路的通信
Application Layer-应用层
HTTP/HTTPS
邮件收发协议:POP3(收)、SMTP(发)、IMTP(可接收邮件的一部分)
FTP
Telnet/SSH:远程登录
嵌入式相关:
NTP:网络时钟协议
SNMP:简单网络管理协议(实现对网络设备集中式管理)
RTP/RTSP:用传输音视频的协议(安防监控)
TCP/IP协议通信模型
封包/拆包
app:data
transport:TCPhead data
Internet:IPhead TCPhead data
Link:以太网头 IPhead TCPhead data CRC
或WIFI头 IPhead TCPhead data CRC
CRC:Ethernet trail 4bytes(硬件产生和校验,不需要软件处理)
app data:6-1460字节
Ethernet 一帧长度:64-1518字节
MTU:Max Transfer Unit 最大传输单元(和网络类型相关,以太网MTU=1500)
MSS:Maxium Segment size和网络类型 线路 系统相关,真正的用户数据大小
TCP/IP网络编程预备知识
Socket
- 是一个编程接口
- 是一种特殊的文件描述符
- 代表网络编程的一种资源
- 并不限于TCP/IP
- 面向连接
- 无连接
socket类型
- 流式套接字(SOCK_STREAM):唯一对应TCP
提供面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。内置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。 - 数据包套接字(SOCK_DGRAM):唯一对应UDP
提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送,可能乱序接收。 - 原始套接字(SOCK_RAM):对应多个协议,发送穿透了传输层
可以对较低层次协议如IP/ICMP直接访问
IP地址
- IP地址分为
IPV4:32位整数表示
IPV6:采用128位整数表示
mobileIPv6:local IP(本地注册的IP),roam IP(漫游IP) - 特殊IP地址:
局域网IP:192.xxx.xxx.xxx 10.xxx.xxx.xxx
广播IP:xxx.xxx.xxx.255,255.255.255.255(全网广播)
组播IP:224.xxx.xxx.xxx~239.xxx.xxx.xxx
端口号
16位的数字(1-65535)
已用端口:1-1023(FTP:21 SSH:22 HTTP:80 HTTPS:469)
保留端口:1024-5000
可用端口:5000-65535
- TCP端口和UDP端口相互独立
网络里面的通信是由 IP地址+端口号 来决定的
字节序
字节序是指不同CPU访问内存中多字节数据时,存在大小端问题
-
小端:低对低,低端内存存放低端数据
-
大端:低端内存存放高端数据
一般来说
X86/ARM:小端
powerpc/mips,ARM作为路由器时,大端模式
网络传输的时候采用大端模式 -
本地字节序、网络字节序
host to net
u_long htonl(u_long hostlong);
u_short htons(u_short short);net to host
u_long ntohl(u_long hostlong);
u_short ntohs(u_short short); -
IP地址转换函数:
in_addr_t inet_addr(const char *cp);
cp:点分形式的IP地址,结果是32位整数(内部包含了字节序的转换,默认是网络字节序模式)
1、仅适用于IPv4
2、error 是返回-1
3、不能用于转换255.255.255.255int inet_pton(int af,const char *src,void *dst);
af:地址协议族(AF_INTET / AF_INET6)
src:点分形式的IP地址(IPV4)
dst:转换的结果1、适用于IPV4 IPV6
2、可处理255.255.255.255
L6-D1