tcp协议网络编程

发布时间:2023年12月18日

1.Wireshark抓包工具:
? ? 1.sudo apt-get install wireshark
? ? 2.sudo wireshark
? ? 3.选择抓取数据包的网卡
? ? 4.执行网络程序实现数据通信

2.UDP包头:
? ? 8个字节
? ? 1.源端口(2个字节)
? ? 2.目的端口(2个字节)
? ? 3.长度(2个字节)
? ? 4.校验码(2个字节)

3.MTU:
? ? 最大传输单元
? ? UDP MTU 最大为:1500
? ? UDP一次发送的数据最大不要超过1500个

TCP编程:
? ? 1.通信流程
? ? ? 发送端: ? ? ? ? ? ? ? ? ? ? ? 接收端:
? ? ? socket ? ? ? ? ? ? ? ? ? ? ? ?socket?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? bind?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? listen
? ? ? connect ? ? ? ? ? ? ? ? ? ? ? accept?
? ? ? send ? ? ? ? ? ? ? ? ? ? ? ? ?recv?
? ? ? close ? ? ? ? ? ? ? ? ? ? ? ? close?

? ? 2.函数接口:
? ? ? listen?
? ? ? int listen(int sockfd, int backlog);
? ? ? 功能:
? ? ? ? 监听三次握手连接请求
? ? ? 参数:
? ? ? ? sockfd:套接字文件描述符
? ? ? ? backlog:尚未处理的连接请求最大等待个数
? ? ? 返回值:
? ? ? ? 成功返回0?
? ? ? ? 失败返回-1?

? ? ? 注意:
? ? ? ? 1.listen不会阻塞

? ? 3.accept
? ? ? int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
? ? ? 功能:
? ? ? ? 处理等待队列中的第一个请求
? ? ? 参数:
? ? ? ? sockfd:套接字文件描述符
? ? ? ? addr:存放请求方地址信息空间首地址
? ? ? ? addrlen:请求方地址信息长度
? ? ? 返回值:
? ? ? ? 成功返回新的文件描述符
? ? ? ? 失败返回-1?

? ? 4.recv?
? ? ? ssize_t recv(int sockfd, void *buf, size_t len, int flags);
? ? ? 功能:
? ? ? ? 接收数据
? ? ? 参数:
? ? ? ? sockfd:套接字文件描述符
? ? ? ? buf:存放接收到的数据空间首地址
? ? ? ? len:最大接收字节数
? ? ? ? flags:属性 默认为0?
? ? ? 返回值:
? ? ? ? 成功返回实际接收到的字节数
? ? ? ? 失败返回-1?
? ? ? ? 如果对方退出,recv返回0?

? ? 5.send?
? ? ? ssize_t send(int sockfd, const void *buf, size_t len, int flags);
? ? ? 功能:
? ? ? ? 发送数据
? ? ? 参数:
? ? ? ? sockfd:套接字文件描述符?
? ? ? ? buf:发送数据空间首地址
? ? ? ? len:发送字节数
? ? ? ? flags:属性默认为0?
? ? ? 返回值:
? ? ? ? 成功返回实际发送字节数
? ? ? ? 失败返回-1?

? ? 6.connect?
? ? ? int connect(int sockfd, const struct sockaddr *addr,
? ? ? ? ? ? ? ? ? ?socklen_t addrlen);
? ? ? 功能:
? ? ? ? 发送链接请求
? ? ? 参数:
? ? ? ? sockfd:套接字文件描述符
? ? ? ? addr:对方的IP地址信息
? ? ? ? addrlen:IP地址的大小
? ? ? 返回值:
? ? ? ? 成功返回0?
? ? ? ? 失败返回-1?

文章来源:https://blog.csdn.net/qq_58687815/article/details/135054612
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。