当前位置: 首页 > news >正文

做公众号封面的网站购物网站建设前的市场分析

做公众号封面的网站,购物网站建设前的市场分析,wordpress动漫图片主题,xx网站建设策划方案TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协议建立可靠连接的过程#xff0c;确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的详细过程#xff1a; 假设客户端为A#xff0c;服务器为B 1、第一次握手#xff08;SYN1#xff0c;seq500确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的详细过程 假设客户端为A服务器为B 1、第一次握手SYN1seq500 A向B发送一个带有SYN标志位的数据包表示A请求建立连接。SYN标志位为1表示这是一个连接请求数据包500是A随机选择的初始序列号。 2、第二次握手SYN1ACK1ack5001seq800 B接收到A发送的连接请求后会向A回复一个数据包。该数据包中SYN和ACK标志位都被设置为1。ACK1表示B确认收到了A的连接请求ack字段的值为A的初始序列号加1表明B期望下一个收到的序列号是A初始序列号加1。seq字段800是B随机选择的初始序列号。 3、第三次握手ACK1ack8001 A收到B的回复后检查ACK标志位是否为1以及ack字段的值是否为B的初始序列号加1。如果正确A会向B发送一个确认数据包。在该数据包中ACK标志位被设置为1表示A确认收到了B的回复。ack字段的值是B的初始序列号加1表明A期望下一个收到的序列号是B初始序列号加1。 完成这三次握手后TCP连接就建立成功A和B之间可以开始传输数据。连接的状态变为已建立(ESTABLISHED)。 三次握手是操作系统内核Kernel的TCP协议栈负责处理。用户层的表现服务器端是accept(),客户端是connect()其这两个函数成功执行并返回了。 TCP四次挥手 TCP四次挥手TCP four-way handshake是TCP连接的关闭过程用于在客户端和服务器之间终止一个已建立的连接。与TCP三次握手不同四次挥手需要进行四个步骤来关闭连接以确保数据传输的完整性和可靠性。 1、客户端向服务器发送连接释放请求FIN的数据包。 客户端希望关闭连接因此发送一个带有FIN标志位的数据包FIN1表示连接释放请求。设置序列号为seq501。 2、服务器接收到客户端的连接释放请求后回复确认连接释放ACK的数据包。 服务器收到客户端的FIN后发送一个带有ACK标志位的数据包ACK1ack 502表示确认收到客户端的连接释放请求。 3、服务器向客户端发送连接释放请求FIN的数据包。 服务器希望关闭连接因此发送一个带有FIN标志位的数据包FIN1表示连接释放请求。设置序列号为seq701。 4、客户端接收到服务器的连接释放请求后回复确认连接释放ACK的数据包。 客户端收到服务器的FIN后发送一个带有ACK标志位(这个不是数据是控制报文)ACK1ack 702表示确认收到服务器的连接释放请求。 在发送完ACK后客户端等待一段时间确保服务器收到了ACK然后完全关闭连接。 TCP滑动窗口 TCP滑动窗口是TCP协议中的一个重要概念用于实现流量控制和可靠性传输。滑动窗口机制允许发送方和接收方在数据传输过程中动态调整可发送和可接收的数据量从而适应不同的网络条件和接收方的处理能力。每次通信时接收方利用win(4096)告知发送方缓冲区剩余大小。 MSSMaximum Segment Size是指TCP数据包中的最大有效载荷大小它表示在TCP协议中一次性发送的最大数据量即数据包中的有效数据部分不包括TCP头部和IP头部。 在TCP连接建立时通过TCP三次握手的过程中双方会交换彼此的MSS值然后根据两端通信的网络链路的MTU大小进行协商确定实际使用的MSS。 MSS 1500 - 20 (TCP头部) - 20 (IP头部) 1460 字节 这意味着在该TCP连接中一次可以发送的最大有效数据量为1460字节超过这个大小的数据将被拆分成多个TCP数据包进行传输。 MSS的设置对于TCP性能和网络吞吐量很重要。合理设置MSS可以避免网络分段和数据重组提高数据传输效率特别是在一些高延迟、低带宽的网络环境中。 TCP状态时序图 使用命令查看状态 netstat -aptn | grep 端口号 #查看tcp端口netstat -apn | grep 端口号 #查看tcp、udp端口1、主动发起连接请求端 CLOSE----发送 SYN—SYN_SEND—接收 ACK、SYN—发送 ACK-ESTABLISHED(数据通信态) 2、主动关闭连接请求端 ESTABLISHED(数据通信态)—发送 FIN—FIN_WAIT_1 --接收 ACK --FIN_WAIT_2(半关闭)—接收对端发送 FIN—FIN_WAIT_2(半关闭)—回发ACK–TIME_WAIT(只有主动关闭连接方会经历该状态)—等2MSL时长—CLOSE 3、被动接收连接请求端 CLOSE—LISTEN—接收 SYN—LISTEN—发送 ACK、SYN—SYN_RCVD—接收ACK—ESTABLISHED(数据通信态) 4、被动关闭连接请求端 ESTABLISHED(数据通信态)—接收 FIN —ESTABLISHED(数据通信态)— 发送ACK — CLOSE_WAIT(说明对端【主动关闭连接端】处于FIN_WAIT_2(半关闭)状态—发送FIN —LAST_ACK—接收ACK—CLOSE 重点ESTABLISHED(数据通信态)、FIN_WAIT_2、CLOSE_WAIT、TIME_WAIT(2MSL). 先启动服务器只有LISTEN状态。 启动客户端此时三次握手建立完成进入ESTABLISHED(数据通信态)。 尝试关闭一个客户端此时该客户端进入TIME_WAIT状态。 服务器先主动关闭服务器进入FIN_WAIT_2(半关闭)状态。客户端进入CLOSE_WAIT状态。 此时迅速关闭客户端客户端处于TIME_WAIT状态。 提示#include wrap.h错误处理函数已经封装 链接//https://blog.csdn.net/qq_45009309/article/details/131813756?spm1001.2014.3001.5501 多进程并发服务器 #include stdio.h #include stdlib.h #include string.h #include errno.h #include unistd.h #include sys/socket.h #include arpa/inet.h #include ctype.h #include pthread.h #include signal.h #include sys/wait.h #include wrap.h //错误处理函数已经封装//https://blog.csdn.net/qq_45009309/article/details/131813756?spm1001.2014.3001.5501#define SRV_PORT 9999void catch_child(int signum) //回调函数 内核操作 产生信号后进来 {while(waitpid(0, NULL, WNOHANG) 0); //非阻塞回收子进程//循环回收是因为可能产生多个子进程死亡return ; }int main(int argc, char* argv[]) {int lfd, cfd; pid_t pid;int ret;char buf[BUFSIZ];struct sockaddr_in srv_addr, clt_addr;socklen_t clt_addr_len;//memset(srv_addr, 0, sizeof(srv_addr)); //地址结构清零bzero(srv_addr, sizeof(srv_addr));srv_addr.sin_family AF_INET; srv_addr.sin_port htons(SRV_PORT);srv_addr.sin_addr.s_addr htonl(INADDR_ANY);lfd Socket(AF_INET, SOCK_STREAM, 0); //创建套接字 返回用于监听的文件描述符Bind(lfd, (struct sockaddr*)srv_addr, sizeof(srv_addr)); //绑定服务器IP地址Listen(lfd, 128); //设置监听上线clt_addr_len sizeof(clt_addr);while (1) {cfd Accept(lfd, (struct sockaddr*)clt_addr, clt_addr_len); //返回用于双方通信的文件描述符pid fork(); //创建子进程if (pid 0) {perr_exit(fork error);}else if (pid 0) {close(lfd);break;}else { //父进程使用信号捕捉回收子进程struct sigaction act;act.sa_handler catch_child;sigemptyset(act.sa_mask);act.sa_flags 0;ret sigaction(SIGCHLD, act, NULL);if (ret ! 0) {perr_exit(sigaction error);}close(cfd);continue;}}if (pid 0) { //子进程实现读写功能for (;;) {ret Read(cfd, buf, sizeof(buf));for (int i 0; i ret; i) {buf[i] toupper(buf[i]);}write(cfd, buf, ret);write(STDOUT_FILENO, buf, ret); //实现大小写转换功能if (ret 0) {close(cfd);exit(1);}}}return 0; }多线程并发服务器 #include stdio.h #include stdlib.h #include string.h #include errno.h #include unistd.h #include sys/socket.h #include arpa/inet.h #include ctype.h #include pthread.h #include signal.h #include sys/wait.h #include wrap.h //错误处理函数已经封装//https://blog.csdn.net/qq_45009309/article/details/131813756?spm1001.2014.3001.5501#define MAXLINE 8192 #define SERV_PORT 8000struct s_info { //定义一个结构体将地址结构跟cfd捆绑struct sockaddr_in cliaddr; int connfd; };void* do_work(void* arg) //子线程主调函数 {int n, i;struct s_info* ts (struct s_info*)arg;char buf[MAXLINE];char str[INET_ADDRSTRLEN]; //16while (1) {n Read(ts-connfd, buf, MAXLINE);if (n 0) {printf(the client %d closed...\n, ts-connfd);break;}printf(received from %s at PORT %d\n, //打印客户端IP端口inet_ntop(AF_INET, (*ts).cliaddr.sin_addr, str, sizeof(str)),ntohs((*ts).cliaddr.sin_port));for (i 0; i n; i)buf[i] toupper(buf[i]);Write(STDOUT_FILENO, buf, n);Write(ts-connfd, buf, n); //回写到客户端}Close(ts-connfd);return (void*)0; }int main(int argc, char* argv[]) {struct sockaddr_in servaddr, cliaddr;socklen_t cliaddr_len;int listenfd, connfd;pthread_t tid;struct s_info ts[256]; //创建结构体数组int i 0;listenfd Socket(AF_INET, SOCK_STREAM, 0); //创建一个socket,得到lfdbzero(servaddr, sizeof(servaddr));servaddr.sin_family AF_INET;servaddr.sin_port htons(SERV_PORT); //指定端口号servaddr.sin_addr.s_addr htonl(INADDR_ANY); //指定本地任意IPBind(listenfd, (struct sockaddr*)servaddr, sizeof(servaddr)); //绑定Listen(listenfd, 128);printf(Accepting client connect...\n);while (1) {cliaddr_len sizeof(cliaddr);connfd Accept(listenfd, (struct sockaddr*)cliaddr, cliaddr_len); //阻塞监听客户端链接请求ts[i].cliaddr cliaddr;ts[i].connfd connfd;pthread_create(tid, NULL, do_work, (void*)ts[i]);pthread_detach(tid); //子线程分离防止僵尸线程产生i;}return 0; }
http://www.w-s-a.com/news/75932/

