用友软件首页

网络协议 TCP连接的建立和释放

2016-1-24 0:0:0 wondial

网络协议 TCP连接的建立和释放

网络协议 TCP连接的建立和释放

转载请注明出处:http://blog.csdn.net/ns_code/article/details/29382883


TCP首部格式

先看TCP报文段的格式,如下;


TCP报文段首部的前20个字节是固定的,后面有4N字节是根据需要而增加的选项。因此TCP报文段的最小长度为20个字节。

首部固定部分的各字段的意义如下:

1、源端口和目的端口:加上IP首部的源IP地址和目的IP地址,确定唯一的一个TCP连接。另外通过目的端口来决定TCP将数据报交付于那个应用程序,从而实现TCP的分用功能。

2、序号:占4个字节,序号的范围为[0,4284967296]。由于TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,首部中的序号字段则是指本报文段所发送的数据的第一个字节的序号。另外,序号是循环使用的,当序号增加到最大值时,下一个序号就又回到了0。

3、确认号:当ACK标志位为1时有效,表示期望收到的下一个报文段的第一个数据字节的序号。确认号为N,则表明到序号N-1为止的所有数据字节都已经被正确地接收到了。

4、头部长度:TCP报文段的头部长度,它指出TCP报文段的数据部分的起始位置与TCP报文段的起始位置的距离。头部长度占4个字节,但它的单位是32位字,即以4字节为计算单位,因此头部长度的最大值为15*4=60个字节,这就意味着选项的长度不超过40个字节。

5、保留位:必须为0.

6、下面的六个控制位说明报文段的性质:

1)URG:与首部中的紧急指针字段配合使用。URG为1时,表明紧急指针字段有效,发送应用进程告诉发送方的TCP有紧急数据穴ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq0q8vNo6zT2srHt6LLzbe9VENQvs2w0b30vLHK/b7dsuXI67W9sb6xqM7Ets7K/b7dtcTX7seww+ajrLb4xuS688PmyNTKx8bVzajK/b7doaM8L3A+PHA+ICAgIDKjqUFDS6O6vfa1sUFDSz0xyrHIt8jPusXX1rbOssXT0NCno6y1sUFDSz0wyrGjrMi3yM+6xc7e0Keho1RDULnmtqijrNTaway9072owaK688v509C1xLSry82xqM7Ets62vLHY0Ouw0UFDS9bDMaGjPC9wPjxwPiAgICAzo6lQU0ijusjnufu3osvNtcSxqM7Ets7W0FBTSM6qMaOs1PK908rVt72908rctb24w7GozsS2zrrzo6zWsb3TvavG5L27uLa4+NOm08O9+LPMo6y2+LK71Nm1yLT91fu49ru6tOa2vMzuwvq689TZz/LJz727uLahozwvcD48cD4gICAgNKOpUlNUo7pSU1Q9Mcqxo6yx7cP3VENQway909bQs/bP1tHP1tiy7rTto6yx2NDrys23xcGsvdOjrMi7uvPW2NDCvajBotTLyuTBrL3ToaM8L3A+PHA+ICAgIDWjqVNZTqO6zayyvdDyusWjrNPDwLS3osbw0ru49sGsvdOho7WxU1lOPTG2+EFDSz0wyrGjrLHtw/fV4srH0ru49sGsvdPH68fzsajOxLbOo6zI9LbUt73NrNLivajBosGsvdOjrNTy06bU2s/s06a1xLGozsS2ztbQyrlTWU49MbrNQUNLPTGhozwvcD48cD4gICAgNqOpRklOo7rTw8C0ys23xdK7uPbBrL3ToaO1sUZJTj0xyrGjrLHtw/e0y7GozsS2zrXEt6LLzbe9tcTK/b7d0tG3osvNzeqxz6OssqLSqsfzys23xcGsvdOhozwvcD48cD4gICAgN6GitLC/2qO6vdPK1be9yMO3osvNt73PwrTOt6LLzbGozsS2zsqxyejWw7XEt6LLzbSwv9q1xLTz0KGhozwvcD48cD4gICAgOKGi0KPR6brNo7rQo9HptcTX1rbOt7bOp7D8wKjK17K/us3K/b7d1eLBvbK/t9ahozwvcD48cD4gICAgOaGivfS8sda41eujur30vLHWuNXrtbFVUkc9McqxssXT0NCno6zL/Na4s/axvrGozsS2ztbQtcS99Lyxyv2+3bXE19a92sr9oaPWtbXD16LS4rXEysejrLy0yrm0sL/azqowyrGjrNKyv8m3osvNvfS8scr9vt2hozwvcD48cD4gICAgMTChotGhz+7T68zus+SjutGhz+7TprjDzqo019a92rXE1fvK/bG2o6y38dTy08MwzO6z5KGj1+6zo7z7tcS/ydGh19a2zsrH1+6zpLGozsS089ChTVNTo6hNYXhpbXVtIFNlZ21lbnQgU2l6ZaOpo6zDv7j2way907e9zaizo7a81NrNqNDFtcS12tK7uPaxqM7Ets7W0Na4w/fV4rj20aHP7qGjy/zWuMP3sb62y8v5xNy908rVtcTX7rTzs6S2yLXEsajOxLbOoaO4w9Ghz+7I57n7srvJ6NbDo6zErMjPzqo1MzajqDIwKzIwKzUzNj01NzbX1r3atcRJUMr9vt2xqKOpo6zG5NbQaXDK17K/us10Y3DK17K/uPcyMLj219a92qOstvhpbnRlcm5ldCDJz7Hq17y1xE1UVSCjqNfu0KGjqc6qNTc2QqGjICA8L3A+PHA+PGJyIC8+PC9wPjxwPjwvcD48aDM+VENQway907XEvajBojwvaDM+PHA+PC9wPjxwPiAgICDPws28zqpUQ1DI/bTOztXK1sGsvdO1xL2owaK5/bPMo7o8L3A+PHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0609/20140609173113385.jpg" alt="\" />

