【TCP连接建立和断开机制】
建立连接:三次握手
第一次握手(connect):客户端给服务器发送一个同步包,确认服务器是否能收到数据
第二次握手:服务器收到客户端发的同步包后,服务器发送一个同步包给客户端,同时发送一个确认包给客户端
第三次握手:客户端收到服务器发来的同步包后给服务器回一个确认包
断开连接:四次挥手
第一次挥手(close):客户端给服务器发送结束包
第二次挥手:服务器给客户端发送一个确认包确认收到客户端的请求
第三次挥手:服务器完成剩下的数据收发,给客户端发送一个结束包
第四次挥手:客户端收到服务器发来的结束包后给服务器发送一个确 认包
wireshark:抓包工具
ubuntu安装抓包工具:
sudo apt-get install wireshark
运行:
sudo wireshark
【网络超时检测】
1.IO多路复用
函数返回值==0:超时<br /> **a:**struct timeval tv = {1,0};<br /> select(maxfd+1,&readfds,NULL,NULL,&tv);<br /> **b:**poll(fds,nfds,1000);//1s超时检测<br /> **c:**epoll_wait(,,1000);//1s超时检测
2.setsockopt()
struct timeval tv={3,0};<br /> setsockopt(accptfd,SOL_SOCKET,SO_RECTIMEO,&tv,sizeof(tv));
3.alarm(3)
定时3s,3s后会发送一个信号SIGALRMsignal()
【广播】
特殊IP:
主机号全为1代表广播地址 ——> 192.168.1.255
广播流程:
发送方:
1.创建用户数据报套接字
socket(AF_INET,SOCK_DGRAM,0)
2.允许广播数据发送
setsockopt()
3.指定发送方IP和端口号
IP:广播IP
端口号:8888(随便指定)
4.发送数据
sendto() //向广播IP发送
接收方:
1.创建用户数据报套接字
socket()
2.绑定IP(广播IP)和端口号
bind()
3.接受数据
recvfrom()
广播:给当前网段的所有主机发送数据
广播容易导致:
网络风暴 / 广播风暴
【组播】
编程流程:
发送方:
1.创建用户数据报套接字
socket()
2.指定接受方IP为组播地址:224.0.0.10
指定端口号
3.给组播IP发送数据
接收方:
1.创建用户数据报套接字
socket();
2.将主机IP加入多播组
struct ip_mreq
{
struct in_addr imr_multiaddr;
struct in_addr imr_interface;
}
setsockopt()
3.绑定IP(组播IP)和端口号
4.接收数据
【数据库】
**sqlite3**
sqlite3 安装:
离线安装
**1. **sudo dpkg -i *.deb
在线安装
**1.**设置能够上网<br /> **2.**更新更新源<br /> # sudo apt-get update<br /> **3.**安装软件及开发环境<br /> # apt-get install sqlite3 --->sqlite3数据库软件<br /> # apt-get install libsqlite3-dev --->sqlite3数据库开发支持库<br /> # apt-get install sqlite3-doc --->sqlite3数据库说明文档<br /> --------------------------------# sudo apt-get install sqlitebrowser <br /> --->sqlite3数据库操作软件
测试是否安装成功:
SQLite version 3.7.9<br /> Enter ".help" for instructions<br /> Enter SQL statements terminated with a ";"<br /> sqlite>
如果出现以上内容,表示安装成功;
1.并发服务器
2.广播和组播
