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
1574

被折叠的 条评论
为什么被折叠?