服务端的TCP进程先创建传输控制块TCB,准备接受客户端进程的连接请求,然后服务端进程处于LISTEN状态,等待客户端的连接请求,如有,则作出响应。

1、客户端的TCP进程也首先创建传输控制模块TCB,然后向B发出连接请求报文段,该报文段首部中的SYN=1,ACK=0,同时选择一个初始序号seq=i。TCP规定,SYN=1的报文段不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN—SENT(同步已发送)状态,这是TCP连接的第一次握手。

2、服务端收到客户端发来的请求报文后,如果同意建立连接,则向客户端发送确认。确认报文中的SYN=1,ACK=1,确认号ack=i+1,同时为自己选择一个初始序号seq=j。同样该报文段也是SYN=1的报文段,不能携带数据,但同样要消耗掉一个序号。这时,TCP服务端进入SYN—RCVD(同步收到)状态,这是TCP连接的第二次握手。

3、TCP客户端进程收到服务端进程的确认后,还要向服务端给出确认。确认报文段的ACK=1,确认号ack=j+1,而自己的序号为seq=i+1。TCP的标准规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,因此,如果不携带数据,则下一个报文段的序号仍为seq=i+1。这时,TCP连接已经建立,客户端进入ESTABLISHED(已建立连接)状态。这是TCP连接的第三次握手,可以看出第三次握手客户端已经可以发送携带数据的报文段了。

当服务端收到确认后,也进入ESTABLISHED(已建立连接)状态。


