44 TCP 协议详解

44 TCP 协议详解

TCP 协议

传输控制协议, Transmission Control Protocol,其功能包括:传输;控制

传输包括:建立连接、关闭连接、保证可靠

建立连接:三次握手

三次握手(Three-Way Handshake)即建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发,整个流程如下图所示:

(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
(2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
(3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

SYN攻击:
                在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了。

三次握手的必要性:保证可靠性

TCP 与 UDP (User Diagram Protocol) :没有三次握手、四次挥手,所以可靠性查比较差(不考虑是否传输成功),但是性能好;在某些可靠性要求不是很高地方会使用UDP协议;

关闭连接:四次挥手

四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发,整个流程如下图所示:

由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。

(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

(2)第二次挥手:Server收到Client的FIN后,发送ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),此时Server进入CLOSE_WAIT状态。

Client 收到 Server 的ACK 后,进入FIN_WAIT2 状态。

(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

(4)第四次挥手:Client收到Server的FIN后,Client进入TIME_WAIT状态,接着Client发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

(注意:以上主动关闭方 = Client, 被动关闭方 = Server,主动关闭方可以是客户端,也可以服务器。)

SYN 和 FIN 是TCP 报文中的一部分,是标志位;

保证可靠

原文地址:https://www.cnblogs.com/George19950505/p/12301889.html

时间: 2024-08-27 15:13:24

44 TCP 协议详解的相关文章

TCP协议详解(下)

 TCP协议详解 TCP状态转移 TCP连接的任意一端在任一时刻都处于某种状态,当前状态可以通过netstat命令查看,这里我们主要讨论TCP连接葱白建立到关闭的整个过程中通信两端状态的变化.如图是TCP状态转移过程. 图中,粗虚线表示典型的服务器连接的状态转移:粗实线显示典型的客户端连接的状态转移. TCP状态转移总图 服务器转移过程,这里我们说的连接状态指定是该连接的服务器状态. 服务器通过listen系统调用进入LISTEN状态,被动等待客户端连接,因此执行的是所谓的被动打开.服务器一

TCP协议详解即实例分析

 TCP协议详解 3.1 TCP服务的特点 TCP协议相对于UDP协议的特点是面向连接.字节流和可靠传输. 使用TCP协议通信的双方必须先建立链接,然后才能开始数据的读写.双方都必须为该链接分配必要的内核资源,以还礼链接状态和连接上数据的传输.TCP链接是全双工的,即双方的数据读写可以通过一个连接进行.完成数据交换之后,通信双方都必须断开连接以释放系统资源. TCP协议的这种连接是一对一的,所以基于广播和多播(目标是多个主机地址)的应用程序不能使用TCP服务.而无连接协议UDP则非常适合于广

TCP协议详解(理论篇)

TCP协议详解(理论篇) 1.    与UDP不同的是,TCP提供了一种面向连接的.可靠的字节流服务.面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话.助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点: (1)应用数据分割成TCP认为最适合发送的数据块.这部分是通过"MSS"(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度.值得注意的是,MSS只能

第一章、TCP协议详解

TCP/IP协议包含众多协议,本章,我们介绍几个相关协议:ICMP协议,ARP协议,DNS协议,学习他们对于理解网络通信很有帮助. 一.TCP/IP协议族体系结构以及主要协议: TCP/IP协议从下到上分四层:数据链路层,网络层,传输层,应用层. 应用层 ping OSPF DNS 用户空间 传输层 TCP   UDP 网络层 ICMP     IP    内核空间 数据链路层 ARP data-link RARP 1.(1)数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网

TCP协议详解

TCP协议   传输控制协议 Transmission Control Protocal 功能点两点: 1.一个是传输功能:主要工作是建立连接和关闭连接 2.另一个是控制功能:主要工作是保证传输的可靠 建立连接的过程:三次握手 1.给对方拨号 2.接听,喂,你好,请问你哪位 3.我是强子 关闭连接过程:四次挥手 保证可靠 详细介绍三次握手过程: 第一次握手:客户端发送SYN包至服务器,并进入SYN_SENT状态,等待服务器确认 第二次握手:服务器收到客户端的SYN包,发送一个ACK,同时发送自己

TCP协议详解---上

TCP头格式 注意以下几点: TCP的包是没有IP地址的,那是IP层上的事.但是有源端口和目标端口. 一个TCP连接需要四个元组来表示是同一个连接(src_ip, src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议.但因为这里只是说TCP协议,所以,这里我只说四元组. 注意上图中的四个非常重要的东西: Sequence Number是包的序号,用来解决网络包乱序(reordering)问题. Acknowledgement Number就是ACK——用于确认收到

【计算机网络】TCP协议详解

常见问题 Q1. TCP报文头结构多大? Q2. TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因? Q3. TCP为何采用四次挥手来释放连接? TCP协议 首先,我们需要知道TCP在网络OSI的七层模型中的第四层——传输层(Transport),IP在第三层——网络层(Network),ARP在第二层——(Data Link),在第二层上的数据,我们叫帧(Frame),在第三层上的数据叫包(Packet),第四层的数据叫报文段(Segment). 1. TCP报文头结构 首先

python TCP协议详解 三次握手四次挥手和11种状态

11种状态解析 LISTEN  --------------------  等待从任何远端TCP 和端口的连接请求. SYN_SENT  ---------------  发送完一个连接请求后等待一个匹配的连接请求. SYN_RECEIVED  --------  发送连接请求并且接收到匹配的连接请求以后等待连接请求确认. ESTABLISHED  -----------  表示一个打开的连接,接收到的数据可以被投递给用户.连接的数据传输阶段的正常状态. FIN_WAIT_1  --------

【TCP协议详解】

为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义一些共通的东西来进行交流,TCP/IP就是