1.套接字
- 支持 TCP/IP 协议的网络通信的基本操作单元,是应用程序与网络协议栈进行交互的接口。
2.函数接口
1).socket
int socket(int domain, int type, int protocol);
功能:创建一个用来进行套接字通信的终端节点
参数:
domain:AF_INET IPv4协议族
type:SOCK_DGRAM 数据报套接字
protocol: 0 UDP通信
返回值:
成功返回新的文件描述符
失败返回-1
2).sendto
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:向另一个套接字发送信息
参数:
sockfd:使用socket创建获得套接字
buf:发送内容的空间的首地址
len:发送数据的长度
flags:发送的属性,默认为0
dest_addr:目的IP的空间的首地址
addrlen:目的IP的大小
返回值:
成功返回发送的字节数
失败返回-1
3).htons
uint32_t htonl(uint32_t hostlong);
uint16_t htons(uint16_t hostshort);
uint32_t ntohl(uint32_t netlong);
uint16_t ntohs(uint16_t netshort);
功能:
本地字节序与网络字节序的转换
h:host 本地
n:net 网络
l:long 长整型 IPv4
s:short 短整型 IPv4
htons:将本地字节序转换为网络字节序
4).inet_addr
in_addr_t inet_addr(const char *cp);
功能:将字符串IP地址转换为32位的IP地址
参数:cp:字符串IP地址
返回值:32位结构体IP地址
5).bind
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:将地址与套接字完成绑定
参数:
sockfd:套接字文件描述符
addr:要绑定的地址信息
addrlen:地址长度
返回值:
成功返回0
失败返回-1
注意:
1.只能绑定自己的IP地址
2.端口号不能重复绑定
6).recvfrom
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:从套接字接收信息
参数:
sockfd:套接字文件描述符
buf:存放数据空间的首地址
len:最多存放元素的个数
flags:属性,默认为0
src_addr:存放发送方的IP地址空间的首地址
addrlen:想要接收的地址的大小,接收完毕后返回实际接收到地址的大小
返回值:成功返回实际接收字节数,失败返回-1
3.UDP包头字段

- UDP包头占8个字节
- UDP包头包含:
- 源端口(2个字节)
- 目的端口(2个字节)
- 长度(2个字节)
- 校验值(2个字节)
4.wireshark抓包工具使用
1).安装
(1). 网络连通
(2). apt-get源配置成功
(3). 安装命令
sudo apt-get install wireshark
2.wireshark的使用
1).启动wireshark抓包工具
sudo wireshark
2).正常开始网络收发功能,抓包工具会在后台抓取通过网卡的数据包
3).信完毕后,停止抓包
4).Wireshark过滤窗口设置过滤规则:
常用规则:
tcp
udp
udp.port == 50000
tcp.port == 50000
ip.addr == 192.168.0.165

601

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



