网络:不同主机,进程间通信
达到不同主机之间的困难:
解决主机之间的硬件层面的互联互通
解决主机之间的软件层面的互联互通
广域网:进行大范围网络数据交换
IP地址:区分不同主机 唯一的(软件地址)
MAC地址:硬件地址
端口号:区分同一主机上的不同进程
网络字节序:大端(逆序)
主机字节序:小端(顺序)
1.osi七层模型
OSI:开放系统互联模式
应用层 :要传输的数据信息,如文件传输,电子邮件等;
表示层:数据加密,解密操作,压缩,解压缩;
会话层:建立数据传输通道;
传输层:传输的方式UDP TCP 端口号
网络层:实现数据路由 路由器 ip
数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP
物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流 bit 0 1
2.TCP/IP模型
2.1五层模型
应用层:HTTP(超文本传输协议)、HTTPS(比HTTP多一层加密协议)、FTP(文件传输协议)、TFTP(简单文件传输协议,下层选择不一样)、MQTT(消息队列遥测传输协议)
传输层:TCP(传输控制协议)、UDP(用户数据报协议)
网络层:
数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机
物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流 bit
2.2四层模型
应用层:HTTP、HTTPS、FTP、TFTP、MQTT
传输层:TCP(传输控制协议)、UDP(用户数据报协议)
网络层: IP
网络接口层: 网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路
3.网络层协议
3.1IP(ipv4"32bie"\ipv6"64bit")
网络位:子网掩码全为1的位是ip地址的网络位
192.168.1.0(网段号:IP地址网络位不变,主机位全为0,则为该P地址的网段号)
广播号:192.168.1.255:IP地址网络位不变,主机位全为1
网关号:192.168.1.1
主机位:子网掩码全为1的位是ip地址的主机位
子网掩码: 255.255.255.0(前三个是网络位,最后一位是主机位)
3.2端口号:区分同一主机上的不同进程
*16位的数值 0-65535作用:唯一的标识一个进程每一个应用进程都有一个端口号;通讯时用来区分数据包属于哪一个进程。
Mtp :80
FTP:20/21
TFPT: 69
HTTPS: 443
MQTT:1883
ip是面向计算机的,域名是面向人的(将域名解析为ip地址 DNS"域名解析服务”)
4.udp编程常用接口
客户端:
socket():创建网络套接字
sendto():发送数据包
recvfrom():接受数据包
close():关闭套接字
int socket(int domain,int type,int protocol)
功能:创建一个通信套接字
参数:domain:ip层协议族
AF_INET IP4
AF_INET6 IP6
type:传输层使用的协议类型
SOCK_DGRAM UDP
SOCK_STREAM TCP
protocol:
0按照默认协议返回值
返回值:
成功:返回套接字
失败:-1
size_t sendto(int sockfd,const void *buf,sizeof_t len,int flags,const struct sockaddr *dest_addr,socklen_t addrlen);
功能:向通信套接字发送数据
参数:sockfd:套接字
buf:要发送的数据的首地址
len:发送的数据的大小
flags:默认方式 0
dest_addr:保存接受方地址信息的指针
.sin_port = htons(50000)//
.sin_addr.s_adde =inet_addr("ip地址")//将地址转为un int inet_ntoa(int 转char)
addrlen:接收方地址变量的大小
返回值:
成功:实际发送的字节数
失败:-1
服务端:
socket()
bind():绑定服务器当前主机的身份(IP+PORT)
recvfrom():接收
sendto():发送
close():关闭
bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen)
功能:绑定当前主机的ip和进程的端口
参数:sockfd:套接字
addr:自己信息的地址
addrlen:地址信息的大小
返回值:
成功:0
失败:-1
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:从套接字接受数据
参数:sockfd:套接字
buf:存储接收到的数据的位置的首地址
len:期待接收到的字节数
flags::默认方式:0
src_addr:送发地址信息的首地址addrlen:送发方地址变量的大小
返回值:
成功:返回接收到的字节数
失败:-1
B/S模型:browser/server 客户端(通用)(浏览器)/服务端(专用)
C/S模型:client/server 客户端(专用)/服务端(专用)