双方同时主动连接的TCP连接建立过程
正常情况下,传输连接都是由一方主动发起的,但也有可能双方同时主动发起连接,此时就会发生连接碰撞,最终只有一个连接能够建立起来。因为所有连接都是由它们的端点进行标识的。如果第一个连接请求建立起一个由套接字(x,y)标识的连接,而第二个连接也建立了这样一个连接,那么在TCP实体内部只有一个套接字表项。
当出现同时发出连接请求时,则两端几乎在同时发送一个SYN字段置1的数据段,并进入SYN_SENT状态。当每一端收到SYN数据段时,状态变为SYN_RCVD,同时它们都再发送SYN字段置1,ACK字段置1的数据段,对收到的SYN数据段进行确认。当双方都收到对方的SYN+ACK数据段后,便都进入ESTABLISHED状态。图10-39显示了这种同时发起连接的连接过程,但最终建立的是一个TCP连接,而不是两个,这点要特别注意。

从图中可以看出,一个双方同时打开的传输连接需要交换4数据段,比正常的传输连接建立所进行的三次握手多交换一个数据段。此外要注意的是,此时我们没有将任何一端称通ky"http://www.it165.net/qq/" target="_blank" class="keylink">qq/zbunu/K3/s7xxvejrNLyzqrDv9K7tsu8yMrHv827p9PWyse3/s7xxvehozxiciAvPjxwPjwvcD48cD48YnIgLz48L3A+PHA+ICAgIM6qyrLDtNK7tqjSqr340NDI/bTOztXK1sTYo788L3A+PHA+ICAgIMewwb20zrXEztXK1rrcz9TIu8rHsdjQ67XEo6zW99KqysfX7rrz0ru0zqOsvLS/zbuntsvK1bW9t/7O8bbLt6LAtLXEyLfIz7rzzqrKssO0u7nSqs/rt/7O8bbL1Nm3osvN0ru0zsi3yM/E2KO/1eLW99KqysfOqsHLt8DWudLRyqfQp7XEx+vH87GozsS2zs27yLvT1rSry821vcHLt/7O8bbLtviy+sn6way907XEzvPF0KGjPC9wPjxwPiAgICC/vMLHyOfPwrXEx+m/9qO6v827p7bLt6LLzcHL0ru49sGsvdPH68fzsajOxLbOtb23/s7xtsujrLWrysfU2sSz0KnN+MLnvdq148nPs6TKsbzk1s3B9MHLo6y2+Lrzv827p7bL09azrMqx1ti3osHL0ru49sGsvdPH68fzsajOxLbOuMO3/s7xtsujrLb4uvPV/bOjvajBosGsvdOjrMr9vt20q8rkzeqxz6OssqLKzbfFwcvBrL3ToaPI57n71eLKsbrytdrSu7TOt6LLzbXEx+vH87GozsS2ztHTs9nBy9K7ts7KsbzkuvOjrNPWtb3By7f+zvG2y6OsutzP1Mi7o6zV4rG+ysfSu7j21OfS0cqn0Ke1xLGozsS2zqOstavKx7f+zvG2y8rVtb2687vhzvPS1M6qv827p7bL09a3orP2wcvSu7TOway908frx/OjrNPaysfP8r/Nu6e2y7eis/bIt8jPsajOxLbOo6yyos2s0uK9qMGiway906GjvNnJ6LK7ssnTw8j9tM7O1crWo6zV4sqxt/7O8bbL1rvSqreiy83By8i3yM+jrNDCtcTBrL3Tvs29qMGiwcujrLWr08nT2r/Nu6e2y7HIxOO4/MO709C3orP2vajBosGsvdO1xMfrx/OjrNLytMuyu7vhwO274bf+zvG2y7XEyLfIz6Os0rKyu7vhz/K3/s7xtsu3osvNyv2+3aOstvi3/s7xtsvItMjPzqrQwrXEway909LRvq29qMGiwcujrLKi1NrSu9axtci0/b/Nu6e2y7eiy83K/b7do6zV4tH5t/7O8bbLvs274dK71rG1yLT9z8LIpaOs1rG1vbOss/axo7vuvMbK/cb3tcTJ6Lao1rWjrLb4vau/zbuntsvF0Laozqqz9sHLzsrM4qOsssW74bnYsdXV4rj2way906Gj1eLR+b7NwMu30cHLuty24Lf+zvHG97XE18rUtKGjtvjI57n7ssnTw8j9tM7O1crWo6y/zbuntsu+zbK7u+HP8rf+zvG2y7eis/bIt8jPo6y3/s7xtsvTydPaytWyu7W9yLfIz6Osvs3WqrXAv827p7bLw7vT0NKqx/O9qMGiway906OstNO2+LK7vajBorjDway906GjPC9wPjxwPjwvcD48cD48YnIgLz48L3A+PGgzPlRDUMGsvdO1xMrNt8U8L2gzPjxwPjwvcD48cD4gICAgz8LNvM6qVENQy8S0zrvTyta1xMrNt8W5/bPMo7o8L3A+PHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2014/0609/20140609173113387.jpg" alt="\" />

