1.TCP和UDP
1.1共同点:
同属于传输层协议
1.2不同点:
TCP:有连接,可靠
UDP:没有连接,不保证可靠
1.3TCP(传输控制协议)
(1)是一种面向连接的传输层协议
(2)能提供高可靠通信
通常用于对数据传输质量要求较高,或传输大量数据的通信
1.4UDP(用户数据报协议)
(1)是一种无面向连接的传输层协议
(2)不能提供高可靠通信
通常用于小尺寸数据的发送、网络应答困难、广播和组播的通信
2.socket套接字
是一种通用的网络编程接口,一个特殊的文件描述符
流式套接字(SOCK_STREAM)--》TCP
用户报套接字(SOCK_DGRAM)-->UDP
原始套接字(SOCK_RAW)
3.TCP服务端/客户端通信
3.1socket函数
创建socket对象:
int socket_fd=socket(AF_INET,SOCK_STREAM,0);
AF_INET:网络协议
SOCK_STREAM:使用的是TCP通信
3.2connect函数
请求连接
3.3send/recv函数
发送/接受
3.4bind函数
服务器端用来绑定自己的IP地址和端口号
3.5listen函数
服务器端用来监听是否有客户端请求连接
3.6accept函数
用来获取连接的客户端的IP地址和端口号
4.TCP的粘包问题
4.1原因:
(1)信道拥挤
(2)读写速率不匹配
4.2解决方法
(1)使用延时
(2)使用相同大小的缓存,使得读写保持一致
(3)对粘和的包进行解析
5.IO多路复用
5.1
5.2使用IP多路复用的原因
应用程序中同时处理多路输入输出流,如采用阻塞模式达不到效果
若采用非阻塞模式,则需要进行轮询,太浪费CUP的时间
若设置多进程,则会产生进程进的同步和通信的问题