一,TCP建立连接(Connection Establishment)由以下三个过程:
1)Client给Server发送发送TCP segment:SYN=1,ACK=0,SEQ=x。(这些字段的作用是这样的:通过SYN=1,ACK=0告诉server这是连接请求Connection Requet。SEQ=x表明后面传送数据时的第一个数据字节的序号是x+1)
2)Server给Client发送的TCP segment:SYN=1,ACK=1, SEQ = y, ACK(ackonwlege number)=x+1.(server通过SYN=1,ACK=1告诉client,这是接受请求Connection Accepted。确认你是要从x+1传起了。server也通知client,我要传给你的是从y+1传起的哦!)
3) Client给Server发送发送TCP segment: ACK=1, SEQ=x+1, ACk(acknowledeg number)=y+1(client告诉server,OK,我是要建立连接,你可以建立了)
说明:1)为什么需要第三个步骤呢?Internet是不可靠
的,有时候由于网络延迟,Client可能会“重传”第一个请求连接的报文。如果Server每次收到Connetion
Request(也就是SYN=1,ACK=0)的报文就建立连接,那Server就亏大了(浪费资源)。所以需要Client再确认一下,免得
Server吃亏。
2) 在第一个步骤,如果Server拒绝连接,就可以设置RST=1,并回复Client。
3)如果Client在第一个步骤发送的数据报的时候,源IP随便填写(这并不影响路由过程),这样,Server收到连接请求(SYN=1,ACK=
0),并不会马上为这个连接请求Client建立连接,而是为连接请求建立会话,并放到等待队列中,向源IP主机发送确认数据包,并等待回复。由于
Server收不到第三个步骤的回复确认(当然了,源IP是假的),会一直等待直到超时,当有大量这样的连接时,Server就无法接受新的连接请求了,
这就是“DOS(denial of Service)攻击”的原理.
二,TCP连接断开
连接的双方分别为host A和host B. TCP连接是全双工的,当我们可以把它看成两个半双工的,可以分别关闭,过程如下:
1)A => B: FIN, SEQ=x
2) B => A: ACK, SEQ=y, ACK=x+1
3) B => A: FIN, ACK, SEQ = y, ACK = x+1
4) A => B: ACK, SEQ = x + 1, ACK = x + 1.
说明:2)3)步骤可以合为一个TCP segment。
分享到:
相关推荐
TCP三次握手与四次挥手.pdf
详解TCP三次握手和四次挥手
Wireshark抓包分析TCP“三次握手,四次挥手”.doc
TCP 三次握手和四次挥手,面试题详解,图文并茂,欢迎技术交流
该文档详细描述了wireshark抓包分析tcp三次握手四次挥手详解及网络命令,亲自整理,适合新手借鉴
使用wireshark抓包分析,并且将特殊字段进行分析。
基于ajax请求过程分析Http协议的三次握手和四次挥手过程。 基于ajax请求过程分析Http协议的三次握手和四次挥手过程 基于ajax请求过程分析Http协议的三次握手和四次挥手过程 基于ajax请求过程分析Http协议的三次握手...
TCP三次握手及四次挥手详细图解
案例测试TCP的三次握手和四次挥手过程。包括C语言写的服务器端程序以及c#写的客户端程序,以及使用wirkshark进行的网络抓包分析TCP三次握手四次挥手的过程。
在TCP/IP协议中,建立连接协议是三次握手,关闭连接是四次握手。
描述TCP三次握手,四次挥手的过程的图片
TCP三次握手及四次挥手
主要描述TCP协议三次握手四次挥手过程,很详细,非常值得拥有
通过图解,简单明了的介绍了tcp三次握手/四次挥手的全过程,解释为什么建立连接协议是三次握手,而关闭连接却是四次握手
TCP报文分析--三次握手 四次挥手 还介绍了一点 SYN洪水攻击
TCP三次握手和四次挥手详解.docx
TCP协议是很有讲究的。推荐先了解基础原理。从最基础的原理开始了解,欢迎大家一起学习。
三次握手和四次挥手详解,觉得本博文写的很好,分享给正在学习或者学习完还对TCP的三次握手和四次挥手还不熟悉的人,相信看完之后就能明白了。
TCP三次握手和四次挥手面试题 249 - 330