首页 > 其他分享 >tcp协议基础

tcp协议基础

时间:2023-09-30 16:44:38浏览次数:35  
标签:协议 服务器端 ACK 基础 SYN tcp 客户端

前言:买的书到了,特此来学习一下。

内容参考《web漏洞解析与攻防实战》-----

1 tcp协议

之前有两篇基础的博客较为浅显的介绍了一下http协议,在http协议发挥作用之前,我们注意到

会先建立tcp连接,那tcp连接要如何建立呢?这就需要tcp协议了。

tcp协议是一种面向连接的,可靠的,基于字节流,双全工的传输层通信协议

建立一个tcp连接的过程需要三次握手,断开tcp连接的过程需要三次挥手,接下来我们较为详细的介绍一下

1.1 建立连接的三次握手

第一次握手时,客户端发送SYN请求到服务器,客户端在发送完进入SYN_SENT状态。

第二次握手,服务器端收到SYN包,确认客户信息后发送SYN ACK包给客户端,服务器端进入 SYN_RECV状态

第三次握手,客户端收到STN AKC 包 向服务器端发送ACK 包,客户端发出包后进入ESTABLISHED状态,服务器端收到包后,也进入

ESTABLISHED 状态。

就此,三次握手完毕,tcp连接成功建立,然后http协议开始发送数据,这就不多讲了。

图示

1.2 flags标志位

上面区分不同包的依据是Flags标志位,这又是什么呢?

Flags"通常指的是标志位或标志性的位,它们是在计算机编程和系统中广泛使用的概念。这些位用于表示某种状态或条件,以便程序可以

根据它们的值采取不同的行动。例如,一个标志位可以表示某个操作是否已经完成,另一个标志位可以表示错误是否发生。

在计算机编程中,标志位通常是一个二进制位(0或1),用于表示某种状态。程序可以检查这些标志位的值,并根据情况采取适当的行

动。标志位在条件语句、循环和控制流中经常用到,以便根据不同的条件执行不同的代码块。

在传统的TCP 约定中,flags标志位一共有6个,在rfc3168中增加了两个标志位,这九个标志位分别为``

NS CWR ECE URG ACK PSH RST SYN FIN

从右往左,代表了9个二进制位

每个标志位可以取0或者1,代表该类型是否被启用。

例如对SYN 请求,只有SYN位设置位1,其他位设置位0,整体就是0b000000010

0b 代表二进制,讲flags换算成十进制则为flags=2, 对于SYN ACK 请求,只有SYN位和ACK 设为1,其他都是0,换算成十进制则flags

16 。

1.3 tcp协议的四次挥手

我们通过三次握手建立了TCP 连接,当我们传输信息结束,如何断开连接呢?这时候就要用到四次挥手了。断开连接的请求可以由客户端

发起,也可也由服务器端发起,所以不用区分哪一端,用ab表示即可。

以下图为例,这是客户端想要断开连接

第一次挥手 客户端发送一个FIN ACK 包用来关闭客户端对服务器端的数据传送,客户端进入FIN_WAIT_1 状态

第二次挥手,服务器端收到包,发送一个ACK 包给客户端,然后服务器端进入CLOSE_WAIT 状态

第三次挥手,服务器端发送一个FIN_ACK 包,用来关闭服务器端对客户端的数据传送,服务器端发送完后进入LAST_ACK状态

第四次挥手,客户端收到服务器端的包,进入FIN_WAIT2 状态,接着发送一个ACK包,然后进入CLOSED状态,服务器端收到数据包后也

进入CLOSED状态,自此完成四次挥手过程。

示例

1.4 TCP协议的基本结

1 IP协议工作于网络层,封装了源IP和目标IP,TCP协议工作于第四次层传输层,他在IP 协议之上,不需要关心IP 结构,但需要约定端口

2 TCP 协议具有序列号,根据序列好可以防止请求被重复传递

3 TCP 建立连接的不同操作主要体现在flags标志位上

标签:协议,服务器端,ACK,基础,SYN,tcp,客户端
From: https://www.cnblogs.com/rpup/p/17738000.html

相关文章

  • 2023-2024-1 20231321王曦轶《计算机基础与程序设计》第一周学习总结
    2023-2024-120231321《计算机基础与程序设计》第1周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1计算机基础与程序设计第一周作业)这个作业的目标<预习教材计算机科学概......
  • 2023-2024-1 20231310 《计算机基础与程序设计》第一周学习总结
    作业信息作业属于课程<班级的链接>(2023-2024-1-计算机基础与程序设计)作业要求<作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标<快速浏览一遍教材计算机科学概论,课本每章提出至少一个问题>作业正文https://i.cnblogs.......
  • ADO.Net 基础
    stringconnString="Server=MATEBOOK16S\\SQLEXPRESS;DataBase=MISDB;Uid=sa;Pwd=123456";//连接数据库voidConnectDB(){ //1.创建Connecation对象 //SqlConnectionconn=newSqlConnection(); //conn.ConnectionString=connString;SqlConnectionconn=new......
  • mysql基础语句
    1.基本语句mysql-uroot-p--连接数据库showdatabases--列出所有数据库createdatabasexxx--创建一个数据库usexxx--切换到xxx数据库showtables--列出当前数据库所有的表--注释/*(多行注释)hellor3ality*/数据库xxx语言DDLdefineDMLmanage......
  • 2023-2024-1 20231303赵泊瑄《计算机基础与程序设计》第一周学习总结
    2023-2024-1学号20231303,《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业的要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标课程概论、工......
  • 2023-2024-1 20231403 《计算机基础与程序设计》第一周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2022-2023-1-计算机基础与程序设计)这个作业要求在哪里2023-2024-1计算机基础与程序设计第一周作业)这个作业的目标快速浏览教材《计算机科学概论》,提出自己不懂或最想解决的问题并在期末回答作业正文https://www.c......
  • 2023-2024 20231424《计算机基础与程序设计》第1周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计作业要求2022-2023-1计算机基础与程序设计第一周作业作业目标快速浏览一遍教材《计算机科学概论》,并提出自己不懂的问题作业正文作业链接教材学习内容总结简单浏览了《计算机科学概论》《C......
  • 详细总结ARP协议
    ARP协议(AddressResolutionProtocol):ARP协议用于在IP网络中将IP地址解析为物理MAC地址,以便实现数据包在局域网上的传输。它负责维护IP地址与MAC地址之间的对应关系,使得网络设备能够正确地发送和接收数据。ARP协议的使用场景:在局域网内部,当主机A要发送数据给主机B时,会先通过ARP协议......
  • 2023-2024-1 20231327司宏林 《计算机基础与程序设计》第一周学习总结
    学期(2023-2024-1)20231327《计算机基础与程序设计》第1周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>([https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009)这个作......
  • 2023-2024-1 20231308 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231308《计算机基础与程序设计》第一周学习总结作业信息作业课程2023-2024-1-计算机基础与程序设计作业要求2023-2024-1计算机基础与程序设计第一周作业作业目标教材内容学习作业正文2023-2024-120231308《计算机基础与程序设计》第一周学习......