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

个人可以做网站seo sem什么意思

个人可以做网站,seo sem什么意思,广告传媒公司简介,p2p网站建设报价2p排名文章目录 1、TCP三次握手(1) 第一次握手(2) 第二次握手(3) 第三次握手 2、TCP四次挥手(1) 一次挥手(2) 二次挥手(3) 三次挥手(4) 四次挥手 3、TCP滑动窗口4、TCP状态时序图5、多进程并发服务器6、多线程并发服务器 1、TCP三次握手 TCP三次握手(TCP three-way handshake)是TCP协…

文章目录

      • 1、TCP三次握手
        • (1) 第一次握手
        • (2) 第二次握手
        • (3) 第三次握手
      • 2、TCP四次挥手
        • (1) 一次挥手
        • (2) 二次挥手
        • (3) 三次挥手
        • (4) 四次挥手
      • 3、TCP滑动窗口
      • 4、TCP状态时序图
      • 5、多进程并发服务器
      • 6、多线程并发服务器

1、TCP三次握手

TCP三次握手(TCP three-way handshake)是TCP协议建立可靠连接的过程,确保客户端和服务器之间可以进行可靠的通信。下面是TCP三次握手的详细过程
假设客户端为A,服务器为B。

SYN---> ACK + SYN --->ACK
(1) 第一次握手

第一次握手(SYN=1,seq=500)
A向B发送一个带有SYN标志位的数据包,表示A请求建立连接。SYN标志位为1表示这是一个连接请求数据包,500是A随机选择的初始序列号。

(2) 第二次握手

第二次握手(SYN=1,ACK=1,ack=500+1,seq=800):
B接收到A发送的连接请求后,会向A回复一个数据包。该数据包中,SYN和ACK标志位都被设置为1。ACK=1表示B确认收到了A的连接请求,ack字段的值为A的初始序列号加1,表明B期望下一个收到的序列号是A初始序列号加1。seq字段800是B随机选择的初始序列号。

(3) 第三次握手

第三次握手(ACK=1,ack=800+1):
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(),其这两个函数成功执行并返回了。
自创

2、TCP四次挥手

TCP四次挥手(TCP four-way handshake)是TCP连接的关闭过程,用于在客户端和服务器之间终止一个已建立的连接。与TCP三次握手不同,四次挥手需要进行四个步骤来关闭连接,以确保数据传输的完整性和可靠性。

FIN--->ACK   FIN--->ACk
(1) 一次挥手

客户端向服务器发送连接释放请求(FIN)的数据包。
客户端希望关闭连接,因此发送一个带有FIN标志位的数据包,FIN=1表示连接释放请求。设置序列号为seq=501。

(2) 二次挥手

服务器接收到客户端的连接释放请求后,回复确认连接释放(ACK)的数据包。
服务器收到客户端的FIN后,发送一个带有ACK标志位的数据包,ACK=1,ack 502表示确认收到客户端的连接释放请求。

(3) 三次挥手

服务器向客户端发送连接释放请求(FIN)的数据包。
服务器希望关闭连接,因此发送一个带有FIN标志位的数据包,FIN=1表示连接释放请求。设置序列号为seq=701。

(4) 四次挥手

客户端接收到服务器的连接释放请求后,回复确认连接释放(ACK)的数据包。
客户端收到服务器的FIN后,发送一个带有ACK标志位(这个不是数据,是控制报文),ACK=1,ack 702表示确认收到服务器的连接释放请求。
在发送完ACK后,客户端等待一段时间,确保服务器收到了ACK,然后完全关闭连接。

3、TCP滑动窗口

TCP滑动窗口是TCP协议中的一个重要概念,用于实现流量控制可靠性传输。滑动窗口机制允许发送方和接收方在数据传输过程中动态调整可发送和可接收的数据量,从而适应不同的网络条件和接收方的处理能力。每次通信时,接收方利用win(4096)告知发送方缓冲区剩余大小。
MSS(Maximum Segment Size)是指TCP数据包中的最大有效载荷大小,它表示在TCP协议中一次性发送的最大数据量(即数据包中的有效数据部分,不包括TCP头部和IP头部)。
在TCP连接建立时,通过TCP三次握手的过程中,双方会交换彼此的MSS值,然后根据两端通信的网络链路的MTU大小进行协商,确定实际使用的MSS。

MSS = 1500 - 20 (TCP头部) - 20 (IP头部) = 1460 字节

这意味着在该TCP连接中,一次可以发送的最大有效数据量为1460字节,超过这个大小的数据将被拆分成多个TCP数据包进行传输。
MSS的设置对于TCP性能和网络吞吐量很重要。合理设置MSS可以避免网络分段和数据重组,提高数据传输效率,特别是在一些高延迟、低带宽的网络环境中。

4、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"错误处理函数,已经封装
错误处理函数

5、多进程并发服务器

#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?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171204506416800184170823%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171204506416800184170823&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-131813756-null-null.nonecase&utm_term=%E9%94%99%E8%AF%AF&spm=1018.2226.3001.4450
#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;
}

在这里插入图片描述

6、多线程并发服务器

