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

做兼职在什么网站找比较好网站seo源码

做兼职在什么网站找比较好,网站seo源码,江苏建筑工程信息网站,网站建设公司如何进行工作TCP是一种面向连接、端到端可靠的协议#xff0c;它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据…TCP是一种面向连接、端到端可靠的协议它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下TCP中的三次握手和四次挥手。 文章目录 1 TCP头部格式2 wireshark抓包分析2.1 SEQ和ACK2.2 三次握手2.3 四次挥手 3 程序 1 TCP头部格式 TCP头部占据TCP段的前20个字节其中包含端到端TCP套接字的参数和状态。如下图所示 下面来逐个解释一下这些字段 源端口(Source port)16位用于标识源端口号(发送方的TCP端口)目标端口(Destination port)16位用于标识目标端口号(接收方的TCP端口)序列号(Sequence number)32位指示在TCP会话期间发送了多少数据。当建立新的TCP连接时初始序列号是一个随机值。确认号(Acknowledgment Number)32位由接收方用于请求下一个TCP段。如果设置了ACK控制位该字段包含段发送方期望接收的下一个序列号的值。一旦建立了连接这个字段总是被发送。数据偏移(Data offset)4位显示头部中32位字的数量也称为头部长度保留数据(Reserved data)6位保留字段始终设置为零控制位标志(Control bit Flags)TCP使用9位控制标志来管理特定情况下的数据流例如建立连接、发送数据和终止连接 URG: 与后面的紧急指针字段相关当设置了此位时数据应被视为优先于其他数据。ACK: 与ACK相关确认字段用于指示已成功接收到的数据量如果设置了此字段说明发送方期望接收方继续发送下一个TCP段PSH: 推送功能表示发送方希望接收方立即传输数据而不必等到整个TCP段的数据都准备好再传输RST: 重置连接仅在存在无法恢复的错误时使用SYN: 同步序列号此标志用于设置初始序列号FIN: 完成位用于结束TCP连接因为TCP是全双工连接所以双方都必须使用FIN位来结束连接 窗口(Window)16位指定接收方愿意接收多少字节校验和(Checksum)16位用于对头部和数据进行错误检查紧急指针(Urgent Pointer)如果设置了URG控制标志该值表示与序列号的偏移指示最后一个紧急数据字节选项(Options)可选长度可为0~320位之间的任意大小 2 wireshark抓包分析 程序流程服务端监听本地环回地址127.0.0.1的12345端口客户端则连接这个端口连接上后服务端发送一个Hello, World!给客户端。 先来了解一下SEQ和ACK的概念 2.1 SEQ和ACK 客户端和服务器之间建立TCP连接时会进行三次握手。先来理解一下SEQ、ACK的概念 序列号(SEQ) 表示发送方发送的数据的起始位置。每发送一个新的数据段序列号就会递增。确认号(ACK) 表示接收方期望下次收到的数据的序列号。当接收方收到数据后它会发送一个带有确认号的ACK告诉发送方它已成功接收到了特定序列号之前的所有数据。下一个期望的ACK 当接收方收到一段数据时ACK表示已成功接收的数据的下一个期望的序列号。因此下一个期望的ACK号通常是上一个ACK号加上接收到的数据的长度。 2.2 三次握手 1、客户端发送SYN给服务端 在wireshark中SEQ使用相对0的值为的是方便分析所以这里是0 从上图中可以看到SYN标识被设置 2.服务端回复带有SEQ和ACK的SYN-ACK数据包 如下图所示 3.客户端向服务器发送一个带有ACK号的数据包确认服务器的序列号 如下图所示 此时双方的SEQ已同步以上就是三次握手的内容。下面客户端和服务器可以独立地发送和接收数据。 4.服务器向客户端发送“Hello, World!” 5.客户端向服务器发送一个ACK号确认服务器的消息 上一个ACK号为1长度为13因此ACK号将为13114。 2.3 四次挥手 接着上面的抓包来看在程序中服务端发送完“Hello, World!”后就关闭了客户端的socket。 1.服务端发送FIN给客户端 如下图所示 2.客户端向服务器发送一个ACK号确认服务器的FIN请求 如下图所示 3.TCP是一种全双工连接因此客户端也向服务器发送一条消息以关闭连接 前面的图中最后一行是红色的RST是我不小心直接关闭了程序下面的图为重新抓的包注意看最后两条即可 如下图所示 4.服务器向客户端发送一个ACK号确认客户端的FIN请求 如下图所示 3 程序 本文的代码使用Windows环境下的网络编程库所以需要在链接库中增加ws2_32。 服务端 // Server.c#include winsock2.h #include ws2tcpip.h #include stdio.hint main() {WSADATA wsaData;SOCKET listenSocket, clientSocket;struct sockaddr_in serverAddr, clientAddr;int addrLen sizeof(clientAddr);char buffer[1024] Hello, World!;// Initialize Winsockif (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {fprintf(stderr, WSAStartup failed\n);return 1;}// Create a socketif ((listenSocket socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET) {fprintf(stderr, Socket creation failed\n);WSACleanup();return 1;}// Set up server address informationmemset(serverAddr, 0, sizeof(serverAddr));serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr inet_addr(127.0.0.1);serverAddr.sin_port htons(12345);// Bind the socketif (bind(listenSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) SOCKET_ERROR) {fprintf(stderr, Bind failed\n);closesocket(listenSocket);WSACleanup();return 1;}// Listen for incoming connectionsif (listen(listenSocket, SOMAXCONN) SOCKET_ERROR) {fprintf(stderr, Listen failed\n);closesocket(listenSocket);WSACleanup();return 1;}printf(Server listening on 127.0.0.1:12345\n);// Accept a connection from a clientif ((clientSocket accept(listenSocket, (struct sockaddr*)clientAddr, addrLen)) INVALID_SOCKET) {fprintf(stderr, Accept failed\n);closesocket(listenSocket);WSACleanup();return 1;}// Send data to the clientsend(clientSocket, buffer, strlen(buffer), 0);printf(Data sent to the client\n);// Clean upclosesocket(clientSocket);closesocket(listenSocket);WSACleanup();return 0; }客户端 // Client.c#include winsock2.h #include ws2tcpip.h #include stdio.hint main() {WSADATA wsaData;SOCKET clientSocket;struct sockaddr_in serverAddr;char buffer[1024];// Initialize Winsockif (WSAStartup(MAKEWORD(2, 2), wsaData) ! 0) {fprintf(stderr, WSAStartup failed\n);return 1;}// Create a socketif ((clientSocket socket(AF_INET, SOCK_STREAM, 0)) INVALID_SOCKET) {fprintf(stderr, Socket creation failed\n);WSACleanup();return 1;}// Set up server address informationmemset(serverAddr, 0, sizeof(serverAddr));serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr inet_addr(127.0.0.1);serverAddr.sin_port htons(12345);// Connect to the serverif (connect(clientSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) SOCKET_ERROR) {fprintf(stderr, Connection failed\n);closesocket(clientSocket);WSACleanup();return 1;}// Receive data from the serverint bytesRead recv(clientSocket, buffer, sizeof(buffer), 0);if (bytesRead 0) {buffer[bytesRead] \0; // Null-terminate the received dataprintf(Received data from server: %s\n, buffer);} else {fprintf(stderr, Error receiving data\n);}while(1){if(recv(clientSocket, buffer, sizeof(buffer), 0) 0){break;}}// Clean upclosesocket(clientSocket);WSACleanup();return 0; }
http://www.huolong8.cn/news/314135/

