TCP
1. 面向数据流(流式套接字)
2. 建立连接
3. 安全可靠的传输协议
应用场景:
HTTP, MQTT, FTP
三次握手:TCP建立连接时,需要进行三次握手,确保收发数据前,双方都已准备就绪。
四次挥手:TCP断开连接时,需要进行四次挥手,从而确保通信双发都已收发数据结束。
C/S模型:
ssize_t recv(int sockfd, void *buf, size_t len, int flags);
功能:从tcp套接字接收数据
参数:
sockfd:套接字
buf:保存接收数据内容的首地址
len:期待接收到的字节数
flags:0:默认方式
返回值:
成功:实际收到的字节数
失败:-1
0:当发送端套接字关闭时,recv不再阻塞,返回0
int listen(int sockfd, int backlog);
功能:用来监听TCP套接字
参数:
sockfd:监听套接字
backlog:最多允许同时监听的客户端个数
返回值:
成功:0
失败:-1
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
功能:接收建立三次握手的客户端并产生与之通信的套接字
参数:
sockfd:监听套接字
addr:保存客户端地址信息的变量指针
addrlen:客户端地址大小的变量指针
返回值:
成功:通讯套接字
失败:-1
TCP 和UDP 的区别:
UDP:用户数据报协议
1. 面向数据报
2. 无连接
3. 不安全不可靠(尽最大努力交付)
4. 机制简单,传输效率高
TCP: 传输控制协议
1. 面向数据流(流式套接字)
2. 建立连接
3. 安全可靠的传输协议