1 为什么要有 网络字节序
字节序: CPU在内存中对数据的存取顺序–针对大于一个字节的数据类型
主机字节序: 一个主机的大小端字节序取决于CPU架构–x86(小端),mps(大端)
网络字节序:统一规定为大端字节序(标准化,便于不同主机之间的通信)
在网络通信中(两台不同主机之间的通信)–通信双方并不知道对方的主机字节序
因此为了避免由于通信双方主机字节序的不同而导致的数据传输的二义性,就采用网络字节序.
大端: 低地址存高位
小端:低地址存低位
如何判断大小端: 采用联合体;
五元组: 源IP 源端口 目的IP 目的端口 协议
2 网络通信中的通信两端(服务端与客户端)
客户端: 通信双方中主动发起请求的一方(必须知道服务端在哪里)
服务端: 通信双方中被动接受请求的一方(必须告诉客户端自己在哪里,通常都是固定地址)
举个例子: 和好友用QQ聊天
我们通过QQ 和好友进行聊天时,并不是QQ好友之间直接进行通信,而是先将数据发给QQ服务器,然后由QQ服务器将数据转发给聊天好友。 在此时,QQ用户都是客户端,而QQ服务器是服务端
3 传输层协议种类及其特性
TCP(传输控制协议): 面向连接 可靠传输 面向字节流
UDP(用户数据报协议): 无连接 不可靠 面向数据报
TCP相较于UDP : 传输性能较低,但是可以保证可靠传输
UDP相较于TCP:不能保证可靠传输,但是传输性能高于TCP
UDP的使用场景: 实时性要求极高,但是安全性要求不是很高: 例如: 视屏传输
TCP的使用场景:安全性要求极高 例如:文件传输
4 UDP的通信流程
客户端: 1.创建套接字(建立网卡与进程的联系)2->为套接字绑定地址(客户端不推荐绑定,告诉操作系统从哪个缓冲区访问数据)->3.发送数据->4.接收数据->5.关闭套接字
服务端:1.创建套接字->2为套接字绑定地址->3接收收据->4发送数据->5关闭套接字