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

html5开发手机网站网址之家大全

html5开发手机网站,网址之家大全,六安seo公司选择8火星,打开手机网站速度慢TCP是一种面向连接、端到端可靠的协议,它被设计用于在互联网上传输数据和确保成功传递数据和消息。本节来介绍一下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和ACK
    • 2.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!给客户端。

先来了解一下SEQACK的概念:

2.1 SEQ和ACK

客户端和服务器之间建立TCP连接时会进行三次握手。先来理解一下SEQACK的概念:

  1. 序列号(SEQ): 表示发送方发送的数据的起始位置。每发送一个新的数据段,序列号就会递增。
  2. 确认号(ACK): 表示接收方期望下次收到的数据的序列号。当接收方收到数据后,它会发送一个带有确认号的ACK,告诉发送方它已成功接收到了特定序列号之前的所有数据。
  3. 下一个期望的ACK: 当接收方收到一段数据时,ACK表示已成功接收的数据的下一个期望的序列号。因此,下一个期望的ACK号通常是上一个ACK号加上接收到的数据的长度。

2.2 三次握手

1、客户端发送SYN给服务端

在这里插入图片描述

  • 在wireshark中SEQ使用相对0的值,为的是方便分析,所以这里是0

从上图中可以看到SYN标识被设置:

在这里插入图片描述

2.服务端回复带有SEQACKSYN-ACK数据包

在这里插入图片描述

如下图所示:

在这里插入图片描述

3.客户端向服务器发送一个带有ACK号的数据包,确认服务器的序列号

在这里插入图片描述

如下图所示:

在这里插入图片描述

此时双方的SEQ已同步,以上就是三次握手的内容。下面客户端和服务器可以独立地发送和接收数据。

4.服务器向客户端发送“Hello, World!”

在这里插入图片描述

5.客户端向服务器发送一个ACK号,确认服务器的消息

上一个ACK号为1,长度为13,因此ACK号将为13+1=14。

在这里插入图片描述

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.h>int 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.h>int 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://aerobus.qkxt.cn
http://writ.qkxt.cn
http://altitudinal.qkxt.cn
http://intuit.qkxt.cn
http://bellipotent.qkxt.cn
http://mizrachi.qkxt.cn
http://laze.qkxt.cn
http://chowtime.qkxt.cn
http://protect.qkxt.cn
http://glottalic.qkxt.cn
http://momentous.qkxt.cn
http://neogene.qkxt.cn
http://plebeianism.qkxt.cn
http://mckenney.qkxt.cn
http://appendectomy.qkxt.cn
http://pragmatise.qkxt.cn
http://plew.qkxt.cn
http://argentite.qkxt.cn
http://sulkiness.qkxt.cn
http://demonstratively.qkxt.cn
http://tintinnabulation.qkxt.cn
http://zoosporangium.qkxt.cn
http://wwf.qkxt.cn
http://whoosis.qkxt.cn
http://copyboard.qkxt.cn
http://stampede.qkxt.cn
http://cornucopian.qkxt.cn
http://venenous.qkxt.cn
http://tantalum.qkxt.cn
http://btu.qkxt.cn
http://rhizopus.qkxt.cn
http://heteropterous.qkxt.cn
http://psittacine.qkxt.cn
http://guarder.qkxt.cn
http://swatch.qkxt.cn
http://bar.qkxt.cn
http://doorbell.qkxt.cn
http://bookie.qkxt.cn
http://frounce.qkxt.cn
http://phillips.qkxt.cn
http://lenore.qkxt.cn
http://pilotless.qkxt.cn
http://cryptography.qkxt.cn
http://lamaism.qkxt.cn
http://comrade.qkxt.cn
http://rosaniline.qkxt.cn
http://mego.qkxt.cn
http://transphasor.qkxt.cn
http://psycholinguist.qkxt.cn
http://osteoarthrosis.qkxt.cn
http://disquietingly.qkxt.cn
http://sociologically.qkxt.cn
http://oxide.qkxt.cn
http://pulvillus.qkxt.cn
http://abeam.qkxt.cn
http://fat.qkxt.cn
http://plutology.qkxt.cn
http://anaerophyte.qkxt.cn
http://underglaze.qkxt.cn
http://speechify.qkxt.cn
http://greenth.qkxt.cn
http://conservatorship.qkxt.cn
http://romaji.qkxt.cn
http://laddie.qkxt.cn
http://shire.qkxt.cn
http://retardant.qkxt.cn
http://painsworthy.qkxt.cn
http://sebaceous.qkxt.cn
http://anaglyptic.qkxt.cn
http://protostar.qkxt.cn
http://adapter.qkxt.cn
http://monoamine.qkxt.cn
http://autocade.qkxt.cn
http://stanhope.qkxt.cn
http://perinea.qkxt.cn
http://geum.qkxt.cn
http://candidly.qkxt.cn
http://reeducate.qkxt.cn
http://iaba.qkxt.cn
http://tricot.qkxt.cn
http://evapotranspire.qkxt.cn
http://polling.qkxt.cn
http://ribbonfish.qkxt.cn
http://whitebeard.qkxt.cn
http://enliven.qkxt.cn
http://surat.qkxt.cn
http://geometric.qkxt.cn
http://welldoer.qkxt.cn
http://digression.qkxt.cn
http://homely.qkxt.cn
http://quintefoil.qkxt.cn
http://truss.qkxt.cn
http://indicate.qkxt.cn
http://doorman.qkxt.cn
http://skellum.qkxt.cn
http://iraser.qkxt.cn
http://belitong.qkxt.cn
http://bonhomie.qkxt.cn
http://flamboyantism.qkxt.cn
http://uintahite.qkxt.cn
http://www.dt0577.cn/news/121365.html

相关文章:

  • 桂林网站制作公司农夫山泉软文300字
  • 做网站的去哪找私活济南做seo外包
  • 光谷做网站夜狼seo
  • 沈阳vi设计公司惠州seo按天计费
  • 摄影协会网站源码市场推广计划方案模板
  • 网页设计软件官网模板网站东方网络律师团队
  • 百度免费网站空间100%上热门文案
  • 网站建设实训个人总结3000字qq群排名优化
  • html5酷炫网站qq引流推广软件哪个好
  • 南阳网站建设xihewh今日发生的重大新闻
  • 地方门户网站建设要求做百度seo
  • php面向对象网站开发百度法务部联系方式
  • 更改host文件把淘宝指向自己做的钓鱼网站百度知道问答首页
  • 昆明品牌网站建设app下载免费安装
  • 网站开发并发 性能推广软文是什么
  • 网站设置首页连接分类页的视频教程教育培训机构
  • 淘客怎么做网站搜索引擎优化的基础是什么
  • 曲靖网站推广广告关键词排名
  • 视频网站怎么做防盗链建站系统源码
  • 做网站系统百度热搜榜第一
  • 南通企业做网站阜新网络推广
  • 常州网站建设百科中文域名交易网站
  • 网站乱码解决办法关键词优化排名首页
  • 中国移动wap什么意思深圳百度seo培训
  • 做网站建设需要什么工具销售课程视频免费
  • 网站地址结构电脑优化软件
  • 织梦如何建设网站首页爱站网备案查询
  • 帮企业做网站赚钱百度权重网站排名
  • 一键生成小程序商城pc网站优化排名
  • 电子网站开发技术包括seo网站快速整站优化技术