网络基础:
协议:
一组规则。
分层模型结构:
OSI七层模型: 物、数、网、传、会、表、应
TCP/IP 4层模型:网(链路层/网络接口层)、网、传、应
应用层:http、ftp、nfs、ssh、telnet。。。
传输层:TCP、UDP
网络层:IP、ICMP、IGMP
链路层:以太网帧协议、ARP
典型协议:
网络传输流程:
数据没封装之前 是不能传输到网络中的
发送方:应用层(应用层)--->传输层(内核层 )--->网络层--->数据链路层
接收方:链路层--->网络层--->传输层--->数据链路层
以太网帧格式:
ARP协议:根据 Ip 地址获取 mac 地址。
以太网帧协议:根据mac地址,完成数据包传输。
IP协议:
UDP:16位 2^65536
TCP: 16位 2^65536
c/s模型:client-server
优点:缓存大量数据 协议选择上灵活、灵活速度快
缺点:安全性
b/s模型:browser-server
优点:安全性高、跨平台
缺点:不能缓存大量的数据、严格遵守http协议
网络套接字:socket
一个文件描述符指向一个套接字(该套接字内部由n内核借助两个缓冲区实现)
预备知识:
网络字节序:
小端法:高位存高地址 低位存低地址。int a = 0x12345678
大端法:高位存低地址 低位存高地址。int a = 0x12345678
计算机采用小端法 网络采用大端法 那么就要涉及到转换
htonl(uint32_t hostlong) 我们平常见到的192.168.1.215(点分十进制) 本地------>网络(IP)
htons():
ntohl():
ntohs():
ip地址转换函数:
int inet_pton(int af,const char *src,void *dst);
af:AF_INET、AF_INET6
src:传入,IP地址;
dst:传出
const char *inet_ntop(int af, const void *src,char *dst, socklen_t size);
网络字节--->本地字节(string IP)
af:AF_INET、AF_INET6
src:传入,IP地址;
dst:本地字节序(string ip)