一、tcp三次握手

一、tcp三次握手

ID:27631412

大小:574.00 KB

页数:31页

时间:2018-12-05

一、tcp三次握手_第1页
一、tcp三次握手_第2页
一、tcp三次握手_第3页
一、tcp三次握手_第4页
一、tcp三次握手_第5页
资源描述:

《一、tcp三次握手》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、一、TCP三次握手SYN是TCP/IP建立连接时使用的握手信号1.建立连接协议(三次握手) a、client发送SYN完毕,状态变成SYN_SEND; b、server收到client发送的SYN报,回应客户端,发送ack确认包和SYN包,状态变为SYN_RECV(因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯;) c、client收到ack后,必须再次回应服务段一个ACK报文,发送ack包完毕,状态变成ESTABLISHED d、server接收ack包完毕,状态变成ESTABLIS

2、HED二、连接终止协议(四次挥手)由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后扔能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。(1)TCP客户端发送一个FIN,用来关闭客户端到服务器的数据传送(报文4)(2)服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文5)。和SYN一样,一个FIN将占用一个序号(3)服务器关闭客户端的连接,

3、发送一个FIN给客户端(报文6)(6)客户端发回ACK报文确认,并将确认序号设置为收到序号加1(报文7)。TCP连接的建立与释放:·序号:本报文段所发送的数据的第一个字节的序号。·确认号ack:期待收到对方下一个报文段的第一个数据字节的序号·确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效·同步SYN:连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求(ACK=0),或连接接受报文(A

4、CK=1)。·终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接  还要再发送一次确认是为了,防止已失效的连接请求报文段突然又传到了B,因而产生错误(主要是B的资源浪费,如果仅仅采用两次握手)。已失效的报文段(滞留过的被抢先的游子报文):正常情况下:A发出连接请求,但因为丢失了,故而不能收到B的确认。于是A重新发出请求,然后收到确认,建立连接,数据传输完毕后,释放连接,A发了2个,一个丢掉,一个到达,没有“已失效的报文段”。但是,某种情况下,A的第一个在某个节点滞留了,延误到达,本来这是

5、一个早已失效的报文段,但是在A发送第二个,并且得到B的回应,建立了连接以后,这个报文段竟然到达了,于是B就认为,A又发送了一个新的请求,于是发送确认报文段,同意建立连接,假若没有三次的握手,那么这个连接就建立起来了(有一个请求和一个回应),此时,A收到B的确认,但A知道自己并没有发送建立连接的请求,因为不会理睬B的这个确认,于是呢,A也不会发送任何数据,而B呢却以为新的连接建立了起来,一直等待A发送数据给自己,此时B的资源就被白白浪费了。但是采用三次握手的话,A就不发送确认,那么B由于收不到确认,也就知道并没有要求建立连接。1.第一次握

6、手客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,以及初始化序列号X,保存在包头的序列号字段里。2.第二次握手服务器发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1。同时,将确认序号设置为X+13.第三次握手客户端再次发送确认包(ACK)SYN标志位为0,ACK标志位为1,并且把服务器发来的ACK的序号字段加1,放在确定字段中发送给对方,并且在数据段放写ISN的加1?????  B收到连接释放报文段后就立即发送确认,然后就进入close-wait状态,此时TCP服务器进程就通知高层应用进程(内核有机

7、制接收,至于USERSPACE是不是有策略来使用就另当别论),因而从A到B的连接就释放了。此时是“半关闭”状态。即A不可以发送给B,但是B可以发送给A。  此时,若B没有数据报要发送给A了,其应用进程就通知TCP释放连接,然后发送给A连接释放报文段,并等待确认。  A发送确认后,进入time-wait,注意,此时TCP连接还没有释放掉,然后经过时间等待计时器设置的2MSL后,A才进入到close状态。  为什么要等待呢?  ①、为了保证A发送的最后一个ACK报文段能够到达B。即最后这个确认报文段很有可能丢失,那么B会超时重传,然后A再一

8、次确认,同时启动2MSL计时器,如此下去。如果没有等待时间,发送完确认报文段就立即释放连接的话,B就无法重传了(连接已被释放,任何数据都不能重传了),因而也就收不到确认,就无法按照步骤进入CLOSE状态,即

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。