tcp知识点汇总
来源:互联网 发布:linux激活网卡 编辑:程序博客网 时间:2024/06/05 02:26
Tcp(传输控制协议)Transmission Control Protocol
最近发现以前学tcp的时候,根本并没有理解tcp,整理一下
当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。
TCP为了保证报文传输的可靠。就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
tcp报文格式如下:帮助我们理解tcp的建立连接过程和释放连接过程
tcp三次握手:
第一次握手:服务器被动打开,客户端主动建立连接,向服务器发送请求,请求包括syn+seq,这里的syn=1是指1为是,0为否,表名tcp报文格式中的syn有意义,seq是报文中的32位序号,seq=x,表明在后面传送数据时的第一个数据字节的序号是x。。此时客户端进行syn-send状态。
第二次握手:服务器收到客户端的请求报文后,发送syn+ack+seq表名自己已收到请求信息。图中写的ACK=1对应的是与SYN处于同一位置的ACK标记置为1,ACK=1,其上的确认序号ack才有意义,此时的ack为收到客户端的seq+1。seq是自己选择的。服务器进入syn-rcvd状态
第三次握手:客户端收到服务器的确认信息后,要跟服务器进行确认。发送ack+seq信息到服务器。seq为第二次握手时ack也就是第一次握手的seq+1.双方进入已建立连接状态,establ-ished
三次握手时每次都有发送的报文都有不同的地方,以此进行判断是那一次握手。
tcp断开连接过程:
状 态
描 述
CLOSED
关闭状态,没有连接活动或正在进行
LISTEN
监听状态,服务器正在等待连接进入
SYN RCVD
收到一个连接请求,尚未确认
SYN SENT
已经发出连接请求,等待确认
ESTABLISHED
连接建立,正常数据传输状态
FIN WAIT 1
(主动关闭)已经发送关闭请求,等待确认
FIN WAIT 2
(主动关闭)收到对方关闭确认,等待对方关闭请求
TIMED WAIT
完成双向关闭,等待所有分组死掉
CLOSING
双方同时尝试关闭,等待对方确认
CLOSE WAIT
(被动关闭)收到对方关闭请求,已经确认
LAST ACK
(被动关闭)等待最后一个关闭确认,并等待所有分组死掉
SYN
SYN(synchronous)是TCP/IP建立连接时使用的握手信号,tcp建立连接的第一个握手是发送syn,因此在黑客攻击中可利用第一次握手的机制向指定主机放松大量的请求,但不做回应,就是半连接请求,耗费目的主机cpu和内存资源。达到攻击的目的
三次握手中,第三次握手的必要性:
假定出现一种异常情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间滞留了,一直延迟到连接释放以后的某个时间才到达B,本来这是一个早已失效的报文段。但B收到此失效的连接请求报文段后,就误认为是A又发出一次新的连接请求,于是就向A发出确认报文段,同意建立连接。假定不采用三次握手,那么只要B发出确认,新的连接就建立了,这样一直等待A发来数据,B的许多资源就这样白白浪费了
四次挥手中,最后主机a发送报文信息后等待2msl的意义:
- 第一,为了保证A发送的最有一个ACK报文段能够到达B。这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FIN和ACK报文段的确认。B会超时重传这个FIN和ACK报文段,而A就能在2MSL时间内收到这个重传的ACK+FIN报文段。接着A重传一次确认。
- 第二,就是防止上面提到的已失效的连接请求报文段出现在本连接中,A在发送完最有一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。
- tcp知识点汇总
- TCP/IP协议重要知识点汇总(持续更新中)
- tcp/ip协议学习——知识点汇总
- 知识点汇总
- 知识点汇总
- 知识点汇总
- TCP知识点
- 知识点汇总,知识点聚合汇总
- C++知识点汇总
- .NET知识点汇总
- java知识点汇总
- Java知识点汇总
- java 基础知识点汇总
- JSP知识点汇总之一
- Android小知识点汇总
- Java 知识点汇总
- jsp知识点汇总
- Java知识点汇总
- git oschina
- Matlab与单片机的串行通信及数据处理
- css的几种引用方式
- Qt中emit的作用
- 基于Hadoop生态圈的数据仓库实践 —— 概述(二)
- tcp知识点汇总
- 勾股定理一日一证连载33
- C#Winformd读取excel文件数据转化为DataTable
- GZIP、LZO、Zippy/Snappy常用压缩算法
- 关于TCP传输速率的测量方法
- Apache Thrift设计概要
- osgi + felix example2编写
- 需求分析
- SVN合并branch注意事项