相关文章:

  • 网站设计深圳网站建设公司烟台做外贸网站建设
  • 西部数码网站管理助手2.0网站建设前期情况说明
  • 湖南响应式网站公司建设论坛网站需要做什么的
  • 星宿网站建设滁州网站建设电话
  • 新乡做网站优化网站手机版如何制作
  • 建立网站需要温州做外贸网站设计
  • 网站开发速成wordpress打造官网
  • 合肥网站建设 微笑互联网络营销推广方式有几种
  • 中国建设银行启东市支行网站网站需要哪些东西
  • 创建网站要申请域名吗做盗版电影网站教程
  • 怎样做网站视频建设银行信用卡被钓鱼网站
  • 郑州高端模板建站wordpress广告链接不跳转
  • 深圳网站的建设凡科互动怎么发布
  • 做公众号策划的网站门源县wap网站建设公司
  • 建设网站需要准备什么手续统一手机网站
  • 微信制作微网站开发php网站开发更换模板
  • 优站点网址收录网ui设计师需要学的软件
  • 金融服务网站建设高清免费素材网站
  • 找平面图的网站WordPress协会主题模板
  • 无棣网站定制wordpress前端注册
  • h5网站制作平台天津站建站时间
  • 网站开发过程中出现的问题wordpress文章对齐方式
  • 怎样申请自己企业的网站比格设计网站官网
  • 个体户网站备案组织部信息化建设官方网站
  • 做设计网上揽活哪个网站最好软件项目管理考试题及答案
  • 站长统计黄页网站下载大全手把手教你入侵网站修改数据
  • 包装设计十大网站怎么做二次元网站源码
  • 苏州沧浪做网站哪家好html网页可以用以下哪个工具制作
  • 品牌网站方案北京优秀网站建设
  • 昆明做网站开发维护的公司网推渠道平台