数据传输结束后,通信的双方都可以释放连接,并停止发送数据。假设现在客户端和服务端都处于ESTABLISHED状态。

1、客户端A的TCP进程先向服务端发出连接释放报文段,并停止发送数据,主动关闭TCP连接。释放连接报文段中FIN=1,序号为seq=u,该序号等于前面已经传送过去的数据的最后一个字节的序号加1。这时,A进入FIN—WAIT-1(终止等待1)状态,等待B的确认。TCP规定,FIN报文段即使不携带数据,也要消耗掉一个序号。这是TCP连接释放的第一次挥手。

2、B收到连接释放报文段后即发出确认释放连接的报文段,该报文段中,ACK=1,确认号为ack=u+1,其自己的序号为v,该序号等于B前面已经传送过的数据的最后一个字节的序号加1。然后B进入CLOSE—WAIT(关闭等待)状态,此时TCP服务器进程应该通知上层的应用进程,因而A到B这个方向的连接就释放了,这时TCP处于半关闭状态,即A已经没有数据要发了,但B若发送数据,A仍要接受,也就是说从B到A这个方向的连接并没有关闭,这个状态可能会持续一些时间。这是TCP连接释放的第二次挥手。

3、A收到B的确认后,就进入了FIN—WAIT(终止等待2)状态,等待B发出连接释放报文段,如果B已经没有要向A发送的数据了,其应用进程就通知TCP释放连接。这时B发出的链接释放报文段中,FIN=1,确认号还必须重复上次已发送过的确认号,即ack=u+1,序号seq=w,因为在半关闭状态B可能又发送了一些数据,因此该序号为半关闭状态发送的数据的最后一个字节的序号加1。这时B进入LAST—ACK(最后确认)状态,等待A的确认,这是TCP连接的第三次挥手。

4、A收到B的连接释放请求后,必须对此发出确认。确认报文段中,ACK=1,确认号ack=w+1,而自己的序号seq=u+1,而后进入TIME—WAIT(时间等待)状态。这时候,TCP连接还没有释放掉,必须经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态,时间MSL叫做最长报文寿命,RFC建议设为2分钟,因此从A进入TIME—WAIT状态后,要经过4分钟才能进入到CLOSED状态,而B只要收到了A的确认后,就进入了CLOSED状态。二者都进入CLOSED状态后,连接就完全释放了,这是TCP连接的第四次挥手。


双方主动关闭的TCP连接释放流程

与可以双方同时建立TCP传输连接一样,TCP传输连接关闭也可以由双方同时主动进行(正常情况下都是由一方发送第一个FIN数据段进行主动连接关闭,另一方被动接受连接关闭)


当两端对应的网络应用层进程同时调用CLOSE原语,发送FIN数据段执行关闭命令时,两端均从ESTABLISHED状态转变为FIN WAIT 1状态。任意一方收到对端发来的FIN数据段后,其状态均由FIN WAIT 1转变到CLOSING状态,并发送最后的ACK数据段。当收到最后的ACK数据段后,状态转变化TIME_WAIT,在等待2MSL后进入到CLOSED状态,最终释放整个TCP传输连接。


为什么A在TIME—WAIT状态必须等待2MSL时间呢?