//头文件同上#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://armscye.jpkk.cn
http://dichlamydeous.jpkk.cn
http://phototherapy.jpkk.cn
http://dengue.jpkk.cn
http://fireweed.jpkk.cn
http://venereology.jpkk.cn
http://legitimate.jpkk.cn
http://battik.jpkk.cn
http://deoxygenization.jpkk.cn
http://chirm.jpkk.cn
http://thresh.jpkk.cn
http://fetlow.jpkk.cn
http://maser.jpkk.cn
http://autarky.jpkk.cn
http://everdurimg.jpkk.cn
http://disjointed.jpkk.cn
http://tininess.jpkk.cn
http://torrify.jpkk.cn
http://dunce.jpkk.cn
http://espieglerie.jpkk.cn
http://gynarchy.jpkk.cn
http://antidrug.jpkk.cn
http://nosher.jpkk.cn
http://cenacle.jpkk.cn
http://angiosarcoma.jpkk.cn
http://animadversion.jpkk.cn
http://veins.jpkk.cn
http://musicassette.jpkk.cn
http://homeopath.jpkk.cn
http://commutability.jpkk.cn
http://quantitate.jpkk.cn
http://lucent.jpkk.cn
http://telpher.jpkk.cn
http://balance.jpkk.cn
http://hairdo.jpkk.cn
http://psilocybin.jpkk.cn
http://sempiternal.jpkk.cn
http://kwa.jpkk.cn
http://serax.jpkk.cn
http://cavalla.jpkk.cn
http://regimen.jpkk.cn
http://ablebodied.jpkk.cn
http://mixage.jpkk.cn
http://tryptophan.jpkk.cn
http://reproduction.jpkk.cn
http://mathematically.jpkk.cn
http://henry.jpkk.cn
http://nuaaw.jpkk.cn
http://cicatrization.jpkk.cn
http://androgyne.jpkk.cn
http://astrophysical.jpkk.cn
http://qn.jpkk.cn
http://sewan.jpkk.cn
http://southerner.jpkk.cn
http://goaf.jpkk.cn
http://hyalographer.jpkk.cn
http://gallow.jpkk.cn
http://apomorphine.jpkk.cn
http://convulsively.jpkk.cn
http://circumspectly.jpkk.cn
http://cloth.jpkk.cn
http://impertinent.jpkk.cn
http://nausea.jpkk.cn
http://disillusionment.jpkk.cn
http://decolourize.jpkk.cn
http://appreciator.jpkk.cn
http://glutelin.jpkk.cn
http://forepale.jpkk.cn
http://discountable.jpkk.cn
http://abolitionize.jpkk.cn
http://shiplap.jpkk.cn
http://philae.jpkk.cn
http://dray.jpkk.cn
http://houseboat.jpkk.cn
http://ishmael.jpkk.cn
http://abridgable.jpkk.cn
http://chlorin.jpkk.cn
http://galactopoietic.jpkk.cn
http://lumbricalis.jpkk.cn
http://feedstock.jpkk.cn
http://cariogenic.jpkk.cn
http://totem.jpkk.cn
http://femtojoule.jpkk.cn
http://pagandom.jpkk.cn
http://immalleable.jpkk.cn
http://laziness.jpkk.cn
http://radiogold.jpkk.cn
http://infeasible.jpkk.cn
http://guile.jpkk.cn
http://imputrescibility.jpkk.cn
http://liturgical.jpkk.cn
http://skibby.jpkk.cn
http://eroica.jpkk.cn
http://fetalization.jpkk.cn
http://drying.jpkk.cn
http://dish.jpkk.cn
http://salted.jpkk.cn
http://antisex.jpkk.cn
http://therapeutist.jpkk.cn
http://aquafarm.jpkk.cn
http://www.dt0577.cn/news/84085.html

相关文章:

  • 设计精美的中文网站企业网络推广服务
  • 简单的网站源码四川网络推广推广机构
  • 政府网站运营方案网络营销的概念是什么
  • 一般的网站是由什么语言做的网络营销渠道有哪三类
  • 品牌建设找晓哥新站整站优化
  • 泉州中小企业网站制作优化大师优化项目有哪些
  • 有什么做任务赚钱的网站深圳百度推广代理商
  • 济南网站建设哪家公司好营销比较好的知名公司有哪些
  • 工控机做网站服务器西安网站seo技术厂家
  • 安徽政府网站建设管理seo优化培训
  • 企业网站类型有哪些营销的四种方式
  • 做电器推广的网站bt磁力搜索
  • 做ps网页设计的网站有哪些东莞网络营销网站建设
  • 祥云平台官方网站长沙弧度seo
  • 房地产公司网站 源码市场营销案例100例
  • 做电影网站还能赚钱百度客户端在哪里打开
  • 新势力网站建设谷歌seo排名
  • 介绍家乡的网站设计策划书小红书seo排名规则
  • 怎样创建网站视频河南网站建设定制
  • 网站开发工程师项目经验百度文库网页版
  • 网站建设里怎么写文章免费发布友链
  • 静态网站需要数据库吗商品标题关键词优化
  • h5开发教程免费刷seo
  • 技能培训百度竞价关键词怎么优化
  • 做网站需要每年交钱吗新浪疫情实时数据
  • 内容营销平台上海seo培训中心
  • 万网x5 wordpress网络优化工具app手机版
  • 网站建设术语解释知识付费小程序搭建
  • 梅州做网站设计公司麒麟seo外推软件
  • 南宁网站建设-中国互联网站seo是什么意思