【TCP连接建立和断开机制】

ACK:收到后确认包
SYN:同步包
FIN:结束包

建立连接:三次握手

第一次握手(connect):客户端给服务器发送一个同步包,确认服务器是否能收到数据
第二次握手:服务器收到客户端发的同步包后,服务器发送一个同步包给客户端,同时发送一个确认包给客户端
第三次握手:客户端收到服务器发来的同步包后给服务器回一个确认包

断开连接:四次挥手

第一次挥手(close):客户端给服务器发送结束包
第二次挥手:服务器给客户端发送一个确认包确认收到客户端的请求
第三次挥手:服务器完成剩下的数据收发,给客户端发送一个结束包
第四次挥手:客户端收到服务器发来的结束包后给服务器发送一个确 认包

wireshark:抓包工具
ubuntu安装抓包工具:
sudo apt-get install wireshark
运行:
sudo wireshark

【网络超时检测】

1.IO多路复用

  1. 函数返回值==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()

  1. struct timeval tv={3,0};<br /> setsockopt(accptfd,SOL_SOCKET,SO_RECTIMEO,&tv,sizeof(tv));

3.alarm(3)

  1. 定时3s3s后会发送一个信号SIGALRM
  2. signal()

【广播】

分为发送方和接收方,采用UDP实现

特殊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.接收数据

【数据库】

  1. **sqlite3**

sqlite3 安装:

离线安装

  1. **1. **sudo dpkg -i *.deb

在线安装

  1. **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 /> --------------------------------
  2. # sudo apt-get install sqlitebrowser <br /> --->sqlite3数据库操作软件

测试是否安装成功:

  1. SQLite version 3.7.9<br /> Enter ".help" for instructions<br /> Enter SQL statements terminated with a ";"<br /> sqlite>

如果出现以上内容,表示安装成功;

1.并发服务器
2.广播和组播