1、为了保证A发送的最后一个ACK报文段能够到达B。该ACK报文段很有可能丢失,因而使处于在LIST—ACK状态的B收不到对已发送的FIN+ACK报文段的确认,B可能会重传这个FIN+ACK报文段,而A就在这2MSL时间内收到这个重传的FIN+ACK报文段,接着A重传一次确认,重新启动2MSL计时器,最后A和B都进入CLOSED状态。如果A在TIME—WAIT状态不等待一段时间就直接释放连接,到CLOSED状态,那么久无法收到B重传的FIN+ACK报文段,也就不会再发送一次确认ACK报文段,B就无法正常进入CLOSED状态。

2、防止已失效的请求连接出现在本连接中。A在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段多从网络中消失,这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。



如果您的问题还没有解决,可以到 T+搜索>>上找一下答案

分享到:

微博关注

bj用友软件

最新信息

U8.50资产负债表中“未分配利润”与利润表中的不一致

U8.50资产负债表中“未分配利润”与利润表中的不一致U8.50资产负债表中“未分配利润”与利润表中的不一致


U8.50-资产负债表中“未分配利润”与利润表中的不一致

自动编号:6545产品版本:U8.50
产品模块:UFO报表所属行业: 通用
适用产品:U850关 键 字:报表
问题名称:资产负债表中“未分配利润”与利润表中的不一致
问题现象:资产负债表中“未分配利润”与利润表中的不一致
原因分析:到年底才结转利润操作,但在资产负债表中要求每个月算出未分配利润;并且损益类科目的凭证出过反方向
解决方案:修改利润表公式,利用表间取数算出资产负债表中的“未分配利润”取数公式格式:"e:\新建文件夹\报表\2005\利润表.rep"->d5 Relation 年 with "e:\新建文件夹\报表\2005\利润表.rep"->年+1,月 with "e:\新建文件夹\报表\2005\利润表.rep"->月

温馨提示:如果您的问题还没有解决,欢迎进入用友云基地

居民投资公司取得的股息红利是否免企业所得税

居民投资公司取得的股息红利是否免企业所得税 居民投资公司取得的股息红利是否免企业所得税 问:我企业是一家居民公司,我公司取得的股息红利是否免?   答:居民企业取得境内的居民企业的股息红利,如果是,持股时间超过一年以上取得的股息红利免企业所得税。《企业所得》第二十六条 企业的下列收入为免入:   (一)利息收入;(二)符合条件的居民企业之间的股息、红利等权益性投资收益;(三)在中国境内设立机构、场所的非居民企业从居民企业取得与该机构、场所有实际联系的股息、红利等权益性投资收益;(四)符合条件的非营利组织的收入。  

热点文章

新闻资讯

  • 【新年首签】天津用友&通广集团签署战略协议

    【新年首签】天津用友&通广集团签署战略协议

    天津用友软件技术有限公司(以下简称天津用友)和天津通信广播集团有限公司(以下简称通广集团)就企业信息化建设事宜进行战略签约。

    参加此次会议有天津用友总经理赵永春,天津用友副总经理王成岩、通广集团副总经理马严、通广集团科技质量部部长尹刚、七一二公司技术质量部部长门国梁、七一二公司技术中心主任黄建尧等。

    image

  • 会计职场堪比宫斗剧

    会计职场堪比宫斗剧

     近几年,各种宫斗剧火爆,《甄嬛传》《芈月传》等等都脍炙人口,许多人经常打趣自己像某个人物,若是在古代能活到第几集。让人不禁想起,会计职场又何尝不是一场宫斗,每天要察言观色,明了领导的内心,就像后宫谁也不敢惹皇后一样。但当你坐上领导位置的时候,盯着你的眼睛就会很多,稍有不慎就会被取代。就像后宫的嫔妃一样,就算坐上了皇后的位置也要时刻担心有没有人觊觎。

    image

