四次挥手

TCP三次握手与四次挥手

无人久伴 提交于 2019-11-28 06:07:53
TCP是面向连接的传输层协议,它提供可靠交付的、全双工的、面向字节流的点对点服务。HTTP协议便是基于TCP协议实现的。(虽然作为应用层协议,HTTP协议并没有明确要求必须使用TCP协议作为运输层协议,但是因为HTTP协议对可靠性的的要求,默认HTTP是基于TCP协议的。若是使用UDP这种不可靠的、尽最大努力交付的运传输层协议来实现HTTP的话,那么TCP协议的流量控制、可靠性保障机制等等功能就必须全部放到应用层来实现)而相比网络层更进一步,传输层着眼于应用进程间的通信,而不是网络层的主机间的通讯。我们常见的端口、套接字等概念就是由此而生。(端口代表主机上的一个应用进程、而套接字则是ip地址与端口号的合体,可以在网络范围内唯一确定一个应用进程)TCP协议的可靠传输是通过滑动窗口的方法实现的;拥塞控制则有着慢开始和拥塞避免、快重传和快恢复、RED随机早期检测几种办法。 TCP协议的报文 TCP报文段的首部分为 固定部分 和 选项部分 ,固定部分长20byte,而选项部分长度可变。(若整个首部长度不是4byte的整数倍的话,则需要用填充位来填充)在固定首部中,与本文密切相关的是以下几项: seq(序号):TCP连接字节流中每一个字节都会有一个编号,而本字段的值指的是本报文段所发送数据部分第一个字节的序号。 ack(确认号):表示期望收到的下一个报文段数据部分的第一个字节的编号

深入理解三次握手四次挥手以及使用scapy实现ddos雏形

限于喜欢 提交于 2019-11-27 21:54:42
前言 确认位ACK 只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效 TCP规定,在连接建立后所有传送的报文段都必须把ACK置1 同步位SYN 同步SYN=1表示这是一个连接请求或者连接接收报文 当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1,ACK=1.即,SYN=1就表示这是一个连接请求或连接接收报文 终止位 FIN 用来释放一个连接。FIN=1表面此报文段的发送方的数据已发送完毕,并要求释放传输连接。 三次握手 第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中 不含应用层数据 ,其首部中的SYN标志位被置为1.另外,客户机会随机选择一个启始序号seq=x(连接请求报文不携带数据,但要消耗掉一个序号) 第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并 为该TCP连接分配TCP缓存和变量 。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序列号seq=y(确认报文不携带数据,但也要消耗掉一个序号)。确认报文段同样不包含应用层数据 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置1,序号字段为x+1,确认号字段ack=y+1

TCP三次握手四次挥手

不想你离开。 提交于 2019-11-27 13:10:41
TCP建立连接三次握手 c to s :SYN=1 seq=x s to c :SYN=1 ACK=1 seq=y ack=x+1 c to s :ACK=1 seq=x+1 ack=y+1 发送数据 c to s :发送 ACK=1 seq=x+2 ack=y+1 s to c :响应 ACK=1 seq=y+1 ack=x+3 c to s :发送 ACK=1 seq=x+3 ack=y+2 s to c :响应 ACK=1 seq=y+2 ack=x+4 TCP断开连接四次挥手 c to s : FIN=1 seq=x+4 ack=y+3 s to c : ACK=1 seq=y+3 ack=x+5 s to c : FIN=1 seq=y+4 ack=x+5 c to s : ACK=1 seq=x+5 ack=y+5 建立连接三次握手 (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack (number )=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN

三次握手与四次挥手理解

南楼画角 提交于 2019-11-27 02:39:07
序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。 确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号。 确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效 同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接 PS:ACK、SYN和FIN这些大写的单词表示标志位,其值要么是1,要么是0;ack、seq小写的单词表示序号。 字段 含义 URG 紧急指针是否有效。为1,表示某一位需要被优先处理 ACK 确认号是否有效,一般置为1。 PSH 提示接收端应用程序立即从TCP缓冲区把数据读走。 RST