相关文章:

  • 莲塘网站建设如何文字推广一个婚恋网站
  • 医院网站建设工作汇报WordPress不发邮件了
  • 怎么做外语网站个人网页设计作品ps
  • 网站原型怎么做vps如何建两个网站
  • 商城网站建设源码嘉兴seo计费管理
  • 城乡建设网站证件查询系统wordpress 时间代码
  • php网站建设 关键技术做网站哪家正规
  • 网站开发用什么写得比较好谷歌的英文网站
  • 青岛网站建设公司在哪vivo手机商城
  • 兼职刷客在哪个网站做哪个网站做淘宝客
  • 眼科医院网站开发网络营销特点是什么
  • 提交网站给百度增加wordpress插件
  • 网站建设企业官网体验版是什么Wordpress哪个模板最快
  • 美丽说网站模板湖北可以做网站方案的公司
  • 北京西站进站最新规定建设网站的提成是多少
  • wordpress站点如何加速网站建设描述怎么写
  • 如何免费建造网站免费vi模板网站
  • 商丘做网站多少钱扬州大发网站建设
  • 网站建设哪家性价比高自己做项目的网站
  • 成立一个网站济宁营销型网站建设
  • 南通购物网站建设设计类平台网站
  • 专业网站建设咨询thinkphp网站源码下载
  • 怎么制作一个国外网站网站推广找哪家公司好
  • 免费做网站怎么做网站想在网上卖东西怎么注册
  • 淘宝网站建设的策划书网投怎么做网站
  • 如何免费做公司网站视频网站开发视频
  • 网站后台是怎么更新wordpress 大于2m的xm
  • 制作网页设计软件列表案例营销网站优化seo
  • 住房和建设建设局网站报告长官夫人在捉鬼
  • 用asp做网站需要什么软件天津建设工程信息网怎么注册