知 识 库

  • 用友t3账套每月备份

    用友t3账套每月备份

    用友t3账套每月备份

    用友软件提供两种备份方式:手工备份和自动备份,下面我们讲解这两种方式的备份账套数据操作步骤(T6和U8与T3备份恢复方法相同,此处以T3为例):

    ㈠、手工备份

    1、先在硬盘上建立一个空文件夹

    打开我的电脑(双击)D(或E、F)盘,(空白处右击右键)新建文件夹,把这个新建的文件夹,改名为如用友数据手工备份。(双击)打开用友数据手工备份,(右击)出现新建文件夹,把所新建的文件夹改名为当天的备份日期如2016-12-16后退出

  • 用友t3账套自动备份

    用友t3账套自动备份

    用友t3账套自动备份

    用友软件提供两种备份方式:手工备份和自动备份,下面我们讲解这两种方式的备份账套数据操作步骤(T6和U8与T3备份恢复方法相同,此处以T3为例):

    ㈠、手工备份

    1、先在硬盘上建立一个空文件夹

    打开我的电脑(双击)D(或E、F)盘,(空白处右击右键)新建文件夹,把这个新建的文件夹,改名为如用友数据手工备份。(双击)打开用友数据手工备份,(右击)出现新建文件夹,把所新建的文件夹改名为当天的备份日期如2016-12-16后退出

  • 最新文章排行
  • 热门文章排行

管理软件

  • T3卸载就会跳到安装界面去,用360工具也卸载不了。请问这种情况哪位老师遇见过,我们应该如何处理。谢谢、在线等。

    T3卸载就会跳到安装界面去,用360工具也卸载不了。请问这种情况哪位老师遇见过,我们应该如何处理。谢谢、在线等。

    T3卸载就会跳到安装界面去,用360工具也卸载不了。请问这种情况哪位老师遇见过,我们应该如何处理。谢谢、在线等。 T3卸载就会跳到安装界面去,用360工具也卸载不了。请问这种情况哪位老师遇见过,我们应该如何处理。谢谢、在线等。[]

    备份好账套,这种情况只能强制删除了,请备份好账套之后,停止数据库服务和T3产品服务,自动备份服务;然后删除T3安装路径以及C盘下ufcomsql文件夹,然后使用360清除无用注册表,最后重启电脑即可;

  • 用友T3-业务通在11.0的软件中点击打印软件就自动退出

    用友T3-业务通在11.0的软件中点击打印软件就自动退出

    用友T3-业务通在11.0的软件中点击打印软件就自动退出 用友T3-业务通在11.0的软件中点击打印软件就自动退出

    其他的操作都正常,就是某个单据如销货单,点击“打印”—“预览”,或者是“打印”—“打印模板设置”,就自动退出软件了,再登入的时候提示:“该用户已登录,是否重新登录”。该单据的默认打印模板异常,导致一点“打印模板设置”或者是“打印”就自动退出了。1.先登入产品,然后在同一浏览器里输入网址:
    http://127.0.0.1/YWTPRO/CommonPage/printservices/DesignFrame.aspx (新一代业务通);
    2.将异常的模板删除;
    3.点击“新建”按钮,重新建立“打印模板”即可。
    备注:如果是系统模板也是异常的话,可以将系统模板删除再重建。
    如有其它问题,请在下面回复。也可以联系用友畅捷通专业服务商-用友天龙瑞德。
    用友天龙瑞德专业销售用友软件,用友财务软件,维护用友T3用友T6用友U8畅捷通T+。我们将竭诚为您服务。
    联系电话:010-59798025。网址:http://www.kuaiji66.com

关于我们 | 公司动态 | 获奖记录 | 联系我们 | 招聘信息 | 用友产品中心 | 用友云基地
Copyright ©  www.kuaiji66.com  All Rights Reserved 天龙瑞德
京ICP备11046295号-1 技术支持 北京天龙瑞德信息技术有限责任公司   北京海淀上地十街辉煌国际大厦3号楼6层 总机:010-59798025   售后:4009908488
北京天龙瑞德信息技术有限责任公司