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

网站设计前沿网站淘宝开店需要多少钱

网站设计前沿网站,淘宝开店需要多少钱,ui设计周末培训学校,wordpress 修改head一.TCP1.2.TCP(传输控制协议)通过“三次握手”建立连接,通过“四次挥手”终止连接,以此保证数据传输的可靠性。一、三次握手(建立连接)目的是确认双方的发送和接收能力正常,并协商初始序列号。 …

一.TCP

1.

2.

TCP(传输控制协议)通过“三次握手”建立连接,通过“四次挥手”终止连接,以此保证数据传输的可靠性。

一、三次握手(建立连接)

目的是确认双方的发送和接收能力正常,并协商初始序列号。
过程如下:

1. 客户端→服务器(SYN=1,seq=x):客户端发送连接请求报文,标记SYN为1(请求同步),随机生成初始序列号x。此时客户端进入“SYN-SENT”状态。
2. 服务器→客户端(SYN=1,ACK=1,seq=y,ack=x+1):服务器收到请求后,同意连接,回复报文:
- SYN=1(表示服务器也发起同步),生成自己的初始序列号y;
- ACK=1(确认收到客户端请求),ack=x+1(表示期望接收客户端下一个序列号为x+1的数据)。
此时服务器进入“SYN-RCVD”状态。
3. 客户端→服务器(ACK=1,seq=x+1,ack=y+1):客户端收到服务器回复后,再次发送确认报文:
- ACK=1(确认收到服务器的同步请求);
- seq=x+1(基于自己的初始序列号递增);
- ack=y+1(表示期望接收服务器下一个序列号为y+1的数据)。
双方收到后均进入“ESTABLISHED”状态,连接建立完成。



二、四次挥手(终止连接)

目的是确保双方都已完成数据传输,安全关闭连接(因TCP是全双工通信,需双向关闭)。
过程如下:

1. 客户端→服务器(FIN=1,seq=u):客户端数据发送完毕,发送终止连接请求(FIN=1),序列号为u。客户端进入“FIN-WAIT-1”状态。
2. 服务器→客户端(ACK=1,seq=v,ack=u+1):服务器收到FIN后,先回复确认报文(ACK=1),ack=u+1(确认收到客户端的终止请求),序列号为v。此时服务器进入“CLOSE-WAIT”状态,客户端收到后进入“FIN-WAIT-2”状态(等待服务器的FIN)。
(注:此时服务器可能仍有数据未发送完,会继续向客户端传输数据)
3. 服务器→客户端(FIN=1,ACK=1,seq=w,ack=u+1):服务器数据发送完毕后,发送自己的终止请求(FIN=1),同时再次确认ack=u+1,序列号为w。服务器进入“LAST-ACK”状态。
4. 客户端→服务器(ACK=1,seq=u+1,ack=w+1):客户端收到服务器的FIN后,回复确认报文(ACK=1),ack=w+1(确认收到服务器的终止请求),序列号为u+1。客户端进入“TIME-WAIT”状态(等待2MSL时间,确保服务器收到确认后再关闭),服务器收到后进入“CLOSED”状态。
客户端等待2MSL后,也进入“CLOSED”状态,连接彻底关闭。

关键区别:

- 三次握手:第三次握手是客户端对服务器“SYN+ACK”的确认,避免“已失效的连接请求报文”被服务器误接收后建立无效连接。
- 四次挥手:因服务器收到客户端FIN后,可能仍有数据需传输,无法同时发送FIN和ACK(需先确认接收,再发终止请求),因此比握手多一次交互。

三.TCP编程流程

四.相关函数接口

示例:

#include "head.h"int main(int argc,const char argv[])
{int client_socket;struct sockaddr_in seraddr;char buff[1024] = {0};client_socket = socket(AF_INET,SOCK_STREAM,0);if(client_socket < 0){perror("socket error");return -1;}seraddr.sin_family = AF_INET;seraddr.sin_port = htons(50000);seraddr.sin_addr.s_addr  = inet_addr("192.168.19.129");int ret = connect(client_socket,(struct sockaddr*)&seraddr,sizeof(seraddr));if(ret < 0){perror("connect error");return -1;}while(1){printf("B> ");fgets(buff,sizeof(buff),stdin);send(client_socket,buff,strlen(buff),0);memset(buff,0,sizeof(buff));ssize_t cnt = recv(client_socket,buff,sizeof(buff),0);if(cnt <= 0){perror("recv perror");return -1;}printf("A> %s\n",buff);}close(client_socket);return 0;
}
#include "head.h"int main(int argc,const char *argv[])
{int server_socket;int client_socket;struct sockaddr_in server_addr;struct sockaddr_in client_addr;socklen_t client_addr_len = sizeof(client_addr);char buff[1024];server_socket = socket(AF_INET, SOCK_STREAM, 0);if (server_socket < 0){perror("socket error");return -1;}server_addr.sin_family = AF_INET;server_addr.sin_port = htons(50000);server_addr.sin_addr.s_addr = inet_addr("192.168.19.129");int ret = bind(server_socket, (struct sockaddr*)&server_addr, sizeof(server_addr));if(ret < 0){perror("bind error");return -1;}if (listen(server_socket, 5) < 0){perror("listen error");return -1;}client_socket = accept(server_socket, (struct sockaddr*)&client_addr, &client_addr_len);if (client_socket < 0){perror("accept error");return -1;}while (1){memset(buff,0,sizeof(buff));ssize_t cnt = recv(client_socket,buff,sizeof(buff),0);if (cnt <= 0){perror("recv error");break;}printf("B> %s\n", buff);printf("A> ");fgets(buff,sizeof(buff),stdin);send(client_socket,buff,strlen(buff),0);}close(client_socket);close(server_socket);return 0;
}

五.相关问题

http://www.dtcms.com/a/438392.html

相关文章:

  • CSP-J复赛模拟赛2 王晨旭补题 2025.10.2
  • 理解Consumer<T>
  • Linux:了解Socket编程
  • UE4报错:无法编译项目
  • Cobalt Strike
  • 牛客算法基础noob61 字符串操作
  • 快速制作简单的网站网站建设 中山
  • 网络爬虫技术规范与应用指南系列(xc—1)
  • CSS Border(边框)
  • Photoshop - Photoshop 工具库
  • 2.1.2 扩展知识:AI 语音通话
  • 动态目标检测与跟踪:基于卡尔曼滤波的门限关联与可视化全流程
  • Codeforces Round 863 A. Insert Digit (1811)
  • 企业网站建立要做的准备更新电脑版wordpress
  • 阳江做网站公司南昌seo优化公司
  • 光子桥揭开可调激光PIC的面纱
  • C++——类和对象3
  • Linux第二十四讲:多路转接epoll
  • 专业网站定制流程网站建设公司是怎么找客户
  • Unity学习之C#的反射机制
  • Python环境管理工具全景对比:Virtualenv, Pipenv, Poetry 与 Conda
  • 郑州企业如何建网站wordpress微信付费
  • 微信小程序入门学习教程,从入门到精通,微信小程序开发进阶(7)
  • 数据结构和算法篇--带哨兵节点的双链表
  • 6黄页网站建设做网站怎么去工信部缴费
  • 三支一扶面试资料
  • pytorch 52 基于SVD从全量训练模型中提取lora模型
  • Process Monitor 学习笔记(5.7):长时间运行追踪与日志体积控制
  • 深入解析需求变更:从本质认知到实践指南
  • 商城网站建设的步骤网络设计教程