网络基础
- ip地址:在网络中唯一标识一台主机
- port端口:在一台主机上标识一个进程
- 协议:通信双方的约定
- 网络协议:网络通信中数据的约定格式
- 通信协议标准:网络互联的前期
协议分层
- 就是协议的封装,便于使用
- 多服务,接口,协议进行明确的划分;使得标准的实现变得简单
TCP/IP五层参考模型
- 物理层 数据链路层 网络层 传输层 应用层
- 物理层:负责光电信号的传输;以太网协议;集线器
- 链路层:负责相邻设备的数据帧传输,Ethernet :交换机
- 网络层:负责地址管理与路由选择:IP ;路由器
- 传输层:负责端与端之间的数据传输,TCP,UDP
- 应用层:负责应用程序之间的数据沟通;HTTP FTP SMTP DNS
网络通信中数据的传输流程
网络套接字编程
ip地址:
网络字节序
- IPV4:uint_32 -----43亿左右----在网络中唯一标识一台主机
- IPV6 uchar ip[16]---因为不向下兼容IPV4没有推广起来
- DHCP:动态地址分配技术---谁上网给谁分配地址
- NAT:地址替换---实现多人使用同一地址上网
- IP地址采用点分十进制:例如:192.122.122.132
- 每一条数据都会包含:src ip dest ip
- port端口:uint_16----0~65535 0-1024不推荐使用--在主机上唯一标识一个进程
- 网络程序分为客户端和服务端,主动发起请求的一方是客户端,被动在指定位置接受的一方为服务端(服务端被动的接受地址必须是固定不变的)
- 一个端口只能被一个进程占用,但是一个进程可以使用多个端口
- 每条数据中包含:sip sport dip dport proto
传输层协议:TCP/IP
TCP:传输控制协议,面向连接,可靠传输,面向字节流
- 面向连接:通信之前,先建立连接,确保双方在线
- 可靠传输:在网络正常的情况下,数据不会丢失
- 面向字节流:传输灵活,但是存在粘包问题
- 使用场景:对数据安全要求性高,例如传输文件---保证数据安全
- tcp为实现可靠传输牺牲了部分传输性能
UDP:用户数据包协议--无连接,不可靠,面向数据报
- 面向数据报:每条数据有长度标识,整条发,整条收;但是传输不够灵活,但是不会存在粘包问题
- 使用场景:对数据实时要求性高,例如传输视频----保证传输速度