OSI七层参考模式
OSI七层参考模型:
按照网络通信中的协议,接口,服务对网络通信进行分层
(OSI七层模型是一种框架性的设计方法,其最主要的功能是帮助不同类型的主机实现数据传输)
应用层-》表示层-》会话层-》传输层-》网络层-》数据链路层-》物理层
应用层:针对特定应用的协议;QQ,邮箱等 ;
表示层:设备固有数据格式和网络编著数据格式的转换;接收不同形式的信息,如文字流, 图像,声音等;
会话层:通信管理;负责建立和断开通信连接(数据的流动和逻辑通路)管理传输层以下的 分层;例如:何时建立连接,何时断开连接以及保持多久的连接
传输层:负责端与端之间的数据传输(两个进程之间的数据传输)例如:是否有数据丢失
网络层:地址管理与路由选择;例如:经过哪个路由传递到目标地址
数据链路层:互连设备之间传送和识别数据帧; 例如:数据帧与比特流之间的转换
物理层:以0,1代表电压的高低,灯光的闪灭,界定连接器个网线的规格 (连接器与网线的 规格)
TCP/IP五层模型
TCP/IP是一组协议,最典型的两个TCP IP协议簇,最典型的是TCP IP 协议
应用层:负责应用程序之间的沟通,http ftp协议,DNS协议,SMTP协议
传输层:负责端与端(进程与进程)之间的数据传输;TCP
网络层:负责地址管理与路由选择;IP协议,路由器
链路层:负责相邻设备之间的数据帧传输;eth(以太网协议)----负责从哪里开始发送,结束 的;交换机
物理层:负责光电信号的传输;以太网协议----网线的数量,有多粗;集线器
网络通信流程:
套接字编程
socket编程
ip地址:
IPV4:
功能:唯一标识网络上的主机
数据:无符号4个字节的整数 uint32_t
源ip地址->目的ip地址
数量:43亿---不够用
1.谁上网给谁分配---dhcp
2.IP地址替换----NAT
IPV6:--IP地址16个字节
IPV6并不向下兼容ipv4,替换成本太高
port端口:
用于唯一标识主机上处理数据的进程
数据:无符号2个字节的整数 uint16_t 65535
源ip,源端口,目的ip,目的端口,协议(sip sport dip dport proto)------五元组,标识一条通信
网络字节序
字节序:cpu对数据进行存取的顺序----存储大小大于1个字节的数据
0x01 02 03 04
大端字节序:低地址存高位 a[4] 01 02 03 04
小端字节序:低地址存低位 a[4]04 03 02 01
怎么判断主机字节序是大端还是小端?
char *b【4】=1;
输出b【0】看是1还是0;
通信双方无法确定对方电脑的字节序的时候,发送大于一个字节存储的数据就有可能造成数据错误
解决方法:不管主机是大端还是小端,反正网络通信时候统一使用大端字节序进行通信;
主机字节序
主机字节序:当前主机的字节序不一定是大端还是小端,取决于cpu架构,需要进行判断;
套接字的编程
网络通信的时候,链路层-eth;网络层-ip;传输层-tcp/udp协议,应用层用户自己定义的;
两台主机之间进行网络通信----必定有一方是主动方
客户端(主动方)---请求 ---->>服务端(被动方)
TCP/UDP
TCP(传输控制协议)----有链接,可靠传输,面向字节流;
确保数据能够达到对端--保证数据的安全传输,传输灵活,传输速率低,粘包问题
UDP(用户数据报协议)---无连接,不可靠,面向数据报;
无法保证数据的安全传输--传输速度快,无粘包问题
对数据安全性要求高的程序用tcp----典型场景:文件传输
对数据的实时性要求高的程序用udp----典型场景:传视频