一. 网络编程
1.1 网络
**网络:**可以进行不同主机,进程间的通信
**主机一与主机二如何在网络上进行通信:**主机一与主机二在物理层面必须互联互通,主机一和主机
二在软件层面必须互联互通。
1.2 网络基础
1.2.1 网络协议
1、OSI 七层模型
OSI模型: open system interconnect----->理论模型,1977 国际标准化组织提出
这种模型可以使得各种不同体系结构的计算机能在世界范围内互联成网
组成:
应用层: 要传输的数据信息,如文件传输,电子邮件等
表示层: 数据加密。解密,压缩,解压缩
会话层: 建立数据传输通道
传输层: 传输的方式,UDP TCP 端口号
网络层: 实现数据路由 路由器(路由表) ip
数据链路层: 封装成帧,点对点通信(局域网内通信),差错校验,交换机 ARP
**物理层:**定义物理设备标准,网线,光纤 传输比特流
2、TCP/IP 四/五层模型
这是一种生成模型
4层模型
应用层(应用层、表示层、会话层):
HTTP:超文本传输协议
HTTPS:超文本传输协议(加密)
FTP :文件传输协议
TFTP:简单文件传输协议
MQTT:消息队列遥测传输协议(物联网)
自定义协议
传输层:
UDP:用户数据报协议
TCP:传输控制协议
网络层:
IP协议
IPv4/IPv6
网络接口层(数据链路层、物理层):
ARP:地址解析协议(IP地址转MAC地址)
RARP:逆地址解析协议(MAC地址转IP地址)
5层模型
应用层(应用层、表示层、会话层)
传输层
网络层
数据链路层
物理层
1.3 其他概念
交换机可以实现小范围的通信----局域网
区分主机---ip地址
广域网:中有许多路由器
路由器:完成局域网之间的通信
端口号:区分网络进程
ip地址:区分主机,软件地址,可以改变
mac地址:用来区分主机,硬件地址,局域网内使用,不可变
二. IP协议
2.1 IP地址
ip地址: 区分主机,软件地址,可以改变
**mac地址:**用来区分主机,硬件地址,局域网内使用,不可变
**ip地址的格式:**点分十进制:eg:192.168.0.182
ipv4:就是用一个4字节(32位)的整型来保存地址
ipv6:128位保存ip地址,解决ip地址不够用的问题
**ip地址的组成:**网络位+主机位
如何区分一个IP地址的网络位与主机位,就要用到子网掩码
**子网掩码:**类似255.255.255.0这样的格式 二进制形式(1111 1111 1111 1111 1111 1111 0000
**网络位:**表示当前主机所在的网段。子网掩码为1的位为网络位
**主机位:**是当前网段的第几台主机。子网掩码为0的位为主机位
2.2 几个特殊的IP地址
2.2.1 网段号
IP地址网络位不变,主机位全为0,则为该IP地址的网段号
eg:ip地址:192.168.0.182 子网掩码:255.255.255.0
则位于192.168.0.0这个网段内---->网段内的IP能直接通信
2.2.2 广播号
IP地址网络位不变,主机位全为1,则为该IP地址的广播号
eg:ip地址:192.168.0.182 子网掩码:255.255.255.0
则位于192.168.0.255为广播号---->向广播号发送信息,所有局域网内IP都能收到此信息
2.2.3 网关地址
表示网段内的第一台主机192.168.0.1----->一般是路由器
2.3 IP地址的划分
(1)A类地址:
范围:1.0.0.0 - 126.255.255.255
子网掩码:255.0.0.0
用于管理大规模网络
126*2^24
私有IP地址:10.0.0.0 - 10.255.255.255
127.0.0.0回环地址
(2)B类地址:
范围:128.0.0.0 - 191.255.255.255子网掩码:255.255.0.02^16管理大中规模网络
私有IP地址:172.16.0.0 - 172.31.255.255
(3)C类地址:
范围:192.0.0.0 - 223.255.255.255子网掩码:255.255.255.02A8管理中小规模网络
私有IP地址:192.168.0.0 - 192.168.255.255
(4)D类地址:
224.0.0.0 - 239.255.255.255组播和广播使用
(5)E类地址:
240.0.0.0 - 255.255.255.254用来进行实验
公有IP:由电信公司直接分配,并需要付费的IP地址,可以直接访问internet私有IP:不能直接访问internet的ip地址
三. 端口号
端口号:区分同意主机上的不同网络进程
16位的数值 0-65535
分类:
1)任何TCP/IP实现所提供的服务都用1-1023之间的端口号。
http: 80、8080
FTP:20/21
TFPT: 69
HTTPS: 443
MQTT :1883
2)端口号从1024-49151是被注册的端口号,被IANA指定为特殊服务使用。
3)从49152-65535是动态或私有端口号。
四. 网络协议栈
报文,端口号:传输层
数据包,ip地址:网络层
帧,校验:数据链路层,mac地址
交换机看mac地址进行转发
比特流:物理层
整个网络传输过程都在不停的封装与解封

五. UDP 协议
UDP是传输层协议
UDP(user datagram protocol) :用户数据报协议
网络编程模型
C/S:client/server
客户端是一个专用的客户端
客户端,服务端的程序都需要实现
客户端和服务端都可以保存资源
B/S:browser/server
客户端是一个通用的客户端,只需维护服务端
一般使用http协议
主要资源都在服务端
编程流程:
发送端,客户端:
创建套接字:socket
套接字:为应用层提供网络通信的端口,本质是一个文件描述符
sendto
recvfrom
关闭套接字:close
服务端
比客户端多一个步骤
bind:绑定自己的ip地址与端口号