tcp协议建立连接的过程.docx
《tcp协议建立连接的过程.docx》由会员分享,可在线阅读,更多相关《tcp协议建立连接的过程.docx(4页珍藏版)》请在冰豆网上搜索。
tcp协议建立连接的过程
竭诚为您提供优质文档/双击可除
tcp协议建立连接的过程
篇一:
tcp的建立连接过程和断开过程
篇二:
关于运输层中tcp协议的三次握手连接和四次握手连接释放过程简述
关于运输层中tcp协议的三次握手连接和四次握手连接释放过程简述
--吴龙平
【首先必须了解和掌握:
】
1、从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
2、当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
3、数据在5层体系中,层与层之间的数据传输(向下),各层添加的层头包括可能会添加报尾),的关系,和层与层之间的数据传输(向上),各层剥去的层头和层尾。
4、事实上,两个运输层之间并没有一条水平的物理连接(可以称为虚连接或逻辑通信)。
5、tcp则提供面向连接的服务。
tcp不提供广播或多播服务。
由于tcp要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。
这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
6、tcp报文段的首部(握手需要用到的一些部分)
①序号字段——占4字节。
tcp连接中传送的数据流中的每一个字节都编上一个序号。
序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
(下文握手描述为seq)
②确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号
。
(下文握手描述为ack)
③确认ack——只有当ack=1时确认号字段才有效。
当ack=0时,确认号无效。
④同步syn——同步syn=1表示这是一个连接请求或连接接受报文。
⑤终止Fin——用来释放一个连接。
Fin1表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
【正题:
客户与服务器方式】
tcp连接的建立都是采用客户服务器方式。
主动发起连接建立的应用进程叫做客户(client)。
被动等待连接建立的应用进程叫做服务器(server)。
一、连接时的三次握手
客户主动打开tcp传输,服务器被动打开
说明:
客户的tcp向服务器发出连接请求报文段,其首部中的同步位syn=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。
说明:
服务器的tcp收到连接请求报文段后,如同意,则发回确认。
服务器在确认报文段中应使syn=1,使ack=1,其确认号ack=x+1,自己选择的序号
seq=y。
说明:
客户收到此报文段后向服务器给出确认,其ack=1,确认号ack=y+1。
客户的tcp通知上层应用进程,连接已经建立。
服务器的tcp收到主机客户的确认后,也通知其上层应用进程:
tcp连接已经建立。
二、连接释放时的四次握手
数据传输结束后,通信的双方都可释放连接
客户应用进程先向其tcp发出连接释放报文段,并停止再发送数据,主动关闭tcp连接。
说明:
客户把连接释放报文段首部的
Fin=1,其序号seq=u,等待服务器的确认。
说明:
服务器发出确认,确认号ack=u+1,而这个报文段自己的序号seq=v。
tcp
服务器进程通知高层应用进程。
从客户到服务器这个方向的连接就释放了,tcp连接处于半关闭状态。
服务器若发送数据,客户仍要接收。
说明:
若服务器已经没有要向客户发送的数据,其应用进程就通知tcp释放连接。
说明:
客户收到连接释放报文段后,必须发出确认。
在确认报文段中ack=1,确认号ack=w+1。
自己的序号seq=u+1。
随之服务器tcp关闭,而客户必须等待2msl的时间,然后关闭。
1、tcp建立连接的三次握手过程
tcp会话通过三次握手来初始化。
三次握手的目标是使数据段的发送和接收同步。
同时也
向其他主机表明其一次可接收的数据量(窗口大小),并建立逻辑连接。
这三次握手的过程可以简述如下:
●源主机发送一个同步标志位(syn)置1的tcp数据段。
此段中同时标明初始序号(initialsequencenumber,isn)。
isn是一个随时间变化的随机值。
●目标主机发回确认数据段,此段中的同步标志位(syn)同样被置1,且确认标志位(ack)也置1,同时在确认序号字段表明目标主机期待收到源主机下一个数据段的序号(即表明前一个数据段已收到并且没有错误)。
此外,此段中还包含目标主机的段初始序号。
●源主机再回送一个数据段,同样带有递增的发送序号和确认序号。
至此为止,tcp会话的三次握手完成。
接下来,源主机和目标主机可以互相收发数据。
整个过程可用图2-8表示。
图2-8tcp建立连接的三次握手过程
2、tcp释放连接的四次握手过程
tcp是一个全双工通讯,可以由任何一方提出关闭连接。
本次由服务器提出关闭连接请求。
tcp连接的释放需要进行四次握手,步骤是:
第一次握手:
由服务器提出关闭连接请求。
服务器将fin(fin置1时表示发端完成发送任务,用来释放连接,表明发送方已经没有数据发送了)置为1,f
in=1,seq=131ack=45win=5840
第二次握手:
客户端tcp协议层接收到服务器关闭连接的请求报文段后,就会发送一个确认报文ack,表示收到了关闭请求,并已经终止了数据传输。
但如果ack确认发送后服务器仍然有数据传输的话,客户端仍然可以接受数据,只是服务器不可以在接受数据了。
此状态称半关闭状态(half-colse)。
seq=45ack=132
第三次握手:
客户端确认服务器没有数据传输,将fin置1,要求关闭连接。
seq=45ack=132第四次握手:
服务器接收到关闭请求,发送确认请求ack,客户端收到确认后,整个连接完全关闭。
seq=132ack=46
实地抓包分析http协议+报文分段(20xx-08-2611:
05:
52)转载
标签:
httptcp分类:
实验室
分段mtuit
以连接hudbt(http:
//218.199.102.168)为例,wireshark的capturefilter设为
host218.199.102.168
pcap文件已经传到ishare上去了
前三次是tcp握手建立连接。
对于http1.1,如果是短时间(具体多短?
不知道)内重新连接,那么不用重新建立tcp连接,上次建立的tcp连接还未断开。
第4个包是httpget
第5个包是服务器返回的tcpack,是对第四个包的确认。
因为http是基于tcp的应用层协议,所以服务器收到httpget后要回一个ack
第6、7、9的info都注明了“tcpsegmentofareassembledpdu”,表明它们三个其实是属于同一个tcp报文的,只是因为mtu的限制(mtu是mac帧的数据部分的长度限制,参见我的博文mac、ip、udp、tcp包结构分析,一般系统
篇三:
实验五tcp的连接及释放过程分析
实验五tcp的连接及释放过程分析
【实验目的】
1.掌握tcp连接建立的三次握手工作原理;2.理解tcp连接释放的四次握手工作原理。
【实验环境】
与因特网连接的计算机,操作系统为windows,安装有wireshark、ie等软件。
【实验内容】
1.使用wireshark抓包软件分析tcp协议报文的类型;2.分析tcp连接建立的工作过程;3.分析tcp数据传输的工作过程;4.分析tcp连接释放的工作过程。
【实验步骤】
1.启动wireshark抓包软件;
2.使用ping命令,ping你想浏览的网站,记下该网站的ip地址。
3.使用浏览器访问一个因特网网站(例如,),通过wireshark捕获通信内容;
4.分析与你浏览的网站相对应的tcp连接建立的三次握手和连接释放的握手过程(在wireshark里通过ip地址过滤找到对应的tcp数据包)。
具体分析步骤如下:
浏览网页,抓取三次握手的包,分析tcp包头格式,指出下列4个字段的值。
源ip:
192.168.6.52目的ip:
119.75.217.56源端口:
4451目的端口:
80
连接建立第一次握手:
若只显示第一次握手的数据包,即显示包含tcpsyn且不包含ack标志的数据包,则显示过滤器的规则应该怎样设置?
找出第一次握手的数据包并截取对该数据包的展开图来替换下图。
根据截图在表1的相应位置填写各字段的值。
[答]:
过滤器的规则应这样设置:
tcp.flags.ack==0&&tcp.flags.syn==1
图:
连接建立第二次握手:
若只抓取第二次握手的数据包,则显示过滤器的规则应该怎样设置?
为什么?
找出第二次握手的数据包并截取对该数据包的展开图来替换下图,根据截图在表1的相应位置填写各字段的值。
[答]:
过滤器的规则应这样设置:
tcp.flags.ack==1&&tcp.flags.syn==1
图:
连接建立第三次握手:
是否可以设定过滤规则只抓取第三次握手的数据包若不能,如何确定是第三次
握手的数据包。
找出第三次握手的数据包并截取对该数据包的展开图来替换下图,根据截图在表1的相应位置填写各字段的值。
[答]:
不能,因为第三次握手发送的是ack包,也就是仅ack标记设为1的tcp包,但三次握
手建立后,tcp连接的每个包都会设置ack位,所以不能。
第三次握手的tcp包序列号是1。
三次连接握手完成后说明tcp连接正确建立,客户端要请求服务器传送数据。
客户端第一次请求数据:
找出第一次请求的数据包并截取对该数据包的展开图,根据截图在表1的相应位置填写各字段的值。
你是如何确定是第一次的请求的数据包?
若服务器相应了客户端的请求,服务器要向客户端传送数据。
[答]:
如何找到第一次的请求的数据包:
包的序列号为1,且下次序列号不为1(本次截到
底包的下次序号为327),同时确认号为1的tcp就是第一次请求数据的包.
服务器第一次回复数据:
找出第一次回复的数据包并截取对该数据包的展开图,根据截图在表1的相应位置填写各字段的值。
你是如何确定是第一次的回复的数据包?
[答]:
序列号为1,又由于第一次请求包发送了327个数据(第一次请求包的下次序列号为
327),所以确认号为327的就是第一次恢复数据的包.
tcp连接的断开:
设置过滤器的规则为tcp.flags.fin==1&&tcp.flags.ack==1,捕捉断开连接的数据包。
根据捕获的断开连接数据报填写表一,并分别截取断开连接第一次、第二次握手的展开图。
我们知道tcp连接建立后,是全双工的通信方式。
观察你截获的结果请写出通信双方各自是怎样断开连接的。
[答]:
断开连接过程:
首先,先断开连接的一方(即数据先传送完毕,以下称为“a”),会向另一方(以下称为“b”)发送tcp断开连接包,连接释放报文段的首部Fin置“1”,序号为前面已传送过的数据的最后一个字节的序号加“1”(本次实验为“327”);b收到连接报文段后发出确认,确认号为a发的序号+1(本次实验为“328”),这样,a到b这个方向的连接就释放了,tcp就处于半关闭状态,但b可以发送数据,直到b发送tcp连接断开包,b向a发送连接断开包的过程与a向b发送的tcp连接断开包过程类似。